IOS (internally known as IOP-OS and boot3) is the Wii's operating system running on the IOP (Starlet) ARM9 core inside the Hollywood/Bollywood package, developed by BroadOn. It handles I/O and security tasks, providing hardware access to the Broadway as well as serving as a barebones 'hypervisor' for the system upholding content licensing restrictions. This article lists all of the known IOS versions, and their details/differences.
- All retail IOSes have "64" in the filename, and some development IOSes have "128" in the filename; this signifies the MEM2 size that the IOS is configured to run on. MEM2 is the Wii's larger main memory, not present in the GameCube, and while retail units have a 64MB MEM2, certain development units (NDEV and RVT-H Reader) have a 128MB MEM2; as such, IOSes built to run on these units have "128" in their filename, and IOSes built for 64MB development kits and retail units have "64" in their filename.
- IOSes use two different version number schemes; one is used for retail IOSes and is seen on Nintendo's update servers and discs, and another is used for development IOSes and internal purposes. As such, all retail IOSes in the folder use one scheme, and all development IOSes use another. As quoted from Wiibrew: "Each IOS has a 16-bit version number in its TMD. This version number is seen in decimal form in the filenames of IOS WADs on update partition (e.g. "IOS9-64-v516.wad" for version 516 (decimal)). Converted to hex, that 516 becomes 0x0204, and can be read as "2.4" -- IOS9, version 2.4." The "IOS-64-v" format is used for retail IOSes, and "firmware.64/128.(hex version number).(major version)" is used for development IOSes.
- Development IOSes are similar to retail IOSes, however they use the development encryption keys in place of the real ones, meaning that they will only handle development-signed content, which retail IOSes will not handle. It should be noted that since the development private RSA key is public information (or rather, developer information which has been leaked), it is possible to sign arbitrary content and install it with development IOSes.
- There are around 253 possible IOS "slots", referring to the IOS's major version, which is, aside from one known exception, also the IOS's title ID in hex form. (IOS1 and IOS2 would not be possible without using different title IDs, as those title IDs would conflict with those for boot2 and the System Menu, respectively. IOS0 may also not be a valid title ID.) However, the highest slot number that Nintendo ever assigned a non-stub IOS was 80, meaning that all IOS slots above 80 can only ever be filled with unofficial IOSes, official IOSes with their title IDs changed, or Nintendo's stubs designed to overwrite unofficial IOSes.
- Stubs are "dummy" IOSes, that are installable but not usable and contain only a few kilobytes of content. These were intended to save space on NAND after updates, but also served as anti-downgrade protection.
- For unknown reasons, Nintendo stubbed almost every System Menu IOS after updating the System Menu to a new version which didn't use it. It's possible that this was meant to be anti-downgrade protection of some sort.
- System Menu versions are independent of IOS versions aside from the one set in their TMD, and when this document mentions an IOS coming with a System Menu version, that just means it was part of the same NUS update batch, not that the actual System Menu version has any relation to that IOS.
- For unknown reasons, Korean Wiis had many technical changes from Wiis of other regions, including using entirely different encryption keys. Nintendo made several IOS branches and even an entire System Menu version (3.5) dedicated to Korean Wiis, and these IOSes are similar to development IOSes in that they only handle Korean-signed content.
- The IOS40 series seems to have been dedicated to Korean IOSes, and is also notable for skipping almost every other slot. It had many Korean counterparts to international IOSes, used for the Korean versions of those games.
- Aside from IOSes which were never released/leaked, there are two known missing IOSes; IOS40-64-v2835, which is a Korean IOS, and the IOS5 stub (as opposed to the fake IOS5).
- There are some "Generic IOSes", IOSes where not much is known about their status/uses.
- There are several odd gaps and missing IOSes when going sequentially down the list; it's unknown what the purpose of these are, possibly internal IOSes being skipped over.
- If an IOS is not listed, that means it doesn't exist, or we don't cover it. Please also refer to WiiBrew's listing for reference.
- More IOSes are covered here than are actually dumped and available, since some unreleased IOSes are covered as well as a few anomalies.
IOS Version History
In order of use:
2 - http://wiibrew.org/wiki/IOS_History and associated IOS pages
3 - RGD original research
- It is worth noting that it appears that a traditional versioning scheme was used for IOS internally, and the "vXXX" identification is a misnomer - IOS9v516, for example, is not IOS9v516 or IOS9, version 2.4, but IOS 9.2.4.