In generale, il Wii contiene due sistemi operativi. Uno viene eseguito su Broadway (la CPU principale), mentre l'altro viene eseguito su Starlet (la CPU di I/O). Entrambi sono memorizzati nei 512 MB di memoria NAND e possono essere aggiornati.
Il SO di Starlet
Come se Starlet non fosse già interessante sul lato hardware, lo è anche (e soprattutto) per quanto riguarda il software. Il SO di Starlet, infatti, non solo ha un accesso completo a ogni singolo componente della console, ma è il primo codice a essere eseguito quando viene premuto il pulsante di accensione.
Starlet contiene un SO noto in maniera non ufficiale come Input/Output Operating System, o "IOS" (da non confondere con iOS di Apple) . IOS è un sistema operativo praticamente completo, che include:
- Un microkernel: controlla la CPU ARM9, esegue i processi e dialoga con il resto dell'hardware tramite i driver.
- I driver: permettono di dialogare con l'hardware esterno alla CPU (I/O).
- I processi: si occupano di un'attività, ad esempio la gestione della rete o l'implementazione del file system.
- Un core crittografico: accelera le operazioni di crittografia (solo AES e SHA-1).
Con tutto questo a sua disposizione, il compito principale di IOS è quello di alleggerire il carico di lavoro sulla CPU principale occupandosi dell'I/O e della sicurezza. Gli sviluppatori, quindi, non dovevano preoccuparsi di questi aspetti. Per assolvere il suo compito, Starlet si riserva tra 12 e 16 MB di RAM GDDR3, mentre il resto viene utilizzato da Broadway e da GPU.
Broadway e Starlet dialogano tra loro utilizzando un protocollo Inter-Process Communication, o "IPC": in parole povere, le due CPU condividono due registri ciascuna. Una CPU può scrivere nei registri dell'altra (con dati che possono rappresentare un comando o un valore) e, come risposta, la CPU ricevente può eseguire una funzione.
Il sistema di aggiornamento di IOS è un po' complesso: le versioni aggiornate di IOS non sono installate sovrascrivendo le precedenti, ma vengono memorizzate in un altro slot (l'area della NAND riservata a IOS è infatti divisa in "slot"). Ciò avviene solamente per motivi di compatibilità: in questo modo, i software per Wii sviluppati per una versione di IOS precedente possono continuare a utilizzare la versione di IOS per cui sono stati sviluppati.
Nintendo rilasciava spesso aggiornamenti di IOS per migliorare il supporto hardware (ciò si rendeva necessario quando veniva messo in commercio un nuovo accessorio). Solo in un caso gli aggiornamenti di IOS sostituivano le versioni precedenti: quando in una determinata versione veniva scoperta una vulnerabilità sfruttabile. Le motivazioni, quindi, erano puramente legate alla sicurezza.
Quando viene inserito un gioco per GameCube, Starlet avvia invece un MIOS. Si tratta di una variante di IOS che chiede a Starlet di emulare l'IPL originale.
Il SO di Broadway
Questo sistema operativo è conosciuto più comunemente come menu Wii e viene eseguito sulla CPU PowerPC principale (Broadway).

Il menu Wii con svariati canali installati.

Il menu utilizzato per modificare le impostazioni.

La bacheca contiene le lettere raggruppate per data.
Se confrontato con IOS, non definirei "completo" questo SO: si tratta più di un programma che consente all'utente di eseguire le operazioni seguenti:
- Avviare il gioco per Wii/GameCube, solo se è stato inserito un disco valido.
- Modificare le impostazioni della console, come ora e data, modalità video, posizione della barra sensore e altre ancora.
- Eseguire applicazioni: una delle novità di questa console è rappresentata dalla possibilità di installare giochi per Wii di piccole dimensioni (chiamati "WiiWare"), videogiochi del passato (i giochi della "Virtual Console") o semplici applicazioni per uso pratico (come un browser internet). Queste applicazioni sono note ufficialmente come canali, anche se a volte all'interno del SO vengono chiamate titoli.
- Gli utenti possono scaricare/acquistare i canali attraverso un canale preinstallato chiamato Canale Wii Shop.
- I titoli della Virtual Console includono un emulatore utilizzato per eseguire il gioco stesso. Una caratteristica interessante dei titoli Virtual Console è che gli emulatori non sono condivisi né con il sistema in generale, né con gli altri giochi Virtual Console appartenenti alla stessa piattaforma. In questo modo, ogni gioco può girare su un emulatore appositamente ottimizzato.
- Ricevere/inviare messaggi: i Wii dispongono di un codice identificativo univoco (impresso nel chip SEEPROM) che può essere condiviso per consentire lo scambio di messaggi con altri Wii. I messaggi possono essere visualizzati nella Bacheca messaggi.
- Sia Nintendo stessa che i giochi per Wii utilizzavano questa funzionalità anche per inviare alle console una newsletter.
Come per IOS, anche il menu Wii è stato aggiornato numerose volte. Alcuni aggiornamenti correggevano falle di sicurezza, mentre altri aggiungevano nuove funzioni. Tra queste, una delle più importanti è stata la possibilità di memorizzare i canali nelle schede SD.
Ogni programma in esecuzione su Broadway (compreso il menu Wii) richiede una versione specifica di IOS per funzionare. Quando viene avviato un gioco o un canale, Starlet si riavvia utilizzando la versione dichiarata di IOS richiesta.
I pacchetti di aggiornamento
Nel riferirsi agli aggiornamenti, Nintendo utilizza la denominazione Aggiornamenti di sistema. Ogni pacchetto di aggiornamento contiene entrambi i sistemi operativi ed è identificato nel sistema di versionamento mediante numeri cardinali. L'ultima versione conosciuta è la 4.3E, rilasciata nel giugno 2010.
I pacchetti di aggiornamento del sistema possono essere scaricati dai server di Nintendo o installati dai dischi di gioco. Gli utenti possono verificare manualmente la disponibilità di aggiornamenti tramite il menu Wii. Se un gioco richiede una versione specifica di IOS non installata nella console, qualora il disco di gioco contenga i pacchetti necessari l'aggiornamento viene forzato.
Sequenza di boot
Finora abbiamo esaminato i due sistemi operativi, caratteristici per diversità, presenti nella console ed eseguiti simultaneamente. Ma le cose non sono semplici come potrebbero sembrare: infatti, i due SO devono essere coordinati con particolare attenzione durante la sequenza di avvio della console per poter funzionare correttamente in seguito.
La sequenza di boot della console è quindi la seguente :
- L'utente preme il tasto ON sulla console.
- Fase Boot0: Starlet esegue un programma a livello hardware contenuto nella Mask ROM integrata (da 1,5 KB).
- In breve: Starlet decritta e verifica l'integrità dei primi 96 KB della NAND, quindi ne calcola l'hash e lo confronta con un hash salvato nella memoria OTP integrata in Starlet stesso. Se i due hash non coincidono, la console entra in un loop infinito.
- Fase Boot1: Starlet esegue un piccolo programma contenuto nei 96 KB di NAND appena decrittati.
- Il programma chiede a Starlet di inizializzare (pulire) la RAM GDDR3 da 64 MB, per poi decrittare e verificare il resto della NAND.
- Fase Boot2: Starlet carica l'IOS iniziale (richiesto per eseguire il menu Wii), quindi avvia Broadway.
- Broadway avvia il menu Wii. Da questo momento, l'utente prende il controllo.