Difference between revisions of "IOS"

From Rare Gaming Dump
m (IOS is not a hypervisor, it's a form of access control. As far as I am aware, IOS enforced only hardware access restrictions and didn't check licenses. Downgrading is sometimes a generally useful thing to do, so preventing it is a form of restriction, not protection.)
 
(27 intermediate revisions by 16 users not shown)
Line 1: Line 1:
'''IOS''' is the Wii operating system running on the Starlet coprocessor. It handles different tasks and is responsible for most of the console's functions.<ref>http://wiibrew.org/wiki/IOS</ref> This article lists different slots that IOS uses, and the details behind those slots.
+
'''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 access control for the system, upholding hardware access restrictions. This article lists all of the known IOS versions, and their details/differences.
  
<references />
+
==General Notes==
== General Notes ==
 
  
  
* You may notice that 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.
+
*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 possibly 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.
+
**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."<ref>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.</ref> 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. To see which IOS versions are stubs, check StubGuide.txt.
+
***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.
  
* 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.
+
*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.
** 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.
+
*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 a anti-downgrade restriction.
** 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 from the folder; IOS40-64-v2835, which is a Korean IOS, and the IOS5 stub (as opposed to the fake IOS5).
+
*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 restrictions 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.
  
* There are some "Generic IOSes", IOSes where not much is known about their status/uses.
+
*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.
  
* 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.
+
*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).
** If an IOS is not listed, that means it doesn't exist, or we don't cover it. Please also refer to [http://wiibrew.org/wiki/Template:Navbox_IOS WiiBrew's listing] for reference.
 
  
* More IOSes are covered here than are actually present in the folder, since some unreleased IOSes are covered as well as a few anomalies.
+
*There are some "Generic IOSes", IOSes where not much is known about their status/uses.
** In each IOS's folder, the file with the highest version number in the filename is the latest revision; just check StubGuide.txt to make sure it's not a stub first.
 
  
== Per-IOS Information ==
+
*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 [http://wiibrew.org/wiki/Template:Navbox_IOS WiiBrew's listing] for reference.
  
(As mentioned previously, IOS 1 and 2 do not exist and could not exist under the typical definition of what an IOS slot is.)
+
*More IOSes are covered here than are actually dumped and available, since some unreleased IOSes are covered as well as a few anomalies.
  
{| class="wikitable"
+
==IOS Version History==
!colspan="6"|IOS List
 
|-
 
! scope="col"| IOS
 
! scope="col"| Description
 
|-
 
! scope="row"| IOS3
 
| IOS3 is quite interesting, and there is much more behind it than the generic stub which is present in the folder. IOS3 was used as the IOS slot and title ID for a series of pre-release IOSes used before the release of IOS4v3 in August 2006. Since IOS0 is not a valid title ID, and IOS1 and 2 are taken (as mentioned previously), IOS3 was the first choice to be the title ID for the initial branch of IOSes. While specific details are scarce, it is known that the IOS version 0.7.6 (v1978 in decimal) existed and was distributed to developers at some point before the aforementioned release of IOS4; according to information found in .ddf files in the extended SDK, it is believed that this version used IOS0 for its internal version number, but used the IOS3 title ID and as such installs to the IOS3 "slot". This is the only known instance of an official IOS's internal version number not matching with its title ID. Unlike its successor IOS4, IOS3 was never (as far as is known) released onto retail Wiis through any distribution channel.
 
  
However, the IOS3 stub present in the folder was released onto retail Wiis through one distribution channel; it was bundled onto newer (possibly LU64+) Wiis. It was never released on NUS or discs. The exact reasoning for this is unknown, however, as Nintendo's factory tools are known to use very old IOS versions, it can be assumed that IOS3 was used for a factory tool starting with a newer production batch of Wiis, and the stub was installed at the end of the factory process in order to overwrite the old, working IOS3. It was presumably vulnerable to the signing bug, and it was not used by any retail software, so it was easier to stub it than to pointlessly patch it. As such, while the IOS3 present in the folder is an odd generic stub, there is at least one more version of IOS3 in existence (and likely many more) which are working and were used for early development purposes.
+
See [[IOS/Versions]]
  
While datamining [[RVL_DIAG]], a version of IOS3 was discovered in the BroadOn WAD format, otherwise only used for boot2. Its purpose on the RVL_DIAG disc is unknown. It is believed to be one of the final versions of IOS3, possibly 0.7.6. It has not been converted to a normal installable WAD yet, but the binary has been successfully extracted.
+
==References==
|-
 
! scope="row"| IOS4
 
|Three versions of IOS4 have been released; v3, v259, and a stub identical to the IOS3 stub described above. An additional version, IOS4v1, is also known to exist. v3 was the 'original' version of IOS4, and has been found through 3 different sources; the development version present in the SDK's "swupdate403" package (available in the Development section), the version present on the Startup Disc NAND, and the version that was included with early Wiis and not overwritten until the October 2008 update. No retail games or applications used IOS4 due to it being a very limited and "barebones" IOS lacking what would come to be basic functionality, however it could be considered to be the earliest released IOS as v3 was distributed on Wiis, and for unknown reasons was even available on NUS for some time. As with how IOS3 was the primary development IOS before IOS4's release, IOS4 was used as the primary development IOS for a period of time in August-September 2006 before IOS9 was ready for developer use. As such, any Wii software built around that time typically uses IOS4, however the only available examples of this are the Startup Disc Menu and various unreleased factory tools that are known to use IOS4 from their TMD. For unknown reasons, Nintendo continued to include the IOS4 updater package (intended for updating a development kit from IOS3) with their development tools for years past when IOS4 was in use; this makes the development version of IOS4 readily available. IOS4-v1's existence is known due to remnants of it being found in the Startup Disc NAND, however not much else about it is known; since IOS4-v3 was considered finalized enough to be put on NUS, it can be assumed that this was simply an unfinished version of the IOS. As mentioned previously, IOS4-v3 was shipped intact on early Wiis; it is not known if this was intentional, or if it was only ever intended to be used for factory purposes and was not overwritten. Regardless, in October 2008, Nintendo released IOS4-v65280, a useless stub intended to overwrite all existing copies of IOS4. This stub was also preinstalled on Wiis around the same time as the IOS3 stub being preinstalled, indicating that IOS4 continued to be used for factory purposes. IOS4-v259 is by far the most mysterious version of this IOS, and very little about it is known; it has been said that it is a Korean IOS and was used on Korean Wiis at some point for unknown purposes, however further details at this point are scarce; it's not even currently known if the IOS is legitimate or not. This file will be updated if anything new surfaces.
 
|-
 
! scope="row"| 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. This fake IOS5 is available in the Fake/Modded folder, and as the stub has not resurfaced nor any functional version of the real IOS5, there is currently no IOS5 section in the folder.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| IOS7
 
| Same as IOS6.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| IOS9
 
| IOS9 is known for being the first "normal" IOS, being used as the first final release IOS for all retail software, including Wii System Menu 1.0 and launch day or near-launch day titles such as Wii Sports and WarioWare. Factory titles and repair titles, including Moviech, also use it. It's basic and limited compared to later IOSes (only having one LED pattern, for example), but is essentially the first IOS that was deemed stable enough to receieve regular updates and be used for retail games. Two things of note are v1, which is a version found on the Startup Disc NAND which is presumably used by the Startup Disc or factory tools used at the time, and the fact that SDK digging has revealed several more versions which have not been released, including v0 and v513 (where final is v516). It is believed that IOS9 was worked on starting with the above preliminary IOSes, got its first v0 release to devs around August, and as the Wii's launch neared the near-final and final versions were release. It doesn't appear that v1 was distributed to devs, just used for the Startup Disc NAND; it was built on August 22. It's also notable that there seems to be a major version skip here between v1 and v513; it's unknown why this versioning scheme was chosen, or what the significance of the chosen numbers for the final versions is.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| IOS11
 
| IOS used by System Menu 2.0 and possibly 2.1, dated Nov 14 2006. v256 is a stub, it's unknown why.
 
|-
 
! scope="row"| IOS12
 
| Allegedly the first IOS, however this is a mistake as the apparent evidence for this is simply a string referencing a source branch which was likely created long before IOS12, judging by how IOS seems to have been just one 0.x branch back in June when this IOS was allegedly first created. Other than that, nothing remarkable.
 
|-
 
! scope="row"| IOS13
 
| Used by some early channels (Photo 1.0/Mii), as well as being set in the TMD for the dummy Forecast/News channels.
 
|-
 
! scope="row"| IOS14
 
| Generic IOS.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| IOS17
 
| Used by some early games, such as Super Paper Mario.
 
|-
 
! scope="row"| IOS20
 
| IOS used by System Menu 2.2, dated Feb 22 2007. As with IOS11, v256 is a stub.
 
|-
 
! scope="row"| IOS21
 
| IOS commonly used by third party games.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| IOS31
 
| Used by the current versions of some channels such as Forecast/News/Mii/Photo 1.1.
 
|-
 
! scope="row"| IOS33
 
| Generic IOS.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| IOS35
 
| Generic IOS, used by several games such as Super Mario Galaxy and one of the Call of Duty games.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| IOS41
 
| Used by Korean Wiis. It's unknown if this IOS was exclusive to Korean Wiis or not.
 
|-
 
! scope="row"| IOS43
 
| Same as above.
 
|-
 
! scope="row"| IOS45
 
| Same as above.
 
|-
 
! scope="row"| 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".
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| IOS50
 
| System Menu 3.4 IOS, first released with the update on November 17, 2008. Stubbed with v5120.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| 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.
 
|-
 
! scope="row"| IOS80
 
| System Menu 4.3 IOS. Likely includes the same region change protection as IOS70, and is likely overall similar to it.
 
|-
 
! scope="row"| IOS202
 
| Old Hermes cIOS used for USB support in old media player apps. Was never stubbed by Nintendo.
 
|-
 
! scope="row"| IOS222
 
| Hermes cIOS used primarily for piracy. Stubbed by Nintendo with v65280, which was bundled with 4.2.
 
|-
 
! scope="row"| IOS223
 
| Same as above.
 
|-
 
! scope="row"| IOS224
 
| Same as above.
 
|-
 
! scope="row"| IOS236
 
| A copy of IOS36 with patches applied, used for hacking purposes with older hacking methods. No Nintendo stub exists.
 
|-
 
! scope="row"| IOS249
 
| Common slot for cIOS, including Waninkoko and d2x. Stubbed as with 222/223.
 
|-
 
! scope="row"| IOS250
 
| Same as above.
 
|-
 
! scope="row"| IOS251
 
| Same as above.
 
|-
 
! scope="row"| IOS254
 
| Formerly used by an old hacking tool known as PatchMii as a temporary 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.
 
|-
 
! scope="row"| IOS255
 
| Unknown, believed to be a leftover IOS created by the xyzzy key dumper.
 
|}
 
 
 
== References ==
 
  
 
In order of use:
 
In order of use:
Line 222: Line 40:
  
 
2 - http://wiibrew.org/wiki/IOS_History and associated IOS pages
 
2 - http://wiibrew.org/wiki/IOS_History and associated IOS pages
 +
 +
3 - RGD original research
 +
  
 
{{Template:WiiNavbox}}
 
{{Template:WiiNavbox}}
 +
{{Template:ChannelNavbox}}
 +
 +
<references/>
 +
 +
[[Category:Wii]]
 +
 +
[[Category:Firmware]]

Latest revision as of 08:59, 3 March 2024

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 access control for the system, upholding hardware access restrictions. This article lists all of the known IOS versions, and their details/differences.

General Notes

  • 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."[1] 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 a anti-downgrade restriction.
  • 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 restrictions 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

See IOS/Versions

References

In order of use:

1 - http://wehackwii.pbworks.com/w/page/8844411/IOS%20and%20RVL%20Downloads

2 - http://wiibrew.org/wiki/IOS_History and associated IOS pages

3 - RGD original research


  1. 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.