After Nintendo’s initial release of the NES Classic back in November of 2016, it became an instant hit across the globe. And shortly after it was discovered that it could be hacked to install a ton of other game roms, it became even more popular, but Nintendo pulled it off the market shortly after that.
In what I can only assume was an attempt to close off the ability to hack to the NES Classic, Nintendo discontinued the console and focused on releasing the NES Classic.
But of course, who doesn’t like to just print money. Nintendo knew they were missing out on a huge opportunity by pulling the NES Classic off the shelves, so they re-released it in early 2018 and produced more inventory, they are usually in stock most places like Amazon. And they did make some updates to the software and hardware, but it wasn’t enough to keep hackers out.
If you’re looking to hack your NES Classic console to get more games, and you already have a Windows 10 PC, you can follow our old instructions, or skip to step 7 in this guide and follow along (disregard anything talking about USB passthrough if you already have a Windows PC).
Essentially the hacking process is exactly the same as it was before, you just need an updated version of Hakchi2 CE, the hacking software developed for this purpose. The only problem with Hakchi2 is that it only runs on windows. And that’s why I decided to put this guide together.
Hack NES Classic on Mac
There are a number of guides out there for hacking your NES Classic using an iMac, Macbook Pro, or other Apple computers, but as I was trying to do this myself, I found that a lot of them are incomplete and didn’t solve some of the issues I was having.
You will still need to run Windows on your Mac in order to make this hack work, but if you’re unwilling to load up Windows 10 in Bootcamp on your Mac, then this is a great solution for you.
What We’ll Be Doing in this Guide
- Downloading, Installing, and Setting Up Virtual Box running Windows 10 virtual machine on your Mac.
- Downloading Hakchi2 CE to add games to the NES Classic
- Installing the proper drivers needed to recognize the NES Classic
- Setting up the USB passthrough properly in order for the virtual machine to recognize the device
- Downloading NES roms to add to the NES Classic
- Adding new games to the console
Those are the basic steps needed in order to get this done, but they will be a little more involved than they sound. As long as you have basic computer knowledge and can follow directions, this shouldn’t be that bad.
Disclaimer: There is always the possibility that could you brick your console so you agree to follow this article at your own risk. We do not assume any responsibility for what you do from this point forward. There are ways to reflash the kernel and restore your device to its factory settings, but we’re not going to discuss those here.
I followed these exact steps myself with zero problems on a new NES Classic that was purchased in late July 2018, so I know for a fact that this process will work on the new versions of the console.
But enough of the babble, let’s get to it.
1. Download and Install Virtual Box
The first thing we need to do is download and install VirtualBox so that we can get Windows 10 up and running on your Mac.
Download VirtualBox Here (click on OS X hosts under VirtualBox 5.2.16 platform packages, version may be different)
Once the file has downloaded, double click on the file and then the installer, and follow the instructions.
2. Download and install the VirtualBox Extension Pack
Get the Extension Pack Here. (click on All Supported Platforms, under the VirtualBox 5.2.16 Oracle VM VirtualBox Extension Pack heading about 1/3 of the way down the page).
Double click the file and press install.
3. Download the Windows 10 iso file for VirtualBox
Click here and download the MSEdge on Win10 (x64) Stable for the VirtualBox platform. The file is over 4GB, so make sure you have the space. It shouldn’t take too long to download on a decent connection.
Once downloaded, double click on the .zip file in order to extract the files you need.
4. Import Windows 10 Appliance in VirtualBox
Open up VirtualBox and go to File > Import Appliance
Click the folder icon to the right of the empty box and browse to find the MSEdge – Win10.ovf file that should be in the folder you extracted in step 3. Then press the Continue button.
A new window will pop up with the Appliance settings, just press the Import button at the bottom, no need to change anything.
5. Setup the Virtual Machine to Passthrough the USB devices from your Mac to the Windows 10 VM
Connect your NES Classic to your computer using a micro USB cable and turn on the console (press the power button).
Once it is turned on, go to VirtualBox and you should see “MSEdge – Win10_preview” in the left pane. Click it once to highlight it.
Now click on Settings just above that.
In the settings window click on Ports and then USB.
Click the checkbox next to “Enable USB Controller” and either check USB 2.0 or USB 3.0, depending on what your computer has. Mine has USB 3.0, so that’s what I checked. You can figure this out by going to the Apple Menu in the upper left of your computer, About This Mac, then click on System Report…, once in the system information find USB on the left and click it. Then on the right you should see something that says USB X.0 Bus, that will be your USB number. If your computer is newer than 2013 (at least), you should have USB 3.0.
Now, with your NES Classic turned on normally, click the little USB icon with the plus sign to the right of the empty box.
You should see an option that says “Nintendo Co., Ltd…” click on that and press ok.
You should now see the Nintendo device showing up in that empty box on the settings page.
Click ok to save.
Turn off the NES Classic using the power button.
We now have to passthrough the NES Classic in its recovery mode, or FEL. We’ll be using both modes in the Windows 10 environment, so both need to be passed through. And we’ll actually be passing through a 3rd device later on.
To get your NES Classic in the FEL mode you need to hold the Reset button on the console, press the power button on, wait 2-3 seconds, and then release the power button.
The power indicator on the console should not light up, but you’ll see that it’s in the right mode when we add the USB passthrough.
Go back into the settings page and back to the ports > USB and click the USB icon with the plus sign.
You should now see an option for “Onda (unverified) V972 tablet in flashing mode…”. Click on this one to add it under the Nintendo one we added before, and press OK.
Now that we have the USB devices passing through to the Windows 10 VM, we can fire up Windows 10.
6. Launch Windows 10
In VirtualBox, you should now be back to that main screen that shows MSEdge – Win10_preview in the left pane. Single click it to highlight and click the Start button just above it.
This will start the Windows 10 VM so that we can use it to hack the NES Classic.
Some sites are reporting you may need a password for the VM, so if you do, try Passw0rd! (the 0 is a zero). I did not need a password for mine, but just in case.
7. Download Hakchi2 CE 3.3.0 (or whatever version they are on)
From within the Windows 10 VM, open up the Microsoft Edge browser (web browser) and download Hakchi2 CE 3.3.0 debug (or latest version), from here.
8. Download NES Roms to the Windows 10 VM
I can’t help you with this step, you’ll have to find the ROMs yourself and get them on to the Windows 10 VM somehow. I don’t know all of the legalities, since it’s technically piracy, so you’ll have to find the roms and download them yourself, but it’s not that difficult if you know where to look. My suggestion is just download them all right on the Windows 10 VM from the Edge Browser instead of trying to deal with shared folders and things like that.
9. Flash the Kernel on the NES Classic
The next step is going to be to flash the kernel on the NES Classic so that it can accept roms that aren’t on the system by default.
This is where it gets a little bit tricky, so read carefully.
Make sure your NES Classic is connected to your computer and turn it on.
Open up Hakchi2 CE and click ADD GAMES in the lower left corner.
A window will pop up asking if you’ve already flashed the kernel on the console, click No.
If you haven’t already, click the “Install Driver” button and let the driver for the NES Console install on your machine.
Follow the instructions to put the console into recovery mode by turning off the console, then holding the reset button, pressing power, then waiting 2-3 seconds and releasing the reset button. The light on the console should not come on.
Hakchi should detect that it’s in recovery mode and start the process of flashing the kernel, except it’s going to fail when it tries to reboot the system, so there’s something we have to do while it’s trying to do that.
When the process says that it’s waiting for your console to reboot, go back to your Mac side of things, find the VirtualBox application, click on the Windows 10 VM on the left panel to highlight it, right click on it, and select Pause. This will pause the VM.
Now, in VirtualBox still, go to Settings, Ports, USB, and click that little ‘add usb’ icon on the right of the box. You should now see one that says ‘hakchi’ or similar. Add that one to the box and click ok to exit settings.
Now right click on the Windows 10 VM again on the left panel and resume (or unpause) the VM.
Go back to the VM and wait for the reboot to finish. If it errors out and said that it took a long time to reboot the console, etc… close the window. Unplug the NES Classic, plug it back in, and click “Add games” again.
When it asks if you’ve already flashed the kernel say no (we didn’t since it failed the first time). You should be able to get through the process now without any issues.
It took me hours to figure out I had to add ‘Hakchi’ usb device for passthrough to complete the process, so hopefully this saves you the headaches I endured.
10. Add More Games and Update Artwork
Once the kernel is flashed you should be able to click Add More Games, browse to the Roms you downloaded and then click Synchronize selected games with NES/SNES Mini. And your games should then appear on the NES Classic.
Before you sync be sure to highlight new games and right click and select “Download box art for selected games” to ensure that you have all the artwork appearing on the dashboard of the console.
And that should be it. You should now be able to fire up the NES Classic and see all your new games appear. Although, if you didn’t mess with the folder structure in hakchi, you’ll have to click through some folders to see the games, but it’s easy to figure out, and you can change it if you’d like.
Tip: With the hacking of your NES Classic you now have the ability to reset games from the controller instead of having to get up and go to the console to physically press the reset button. Just press and hold select and the down arrow on the d-pad for a couple seconds and you’ll be brought back to the dashboard.
If you have any questions about this process, or something is confusing (or maybe I left something out), please let me know in the comments or on our Discord Server and I’ll try to help you out as best I can.
Remember, I take no responsibility if you mess up your NES Classic attempting to follow these instructions.
Also, if you plan on buying one of these consoles, you absolutely need a controller extension. I’m not sure why Nintendo made the controller cables a foot long, but it’s impossible to play comfortably without an extension.
Can this be done with a Macbook Pro 2017 with the USB-C ports? I have a USB-C to USB plugged in and the NES classic plugged in to the USB to USB-C
I know we talked on Twitter and never came to a solution, so if you happened to come across one for the USB dongle issue on the new Macs, let us know.
Thank you for this! I was stuck for hours before I added the Hakchi usb device. This was on a 2017 mbp with usb-c ports with a dongle. I set the vbox usb to 3.0.
yup, i was stuck there too so Im glad this helped you out. Also, good to know that you got it to work on a 2017 MBP with USB-C using a dongle. Someone else tried it and didn’t have any luck.
Stuck on step 5. When I click on Nintendo Co. Ltd. the OK tab is not clickable. Can I proceed anyway? Am I doing something wrong?
Here is a short thread on reddit chronicling my problems with this:
Did you try using the USB 3.0 setting instead of USB 2.0? If it’s a new laptop, it may not have USB 2.0. I can see at the bottom of your screenshot in the thread on reddit that it’s saying invalid configuration, which leads me to believe it’s because you’re selecting USB 2.0 instead of USB 3.0.
Thanks for responding Tom. No, I did check on that and my Mac does use the USB 2.0 setting, it is from mid 2011. Anyhow, thanks for pointing out the invalid settings, I saw that in the tutorial I followed and didn’t think anything of it, but it may be worth looking into. He didn’t mention why his said that, but on my end it claims I am low on memory. I checked and I have a lot of memory, so I’m not exactly sure what it is pertaining to. I created a screen shot if you will take a peek.
it looks like you have too much memory assigned to your Virtual Machine and the actual Mac is struggling with what’s left. It appears you have 4GB assigned to the Virtual Machine, which is more than half of what’s in the computer to begin with, so that may be your issue. I’m not sure if the Virtual Machine can run on just 2GB of RAM, but I would try dropping down to that and trying again. The VM may right extremely slow, but it may be your only option, unless you can find a computer that has a bit more RAM.
I’m at a loss- Every guide I’ve found says ‘You should see an option that says “Nintendo Co., Ltd…” click on that and press ok.’ but nothing seems to cover what to do if you actually see ”
Thanks, in advance
I’m not sure what exactly you’re asking here, I think something in your comment might have gotten left out… what are you actually seeing?
I have the same issue. When I get to Ports->USB, and I’ve checked, “Enable USB Controller”, when I click the USB+ icon, I get a message that says, “”.
I tried reinstalling the extensions for VirtualBox, since that is where the USB2/3 drivers are. I tried restarting everything, it is the same every time. Any ideas?
Thanks for the guide, worked perfectly! I was never asked about installing drivers, seemed to happen automatically, and I didn’t get the question about if I had flashed the ROMs until I press the Synchronise button, but that’s all the differences I saw.
awesome, glad you were able to follow it and get everything figured out. I’ll take a look at the order of my steps, maybe I had that dialogue box popping up too soon in my instructions.
How much space does the .ova file take up after I import it into VirtualBox (Step 4)?
Honestly, I don’t remember if it requires the full minimum install space (20GB) or if it’s just running off the .ovf file itself. I would be sure to have at least 20GB available though, just in case.
Thanks for sharing these instructions! Things were going well till I got to Step 9. I’m getting the message “Failed to attach the USB device Nintendo Co., LTD…” But I definitely completed step 5 correctly and have both USB ports setup…. I’m using USB 3 – which is what my Macbook supports.
Any ideas? The only major difference is that I’m using vbox 6 instead of 5.2.
I tried installing vbox 5.2. Same issue. USB Driver isn’t even installed and trying to install it generates errors. this sucks.
Unfortunately I don’t have many ideas… It’s hard to troubleshoot when I can’t physically be there to see what’s going on. Are you having issues after you click to install the NES Driver? Or have you already installed that? Make sure the drivers are installed on the VM. If so, Step 9 is a tricky one, so I’m not sure which part of that step you’re on, but be sure you read through it entirely before attempting that step as you need to pause the VM at a certain point and go back and pass-through a 3rd USB device when the NES classic is trying to reboot and flash the kernal.
Awesome walkthrough! I thought I’d share a hiccup I experienced… I couldn’t figure out why my VirtualBox wasn’t showing the Nintendo in the Add USB ports menu. A simple cable swap was all it took – I was using a tiny cable that I found, and when I changed it for a heavier cable, it works like it’s supposed to.
Hope that helps!
Thanks for the tip. This might actually help some of the other people in the comments that were having some issues.
When it comes time to click the + and add the nintendo in the usb drive section (step 5).. nothing appears. I’ve switched cables.. not sure what else to try.
I’m stuck at the point of synchronizing… the flash was successful, but when I click the Synchronize button it asks me to do the following steps: 1. connect via USB. 2. Turn it on. 3. Install driver.
I have installed that driver 10 times, and after I hit enter on the black screen, the “waiting for your NES” popup is still there. I have added two USB profiles to the virtualbox… should there be 3?
Yes, there are 3 USB devices you need to pass through. Re-read Step 9 in my walkthrough and make sure that you’re pausing the VM at that step and adding the 3rd USB device. This step is the whole reason I made it a point to write my own guide. It took me hours to figure out why I couldn’t get through this part. So you should end up with 3 USB devices passing through: the NES Classic in it’s normal powered on state, the NES Classic in it’s recovery mode state, and then the NES Classic when it’s trying to reboot in the flashing state. Hopefully that helps you get through the rest of the process.
Everything worked. The added games are on screen, but when I click them I get nothing. Help! I am so close.
Got em working…..
nice, glad you got it figured out!
I have the same problem. Games show up on my TV screen when I turn on nintendo but, it goes to black screen and then back to menu. How did you fix it?
Thanks for this! I’m stuck on step 9 currently. The old kernel seemed to back up without me having to add an USB ports. But it won’t upload the games, and just says ‘waiting for the device’. I’ve paused and gone to settings at this point, but I’m not seeing ‘hacki’ or anything like it in the USB options. Any suggestions? Thanks.
The old kernal probably didn’t actually backup if you didn’t add the USB ports to Pass Through. I would try again and follow the instructions exactly. Also make sure that you have the correct drivers installed.