IOS/Versions

Revision as of 07:34, 13 May 2020 by RedBees (talk | contribs) (added WIP)

This list only covers IOS releases for the Wii (RVL) platform. IOS bringup with an emulator is covered in RVL_EMU, and IOS bringup with a separate ARM board is covered in Versa.

Note: All 0.x releases have the title ID corresponding to IOS3, and as such can be referred to as versions of IOS3 even though their major version number is 0.

Note: Listed in order of build date where possible.

IOS List
IOS Description
0.0 (2006-03-09) First release of IOS for RVL. This IOS was distributed as an image of 5 NAND blocks written using minimon with JTAG and debug boot using the Barnacle. Includes a simple test ELF tested on NDEV2 (which was still in early development at the time).
0.1 (2006-03-12) Fixes ISFS Resource Manager to support Broadway applications using MEM1 (Napa) address space, as well as fixing a bug in the exception handler. The release also includes a PPC program to overwrite the first 5 NAND blocks with images stored on a host PC. Includes PPC NAND/ISFS tests.
0.2 (2006-03-13) It is unknown what changes this release had from 0.1.
0.5 (2006-03-24) Version numbers 0.3 and 0.4 excluded for unknown reasons. This release is described as a "Special Release for 64 MB GDDR3", with testing being performed on a single NDEV1 with 64MB GDDR (possibly considered a PP board). This release also adds bad block traversal in boot1 and includes a THP player demo.
0.6 (2006-04-15) This release is the first to include full support for both 64 and 128MB memory sizes, with full dynamic detection. It also supports detection of Hollywood revisions 1.1x and 1.21 via DI straps, as well as disabling Napa refresh for ES1.21 systems and enabling the D-Cache in IOP.
0.6.1 Mentioned in readme
0.6.5 Mentioned in readme
0.7.5 RC1 (2006-05-26) This release finalizes the boot sequence, introducing a new boot1 and boot2 as well as moving IOS onto the main data area of the NAND SFFS instead of being kept on the system area with boot1/2. As such, this release is now installed using a SWUpdate program rather than NAND flashing, although NAND flashing is still required to upgrade from a previous version. This release also adds support for Hollywood ES2.01, updated SD and USB drivers, a DI driver with crypto support, updated TCP/IP and USB Ethernet drivers, an updated ES component, updated boot info and support for new events to be used by STM. Additional changes to OS, DI, ISFS, TCP/IP and USB were made as well.
0.7.6 RC1 (2006-06-02) Updated ES, USB, TCP/IP, DI, SDI (SD card/WiFi interface), and the arm-elf-merge tool. This is the first release to add support for ES play restrictions.
0.7.6 RC2 0.7.6 RC3 is a bug fix version of this release.
0.7.6 RC3 (2006-06-09) Updated OS, ES, DI, SDI, and TCP/IP. Added the ability to specify an IOS version for a disc partition.
0.7.6 RC4 It is unknown what changes this release had from 0.7.6 RC3.
0.7.7 RC1 It is unknown what changes this release had from 0.7.6 RC3.
4.0.0 (IOS4v0)

2006-07-08

Release candidate for IOS4. Has changes including full support for GameCube compatibility mode with included MIOS and the ability to publish GameCube NAND titles (which was never used by Nintendo).
4.0.1 (IOS4v1) 2006-07-20 Changes including the DVD-Video support flag in TMD becoming functional.
4.0.2 (IOS4v2)

2006-07-31

Changes including support for Hynix NAND flash and thread count increased to 68.
4.0.3 (IOS4v3)

2006-08-10

Bugfix release. Notably used by the Startup Disc Menu and Revolution SDK 2.1.
IOS4v259 Unknown version of IOS4 found on Korean Wiis.
IOS4v65535 Stub IOS
9.0.0 (IOS9v0) 2006-08-13 Release candidate for IOS9. Has improved ES launch time, 100 threads, 24 sockets, new FS API and other changes/bugfixes. This release is notable for improving the ES launch time by disabling ticket/TMD verification on NAND title launch, causing one of the Wii's largest security holes which was exploited repeatedly by hackers throughout the Wii's lifecycle for persistent system modifications and code execution.
9.0.1 (IOS9v1) Present on Wii Startup Disc console NAND and possibly used by the Wii Startup Disc, also possibly a version number change of IOS9v0 or another IOS.
9.1.0 (IOS9) 2006-08-31 Bugfix release.
12.0.0

(IOS12v0)

2006-10-25

Bugfix release. IOS12 is not the first IOS as has been mistakenly believed due to a build tag.
18.0.0 (IOS18v0)

2007-02-07

Release candidate for IOS18. Bugfix release.
18.0.2

(IOS18)

Unknown
18.3.0

(IOS18)

2007-04-04

Bugfix release.
30.4.0

(IOS30)

2007-04-13

Bugfix release.
IOS9v513
IOS9v516 Used by Wii System Menu v1.0 (except Japanese version)
IOS4
IOS5 IOS5 is the first in a series of mysterious IOSes only known to exist through their being referenced in a series of SDK DDF files in the extended SDK. These DDF files only include the IOS version numbers and title IDs, and as such no further details are known, however it can be assumed that IOS5-8 were all early internal development versions of IOS9, as there is no evidence of them being distributed to developers. IOS5 in particular is notable for allegedly being included as a stub on some Wiis; if this is true, it is possible that it is used for a factory tool on certain Wiis just as with IOS3. However, this IOS5 stub is currently not available. There is also a version of IOS21 using the IOS5 title ID (or at least filename, things haven't been very throughly tested), however it is most likely an unofficial fake and has no relation to the actual IOS5.
IOS6 IOS6 is another IOS only known through its mention in DDF files. Nothing else is known. This IOS does not have a "noFW" DDF, only a "FW" DDF.
IOS7 Same as IOS6.
IOS8 Same as above, but this IOS does not have a noFW DDF like IOS5. This IOS is mentioned in a SDK document, specifically being mentioned in the documents for a Wi-Fi library confirming that version 8.2.3 (v515) existed as of October 5, 2006 and was installed through a standard NDEV update program. As such, it was likely used for networking functionality during the late phases of the Wii's development.
IOS9
IOS10 IOS10 was used around the same time as IOS9 as essentially a development variant of IOS9, and was even compatible with both the devkit and retail system menus from that time. A stub of it exists on some retail Wiis with an odd version number, which allegedly came from an update; however, it's unclear why this stub was distributed as the functional version of this IOS should never have reached retail Wiis at any point. Apparently, the stub IOS10 was also the first stub IOS ever released, and the origin of the standard stub IOS dummy contents.
IOS11 IOS used by System Menu 2.0 and possibly 2.1, dated Nov 14 2006. v256 is a stub, it's unknown why.
IOS13 Used by some early channels (Photo 1.0/Mii), as well as being set in the TMD for the dummy Forecast/News Channels.
IOS14 Generic IOS.
IOS15 Notable for containing "NANDloader" (aka the NAND BOOT PROGRAM), a development tool, likely by accident; it was also used by an old homebrew app known as Trucha Bug Restorer. Other than that, it is a generic IOS.
IOS16 IOS16 is an IOS which was distributed only on the update partition of the Wii Backup Disc versions 1.30 and 1.31, and possibly other internal repair discs as well. The exact reasoning for this IOS's existence is unknown, since it's essentially just IOS15 with very minor changes; regardless, the IOS is notable for being non-retail and also for being used for hacking purposes after the 4.0 update patched all other IOSes, as IOS16 was leaked from a scene release of the Wii Backup Disc but Nintendo failed to release a stub update until after modders already began to use it. v512 is a stub created for said reasons. It's unknown what Nintendo did for repair discs after IOS16 got stubbed, however since the stub isn't max version, it's possible they just patched it and bumped the version number, or stopped using it entirely. Notably, not long after the stub was posted to NUS, it was removed from the Korean NUS, then readded at the same time as the System Menu 4.1 update. It is possible that there was internal uncertainty over if the IOS slot was used for other purposes in some Korean Wiis as with IOS4, or other such uncertainty over internal titles and their IOS usage.
IOS17 Used by some early games, such as Super Paper Mario.
IOS20 IOS used by System Menu 2.2, dated Feb 22 2007. As with IOS11, v256 is a stub.
IOS21 IOS commonly used by third party games.
IOS22 The earliest version of this IOS was only distributed through early disc updates and was never put on NUS; otherwise, it's a generic IOS.
IOS28 Notable for being the first IOS to introduce a new codebase where all functionality is split up into modules; previously, the internal structure was much more flat and simplistic. It also added some functionality to the ES module.
IOS30 IOS used by System Menu 3.0 through 3.4, and was the first IOS to add USB keyboard support. v2816 is a stub, which is odd considering its version number does not resemble the typical stub version number which is usually 256, 512 or max version. Back when it was being used for new System Menu versions, each new menu version brought a new version of the IOS, and it was otherwise not updated.
IOS31 Used by the current versions of some channels such as Forecast/News/Mii/Photo 1.1.
IOS33 Generic IOS.
IOS34 Generic IOS. At some point around late 2009, it was the main IOS used by the then-latest version of the HackMii Installer as long as the IOS had not been modified.
IOS35 Generic IOS, used by several games such as Super Mario Galaxy and one of the Call of Duty games.
IOS36 Notable for being used by several prolific first-party games such as Mario Kart Wii and Brawl (aside from the Korean versions of said games, which use other IOSes; the Korean version of Mario Kart Wii uses IOS46, but it's unknown IOS version Korean Brawl uses), as well as being frequently used by homebrew. Notably, no development version of it has been found, despite development versions of IOS35 and 37 being common. It's possible that this IOS was used only by Nintendo internally, and specific external studios to which it was given privately, as it was used for both first and third party games. The reason is unknown, since it doesn't seem to have any noteworthy functionality and even its networking capabilities were also possible with other IOSes which were released to developers at the time. Its Korean counterpart, as suggested previously, is IOS46.
IOS37 Known for being the first IOS branch to fix the signing bug on March 21, 2008, before it was deployed to all active IOSes in an update on October 28, 2008. Used by some WiiWare and older Guitar Hero/Rock Band games.
IOS38 Used by Animal Crossing: City Folk (aside from the Korean version which uses IOS48, presumably the Korean counterpart to this IOS); notable for being one of the few IOSes to support Wii Speak. Along with IOS55, it is required and installed by the Wii Speak Channel.
IOS40 Notable for being used by the Korean version of System Menu 3.3 (the first System Menu release in Korea); v2835 is missing, v2321 (the earliest version) is not on NUS and was found extracted from a console, and, oddly, a stub version v3072 was released on NUS for unknown reasons. It's currently unknown if this IOS was exclusive to Korea or not.
IOS41 Used by Korean Wiis. It's unknown if this IOS was exclusive to Korean Wiis or not.
IOS43 Same as above.
IOS45 Same as above.
IOS46 Used by Korean Mario Kart Wii, as opposed to IOS36 which is used in other versions of Mario Kart Wii; it's possible that, like the below IOS48, the 4* series was meant to provide Korean counterparts to international IOSes, and IOS46 was the Korean counterpart to IOS36. This IOS is also present in and possibly used for the Korean versions of "Need for Speed Undercover" and "Shin Chuukadaisen".
IOS48 Used by Korean Animal Crossing: City Folk, and bundled with the Korean version of System Menu 4.3. Presumably the Korean counterpart to IOS38, as both IOSes are used primarily for Animal Crossing. In addition, it appears to include mostly the same features as IOS38, except for a newer SDI module and a FFSP instead of a FFS module. It is unknown if it includes Wii Speak support like IOS38.
IOS50 System Menu 3.4 IOS, first released with the update on November 17, 2008. Stubbed with v5120.
IOS51 IOS for the shop channel released with 3.4, released at the same time as the aforementioned October 23, 2008 update which patched the fakesigning bug in most IOSes. Stubbed with v4864 as part of the System Menu 4.0 update.
IOS52 IOS for the Korean-exclusive System Menu 3.5, introduced along with it. It's unknown why this System Menu version exists, or this IOS. Stubbed with v5888.
IOS53 Used by assorted WiiWare and disc games, such as New Super Mario Bros. Wii and Big Beach Sports 2. According to WiiBrew, it was initially distributed alongside IOS55 with numerous third-party games. Monster Hunter Tri reportedly needs v5406 to work.
IOS55 IOS used often by newer disc games, including changes in the DI module, Wii Speak support, and support for Logitech USB steering wheels. It was frequently either used or required but not used by games due to its wide array of features; the Wii Speak Channel required and installed it along with IOS38, although it's unknown which one was actually set in the channel's TMD. One particularly notable example of a game which requires it is The Conduit, a Wii game which uses Wii Speak and requires the IOS as a result. It is also required by Need for Speed: Undercover, presumably due to its USB steering wheel peripheral. It is also used by first party games, including Wii Sports Resort. It is notable for causing behavior where, if a game which requires the IOS, but does not specify it in its TMD is launched without the IOS being present, Error 002 will trigger. In addition, Monster Hunter Tri reportedly needs v5406 to work.
IOS56 Used by some games such as Club Penguin: Game Day and Super Mario Galaxy 2, in addition to the Wii Speak Channel 2.0 (indicating Wii Speak support), and Wii Shop Channel v20 released on September 7, 2010. v5146 was never uploaded to NUS, and is only available on discs.
IOS57 Added additional USB drivers for USB 1.1, HID devices, hubs, Ethernet, and mass storage devices; was allegedly never used in any games, but was updated 3 times.
IOS58 IOS including support for USB 2.0 and USB camera through the CAM Module; was apparently only ever used in one commercial game (Your Shape from Ubisoft) as well as being bundled with the System Menu 4.3 update for unknown reasons, but was/is very widely used by homebrew due to being considered the most "modern" IOS because of its USB2.0 support. Is used by the HBC as of 1.0.8, and is the automatic IOS of most modern homebrew. It should be noted that the first version of the IOS, v5918, was only available on the Your Shape game disc, and the first version to be uploaded to NUS was v6175. Another update, v6176, was released later. This version was only available to third-parties through special request.
IOS59 Used only by Dragon Quest X, an MMORPG for the Wii notable for featuring off-disc game storage and network updates, features also not seen by any other Wii game. This IOS facilitates those features by adding modules for installing and handling content on an external USB drive, the only IOS to feature official support for this. It should be noted that WFS, the USB filesystem which this IOS handles, is an early version of the filesystem later used for Wii U USB devices, and that the earliest publicly available implementation of it is present in v6689 of this IOS, the first version of it which was present in the beta test for Dragon Quest X. v7201 was the first final version available on the final Dragon Quest X game disc, but was not uploaded to NUS. However, v9249, and possibly v8737, are present on NUS. It is also used for the USB Repair Channel associated with Dragon Quest X.
IOS60 System Menu 4.0/4.1 IOS, containing 15 content parts in addition to the ticket and TMD. Stubbed with v6400. "FreeTheBugged" is a patched version of some type, possibly to restore the signing bug.
IOS61 Used by some channels such as Photo Channel 1.1 v3 and higher, and older versions of the HBC (1.0.7 and earlier) before IOS58 was adopted. Formerly used by the versions of the Wii Shop Channel included with System Menus 4.0 through 4.2.
IOS62 Released along with Wii Shop v21, but is not used by it; instead, it's used for the both the Wii U Transfer and Wii System Transfer Tool. Released November 6, 2012, before the Wii U launch date.
IOS70 System Menu 4.2 IOS, first to include functionality that can determine if a Korean system has been region changed, which is used by System Menu 4.2 to brick these consoles by displaying Error 003. Breaks Preloader installation, although Priiloader fixed this. Stubbed with v6912. A "FreeTheBugged" version is also present.
IOS80 System Menu 4.3 IOS. Likely includes the same region change protection as IOS70, and is likely overall similar to it.
IOS202 Old Hermes cIOS used for USB support in old media player apps. Was never stubbed by Nintendo.
IOS222 Hermes cIOS used primarily for piracy. Stubbed by Nintendo with v65280, which was bundled with 4.2.
IOS223 Same as above.
IOS224 Same as above.
IOS236 A copy of IOS36 with patches applied, used for hacking purposes with older hacking methods. No Nintendo stub exists.
IOS249 Common slot for cIOS, including Waninkoko and d2x. Stubbed as with 222/223.
IOS250 Same as above.
IOS251 Same as above.
IOS254 Formerly used by an old hacking tool known as PatchMii as a temporary IOS and always used for BootMii as an IOS, Nintendo replaced it with a copy of IOS9 under v2 with the 3.4 update, then continued to give the IOS periodic updates that were just copies of the new versions of IOS9; this behavior is extremely odd, and was not used for any other IOS, so it's unknown why this was done or why IOS9 was chosen. Was eventually stubbed normally as with the other cIOSes with the 4.3 update. In addition to PatchMii, BootMii as an IOS also installs into the slot, with some versions of BootMii using v31338 and others using v65281.
IOS255 Unknown, believed to be a leftover IOS created by the xyzzy key dumper.

Additional Info

Incomplete, info gathered by User:Cosmo224

BroadOn Secure Kernel repo created 2005-06-03

*later renamed to BOOT3, then IOS

Timers introduced 2005-06-10

USB support introduced 2005-07-14

IOP-OS Emulator 0.0 2005-08-08

Thread sleeping introduced 2005-08-12

Resource Manager API introduced 2005-08-17

IOP-OS Emulator 0.1 2005-08-19

IOP-OS Emulator 0.2-pre0 2005-08-25

IOP-OS Emulator 0.2-pre1 2005-08-29

Threading tests 2005-09-07

Nintendo releases DI 0.0.x library to BroadOn 2005-09-09

GameCube TCP/IP stack released by Nintendo to BroadOn 2005-09-09

IOP-OS Emulator 0.2-pre2 2005-09-11

IOP-OS Emulator 0.2-pre3 2005-09-19

Beginning of SD APIs 2005-09-26

SDIO registration 2005-09-27

SDIO API headers 2005-09-27

SDIO API testing (initial) 2005-09-27

Syscalls for SDIO added 2005-09-28

SDIO now initialised at startup of IOS for SD card 2005-09-28

SD I/O test program 2005-09-29

SDIO becomes a library that can be linked to 2005-09-29

Iobufs added 2005-10-13

BroadOn fix iobufs to actually meet their API specs 2005-10-14

Code to generate secure Wii disc images implemented 2005-11-10

IOP-OS Emulator 0.3-pre0 (to avoid confusion) 2005-11-15

SDIO driver implemented 2005-11-17

IOP-OS Emulator 0.3 2005-11-18

Non-interactive SDIO test program created for IOS 2005-11-21

IOP-OS Emulator 0.4-premerge 2005-11-22

0.2-pre branch merged with main and version 0.4-merged 2005-11-22

Low-level DVD API code written 2005-11-29

boot0 finalised by ATI 2005-11-29

Beginning of ARM tools for Starlet 2005-11-30

Program to emulate interaction with Wii DVD drive added 2005-12-01

AES encryption added to Wii DVD images 2005-12-03 "except for changing the IV"

"ARM9 development board" register definitions added 2005-12-12 Early starlet?

Secure Kernel resource manager merged into IOS (async?) 2005-12-15

IOP-OS Emulator 0.4-pre0 2005-12-15 Same commit

IOP-OS Emulator 0.4 2005-12-20

Usermode SD driver - sits on top of SDIO 2005-12-21

Syscall generator ported to early Starlet/ARM9 devboard 2005-12-22

IOS running on Starlet for the first time 2005-12-22 First version of IOS running on hardware

Versa IOS for ARM9 Dev Board 0.0 2005-12-22

IOP-OS Emulator + IOP-OS 0.4.1 2005-12-23

New IV scheme 2005-12-23

Decrypting disk data added 2005-12-23

Secure Kernel function names renamed to IOS 2005-12-30

Message queues now run on ARM dev board/early Starlet 2005-12-30

IOS 0.4.1 binary accidentally added by BroadOn (thanks) 2005-12-30

iossh added for Starlet 2006-01-10

iossh now works on Starlet/ARM9 dev board 2006-01-11

PCI support implemented 2006-01-11

AES test program created 2006-01-12

-DVERSA_IOS tag added for compiling for Starlet 2006-01-13

OHCI partially done (high-level USB) 2006-01-14

Operating Conditions implemented 2006-01-16

Test code changed to only build for ARM/Starlet 2006-01-17

IOP-OS/IOS + IOS emulator 0.4.2 2006-01-25

"Version 2" waikiki code integrated into DVD emulation 2006-01-27

SD ported to Starlet/ARM 2006-01-30

boot0 image generation tools added 2006-02-01

LED output functions added 2006-02-02

DI test code added 2006-02-03

IOP-OS/IOS + IOS emulator 0.4.3 2006-02-03

minimon0 cleaned up for dev board 2006-02-03

More AES/SHA tests added 2006-02-06

IOS / boot2 split begins 2006-02-07

IOP-OS/IOS + IOS emulator 0.4.4 2006-02-07

Config info added for 512MB Samsung and Hynix NAND 2006-02-08

Flash commands enabled 2006-02-09

IOP-OS/IOS + IOS emulator 0.4.5 2006-02-10

IPC server added 2006-02-17

New flash types added 2006-02-20

Boot1 imported from ATI DV tree 2006-02-20

DDR3 tests added 2006-02-25

Code to try and write to the DI registers added 2006-02-26

AES now actually built(???) 2006-02-26

IPC now runs on Starlet 2006-02-27

DI tem. removed because it doesn't compile on ARM emu 2006-02-27

DOL to HEX format converter added 2006-02-27

Low level AES/SHA (hardware) added for Wii hardware 2006-02-27

New AES/SHA test versions (Version 2) 2006-02-27

Updated SHA test again 2006-03-01

Register write APIs added 2006-03-02

Memory map changed to allow for PPCBoot 2006-03-04

PPCBoot thread 2006-03-04

700Mhz DDR initialisation addded 2006-03-04

DVD init changed 2006-03-05

Disc Interface 0.1 2006-03-06

Added multiple debug levels 2006-03-08

Temp read access for FS added 2006-03-10

TCP Accept now works on IOS Emulator 2006-03-11

Rewrote sleep() 2006-03-12

Crypto calls added 2006-03-13

ARP now fully functional for IPv4 2006-03-14

Code to get the disc ID added 2006-03-15

SD Memory Test begins to function. 2006-03-15

update/game partition position reading 2006-03-15

Long calls implemented 2006-03-16

More(?) cryptcalls implemented 2006-03-16

They broke the Starlet 2006-03-16

Crypto branch merged 2006-03-16

dol2hex updated despite them never using it 2006-03-16

IOS now builds with crypto and no crypto 2006-03-17

SD & SDIO progress 2006-03-18

More SDIO progress (general checkin) 2006-03-20

Wii disc image test program added 2006-03-20

IOS-PY for ARM Starlet devboard unlinked from NDEV 1.x 2006-03-21

Wii disc image test program split into RVL and GC 2006-03-22

OHCI imports (imported from ohci_dev_0321 branch) 2006-03-22

IOS 0.4.0 for SDK Release 0 2006-03-22

They broke DI! 2006-03-25

Cache flushing and invalidation of AES/SHA keys added 2006-03-25

EEPROM test program (dev board boot0?) added 2006-03-27

Filesystem t4est for Revolution imported from NC tree 2006-03-28

Enhanced eTicket, TMD, and verification code 2006-03-29

USB AIPLL init (12.288Mhz/48Khz, 12.298/48.04 - compat) 2006-03-29

Resource manager for SDIO and SD implemented 2006-03-30

Certificates imported from NC tree 2006-03-30

Added the second SDIO controller for the WiFi card 2006-03-31

IOP SDK 1.1.0 2006-04-04

IOP-OS + IOS Emulator 0.5.0 2006-04-04

Crypto improvements 2006-04-05

SD (not SDIO) API implemented 2006-04-06

Network socket library first implemented (BroadOn pls) 2006-04-06

LaunchElf system call added 2006-04-06

SDI library added to build 2006-04-07

SDI library removed from build 2006-04-07

Ethernet Get MAC address, add and clear multicast etc 2006-04-07

SDI library added back to build 2006-04-07

IOP-OS emulator unbroken 2006-04-07

SDIO 0 (for actual SD slot) space defined in memory map 2006-04-07

Mutex support added for net stack 2006-04-08

Alarm support added for net stack 2006-04-10

Update to 2006-04-05 Nintendo net libraries 2006-04-11

Memory and C library functions added for net stack 2006-04-11

IOS split into 64MB and 128MB versions 2006-04-12

NoShell IOS target added - no shell IOS 2006-04-12

IP-related header files added 2006-04-12

Bootinfo for 64MB and 128MB systems added 2006-04-12

USB driver ported to RVL from emulator 2006-04-12

NVRAM emulation added 2006-04-12

Program to create RVL disk images with TMD hash created 2006-04-13