{"id":1406,"date":"2024-08-12T12:00:00","date_gmt":"2024-08-12T19:00:00","guid":{"rendered":"https:\/\/letsbuildroboticswithshadow8472.com\/?p=1406"},"modified":"2024-08-12T03:15:23","modified_gmt":"2024-08-12T10:15:23","slug":"finally-passing-wii-hacking-101","status":"publish","type":"post","link":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/2024\/08\/12\/finally-passing-wii-hacking-101\/","title":{"rendered":"Finally Passing Wii Hacking 101"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Good Morning from my Robotics Lab! This is Shadow_8472 and today I am actually hacking my Wii. Let\u2019s get started!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">!!ALERT!!<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">THIS BLOG POST ABOUT WII HACKING IS UNMAINTAINED!! While unmaintained documentation can be entertaining or contain useful hints not found anywhere else, it often lacks nuance and is best treated as unauthoritative. Be careful with it. Be responsible with it. This applies to all media forms \u2013 especially YouTube.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As of writing in August, 2024, the authoritative site is <a href=\"https:\/\/wii.hacks.guide\/\">https:\/\/wii.hacks.guide\/<\/a> [1].<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Seriously. As with installing Linux or any activity that disregards OEM walled gardens, you take a risk by hacking your Wii. Many generous people have put years of effort into minimizing these risks, but at the end of the day, the only one to blame for bricking your device is you. The community may back you up on a volunteer basis with no obligations. You own your hardware. Have fun!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With that out of the way&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Recap<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A video game console must be built like a castle to protect company profits. Security must stop pirates while being as invisible as possible to legitimate customers. The Homebrew community doesn\u2019t cleanly fit into either category; it climbs the castle walls for fun, but in ways that aim to complement the original product.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I bought a Wii from someone in my area a couple years back with the intention of hacking it. I\u2019ve researched it sporadically since then, building confidence, then backing out each time. Last time, I made it so far as to install the Homebrew Channel on Dolphin Emulator. This time, I make it all the way.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Homebrew Channel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">All video game consoles are just specialized computers. The Wii just didn\u2019t hide this fact as much as most previous consoles. Its operating system boots to a menu with sever channels I mostly ignored, but nonetheless shaped the system\u2019s identity. Perhaps the most [in]famous channel is The Homebrew Channel, a menu for 3rd party software and the primary objective for this week.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There is no direct way to install the Homebrew Channel, so an exploit must be used. The Wii has a rich history of exploits that rely on specially corrupted saves of specific games, but the three in use today only require an SD card formatted to FAT32 (LetterBomb and Wilbrand) or an Internet connection (str4hax). The idea is to load HackMii and install The Homebrew Channel from there.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Glossary of Terms<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The Wii uses a lot of abbreviations. Refer to this section if you see any.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Brick v. \u2013 to mess up software so bad, the system won\u2019t start. It may as well be a clay brick.<\/li>\n\n\n\n<li>CIOS \u2013 Custom IOS<\/li>\n\n\n\n<li>IOS \u2013 Acronym unknown. Pertains to files in Wii\u2019s firmware (Has nothing to do with Apple\u2019s iPhones)<\/li>\n\n\n\n<li>NAND \u2013 System memory<\/li>\n\n\n\n<li>NUS \u2013 Nintendo Update Server<\/li>\n\n\n\n<li>NUSD \u2013 NUS Downloader<\/li>\n\n\n\n<li>WAD \u2013 Wii Application Distribution<\/li>\n\n\n\n<li>YAWMM \u2013 Yet Another Wad Manager ModMii Edition<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Groundhog Exploits<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">First of all, what kind of Wii am I hacking?<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>White with GameCube adapters<\/li>\n\n\n\n<li>US Serial number<\/li>\n\n\n\n<li>Firmware upgraded to 3.3U to play Animal Crossing: City Folk (U for US region)<\/li>\n\n\n\n<li>Bought 2nd hand, but presumably stock (unmodded)<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">As part of my setup, I joined the r\/Wiihacks Discord server. The community was friendly enough, but I let myself be pressured into updating to firmware version 4.3U, but only once I\u2019d confirmed my serial number matched US region. Updating to or past 4.2 carries a slight chance of bricking in exchange for simplified research. I was OK, but I strongly advise you to research how to update to 4.1 and hack from there.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I started with str4hax, which aims the Wii\u2019s DNS at a special server that replaces the User Agreement with Dashie (Rainbow Dash from <em>My Little Pony: Friendship is Magic<\/em>) and takes one to two minutes to glitch the system into loading a script that boots the Wii into BootMii. I saw the exploit performed on a YouTube video, so I knew to expect rainbow static with green flashes. BootMii hung (got stuck) on its anti-scam warning, so I tried it around a dozen times in total.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What I didn\u2019t understand at the time was the difference between exploit and payload. This difference was more apparent after running Wilbrand, a Wii Message Board based exploit named after the inventor of TNT. Using a bunch of special information including a Wii\u2019s MAC address, it generates a special letter stored on a properly formatted SD card. When this letter is opened, the Wii crashes and loads boot.elf from the SD card. It took several tries to format my SD card, but once I had Wilbrand working, it was a much faster turn around. When it works correctly, HackMii should load quickly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neither of these were perfectly consistent:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>str2hax hung on Dashie for me once and a few times the script to load HackMii failed trying to change Internet settings.<\/li>\n\n\n\n<li>Wilbrand sometimes gave me a black screen and a blinking blue disk drive (.5 sec. on\/.5 sec. off). I also had it drop TV signal in a different fail state.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">HackMii Being Stubborn<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Whichever exploit you use, when HackMii loads correctly, it puts a scam warning on screen, and after 30 seconds (or until HackMii finishes loading) it should tell you to press 1 to continue on to installing The Homebrew Channel and BootMii.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In my experience though, HackMii hung on this screen with no visual feedback besides the remote being stuck on (working correctly, HackMii does disconnect the remote). I was stuck here for over a day. Wisdom gleaned from community documentation and forum posts say this error is caused by one or more cIOS (or custom IOS) present on the Wii, which can be an indicator of piracy. The accepted diagnostic tool is SysCheck, but its documentation says to load it from The Homebrew Channel I haven\u2019t installed yet!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Under advisement, I was directed to try using ModMii, a tool intended exclusively for Windows. Running under WINE, the CLI edition of version 7.0.2 wants to update to the latest version: 7.0.2. It also failed to set up its download list. The GUI edition was slightly less buggy in that it recognized it was up to date. I tried a few versions of WINE\/Proton using Lutris to switch between them, but nothing worked. I was not desperate enough to explore trying .net to see if that made ModMii run. WINE rating: Garbage<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Exploring on my own, I felt silly when I found a file called installer.log:<\/p>\n\n\n\n<pre class=\"wp-block-verse\">HackMii v1.2 installer starting up<br>PVR = 00087200<br>running under IOS 38 rev 0xe19<br>52 titles are installed<br>Found IOS 16: revision: 0x200.<br>Found IOS 10: revision: 0x300.<br>Found IOS 80: revision: 0x1b20.<br>Found IOS 38: revision: 0xe19.<br>Found IOS 37: revision: 0x161f.<br>Found IOS 36: revision: 0xe18.<br>Found IOS 35: revision: 0xe18.<br>Found IOS 34: revision: 0xe18.<br>Found IOS 33: revision: 0xe18.<br>Found IOS 31: revision: 0xe18.<br>Found IOS 30: revision: 0xb00.<br>Found IOS 28: revision: 0x70f.<br>Found IOS 22: revision: 0x50e.<br>Found IOS 20: revision: 0x100.<br>Found IOS 17: revision: 0x408.<br>Found IOS 15: revision: 0x408.<br>Found IOS 14: revision: 0x408.<br>Found IOS 13: revision: 0x408.<br>Found IOS 12: revision: 0x20e.<br>Found IOS 11: revision: 0x100.<br>Found IOS 21: revision: 0x40f.<br>Found IOS 2: revision: 0x201.<br>Found IOS 9: revision: 0x40a.<br>Found IOS 4: revision: 0xff00.<br>launching IOS 38 for the installer\u2026<br><br>IOS launched\u2026<br><br>IOS versions: Installer: 38, HBC: 0<br>starting preparations<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Acting under the assumption I might have a bad cIOS hiding in that list, I converted the revision hexadecimal numbers into decimal looked up each one up on wiibrew.org [2]. All I found was that IOS2 was a false positive and actually part of the system menu. After bringing this back to r\/WiiHacks\u2019 Discord, I was advised about an odd line:<\/p>\n\n\n\n<pre class=\"wp-block-verse\">IOS versions: Installer: 38, HBC: 0<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">HackMii usually works better exploiting another IOS, like IOS58, which was either absent or incorrectly loaded during the 4.3 update (I never was properly convinced either way). Discounting ModMii or technical piracy, my last chance at obtaining IOS58 was NUSD. While it is a Windows tool, I found NUSD runs perfectly in WINE on Linux. Platinum rating.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From there, I loaded a WAD file for IOS58 on my SD card alongside a WAD manager called YAWMM, and copied\/renamed its boot file to &lt;SD_card&gt;\/boot.elf as the payload in place of HackMii. Installation was straightforward from there, and HackMii was repaired.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A blow for blow description of the solution that worked for me can be found here: <a href=\"https:\/\/www.rwiihacks.com\/tutorials\/hackmiiscamstuckfix\/index.html#method-3\">https:\/\/www.rwiihacks.com\/tutorials\/hackmiiscamstuckfix\/index.html#method-3<\/a> [3]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cPress (1) to continue\u201d appeared, and I used it to install both The Homebrew Channel and BootMii as an IOS.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">BootMii and Priiloader<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The Wii has three boot stages: boot0, boot1, and boot2. boot2 can be written to, but only early hardware revisions will brick if boot2 is homebrewed. HackMii detected a patched motherboard and didn\u2019t let me install BootMii to boot2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BootMii can backing up and restoring the Wii\u2019s internal NAND memory. If you can install it to boot2, it gives you a low-level option to recover from a brick. I don\u2019t get that though.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">My next obstacle is SD card size. A stock Wii can only use a 2GB or 32GB SD card depending on if it is running firmware version 4.0 or later. It is recommended to have something a bit bigger than 256MB, as I have been using so far. I sacrificed my Manjaro ARM 32GB microSD for the cause, but I got a NAND backup through BootMii.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Priiloader loads after boot2 and before the System Menu and thereby is a powerful tool from recovering from a brick (though it is second to BootMii boot2 edition). It also offers a bunch of customization options to research another day, but following the wii.hacks.guide tutorial, I disabled disk\/online updates and disabled an anti-flicker feature intended for tube TV\u2019s.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D2x and cIOS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">As a general rule, wisdom gleaned from the community says cIOS should be avoided, as they\u2019ve learned how to do most things they want to do without changing firmware. However, the wii.hacks.guide checklist does install four cIOS files. Published details are vague, but I gather they do things like allow loading games off USB instead of the DVD drive and using unofficial online services. Wiibrew.org wasn\u2019t particularly helpful when I looked each base IOS up, but then again this is my first time customizing firmware.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Diving deeper, D2x patches official IOS files during installation. This process went smoothly even if it was nerveracking. I double or triple checked each of the four ISO\u2019s to be installed. But even if something did go wrong, that\u2019s what doing a NAND backup early is for.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Loading Homebrew Apps<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One more touch, and I can consider my Wii fully hacked for now: the Homebrew Browser. If The Homebrew Channel doesn\u2019t find apps on the SD card (or optionally a USB drive), it shows nothing but bubbles your pointer can pop on contact. The Homebrew Browser can load and update apps to SD (or USB), but itself must be loaded manually. I installed a few recommended utilities, but further tinkering will have to wait for another topic.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Takeaway<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Unfortunately, the channel I was working in\/using for notes was deleted once I had gotten to The Homebrew Channel. I am mad because by then I had only written my disclaimer and half the recap by then. By God\u2019s grace, I forgive the one[s] responsible, but my hope is that our shared lesson be the value of the footprints we leave behind when working in niche community support topics.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Final Question<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Have you ever tried hacking\/soft modding a Wii or any other game console? I look forward to hearing from you in the comments below or on my <a href=\"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/discord-invite\/\" target=\"_blank\" rel=\"noreferrer noopener\">Socials<\/a>!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Works Cited<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">[1] Nintendo Homebrew, \u201cWii Hacks Guide,\u201d<em> wii.hacks.guide<\/em>, 2024. [Online].Available: <a href=\"https:\/\/wii.hacks.guide\/\">https:\/\/wii.hacks.guide\/<\/a> [Accessed Aug. 12, 2024].<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[2] <em>wiibrew.org<\/em>,Nov. 18, 2021. Available: [Online]. <a href=\"https:\/\/www.wiibrew.org\/\">https:\/\/www.wiibrew.org<\/a> [Accessed Aug. 12, 2024].<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">[3] u\/WiiExpertise, \u201cHackMii Scamstuck Fix,\u201d<em>rwiihacks.com<\/em>, 2023. [Online]. Available: <a href=\"https:\/\/www.rwiihacks.com\/tutorials\/hackmiiscamstuckfix\/index.html#method-3\">https:\/\/www.rwiihacks.com\/tutorials\/hackmiiscamstuckfix\/index.html#method-3<\/a> [Accessed Aug. 12, 2024].<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Good Morning from my Robotics Lab! This is Shadow_8472 and today I am actually hacking my Wii. Let\u2019s get started! !!ALERT!! THIS BLOG POST ABOUT WII HACKING IS UNMAINTAINED!! While unmaintained documentation can be entertaining or contain useful hints not found anywhere else, it often lacks nuance and is best treated as unauthoritative. Be careful &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/2024\/08\/12\/finally-passing-wii-hacking-101\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Finally Passing Wii Hacking 101&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_forum_subforum_count":0,"footnotes":""},"categories":[1],"tags":[393,185,184,392,183,394],"class_list":["post-1406","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-hacking","tag-homebrew","tag-nintendo-wii","tag-softmod","tag-wii","tag-wii-homebrew"],"_links":{"self":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts\/1406","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/comments?post=1406"}],"version-history":[{"count":1,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts\/1406\/revisions"}],"predecessor-version":[{"id":1407,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/posts\/1406\/revisions\/1407"}],"wp:attachment":[{"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/media?parent=1406"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/categories?post=1406"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/letsbuildroboticswithshadow8472.com\/index.php\/wp-json\/wp\/v2\/tags?post=1406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}