# How to hack the Leapfrog LeapsterGS handheld console?



## blueagent1999 (Aug 1, 2017)

i saw one of these console at a second hand store and i read that these things could be hacked to run neogeo and the likes, unfortunately however, the original site that hosted the tutorial has been taken down, so i was wondering if anyone has any idea on how to softmod this thing. any help would be greatly appreciated as i can no longer find any relevant tutorials on how to mod this console.

thank you so much for all the help!


----------



## Futurdreamz (Aug 1, 2017)

just install a proper linux distro on it and load up some emulators
http://hackaday.com/2013/11/08/linux-on-a-leapster-for-classic-video-game-emulation/


----------



## blueagent1999 (Aug 1, 2017)

yes i've seen that website a little while back, which contain a link to the aforementioned defunct website that hosted the original tutorial, as well as all the necessary files for making it work.

there's this one fellow on youtube who knows how to mod this, but he's very secretive about it.

https://www.youtube.com/user/mikewolak



> Mike: Making a tutorial for this would be too time consuming.





> Mike:There are no links to instructions on how I did this.  I don't make instructional videos either.





> Mike: Sorry, I have no plans to give away this code.





> Mike: No, I don't have instructions posted anywhere.





> Mike: There aren't too many instructions to actually install the image I've created





> Mike: I chose not to share this work.







> Simon: so in other words you just wanted to show off and dont want to show anyone else how to do it... thumbs down from me! :/



so when someone calls him out for being a showoff, he literally responded with the following: 





> Mike: That's correct. It was a demonstration of what can be done if you learn how to work with embedded systems. I took the time to learn this field, if you have the inclination to do the same I encourage you to do so.



oh well maybe someday someone nicer will post a tutorial on how to make it work.


----------



## Futurdreamz (Aug 1, 2017)

I doubt he really knows. A lot of youtubers are frauds. There is a guy who posted a bunch of tutorials that permanently brick your 3DS if you follow it exactly as he says.


----------



## blueagent1999 (Aug 1, 2017)

yeah i know what you mean, there are so many bad tutorials with vague and ambiguous instructions on youtube, years ago i actually ruined my brand new sony walkman phone because someone posted a bad tutorial on the internet and it ended up bricking my phone after flashing its firmware.


----------



## GreatCrippler (Dec 6, 2019)

I realize that I'm bumping a nercro thread, but there is now an option called "Retroleap" that replaces the default os with Retroarch. It's not the most practical process, but I tired it out, and it's kind of cool to have a handful of emulators on this device.


----------



## romanaOne (Dec 7, 2019)

Holy hell, I missed retroleap! Thanks for pointing this out.
I'm digging my leapster out of my junk heap right now!


I tried to get the leapster working sometime in 2013. You had to do some soldering to get a USB-serial  FTDI device connected to some of the cartridge lines. Then you had to cobble together a truly ancient toolchain using old Debian? I forget....

Around 2015, I got as far as it booting Linux, but I never could get the keys mapped and emulators working; really...it's just too much work with so many easier options out there now.   There was some sort of community back then but it was half dead and by now all resources have probably retreated into the black hole archive.org.

There was also a some sort of flash cart, but good luck trying to get one now....


----------



## GreatCrippler (Dec 7, 2019)

romanaOne said:


> Holy hell, I missed retroleap! Thanks for pointing this out.
> I'm digging my leapster out of my junk heap right now!
> 
> 
> ...



Yea, it's not the most practical setup, but it is just some command line work to get it going, so I thought it was a fun little project. I got it up and running, and am pretty happy with it. It's a fun, silly little conversation piece if nothing else.


----------



## romanaOne (Dec 7, 2019)

Ok, I got it working. Mostly tried out gpsp. It seems a little sluggish, but there might be some things I can do to speed it up.  (I'm testing with Pokemon Ruby.) Is there a frameskip option somewhere in retroarch's labyrinthine GUI? Or maybe disable scaling the screen?  It looks like crap without bilinear filtering, but that really slows gpsp.


----------



## romanaOne (Dec 8, 2019)

So is there any way to tell how long you've got left till the batteries are empty? 

Leapster GS is supposed to get "10 hours" running the native firmware on alkalines, so I guess I can expect about 4 with some well used NiMH and retroarch....

I just downloaded the source and tried building some more cores:

GB(c) emulation works pretty well with gambatte
Wonderswan and Atari 2600 (Stella) also work pretty well.

Getting files into this thing is a PITA though, USB networking is super flakey.


----------



## GreatCrippler (Dec 8, 2019)

romanaOne said:


> So is there any way to tell how long you've got left till the batteries are empty?
> 
> Leapster GS is supposed to get "10 hours" running the native firmware on alkalines, so I guess I can expect about 4 with some well used NiMH and retroarch....
> 
> ...



Battery life seems bad tbh. It's died on me a few times. I actually took home some batteries that I can recharge from work yesterday just to try it. How are you adding cores? Probably above my pay grade, but GBC would be cool. WS too, though i imagine there's no screen rotation, so no JS, or Tetris. I noticed this can be seen as a network device on some Linux Distros, but it wants a login/password that I have no clue about. If Windows could see it, I would use WinSCP, but I can't find anything with a similar GUI for Linux. I admit though, I am just bad at Linux. It's probably a miracle that I even got this installed and managed to add a few roms.


----------



## romanaOne (Dec 8, 2019)

GreatCrippler said:


> Battery life seems bad tbh. It's died on me a few times. I actually took home some batteries that I can recharge from work yesterday just to try it. How are you adding cores? Probably above my pay grade, but GBC would be cool. WS too, though i imagine there's no screen rotation, so no JS, or Tetris. I noticed this can be seen as a network device on some Linux Distros, but it wants a login/password that I have no clue about. If Windows could see it, I would use WinSCP, but I can't find anything with a similar GUI for Linux. I admit though, I am just bad at Linux. It's probably a miracle that I even got this installed and managed to add a few roms.





All the instructions are at the retroleap github. Take a look at the bottom of the page.
clone the retroleap github here: https://github.com/mac2612/retroleap


```
make leapstergs_defconfig
make menuconfig
```

make menuconfig will build and run a ncurses GUI menu to choose what you want to build. Leave everything alone except for the retroarch cores section. Select the cores you want to build: TG16 PCE, Gambatte, and Stella work pretty well; Wonderswan only so-so.

Save your changes, exit menuconfig and type make. This will take a while to download more stuff and compile: it took over half an hour on my system.

The sources (and binaries, object files, filesystem images, etc.) are about 2GB right after building.
I think I also ran into a few problems compiling...stupid stuff like missing symlinks.

Bilinear filtering ON and Video Threading ON seem to be the best compromise with Gambatte. Actually GPSP doesn't look all that bad with filtering OFF; it's just the fonts that look grubby.

If you don't want to compile this mess, you can download my sshflash.tar.gz with the filesystem image containing more cores.

About the USB network mess:

I reflashed my LeapsterGS using a manjaro linux system with KDE's networking GUI. I had to disable DHCP and manually set the USB interface's IP to 169.254.8.2 (The leapsterGS itself is 169.254.8.1 .) It still took about 10 tries to actually get a stable connection and have the flash succeed....

After you have reflashed and rebooted, the leapsterGS changes its IP to 169.254.6.1 so I changed my USB interface to 169.254.6.2.  (No idea why the IPs have to change or why the silly rsa/ public key bullshit... I think the danger of unauthorized persons breaking into my almost never networked leapsterGS is pretty miniscule. Maybe this firmware was intended for something else originally?)

Anyway, I just used scp from the command line. It accepts wildcards "*.gba" and can recurse subdirectories if you put -r before the -i.  There's only a little more than 1 GB storage on the leapsterGS.


----------



## GreatCrippler (Dec 8, 2019)

romanaOne said:


> All the instructions are at the retroleap github. Take a look at the bottom of the page.
> clone the retroleap github here: https://github.com/mac2612/retroleap
> 
> 
> ...




What I got from that was "Here's the one I put together, try it." That's as much as I'm comfortable managing. :-D Thanks much for the detailed explanation though. PCE would be nice to have, so I'm excited to try it. As for moving stuff over I was just hoping for an easy way to add more than one item via command line at a time. I made a copy paste file that I just have to swap the rom title on, so that will work well enough for all the more I'll use the device.


----------



## romanaOne (Dec 9, 2019)

GreatCrippler said:


> .
> .
> .
> As for moving stuff over I was just hoping for an easy way to add more than one item via command line at a time. I made a copy paste file that I just have to swap the rom title on, so that will work well enough for all the more I'll use the device.



Suppose you have a folder full of gba roms. The command below will copy all of them to /roms/gba on your Leapster, assuming they all end in .gba and /roms/gba exists, of course.


```
scp  -i  /path_to/sshflash/keys/id_rsa /gba_rom_folder_on_pc/*.gba [email protected]:/roms/gba
```

Or, if you have them sorted in folders, like alphabetically sorted into A/, B/, C/ etc.  for instance: 

```
scp  -r -i  /path_to/sshflash/keys/id_rsa /gba_rom_folder_on_pc  [email protected]:/roms/gba
```
would copy /gba_rom_folder_on_pc and all its subfolders into /roms/gba

You might want to be careful before firing off commands like this as the Leapster only has about 1GB of free storage. The whole GBA no intro romset won't fit.


----------



## romanaOne (Dec 9, 2019)

btw, the root filesystem is writable, so you do not have to reflash the whole device just to add more cores....

You can just compile them and scp them from /where_you_put/retroleap/output/build/libretro-core-whatever-some-hex-shit/corename_libretro.so to /usr/lib/libretro.

You can also change retroarch core Directory (under settings) to use a different folder, say /roms/cores if you don't want to mess with the root fs.

I've added a few more cores below: NGP(C), mgba, vecx, o2em (videopac), lynx, fmsx

Neo Geo Pocket Color seems to work well enough. Sound isn't great but games are playable and look good.

mgba is slow with GBA games, but it can also play GB(C) games and is a little more compatible than gambatte: pokemon prism and crystal clear work in mgba but whitescreen in gambatte.

I haven't gotten around to testing other more obscure cores (vecx, o2em (videopac), lynx, fmsx) yet.

There is a decent amount of room for a lipo battery + usb 5V power supply + lipo charging  board in the LeapsterGS in the battery compartments and unused cart slot.  Probing with a volt meter, it looks like the batteries (alkaline nominally 1.5V each, NiMH are 1.2) are connected in series to build up 5 to 6 volts across the (-) terminal of the leftmost battery and the (+) of the rightmost battery. (Left/Right w/ respect to cart slot facing you, screen down.) Time to get out the glue gun!


----------



## romanaOne (Dec 11, 2019)

I got gmenu2x to compile.  It will run on the leapsterGS, but most of the buttons don't work and the screen does not  refresh properly.  Anyone know where in retroarch the keys are mapped?

In gmenu2x there is a file input.conf:

```
up=keyboard,273
down=keyboard,274
left=keyboard,276
right=keyboard,275
modifier=keyboard,32
confirm=keyboard,306
cancel=keyboard,308
manual=keyboard,304
section_prev=keyboard,9
section_next=keyboard,8
pageup=keyboard,9
pagedown=keyboard,8
settings=keyboard,13
menu=keyboard,27
backlight=keyboard,51
power=keyboard,279
```

What SDL keycodes correspond to the LeapsterGS buttons?

Only "settings",  keyboard,13 works. I'm guessing this is probably "Return" from looking at this page:
https://wiki.libsdl.org/SDLKeycodeLookup


----------



## romanaOne (Dec 13, 2019)

The screen corruption was due to dumb typo in SDL_SetVideoMode().

I've managed to figure out how to map the buttons on gmenu2x and port a few other dingux apps/emus:

dingux-commander file manager (use at your own risk, recommend you not browse outside of /roms folder)

dingux-colem (libretro bluemsx is overkill if all you want is colecovision )

dingux-ti99 (not in retroarch, my favorite old micro)

Last Mission (dingux clone of old MSX game)
Most of the other emulator icons are just scripts that launch retroach cores.
I've also figured out how to read the battery voltage (from /sys/class/blahblah....) and display a rough indication of the (assumed NiHM) battery state as a percent in lower right corner of gmenu2x. I've also got screen blanking working if the menu is untouched for 1 min. (Not sure I want this, err,  feature, but I'll leave it alone for now.) The CPU speed shown in the left corner is wrong and can not be changed; I don't know if you can change CPU speeds on the LeapserGS.

Anyway, this LeapsterGS is just about as good as a Dingoo, at least for the emulators I've tried.

I want to test gmenu2x out for a few more days (and port a few more emulators and games from dingux, since it's easy) before I roll a rootfs image and upload it.


----------



## finaluser (Jan 27, 2020)

Hi romanaOne, 
any advance on gmenu2x, it looks amazing, 
can you share your progress?

Thanks


----------



## romanaOne (Jan 28, 2020)

I didn't think anyone cared. I've got the menu working pretty well on my LeapsterGS.

The main reason I wanted the gmenu was to have some kind of idea where the battery charge is at before starting a game. I've adapted a battery meter (10 steps)  and (sort-of) 5-level brightness control from some stuff in gmenu2x.cpp intended for a different handheld.

I changed my mind about making a lipo battery pack when I discovered the power pack is just 4 AA NiMH batteries: just grab some new ones and replace the old ones. (Takes a bit of careful prying to get them out.) Then you have a rechargeable handheld just like the retrogame only cheaper, and more rugged and sustainable.

Some installation is required.  Read the README.
The zip file below includes: 

gmenu2x

more retroarch cores (Atari 2600, Wonderswan, Neo GeoPocket + more) 

PokemonMini emulator
Gambatte (standalone GB(C)) emulator

Free games: AbbayeDesMorts, Arkanoid, Last Mission, Digger, Nethack (gp2x version), Powder, Meritous, Boulder
Dingux Commander (file manager)
st (terminal emulator)


https://mega.nz/#!yQxkRaYb!1vBQcTs3PQ8gF7xcI8MrIacnO0zmpELIEfblN93LNZU


----------



## mrsoczi (Feb 14, 2020)

romanaOne said:


> I didn't think anyone cared.



Well I collect handhelds like this and just got my hands on a used one real cheap so I really care now  .
I downloaded that package from Mega. Is the readme a full instruction to get my Leapster fitted with gmenu and retroarch?

Thanks.

EDIT: Ok, I see I need to install retroleap myself on the device. I am not Linux savvy, but I will try.


----------



## GreatCrippler (Feb 14, 2020)

I'd love to get gmenu2x going, but it drove me nuts to get as far as I did with this thing. I don't imagine I'd be able to get the motivation to try and get this going too. Still, very cool work.


----------



## Cralex (Mar 20, 2020)

Just thought I’d chime in (since this topic is at least still on page 1 of this section) that I’m interested too and planning on getting a LeapsterGS to try this out! I also saw the original hackaday article too late to get the CFW that was originally posted for it. I have better/more powerful portable systems, but anything that can be made to run emulators is interesting to me. Happy to learn about Retroleap and Gmenux running on this thing.


----------



## DobaMuffin (Mar 20, 2020)

This is an interesting little system. Hopefully I have some time to learn more about it in the upcoming weeks. Gotta love staying home and doing uni online due to coronavirus.

Anyways, I emailed leapfrog about getting the source code and got this link which I think could be useful. Hopefully we can figure out how to port more to this system and how to create our own customized os.


----------



## Cralex (Mar 29, 2020)

romanaOne said:


> I didn't think anyone cared. I've got the menu working pretty well on my LeapsterGS.



Yes, yes you do.  My GS arrived in the mail yesterday and, after switching around some cables to find one that worked, I got Retroleap installed, followed by your excellent ports of Gmenu, games, and emulators. While I have other, more capable portable emulation machines, I just wanted to drop in and say that I appreciate your contributions, (particularly Gmenu, the standalone Gambatte port, and Commander,) and that it helps make this hunk of plastic a decent offering.

You mentioned using rechargeable batteries with this and getting working charging. If I wanted to do this, would I need to grab the official rechargeable battery packs and replace the built-in batteries if they don’t hold a charge anymore, or is there an easier way? Also, am I correct to assume that the official wall charger is required for this, and that I could not charge it over USB?

I use two other devices with Gmenu, so I swapped the A and B buttons in the config right away. I don’t want to make more work for you, but man it’d be nice to have some of the other apps (like Commander) have a swap AB option. Also, is there any way to disable the requirement for the public key? I tried using it with FileZilla, but I was getting an odd “unexpected end of file” error when trying to connect.

Even if you’re done working with the Leapster GS, just wanted to let you know that I appreciate your work and hope that it gets added to the main Retroleap image or something.


----------



## mac2612 (May 17, 2020)

Hi Y'all! I'm the original author of retroleap, and I'm really happy that there are folks getting use out of it  This is a hobby project for me so I'm not always able to dedicate a ton of time, but given the recent lockdown stuff I've had some time to continue to tinker. If you have any feature requests, please consider posting them on the github.

I'm also flattered that romanaOne took the time to add on some more cool stuff 

@romanaOne any chance you'd be willing to send a Pull Request with your changes to the main retroleap github? It'd be really cool to include this stuff in the next official release!


----------



## campbell0505 (May 17, 2020)

Damm, some Leapfrogs are hackable? Dunno if my old one is but I still have my L-max, but I don't know where the charger and cartridges are, all I remember is I had some cars game, and a counting one, and the main page of the system had a drawing game I think.


----------



## HakanAU (Jul 6, 2020)

I have a problem for copy content to LeapsterGS. What's the [email protected] password? Can you give ([email protected]) password, please? When I am trying a creat folder or copy a directory or file then [email protected] wants a password. I tried everything for copy files but it doesn't work for me copy command.

Cheers


----------



## Cralex (Jul 12, 2020)

HakanAU said:


> I have a problem for copy content to LeapsterGS. What's the [email protected] password? Can you give ([email protected]) password, please? When I am trying a creat folder or copy a directory or file then [email protected] wants a password. I tried everything for copy files but it doesn't work for me copy command.
> 
> Cheers



I haven't messed with my LeapsterGS in some time, but I believe you need to use one of the key files from https://github.com/mac2612/sshflash/tree/master/keys in order to authenticate. There should be a way to use the keys with whatever you're trying to use to transfer the files.


----------



## HakanAU (Jul 19, 2020)

Thanks, Cralex for your answer. I tried it many times but it still wants a password. I am not familiar to Linux. Can you help me, please? Where am I making a mistake? Please check my upload pictures.


----------



## Deleted User (Jul 30, 2020)

HakanAU said:


> Thanks Cralex for your answer. I tried it many times but it still wants a password. I am not familiar to Linux. Can you help me, please? Where am I making a mistake? Please check my upload pictures.


The sshflash directory is on your Desktop. As for the ROM name, you'll want to either escape the spaces or put the name in quotation marks.
Thus the correct command would be `scp -i ~/Desktop/sshflash/keys/id_rsa ~/Desktop/sshflash/nes/"Super Mario Bros.nes" [email protected]:/roms/nes`.


----------



## PizzaBitez (Jul 30, 2020)

haha. Can't believe this is a thing


----------



## HakanAU (Aug 1, 2020)

kittensauce said:


> The sshflash directory is on your Desktop. As for the ROM name, you'll want to either escape the spaces or put the name in quotation marks.
> Thus the correct command would be `scp -i ~/Desktop/sshflash/keys/id_rsa ~/Desktop/sshflash/nes/"Super Mario Bros.nes" [email protected]:/roms/nes`.


Thank you very much for your answer and help  It is my mistake. I said it before I am not familiar to Linux Terminal command. I am learning step to step. I did fix the path and everything great now.


----------



## Thrillhouse215 (Oct 22, 2020)

Hi all, 
First, wow, I cannot explained how thankful I am that there are people like you out here in the world, I love this stuff!  Thanks so much for the endless fun this provides.  Quarantine has provided me extra time at home and I started taking on some modding projects I've been hearing about with the Wii and DS.
I am very new to this and hoping to get some help.  I have some experience with Linux retro gaming with Batocera and some user experience with a repurposed laptop I run Mint on...so I know nothing.  I recently picked up a GS for my son (4 yo) after modding two 2DSs I found for my daughters (9 and 6 yo, welcome to the fam!) and then seeing what the Explorer could do. It seems now I didnt look into this enough and the GS is a little harder to crack.  
Luckily I found this thread!  I hit a few walls trying to get this going.  After what I thought was a successful flashing v1.2.1, my GS screen is now upside down and only a few buttons are working?  By dumb luck, a few of the buttons will allow me to get to the button map screen so I can report more details there if it will help troubleshoot the issue.  I've tried reverting back to stock by doing the Tune up mode but the LFConnect will no longer work properly; it just stays on the starting tune up progress bar and never proceeds.  After about 45 seconds, the ? button indicated that the State is in Timeout and the system eventually turns off.  Once I restart, it just boots back to retroarch but is still upside down display and random button mapping.
Any thoughts? Is it trash?  I had fun breaking it if so! I saw a post here to the stock source code but I am not sure how to manually apply the package.  Any advice would be appreciated!  Thanks all!


----------



## FaViO (Dec 17, 2020)

could someone just make a video or a step by step guide


----------



## antonionoriega (Dec 17, 2020)

This is my progress on Leapster Explorer with new 2.0 alpha version
I saw screen flickering on the retroarch menu, but not on the games

I think the image don't have the button mapping, so I was not able to push select/start to start games

I used ubuntu 18.04.5
I installed the dependencies (python 2.7 manually)
I replaced python2 by python2.7 on script to make it work

To boot into recovery mode I used ( Hold L + R + ? and touch Power)

A few pictures


----------



## Wakkawakka (Sep 19, 2021)

Sorry to bump this old thread but I've put together a couple of YouTube playlists of video tutorials I've created for getting Retroleap onto Leapfrog devices *using Windows 10 rather than Linux!* 

I can't post links as I'm a new member here but search on YouTube as follows to find them -

*Leapster Explorer (LF1000) device 
(search for 'Flashing a Leapster Explorer (LF1000) device with Retroleap')*

*LeapPad2 and LeapsterGS Explorer (LF2000) devices 
(search for 'Flashing a LeapPad2 (or LeapsterGS Explorer) with Retroleap (Retroarch) using Windows 10!')*

The LF1000 version has a GMenuNX frontend and a few standalone emulators.  Given the limited hardware (400Mhz ARM,64MB RAM) this seems to be a better approach than trying to run Retroarch.

The LF2000 version boots straight into Retroarch 1.7.3, and comes with a few emulators preinstalled.  This is as per mac2612's comments earlier in the thread.

Anyway, hope this is of some use to anybody still interested in repurposing these devices from their now grown-up kids!! :-)


----------



## esmith13 (Sep 19, 2021)

This is so freakin' cool on so many levels...


----------



## Wakkawakka (Sep 20, 2021)

I just added another video featuring a fixed up gpSP core running Mario Golf Advance Tour on a LeapsterGS Explorer / Retroleap!

Search YouTube for Andy's Retro Tech to find it.  A few more posts and I'll be able to post actual links!! :-)


----------



## DobaMuffin (Sep 22, 2021)

Wakkawakka said:


> Sorry to bump this old thread but I've put together a couple of YouTube playlists of video tutorials I've created for getting Retroleap onto Leapfrog devices *using Windows 10 rather than Linux!*
> 
> I can't post links as I'm a new member here but search on YouTube as follows to find them -
> 
> ...



How did you manage to modify the scripts when making the linux distro. I want to see about making a stock linux distro with a liteweight graphical user interface, and in general just have more control over the system.


----------

