本記事は本題までに思わず、Volumioの歴史をズバっと書いてしまったので、イメージ目的の人はさっさと文章を飛ばして、イメージのリンクまで飛んでください(笑)
さて、Raspberry Pi Zero W用の軽量なディストリビューションのいわゆる「決定版」が見つからない状況の中、皆さん、いかがお過ごしだろうか。
しかも、ラズパイオーディオが、「ピュアオーディオの範疇」にどんどんシフトしている以上は、今後もパワー(音質)重視の方向にシフトする事は免れない状況かと思う。
そんなわけで、所詮、黎明期の初代ラズパイ程度のCPUパワーしか持たないRaspberry Pi Zero Wにとって、不遇の時代は続くような気もしている。
上記の状況を受け、この不遇の時代を打破すべく、自身でもLean MPDなどと銘打って、「ガジェットとして面白く、Linuxシステムとして美しい、軽量でそこそこ音の良いディストリ」を作れないか探っていたのだけど、なかなかこれも完成までに至るにはまだまだ時間がかかるように思う。
それには、色々理由はあるのだけど、特に、自身でディストリビューションを作る労力がかなり半端ない事が大きいかと思う。
ディストリビューション開発者ってスゴい
ちょっと自分でも作ってみようと試した人(ほとんどいないだろうけど)なら、ディストリビューションの開発には、深いLinuxの知識から、HW&SWの知識に加え、オーディオセンスまで必要となる事がすぐにわかるだろう。
そして、OSであれ、公開パッケージであれ、自作プログラム&スクリプトであれ、多くのものはスンナリとは動いてくれず、情報収集能力や問題解決能力が不可欠で、膨大な叡智を注ぎつつ開発は進めていかないといけない事になる。
こんな物を無償で公開しているのだから、ディストリビューションの開発者達には心から敬意を払うしかない。
まあ、ボクもLean MPDなんて公開しているんだけど、やっている事は皆さんの叡智の取り込みと、「システムとしてこうあるべきなんじゃないか」を実現するための実験の面が強く、ちゃんと動ききらないコンセプトモデルの域から脱却しきらないのがなかなか辛いところ。
Webアプリケーションの知識が弱いところがボクの場合、ボトルネックなんだよなあ。
ラズパイゼロWに最適なディストリを探す旅
さて、そういうわけで、ちょっと方針転換というか、寄り道というべきなのか、他にRapsberry Pi Zero W上で動かすのに最適なディストリビューションが無いか、再度考えてみたのだけど、やはり当初ボクが自分で作る事に舵を切ったのと状況は変わらず、なかなか良い物が見つからない。
どうにも最新のディストリビューションはUIの重い物が多くて、非力なRaspberry Pi Zero Wに最適とは言えない物が多いからだ。
これは多くの人が所持しているのが最新のRaspberry Pi 3だし、開発者もそのプラットフォームの上で開発&動作確認していて、いわばRaspberry Pi Zero / Zero W上で動くのは「おまけ」的な位置づけになってしまう事が原因かと思う。
それでも元々軽量であることを目指しているディストリが無いわけではない。
例えば、軽量な更新が続いているディストリビューションとしては、lightMPDやDietPiなどがある。
ただし、lightMPDはベースがBuildroot である事と、元々が据え置きメインでの使用を想定しており、SDからの再生や無線の使用は使用不可としている事もあって、モバイル用途や改変には向いていない(というかやっちゃいけない気がする)ように思う。
あと、DietPiはかなり魅力的なんだけど、構成管理システムが完成しているが故の「勝手にいじりにくい印象」も受ける(Arch Linux同様)し、どうにもMPDとしての利用について情報が少なく、ここからいじるのであればRaspbianベースでいじるのと大して変わらないように思える。
ボクが今欲しいと思っているのは、
・Raspberry Pi Zero / Zero Wのシングルコアでもサクサク動く
・それなりに使いやすい最低限のUIを備えている
・モバイル用途やHWボタン付きのDAC対応などを考慮した改変に耐えうる(つまり、システムとして完成しすぎていない)
なので、なかなかこの用途にマッチする物はやはり「最新のディストリビューション」からは見つからない。
さて、どうしたもんか、、、というところで思い出したのが「Volumio 1.55」だ。
Volumio 1.xという始祖ディストリ
以前にも書いたけど、Volumioは元々、RaspyFiというボクの「LeanMPDレベル」のRaspbian改変プロジェクトから始まったにも関わらず、その後にまさにお手本となるような美しいUIを備え、現在のVolumioにまで発展を続けてきた経緯がある。
VolumioのUIが如何に素晴らしかったかは、その後のディストリビューションが揃いも揃って「よく似たUI」を備えていることからも良くわかるだろう。
さて、そんなVolumio 1.xなのだけど、すぐにデファクトスタンダードとも言えるディストリの地位を得たのだけど、その後、Volumio 2.xにリビジョンが切り替わったタイミングで、基本、「シングルコアのラズパイ用」に開発された古いディストリビューションに過ぎないVolumio 1.xは、バージョン1.55を最後に開発終了を迎える事になる。
その後、Volumio 2.xが長い間、動作が不安定だったこともあって、1.55の良さを知るボクみたいな愛好者は、自身で改変して使い続けていたのだけど、結局は開発の止まったディストリビューションの宿命として、Raspberry Pi3、Raspberry Pi Zero、Raspberry Pi Zero Wといった新しいHWには対応していない状況もあって、ボク自身を含め皆、他のディストリに移行してしまった。
Volumio 1.xは本当に死んだのか?
さて、この今や完全に終了の一途を辿ってしまったVolumio 1.xだけど、今思い返してみても機能としては十分な風に思える。
音に関しても、最新のTIPSでテコ入れしてやれば、今でも十分な音質まで引き上げられるんじゃないだろうか。(そもそもバージョンが新しくなると音が良くなるなんて、一部の人が抱いている幻想は、ボク個人的には全く無いと思っている。)
ならばこれを何とか動くようにしてやる事で、あのたかだか700MHzの非力なシングルコアCPUしか積んでいなかった「Raspberry Pi Model B」でもサクサク動くようにチューニングされた、軽量なディストリビューションが爆誕(というか復活)するんじゃないだろうか。
では、次は、「Rapsberry Pi Zero Wに対応していないVolumio 1.xをどう動かすのか?」という話になる。
実は、実際、Raspberry Pi Zeroを過去に購入した際、Volumio 1.55が動かなくなった事でその解決策がないか調べていて、しかも実際に試した事もあるので以前よりその方法については知っていた。
そう、それは、VolumioのベースであるRaspbian自体をアップグレードしてやればいいのだ。
Volumio 1.55をアップグレードしてRaspberry Pi Zero Wで動かす。
さて、こんなに書いてやっと本題(笑)
ここから、実際にVolumio 1.55をアップグレードし、Raspberry Pi Zero Wへ対応させることができるかを試してみることにしよう。
ただし、Volumio 1.55が発表されたのが2015年2月ともう2年も前の事で、ボクがRaspberry Pi Zeroを購入し、同様のTIPSを試したのが2016年5月付近、ということみたいなので、作業自体は「OSの更新が放置されてから3年後のアップグレード」という事になる。
3年間も、更新が止まっていたプラットフォームの最新化は、多くの機能が動かなくなって、結局使い物にならない、なんて可能性も十分にある。
この点は、慎重にアップデート作業を進める必要があるだろう。
というわけで、Volumio 1.xのアップグレード記事を探したところ、以下の記事を見つけ、こちらをありがたく参考にさせていただく事にした。
ただ、こちらの記事も、すでに1年半も経過しており、かつ「Wでは無いRapsberry Pi Zero」を対象にしている事で、色々と手順が異なる部分が出てくるだろう。
なお、実際に試してみるとやはり無線やBluetooth周りでは自力で解決する必要があった。
というわけで、実際の手順。
まずSDカードに焼いたVolumio 1.55をRaspberry Pi 2(もしくはRaspberry Pi Model B等のVolumio 1.xが動くプラットフォーム)にインストールして、上記の記事の手順通りにログイン後、以下の通りのコマンドを実行する。
$ sudo su ※rootに切替 # apt-get update # apt-get upgrade # apt-get dist-upgrade
なお、上記の記事だと「apt-get -y upgrade」のようにyオプションを付けているのだけど、ボクは慎重を期して、「聞かれた場合は手動で現在のコンフィグを残す設定を選ぶ」ために、yオプションは外しておいた。
実際のアップグレードの際はSambaのDescriptionが表示されたり、設定ファイルを置き換えるか聞かれる事になるが、全てデフォルトの「元の設定を残す」オプションを選択しておけば良いだろう。
この「dist-upgrade」はかなりの時間を要する事になるんだけど、まあ気長に待ちつつ完了を待とう。
上記記事手順ではその後にbinutilsをインストールしているのだけど、既にインストールされていたのでその手順を飛ばし、次にrpi-updateの手順に移ろう。
ただし。この手順の際、オプション無しでrpi-updateをしてしまうと、Unstable版の最新カーネル&モジュールが入ってしまう事になる。
これはちょっと個人的に嫌だなと思ったので、以下のサイトで調べ、安定版のファームウェアが2017年10月29日版である事を確認し、このハッシュ値(563a9ed5acd5cdfb72ba6d4bb115dfd5e25d9893)を指定した上でrpi-updateをする事にした。
https://github.com/Hexxeh/rpi-firmware/tree/stable
以下の通り入力。
# rpi-update 563a9ed5acd5cdfb72ba6d4bb115dfd5e25d9893
このアップグレード作業もかなり時間がかかるので、気長に待とう。ここでも「聞かれたら既存の設定を保持する」指定をしながら進める事にする。
なお、口を酸っぱく「元の設定を保持」する事を書いているけど、これは、Volumio用に色々設定されている内容が「最新のファイルを用いる」ようにすると消えてしまう物がある(とくにNGINXの設定)ので、これを回避する目的としている。
rpi-updateが完了次第、以下の通り実行して不要なパッケージを削除する。
# apt-get -y autoremove && apt-get -y autoclean
この後、上記手順ではSambaのエラーを解消するように書いているけど、Raspberry Pi Zero Wではもう少し他の問題もあるので、後でまとめてやる事として、一旦、作業用のRaspberry Pi2からSDカードを抜き、ここからはRaspberry Pi Zero W(USB-LANアダプタ使用。Rapberry Pi Zero Wを扱う上では一つ所持しておいた方が良いかと思う。)上で作業を進める事にしよう。
TechRise
無線とBluetoothを有効にするためにパッケージ追加&更新を実施する。
さて、上記でrpi-updateを行ったSDカードからRapberry Pi Zero W上での起動自体には成功した。
ただし、このままでは、Rasperry Pi Zero W内蔵の無線LANおよびBluetoothが正常に動作しない状況に遭遇。
色々調査&試行錯誤した結果、これを解決するためには、Bluetooth関連のモジュールと無線LANのファームウェアが必要との事だったのだけど、Bluetooth関連を動作させるためのパッケージ「pi-bluetooth」が「apt-get install」では見つからないと言われるので、以下の通り、「/etc/apt/sources.list」を修正した上で、再度「apt-get upgrade」までを行い、その上で必要となるパッケージを追加した。
あと、このタイミングで「vi」の動作もどうにもおかしいので「vim」も追加でインストールしておいた。
# vi /etc/apt/sources.list (修正前) deb http://mirrordirector.raspbian.org/raspbian/ jessie main deb-src http://mirrordirector.raspbian.org/raspbian/ wheezy main (修正後) #deb http://mirrordirector.raspbian.org/raspbian/ jessie main #deb-src http://mirrordirector.raspbian.org/raspbian/ wheezy main deb http://archive.raspbian.org/raspbian jessie main contrib non-free deb-src http://archive.raspbian.org/raspbian jessie main contrib non-free deb http://archive.raspberrypi.org/debian/ jessie main ui # apt-get update # apt-get upgrade # apt-get install firmware-brcm80211 ※内蔵無線LANを動作させるためのファームウェア # apt-get install bluez bluetooth pi-bluetooth ※Bluetooth関連のパッケージ # apt-get install vim
上記までが完了したら、ここで一旦リブート。
その後、先ほどの記事の中にもあったようにこのままではSambaの動作がおかしいので、いったん削除の上、再インストールしておく。
なお、理由は不明だけど、「pi-bluetooth」のインストール時にエラーがでていたので、一応こちらも一旦削除の上、再インストールしておいた。
$ sudo su # apt-get install samba samba-doc samba-common smbclient # apt-get remove samba samba-doc samba-common smbclient --purge # apt-get remove pi-bluetooth --purge # apt-get autoclean # apt-get autoremove # apt-get install samba samba-doc samba-common smbclient pi-bluetooth
Bluetoothを使用するために「hciuart.service」の有効化&起動を実施しておく。
# systemctl enable hciuart.service # systemctl start hciuart.service
以上でだいたい動く状態になったと思うので一旦これで完成形としよう。
Jessieでカーネル4.9.59+でRapberry Pi Zero Wで動くVolumio 1.55
さて、おもむろに上記の手順でアップグレードと多少のパッケージ追加&修正を行ったVolumio 1.55を以下に公開しよう。
※一切サポートできませんので使用は自己責任でお願いします。
Volumio 1.55 for Raspberry Pi Zero W (20180218版)
Volumio 1.55 for Raspberry Pi Zero W (20180223版:簡易NGINXエラー対策版)
長くなってしまったので、次回以降で、このイメージを用いて、実際にどの程度動作するかについて検証結果を書いてみることにしたい。
まあ、だいたいは動くようになっていると思うので、試したい人は是非ダウンロードの上、試してみてもいいかと思う。
現時点で確認できている状況については以下に簡単にまとめておこう。
【動作確認済みの内容】
・WEB UIからのI2Sドライバの設定(HiFiBerry)&音出し。
・WEB UIからの無線LAN設定。
・WEB UIからのNAS設定の追加。
・NAS上のファイル&SDカード上のファイル&WEBラジオの再生。
・AirPlay(ただしShairportなので互換性は未知数)での再生。
【現時点で判明している課題(順次更新)】
・UI操作でのリブート&シャットダウン時にNGINXの「404 Not Found」ページが出てしまう。(systemdになった事で起動順序の関係で発生していると予想)
・cron関連サービスの起動がエラーになっている。(Volumioは起動時に元々CronをKillしているのだけど、元々の実装が最新化した環境では問題があるものと予想)
興味のある方は次の更新をお待ちください!
↓なお、ピンヘッダ付きのRapberry Pi Zero WがAmazonで購入できるようになってましたので、お持ちでない方はこちらからどうぞ!
スポンサーリンク
スポンサーリンク