Rockbox

Rockboxは、デジタルオーディオプレーヤーに搭載されたファームウェアを置き換えるフリーソフトであり、拡張性の乏しいプレーヤーに様々な機能を追加するためのプラグイン機能を（多くの場合、元のファームウェアを取り除かないで）提供する。オープンソースのファームウェアであり、誰でも開発、配布が自由である。拡張機能にはPDA機能、アプリケーション、ユーティリティ、ゲームなどがある。また、2000年中頃にリリースされたプレーヤーにもビデオの再生機能を加える。また、視覚障害をもつユーザのための声で操作できるユーザインタフェースも用意されている。

Rockboxはハードウェア能力が非常に異なっている様々なポータブルオーディオデバイス上で動くものであるため、1ビットのキャラクタセルベースのディスプレイをもつ早期のArchosプレーヤーから、近代的な高画質のディスプレイ/デジタルの光学オーディオ機器/高度な録音能力をもっているプレーヤーまで対応している。多くの場合、フラッシュメモリから実行されるよりも、ハードディスクからRockboxか標準のファームウェアのどちらかから読み込み可能なサポートされているデバイスのフラッシュに最小限のブートローダーがインストールされる。また、一部の機器ではフラッシュメモリへのインストールもできる。

 開発 
Rockboxプロジェクトは2001年の後半に、初期のArchosシリーズのハードディスク内蔵型MP3プレイヤーと、フラッシュメモリ型のOndioを含んだ録音機能つきモデルを対象に行われた。Rockbox開発は、ユーザーインターフェイスやデバイスの取り扱い方法に不満をもったことにより開発された。これらの機器の処理能力は限られており、音楽再生はMP3デコードチップ（MAS）で行っていたため、Rockboxは音楽の再生品質を変えることはできなかったが、その代わり、Rockboxは改良されたユーザーインターフェイスを提供し、工場出荷時のファームウェアに無い機能をプラグインで導入可能にした。Rockboxは製品に搭載されたフラッシュメモリの起動領域を書き換え、元のファームウェアとそっくりそのまま入れ替えてしまうことができた。

Rockboxにはより新しい製品に対応したバージョンも用意されている。こちらではソフトウェアデコードにより演奏しており、既にArchos版で実装している機能に加えて、オリジナルのファームウェアが対応しないオーディオフォーマットの演奏が潜在的に可能となっている。専用のブートローダーで製品が起動後、Rockboxはハードディスクから立ち上がる。つまり、Rockboxをアップグレードするのにユーザーが必要なことは、ハードディスクにファイルをコピーして再起動することだけである。ブートローダーの差し替えのためにはファームウェアの書き換えが必要になるが、製品によっては差し替え不要である。

2004年の後半に始まった初めてのこれらの移植はiriverが製造したモトローラー製のColdFireプロセッサーを使ったデバイス、つまりハードディスク・プレイヤーであるiriver H100 シリーズ(H110/H120/H140)だった。およそ1年後に、iriver H300 シリーズへの移植は機能的になり、同じような機能を提供するようになった。
 2005年後半に、Apple製のiPodにRockboxの移植が始まった。
 2006年の1年間は、Cowon iAUDIO X5シリーズと同様に、Rockboxを様々なiPod(iPod photo, iPod nano, iPod第4世代, iPod mini, iPod第5世代)で利用可能にした。
 2007年2月には、iriver H10や東芝のgigabeat FとXシリーズへの移植が利用可能になった。
 2007年3月5日には、Cowon iAUDIO M5への移植が機能的になった。
 2007年3月11日には、SanDisk Sansa e200シリーズがRockboxの次のラインアップに追加された。
 2007年5月23日には、iPod 5.5世代 80 GBモデルに対応し、iPod videoのラインアップが完結した。
 2007年7月27日には、iPod 1G と 2Gの最初のサポートが追加された。
 2007年9月23日には、Sansa c200シリーズがラインアップに追加された。
 2008年3月18日には、オリンパスのm:robe MR-100がラインナップに追加された。
 2008年3月23日には、Cowon iAudio M3がラインナップに追加された。
 2008年5月3日には、東芝 gigabeat Sの利用が可能となった。
 2009年3月10日には、オリンパスのm:robe MR-500iの利用が可能となった。
 2010年にはandroidへの移植が始まる。
現在、Rockboxはmpegplayerプラグインを使用し、MPEG再生に対応。

現在のところ全てのRockboxはメーカーの手助けをほとんど借りることなくリバース・エンジニアリングのみによって移植を完了してきた。しかし、フリーソフトウェアではあるが、開発者、支援者は移植されたRockboxにメーカーの公式サポート、あるいは新製品への移植に非公式な手助けが得られることを望んでいる。今でも少数の企業がRockboxに興味を示すに留まっており、開発プロジェクトへの公式なコード提供や、製品への組込を行う企業は皆無である。Sansaへの移植はメーカーの要請により始められ、開発チームにサンプル品が提供されている。また、Sansa E200 v2などのSoCを開発しているAustriaMicrosystemsもデータシートを提供するなど開発に協力している。daniel.haxx.se » AMS Replied with the AS3525 Data Sheetまた、ロシアのフォーラムで有志がHiFiMAN HM-801にrockboxの移植を行ってもらおうと呼びかけ、賛同者がrockboxの開発者にHM-801を提供し、移植されたという例もある。

Rockboxは継続的に開発されており、ソースコードの毎変更ごとのSVNビルドがリリースされている。ただし、ソースツリーのアクセスは、Git (正確には、git-svn) を用いることが推奨されている。

 カスタマイズ 
Rockboxのインターフェイスは特有のプラットフォームごとの制限に左右されるが、様々な方法でカスタマイズ出来る。フォントや表面と背景の色は追加したり選ぶことが出来る。その一方、メニューや再生中の画面のテーマを作るのには簡単なマークアップ言語が使われている。これらのテーマとして、背景や他の画像（アイコンのような物とか）があげられ、加えて、様々な拡張子、ID3タグ、ファイルの進捗状況、時間やシステムの情報があげられる。2007年11月11日の時点で、アルバムアートの表示が正式にサポートされた。2011年2月27日にはmp3のID3(v2)タグに埋め込まれたJPEGが正式にサポートされた。Rockboxは原則的にファイルツリーが基本のプレイヤーであり、そしてフォルダ構造による操作が出来る。（フォルダはプレイヤーにドラッグ・アンド・ドロップすることができる。）プレーヤー内で切り取り・貼り付けや削除をすることもできる。また、最近のバージョンには、プレイヤーにファイルのID3タグからの情報を集めることを可能にしたデーターベース機能がある。ユーザーはその結果ファイル構造に関係なく、このデーターベースを用いることでファイルを操作することが出来る。

 特徴 
 コーデック 
ソフトウェアでデコードするプラットフォーム（Archos以外）では13つの非可逆コーデックと6つのロスレスコーデックと4つの非圧縮コーデックと14つのチップチューンフォーマットの再生をサポートしている。また、DRM機構のファイルはRockboxにおいて再生できない。Rockboxはオープンソースのプロジェクトなので、この機能は意図的に決して実装されることはない。

 非可逆コーデック 
AC3(rawもしくはRealMediaコンテナ)
ADX
Advanced Audio Coding(AAC-LC/HEv1/HEv2)(MP4コンテナもしくはRealMediaコンテナ)
MPEG audio layers I-III (MP3/MP2/MP1)
Musepack
Ogg Vorbis
ATRAC33.6 以降でサポート。(OpenMGコンテナもしくはRealMediaコンテナ)
Cook Codec
Speex
Dialogic telephony type
Windows Media Audio
Windows Media Audio Professional
Opus

 可逆コーデック 
FLAC
WavPack
Shorten
Apple Lossless
Monkey's AudioMonkey's Audioの対応は初期の段階であり、ほとんどデバイスにおいてリアルタイムに再生できるのは低圧縮の設定のみである。
TTA3.6 以降でサポート。ただし、一部の機種ではリアルタイムに再生することはできない。
 非圧縮コーデック 
PCM
WAV
AIFF
Sunオーディオファイル
Wave64
 チップチューンフォーマット 
Atari Sound Format 
Synthetic music Mobile Application Format3.6 以降でサポート。ただし、音源が PCM または ADPCM であるものだけが再生可能。MIDI 音源は非対応。 
Game Boy Sound Format 
AY Sound Chip Music 
Hudson Entertainment System Sound Format 
MSX Konami Sound System 
SMS/GG/CV Sound Format 
Video Game Music Format
Gzipped Video Game Music Format 
MOD
NES Sound Format 
Atari SAP 
Sound Interface Device 
SPC700 

 特徴 
オーディオファイルを再生したり録音したりする能力の傍ら、Rockboxは他のファームウェアが実装していない再生機能を提供している。

以下に掲載されているのはこれらの機能の一部である。
 ギャップレス再生 (全ての非圧縮、可逆コーデックとVorbis、Speex、Opus、Musepack、MP3(LAME方式およびiTunes方式)、AAC(iTunes方式およびNero Digital方式)に対応)
 リプレイゲインソフトウェアデコードのターゲットのみ
 5バンド・パラメトリックイコライザ
 クロスフィード
 OTF ("on the fly") プレイリスト
 True randomシャッフル (fresh randomly shuffled list every time)
 カスタムUIテーマ
 ステレオでの以下の形式への録音: WAV/AIFF/WavPack （ロスレス）/MP3MP3 と WavPack と AIFF はArchos以外で利用可能。マルチサンプルレートとビットレートは利用可能。（ただし、ハードウェアに依存）. (デバイスのサポート)
 FMラジオとその録音 （デバイスのサポート）
 遠隔操作 （デバイスのサポート）
 Digital SPDIFの入出力 （デバイスのサポート）
 Last.fmの対応 (ただし、内部時計が無ければ対応しない)
 Cue sheetの対応
 メニュー選択のバーの色と外観は変更可能
 アルバムアート（MP3ID3v2の埋め込みタグ対応） ある程度制限があります。詳細はRockbox ウィキ  をご覧ください。
 マルチフォントのサポート
 歌詞を音声にあわせて表示

 プラグイン 
Rockbox は、音楽を聞く以外の機能として、プラグインという形で様々なアプリケーションが Rockbox の開発者によって作成されている。その一例として、以下のものがある。（完全なプラグインのリストは プラグインのリスト を参照のこと）

 JPEG、PNG、BMPビューア  
 Rockboy GameBoy エミュレータ （Gnuboyのポート）RockboyはゲームボーイとゲームボーイカラーのROMに対応している。
 ZXBox ZX Spectrum エミュレータ （Spectemuのポート）ZXBoxはZX Spectrum 48をエミュレートする。Spectemuの元サイト: 
 Doom （PrBoomエンジンのポート）
 WAV から MP3 へのエンコーダ
 WAV から WavPack へのエンコーダ
 MPEGビデオプレーヤー mpegplayerプラグインは MPEG-1 もしくは MPEG-2 形式のビデオでMPEGオーディオ （レイヤーII/III）（音声部はMP2とMP3にのみ対応）を多重化した.mpgファイル形式に対応。ハードウェアによるフレームレートとビットレートの制約はない。ファイルはおのおのの機器に応じた解像度である必要がある。早送りと巻き戻しにも対応。
 様々なゲーム（数独, ソリティア, マインスイーパ, テトリス, リバーシ, pong等40種以上）
 MIDIプレーヤー。ある程度の処理能力があるプレイヤーではリアルタイムで再生可能。再生には外部の楽器セットファイルが必要であり、Rockboxのページからダウンロードできる。CPUが追いつかなくなると、音飛びが生じる。
 電卓（関数電卓機能付）
 カレンダー
 ペイント
 メトロノーム
 テキストビューア/エディタ
 ストップウォッチ

 サポートしない機能 
Rockboxには外部の会社やプラットフォームのサポート不足のために、まだ実装されていない機能がいくつかある。
 FireWire
 DRM (故意に未実装)NoDo
FAT32以外のファイルシステムの実装 (故意に未実装)

 アーキテクチャ 
Rockboxはフラットメモリモデル （これが メモリ管理装置なしで様々なプラットホーム上で動かすことを可能にしている。）と シングル プロセスを用いた、単純なカーネルで動いているRockboxのカーネルについて。
貧弱なスレッド は、"オーディオ・スレッドを優先させる スケジューラ"に制御を返す"協調マルチスレッディング"で動く。つまり、プリエンプション（OSが優先順位の高いタスクに有利になるように、現在のタスクを停止したり、先取りする能力のこと）を行うには割り込みを利用するしかない。OSやプラグインはC言語で書かれていて、繊細なコードを実行することにつけ加え、デバイスやプラットフォーム固有のコードの為にアセンブリ言語が用いられている。この単純で軽いアーキテクチャのおかげで、Rockboxは、1〜64MBまで変動するメモリや、12〜300MHzまで変動するCPUといった、様々な機器で動かすことが可能になっている。Rockboxはまた、マルチコア・システムや非対称型マルチプロセッサ・システムへの限定的なサポートをしている。

 サポートしているデバイス 
Archosデバイスのみ公式にサポートされると宣告されている。以下は少なくとも実質的に動作する(Rockbox wiki Device Chartで「サポートされる」か「使用可能である」として、記載されている)デバイスのリストであると考えるべきである。詳細に関してはRockbox Device Chartを参照。
 安定版 
 Archos 
 Archos Jukebox シリーズ
 Jukebox 6000
 Jukebox Player/Studio
 Jukebox Recorder
 FM Recorder
 Recorder v2
 Ondio FM
 Ondio SP

 Cowon 
 iAUDIO M3、M3L
 iAUDIO M5、M5L
 iAUDIO X5、X5L
 iAUDIO X5V

 Apple 
 iPod 第1世代
 iPod 第2世代
 iPod 第3世代
 iPod 第4世代 (グレイスケール)※ロット(搭載CPUのリビジョン?)によって公式ビルドではunstableなものがある模様。
 iPod 第4世代 (Color/Photo)
 iPod 第5世代/第5.5世代 (Video)
 iPod mini 第1世代
 iPod mini 第2世代
 iPod nano 第1世代
 iPod nano 第2世代

 iriver 
 iriver H10 (H10 5/6/20GB)
 iriver H100 (H100/H110/H115/H120/H140, aka iHP-100/110/115/120/140)
 iriver H300 (H320/H340)

 MPIO 
 MPIO HD300

 Packard Bell 
 Vibe 500

 SanDisk 
 Sansa e200 シリーズ (v1/v2)
 Sansa e200r シリーズ
 Sansa c200 シリーズ (v1/v2)
 Sansa Fuze シリーズ (v1/v2)
 Sansa Clip シリーズ (v1/v2/Clip+)
 Sansa Clip Zip

 Toshiba 
 Gigabeat Fシリーズ (F10/F11/F20/F21/F30/F31/F40/F41/F60)
 Gigabeat Xシリーズ

 不安定版 
 Cowon 
 COWON D2

 HiFi E.T 
MA9

 HiFiMAN 
HM-60x
HM-801

 MPIO 
 MPIO HD200

 Olympus 
 M:Robe 100
 M:Robe 500

 PHILIPS 
 PhilipsGoGear HDD16x0 
 GoGear HDD63x0 
 GoGear SA9x00 

 Samsung 
 YH-820/YH-920/YH-925
 YP-R0

 SanDisk 
Sansa Fuze+

 Toshiba 
 Gigabeat Sシリーズ

 開発中の移植版 

Rockboxは様々なデジタルオーディオプレーヤーを使う人たちによって開発されている。自分たちが使っているプレイヤーへRockboxを移植することに興味を持っている人であれば開発に加わることは常に歓迎である。原理的には、プレイヤーのCPUにGCCが対応してさえいれば移植可能である。Rockboxの移植版がすでに存在するプレイヤーと共通の部品を持っていれば、開発は非常に容易になる。公開されている仕様書がない部品で作られていたり、ハッシュチェックや暗号化でファームウェアを積極的に保護していれば、移植は難しくなる。

 Archos 
AV300

 Cowon 
iAUDIO 7

 Creative 
Zen Vision:M
Zen Vision

 Onda 
VX747
VX767
VX747+
VX777

 Samsung 
YP-S3

 iriver 
iFP-790

 Meizu 
M6SL
M6SP
M3

 Tatung 
Elio TPJ-1022

 Apple 
 iPod classic

 SanDisk 
Sansa m200 (v1/v4)
Sansa c100
Sansa View
Sansa Connect

 Logik 
DAX

 Lyre project 
Lyre proto 1
Mini2440

 ソフトウェア 
 Google 
 Android

 Nokia 
N8xx
N900

 Pandora 
Pandora

 ギャラリー 

 関連項目 
 iPodLinux

 参照 

 外部リンク 
 The Rockbox Project
 LWN.net: Waiting for Rockbox 3.0

Category:ファームウェア
Category:音響機器
Category:アフターマーケットファームウェア
Category:Cでプログラムされた自由ソフトウェア
Category:Luaでスクリプト可能なソフトウェア