During the time when it was commercially supported, the Nintendo Wii was criticized for not being as capable as its competitors, the Xbox 360 and the PlayStation 3. By running Linux on your Wii, you too can experience truly just how weak the hardware is! There is no task to which Linux on a Wii is well-suited, which is why I find it amusing in the same way as people hacking their kitchen appliances to run “Doom”. I have a few ideas in the future for pushing the Wii past what it was ever meant to do, but first I thought it would be useful to document how to set it all up. All of this was learned via trial and error, following steps from several partially-working tutorials. So here is how to run Linux on a Wii in 2021.
You will need:
Any SD card larger than 512 MB and no larger than 32 GB should work. 32 GB is a hard upper limit. There are slightly different kinds of SD cards, and each kind has an upper limit for how much storage it can have. The newest kind that the Wii supports is called SDHC, which supports up to 32 GB. Thankfully, to maximize compatibility, when manufacturers produce an SD card with a particular amount of storage, they make the card in the oldest style that can support that much storage. So most off-the-shelf SD cards available today with no more than 32 GB storage should be usable by a Wii. I have successfully used cards purchased recently from Best Buy and Walmart.
To get SSH working, you will also want:
When buying a USB to Ethernet adapter, make sure it claims to be compatible with the Wii, or check the reviews. The Wii is rather picky who its friends are. Fortunately, new compatible adapters are readily available online. If you have an existing adapter, you should try it in case it is compatible. However, any adapter supporting speeds beyond 100 Mb/s will for sure not be compatible.
wii-jessie-sd.img.xz
from this GitHub repository, decompress it, and burn the image onto the SD card. The decompressed file is like an ISO file, so merely copying the file to the SD card is not sufficient. This is a bootable Debian 8 image with a custom kernel, although I am not exactly sure what makes the kernel custom. This is the most up-to-date bootable image that I am aware of. Debian 8 has been out of support since the summer of 2020, so I would not run a public-facing server on a Wii, but Debian 8 is still plenty usable. I believe Debian 8 was the last popular Linux distro to have support for 32-bit PowerPC processors like the Wii's, so even if someone patched a newer kernel to work on the Wii, finding newer software would be an issue.# nano /etc/ssh/sshd_config
Change the line with "PermitRootLogin" to say
PermitRootLogin yes
Close the editor and run
# service ssh restart
Now, to find the Wii's IP address, look for the IPv4 address in the entry titled "eth0" in the output from running
# ifconfig
$ ssh root@192.168.1.11
using the IP address from the previous step instead of “192.168.1.11” to log inI have had no shortage of trouble getting Wiis to recognize a network adapter. If running “ifconfig” had an entry for “eth0”, congratulations. If not, read on. I recommend that you connect the Wii and the device you are SSHing from via Ethernet to the same router. I have successfully used both a router provided by my ISP and a cheap $20 router from Amazon. Sometimes, merely unplugging and reconnecting the adapter to the Wii will help the Wii detect it.
Additionally, running a connection test on the Wii before booting into Linux seems to help. To do this:
As a last resort, reformat the SD card and write the bootable image from GitHub to it again. If setting up multiple Wiis, you cannot just clone the first SD card to create the second. You have to start from scratch. If you clone an SD card that you have already booted into on a Wii and set up that Wii, you will not be able to connect to the network using a different network adapter. The adapter will be detected, sometimes it might even show up under ifconfig, but I never got an IP address. I tried with multiple network adapters that should have worked. I could even run a successful network connection test from the normal Wii settings menu using the same adapter, but only the adapter I had connected on the first Wii prior to cloning the SD card would work on either Wii. When I set up the second SD card "from scratch" like I did for the first card, another adapter worked on my first try.
The Debian 8 image is fairly minimal, so you will want to install additional software. I highly recommend not trying to download software on the Wii itself. In my experience, apt often uses more RAM than the Wii has left when downloading software. You can see this by trying to install anything more than a few megabytes in size. The download will go smoothly at first, then speeds will drop to below dialup speeds and the Wii will generally be unresponsive. I will explain another way to install software, but first, here are the steps to install software on the Wii itself if you want to try it:
Run the following command to open the relevant configuration file in an editor
# nano /etc/apt/sources.list
Add a second line
deb http://archive.debian.org/debian/ jessie main
And close the editor. Now run
# date --set 2008-01-01
This is necessary for all the certificates used to sign Debian’s packages to be treated as valid, although you likely do not need to go back that far. You are using an out-of-support Linux distro on a Wii, I hope you were not expecting to access the Internet 100% safely. Now run
# apt update
Now you can
# apt install whatever
I only had success downloading and installing software normally from the Wii when installing packages that had very few dependencies, perhaps just a few megabytes or less. To install anything interesting, I had to download the .deb file for every dependency, put all the .deb files in a folder on the SD card, boot up the Wii, and install the .deb files from the SD card. It seems that downloading the packages using the Wii is the issue. My guess is that apt tries to buffer downloads in memory, and then everything goes south when the Wii starts swapping.
Here is a small program to help with finding the URLs for dependencies and downloading them that you can run on your normal computer. It expects to be run on a system with typical "unix" shell tools. I have only tested it on Linux. It is not doing anything deep, so you should be able to write a similar script yourself to accomplish the same task.
Once you get the network adapter working, the issue you will consistently face is the small amount of RAM on the Wii. Anytime the Wii runs out of RAM and starts trying to use swap (also called virtual memory or a page file), performance becomes absolutely terrible. I have not witnessed any program that causes the Wii to swap ever successfully finishing. Even if I halt such a program, performance remains degraded until the Wii is rebooted. Since some of RAM is used by the kernel for caching, you have about 20 to 30 megabytes of usable RAM before it starts swapping. When I have time I will try disabling swap to see if that helps.
I hope you found this guide useful or at least interesting. I have a few ideas for what I can do with Linux on the Wii that I will try soon. When I do, I will be sure to post the results here. Happy hacking!