# Rockbox

Rockbox è un progetto free software orientato al miglioramento delle performance dei lettori MP3 portatili più diffusi, sia in termini efficienza che di quantità di codec audio supportati. Il software Rockbox ottiene questo risultato installando sul dispositivo ospite un boot loader che attiva il proprio sistema operativo bypassando quello installato di fabbrica, mantenendo comunque disponibile il firmware originale.

## Funzionamento

Rockbox consiste in un pacchetto di firmware maturo, stabile, flessibile ed estendibile mediante plugin. Tra le altre caratteristiche, Rockbox include un'interfaccia utente parlante, particolarmente apprezzata dagli utenti non vedenti.
La flessibilità del pacchetto Rockbox ne ha facilitato negli anni il porting su piattaforme anche diversissime tra loro, dai vecchi Archos Jukebox ai moderni Apple iPod Video. Ogni porting nasce in modo specifico per la piattaforma, e ne sfrutta per quanto possibile le caratteristiche intrinseche, come i display ad alta risoluzione o la registrazione.
Le dimensioni del firmware Rockbox hanno imposto ai progettisti, quando possibile, di separare il software in due porzioni ben distinte:
* un boot loader minimale, residente su memoria flash EEPROM;
* il sistema operativo completo, residente su disco fisso.
Analogamente ad altri boot loader come LILO o GRUB, Rockbox permette al momento dell'avvio del dispositivo di scegliere di avviare il sistema operativo originale, in modo da non perdere eventuali compatibilità.
A differenza del firmware di alcuni lettori commerciali (es. iPod), Rockbox è basato sul drag and drop dei file e delle cartelle ed è possibile navigare nel file system. È stata però introdotta anche la funzionalità di database, che permette al lettore di organizzare le informazioni ottenute tramite ID3 tag (artista, album, genere musicale ecc.) e di navigare nella libreria attraverso tali informazioni.

## Architettura

Rockbox usa un semplice kernel con un modello lineare di gestione della memoria (che gli permette di funzionare anche su piattaforme sprovviste di una MMU) e single process. I threads lavorano cooperativamente, ridando il controllo allo scheduler che dà la priorità al processo audio. Il sistema operativo e i plugin sono scritti in C, con alcune parti più critiche scritte in assembly. Con la sua semplice e leggera architettura, Rockbox può funzionare su una grande varietà di dispositivi, con memorie variabili da 1 a 64 MB e velocità di CPU comprese tra 12 e 532 MHz. Esiste anche un limitato supporto per architetture multicore o sistemi multiprocessore asimmetrici.

## Sviluppo

Il progetto Rockbox nasce alla fine del 2001 per estendere le limitate funzionalità dei lettori Studio e Ondio prodotti da Archos. A quei tempi la decodifica MP3 era interamente demandata a chip dedicati in hardware, permettendo ben poche migliorie prestazionali. In effetti il primo successo raggiunto dal software riguardò la sostituzione della spartana interfaccia utente di questi dispositivi, più che in un vero e proprio aumento di funzionalità.
Nei dispositivi più recenti la decodifica audio viene eseguita da processori general purpose, permettendo grandi ottimizzazioni e personalizzazioni sul versante software, tra cui un proliferare virtualmente inarrestabile di codec audio gestibili.
Il primo di questi porting comincia nel 2004 a favore dei vari dispositivi iRiver dotati di chipset ColdFire di Motorola, in particolare i modelli iRiver H100. Il successivo porting per iRiver H300 diverrà funzionante un anno più tardi. Da allora si sono susseguiti vari porting nuovi in maniera sempre più serrata.
Il primo porting per Apple iPod comincia ad essere sviluppato nel novembre 2005. Durante il 2006, sono stati realizzati porting di Rockbox per molti modelli della famiglia iPod (iPod photo, iPod nano, iPod 4g, iPod mini e iPod Video) e anche per il lettore Cowon iAUDIO X5. Da febbraio 2007, ci sono porting disponibili per iriver H10 e le serie F e X del Toshiba Gigabea. Dal 5 marzo 2007, è disponibile un porting per il Cowon iAUDIO M5. Dall'11 marzo 2007, la serie SanDisk Sansa e200 è supportata. Dal 23 maggio 2007 è stato aggiunto il supporto per il modello 80 GB dell'iPod video. Il 27 luglio 2007 è stato aggiunto un supporto iniziale per l'iPod 1G e 2G. Il 23 settembre 2007 è il turno della serie Sansa c200. Il 18 marzo 2008 tocca all'Olympus m:robe 100, seguito pochi giorni dopo dall'iAUDIO M3.
Il 23 settembre 2008, dopo 3 anni di sviluppo, è stata infine distribuita la versione 3.0 stabile. Il 23 dicembre 2008 è stata distribuita invece la versione 3.1, con ulteriori bugfix e miglioramenti. Lo sviluppo di Rockbox è costante, tanto da registrare aggiornamenti sul relativo repository CVS più che giornalieri.

## Personalizzazione

All'interno dei limiti imposti dall'hardware su cui viene eseguito, Rockbox permette una serie completa di personalizzazioni. Tra queste si citano font modificabili a piacere e temi (skin) gestibili mediante linguaggio di markup. Dall'11 novembre 2007 è disponibile anche una forma di Album Art (non supporta ancora le immagini embedded all'interno dei file, necessita di un file immagine esterno).

## RockboxUtility

Verso la fine del 2007 è stata distribuita una versione stabile di RockboxUtility. Si tratta di un programma (disponibile per Windows, macOS e Linux) che rende più facile l'installazione e la configurazione del proprio dispositivo mp3. RockboxUtility permette infatti di installare e disinstallare Rockbox e il suo bootloader, di aggiungere caratteristiche extra (ad esempio temi, caratteri, giochi come FreeDoom), di gestire l'interfaccia per gli utenti non vedenti, tutto in maniera assolutamente trasparente per l'utente. L'ultima release stabile di RockboxUtility è la 1.3.0.

## Caratteristiche
### Codec supportati

Il firmware Rockbox supporta otto codec con perdita, cinque senza perdita e due senza compressione (ad esclusione del build per l'Archos, che non ha un processore general purpose e la decodifica è fatta in hardware). Complessivamente si parla quindi di 19 diversi formati audio, anche se alcuni di essi non lavorano in realtime su tutte le piattaforme.
Da notare che Rockbox non supporta e non supporterà file contenenti DRM, e ciò è dovuto a una specifica volontà in quanto esso è un progetto open source.
Ecco la lista dei formati, ai quali va aggiunto il formato MIDI, disponibile come plugin e i formati meno usati SID, MOD, NSF, NSFE e SPC:

#### Formati con perdita

* AAC
* AC3
* MP1
* MP2
* MP3
* Musepack
* Ogg Vorbis
* WavPack
* WMA

#### Formati senza perdita

* Apple Lossless Encoding
* FLAC
* Shorten
* WAV/AIFF
* WavPack
* APE

### Lingue supportate

Rockbox è disponibile in un grande numero di lingue diverse. Sono presenti traduzioni complete in inglese, italiano, tedesco, spagnolo, cinese, francese, danese, bulgaro, finlandese solo per citarne alcune. La lista completa, che comprende attualmente 38 idiomi, è presente in mentre informazioni su come funziona il sistema di traduzione sono reperibili .

### Altro

* Riproduzione continua (gapless output) per tutti i codec
* Possibilità di crossfading
* Supporto del Replay Gain (guadagno automatico gestito da tag)
* Equalizzatore parametrico a 5 bande
* Crossfeed
* Creazione di playlist durante la riproduzione ("on the fly")
* Riproduzione casuale dei brani
* Interfaccia personalizzabile in base a temi (skinnabile)
* Registrazione stereo a 16 bit, 44,1 kHz con compressione MP3 o WAV/AIFF/WavPack al volo (sui dispositivi dotati)
* Gestione della radio FM (sui dispositivi dotati)
* Gestione del telecomando (sui dispositivi dotati)
* Supporto a cue sheet
* Gestione dell'ingresso/uscita digitale SPDIF (sui dispositivi dotati)
* Album art

### Plugin

* Visualizzatore JPEG a colori ove possibile oppure a scala di grigio anche su display a 1 bit, mediante gestione intelligente del refresh dei cristalli liquidi (i pixel vengono fatti lampeggiare simulando le varie tonalità di grigio)
* Emulatore di Game Boy (porting di Gnuboy, su dispositivi a colori)
* Emulatore di Doom (porting di PrBomm, su dispositivi a colori)
* Codifica da WAV a MP3
* Codifica da WAV a WavPack
* Visualizzatore di filmati MPEG-1 e MPEG-2
* Porting di giochi di vario genere tra i quali sudoku, solitario, campo minato e PONG
* Visualizzatore della libreria musicale PictureFlow, clone dell'interfaccia CoverFlow di Apple (ancora in versione Demo)
* MIDI player

### Non supportati

* DRM
* Interfaccia Firewire
* Memorie USB agganciate al dispositivo

## Lettori supportati

La lista ufficiale dei dispositivi supportati e delle loro caratteristiche tecniche è presente in
Apple
* iPod 1G, con qualche problema
* iPod 2G
* iPod 3G
* iPod 4G (iPod photo)
* iPod 5G (iPod video)
* iPod mini 1G
* iPod mini 2G
* iPod nano 1G
* iPod nano 2G
Archos
* FM Recorder
* Ondio FM
* Ondio SP
* Player/Studio
* Recorder
* Recorder v2
Cowon
* iAudio X5, iAudio X5L, iAudio X5V
* iAudio M3, iAudio M3L
* iAudio M5, iAudio M5L
iriver
* iriver H100 (H100/H110/H115/H120/H140, chiamati anche iHP-100/110/115/120/140)
* iriver H300 (H320/H340)
* iriver H10 5 e 20 GB
Olympus
* m:robe 100
Samsung
* Samsung YP-Q2
* Samsung YP-R0 (non ufficiale, ma funzionante)
SanDisk
* Sansa e200 (non i modelli v2)
* Sansa c200 (non i modelli v2)
* Sansa Clip
* Sansa Clip+
* Sansa Fuze
* Sansa Clip Zip
Toshiba
* Gigabeat F
* Gigabeat X

## Porting in sviluppo

In linea di principio, per ogni dispositivo dotato di una CPU con una versione di GCC è possibile creare un porting di Rockbox. Attualmente il team di Rockbox sta lavorando, tra gli altri su Olympus m:robe 500i, Cowon D2, Toshiba Gigabeat serie S, Creative Zen Vision: M, Meizu M6 e Philips GoGear SA9200. Lo stato dello sviluppo per questi e altri dispositivi è consultabile .

## Rockbox Player

Un ulteriore progetto che si sta sviluppando è la progettazione di un dispositivo mp3 e registratore dal costo contenuto (meno di 125 dollari) compatibile nativamente con il firmware Rockbox. È notizia del 30 marzo 2008 dell'interessamento a questo progetto della Pasen, un'azienda produttrice di lettori mp3, che si è detta disponibile a costruire una versione commerciale di tale dispositivo.