It will also cover what different minor versions are known to exist.
The Title ID of the IOSes follow this convention "00000001-000000xx" where xx is the IOS number in hexadecimal. The "IOS number" is best thought of as a "Major" version number for the firmware, and probably corresponds to a specific version of Nintendo's (proprietary) SDK -- for example, the version of the SDK used to compile Zelda: Twilight Princess probably was tailored to run on IOS9.
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-v516.wad" for version 516 (decimal)). Converted to hex, that 516 becomes 0x0204, and can be read as "2.4" -- IOS9, version 2.4.
As a rule, an existing IOS will never have new features added to it, to protect binary compatibility. This means that any updates for existing IOSes are only meant to fix bugs -- generally, security bugs.
As of late 2008, Nintendo has been replacing some versions of IOS with "stubs" -- small IOSes that do not seem to be functional. This is most likely an attempt to prevent vulnerable versions of IOS from being installed (see e.g. IOS254).
|Major||Minor(s)||Version Number(s)||Notes||NUS Availability|
|IOS4||0.3, 1.3, 255.0||v3, v259, v65280||Only has minimal drivers; possibly used during manufacturing and/or updating, broken into 3 pieces 2 of which are now shared contents as of Oct. 23rd update.||v65280|
|IOS9||2.4, 2.6, 2.8, 2.9||v516, v518, v520, v521||Has only one LED pattern: blinking. First "normal" IOS version.||v520, v521|
|IOS11||0.10, v1.0||v10, v256||Internal timestamp says Nov 14 2006 16:26:01||v10, v256|
|IOS12||0.6, 0.11, 0.12||v6, v11, v12||v6, v11, v12|
|IOS13||0.10, 0.15, 0.16||v10, v15, v16||v10, v15, v16|
|IOS14||1.1, 1.6, 1.7||v257, v262, v263||v262, v263|
|IOS15||1.1, 1.2, 1.3, 1.4, 1.9, 1.10||v257, v258, v259, v260, v265, v266||Contains NAND BOOT PROGRAM (AKA NANDloader) -- this was probably accidental||v257, v258, v259, v260, v265, v266|
|IOS16||1.1, 2.0||v257, v512||Initially used for Wii Backup Disc. Older versions were infamously used by pirates, but System Menu 4.0 included this IOS as v512 and is now a stub not unlike IOS3, IOS4 and retired Menu and Virtual Console IOSes which Nintendo no longer uses for their products.||v512|
|IOS17||2.0, 2.5, 2.6||v512, v517, v518||v512, v517, v518|
|IOS20||0.12, 1.0||v12, v256||Feb 22 2007 04:25:59||v12, v256|
|IOS21||2.2, 2.5||v514, v515, v516, v517, v522, v525||Contains NAND BOOT PROGRAM. Most debugging messages are removed. Most common for third-party titles.||v514, v515, v516, v517, v522, v525|
|IOS22||3.4, 3.9||v772, v777, v780||v777, v780|
|IOS28||5.8, 5.12||v1288, v1292, v1293||Starting with IOS28, firmware is divided into 15 modules. Added some ioctls to /dev/es.||v1292, v1293|
|IOS30||4.15, 4.16, 11.0||v1037, v1039, v1040, v2576, v2816||Added USB Keyboard support. Used by many previous versions of the System Menu. Now contains a backport of the IOS37 hash comparison bugfix.||v1037, v1039, v1040, v2576, v2816|
|IOS31||4.15, 4.16, 12.16||v1037, v1039, v1040, v2576, v3088, v3092||Now contains a backport of the IOS37 hash comparison bugfix.||v1037, v1039, v1040, v2576, v3088, v3092|
|IOS33||4.16, 11.16||v1040, v2832, v2384||v1040, v2382, v2384|
|IOS34||4.15, 12.15||v1039, v3087, v3091||v1039, v3087, v3091|
|IOS35||4.16||v1040, v3088, v3092||v1040, v3088, v3092|
|IOS36||4.18, 12.18||v1042, v3090, v3094||v1042, v3090, v3094|
|IOS37||8.22, 14.25||v2070, v3609, v3612||First to fix the signature-checking function bug||v2070, v3609, v3612|
|IOS38||14.19||v3609, v3610||Introduced with Animal Crossing: City Folk. Not yet analyzed but may have something to do with WiiSpeak.||v3610|
|IOS40||v2321, v2385, v3072||Present in Korean system.||v3072|
|IOS41||v2320, v2385, v2835||Present in Korean system.||v2835|
|IOS43||v2320, v2385, v2835||Present in Korean system.||v2835|
|IOS45||v2320, v2385, v2835||Present in Korean system.||v2835|
|IOS46||v2322, v2837||Present in "Need for Speed Undercover" and in "Shin Chuukadaisen" Korean.||v2837|
|IOS50||19.25||v4889, v5120||Came with the November 17, 2008 update. Used by System Menu 3.4.||v4889, v5120|
|IOS51||18.25||v4633, v4864||Used by a previous Shop Channel. Released at same time as fixes to remaining fakesigning bugs.||v4633, v4864|
|IOS52||v5661||Included with and used by Korean System Menu 3.5.||v5661|
|IOS53||v4113, v5149||Comes with Need for Speed Undercover. (Installation from NfS Undercover-disc keeps System Menu 3.3 and does not(!) install System Menu 3.4 when system had 3.3 before)||v4113, v5149|
|IOS55||v4633, v5149||Comes with Need for Speed Undercover. Seems to have changes in the DI Module. Loading the game with geckoos produces error #002. It can be an update for the new wireless USB Driving Wheel from Logitech, supported only by Need for Speed: Undercover. (Installation from NfS Undercover-disc keeps System Menu 3.3 and does not(!) install System Menu 3.4 when system had 3.3 before)||v4633, v5149|
|IOS56||v4890||Runs under the Wii Speak Channel 2.0.||v4890|
|IOS60||v6174||Used by System Menu 4.0||v6174|
|IOS61||v4890||Used by the Wii Shop Channel update that came with System Menu 4.0||v4890|
|IOS254||12.16||v2, v3||Distributed along with all System Menus since System Menu 3.4 as a quick fix for PatchMii, copy of IOS9||v2, v3|