6/2:MPDをmpd-dsd-0.19.14 にアップデートしました。ダウンロード先のディスクイメージが新しいものに換わっています。そのほか、使い勝手向上のために若干仕様変更しています。お使い頂いている方は再読をお願いします。
昨年から思い出したように時々書いております「ZYBO」 ( XilinxのFPGA+ArmマイコンがOne ChipになったZynqプロセッサを搭載した組み込みボード) ですが、ハードウェア面では相変わらず進化もせずに使用しております。
が、ソフトウェア面では、昨年夏から秋にかけてMPDをUPnP/OpenHome化しまして、市販のネットワークPlayerのように使用できるようになっております。当初はLinnのKinskyのみを使っていましたが、最近ではKazooを使えるようにし、さらには最新バージョンのLUMIN appも使えるようになっています。アルバムアートワークが汚くなる、いわゆるトンキー病も、最新のバージョン8.2.0では直っているようで( Twonky Media Server )、快適に使用中です。
ハードウェア面では手を入れず、というのは、オリジナルのI2S/DSDコントローラの開発をさぼっていて、未だに自前のUSBクラス2.0基板で楽して楽しんでいます、という意味です。
余談ですが、この基板はコストをかけて作っていることが見てとれます。ずっしり重く、ノイズ対策などもしっかりしています。半導体メーカーからの協賛がないと、$190程度という破格の値段では売れないと思われます。玄人向けの基板だと思いますが、秋月でも売っているのですから驚きます。
基板の仕様で、USB端子には、いわゆる”USB OTG”ケーブルを介してUSBケーブルをつなぐ必要があったり、ソフト上の唯一の問題?で解決策が自分的にはクリアになっていない、DSDモードにおいてサンプリング周波数表示が正しくない、といった細かい問題は残っておりますが、気分よく使用しております。
サポートするファイルフォーマットがWAV, FLAC, そしてDSDのみで、汎用性が低いといわれそうですが、もともと「自家用」に構築したものなので、それでも良いから使ってみたいという方のために、この、ZYBOを「UPnP/OpenHome」で動作するネットワークトラポにするためのバイナリを公開しても良いのではないかと思っています。
Digilent社から提供されているLinixのカーネルソースから必要最小限のモジュールを組み込み、MPDと、それに必要な諸ソフト群をそれぞれのGitHubからGetしてきて、PC Linux(Fedora)上でクロス・コンパイルすることでバイナリファイルを作成しました。最終的には、MPDをUPnP化するためのupmpdcliというソフトが、UPnP化の決め手になっています。
UPnP対応なので、Twonkyメディア・サーバなどのファイルサーバーに音源が格納してあって、ルーターからDHCPで自動的にIPアドレスが割り当てられるようなネットワーク環境であれば、そこに繫ぐだけで何も設定なしに動作する ことが期待できます。
============================== 以下、長文注意 ===============================
試してみたい方へ・・・
ということで、ここから先はZYBOをお持ちで、実際にこの基板をUPnPネットワーク・オーディオ・トラポにしたいと考える方への内容になります。
まずはここからmicroSDカード用のディスク・イメージ・ファイル (upmpdcli.img.zip) をダウンロードします。ファイルはzipで圧縮されていますので、適当な手段で展開してください。Windowsであれば、このファイルを右クリックして「すべて展開」を選択します。展開後はupmpdcli.imgというフォルダの中にupmpdcli.imgというmicroSDカード用のイメージファイルが格納されています。同名で紛らわしいですがmicroSDに書き込むのはこのイメージファイルの方です。
4GB以上の空のmicroSDカードを (カードリーダを介して) PCに挿します。Win32DiskImager ( ご使用経験のない方はこちらから入手可能です ) を起動し、解凍してできた upmpdcli.img を microSDカードに書き込んでください。PCからmicroSDカードを取り外す場合などに、「このドライブで問題が見つかりました。今すぐドライブをスキャンして修復してください。」とPC上にバルーンが出る場合がありますが、無視してください。
書き込みが終了したらmicroSDカードをZYBOのmicroSDカードスロットへ挿入します。
ZYBOのUSBはOTGなので、この基板をUSBホストとして使用するために、OTGケーブル (AndroidのUSBホストケーブル) を介してUSB DACの接続されたUSBケーブルを接続します。ここをクリックすると拡大されます。
各ジャンパのピンヘッダを上図のようにします。ここをクリックすると拡大されます。
上図、基板表左側のUSBコネクタは給電用経路を兼ねたUSBシリアルコネクタになっていて、動作しているPCとつながっていると、本来のUSB端子に接続されたUSB DACとZYBOとの通信が停止します。なので、USB給電する場合はPCではなく充電用アダプタなどにつなぎます。DCジャックからの給電がより好ましいでしょう。後述しますが、USBシリアルコネクタは万一動かない場合のデバッグ用途でしか使いません。
ネットワーク・ケーブル、USBケーブル (USB DACはもちろん接続しておきます)、そして給電ケーブルがつながった状態で、ネットワークのルーター、TwonkyメディアサーバなどのUPnPファイル・サーバー(Twonkyメディアサーバのみ確認しました) が動作しているのを確認してZYBOの電源SWをオンにし、USB DACの電源も投入します。
しばらくしたら、コントロール・ソフトを立ち上げます。WindowsではLinnのKinsky、iOSでは同じくKinskyとKazoo。そしてLUMINのLUMIN app (最新版) で動作を確認しています。
Kinskyを使用する場合には、ZYBOのフレンドリ・ネームは下図のように”Main Room”を選択し、”Playlist”表示が出ることを確認してください。場合によって起動毎にこの設定が必要になりますので、ウザったいという場合には他の2つのソフトから選択されるとよいと思います。どうしてもKinskyが使いたいという方はメールを下さい。対処法があります。
さて、この状態でライブラリを選択してPlayすれば、基本的に設定不要で24bit/192kHz、DSD128までの音源が再生できる「筈 (願い)」です。音源のサポート・ファイル・フォーマットはこの記事の前半に書きました。
USDA基板、USDA_MINI基板をお使いの方で、Native DSD再生をしたい方は、microSDカードの中のmpd.confを適当なテキストエディタで編集してお試しください。デフォルトではDoP再生にしています ( どちらか一方を”yes”にします。図はDoPを選択した状態のmpd.conf )。
メーカー製のUSB DACをご使用の場合にはmpd.confを書き換えずに「DoP ”yes”」「dsd_native ”no”」のままでお使いください ( 標準仕様 )。
なお、UDA2基板、USDA基板、USBDAC基板ならびにUSDA_MINI基板を。この “upmpdcli on ZYBO” でお使いになる方のために、若干機能を改善したファームウェアがあります ( WindowsやMAC OS Xでのご使用には特に効用はありません )。希望される方はご連絡ください ( アップデートそのものは無償です)。
万一動かない場合・・・
どうしても動作しない場合、PCとUSBシリアル接続してブート時のメッセージを見ることで何かわかるかもしれません。Tera Term などのシリアル設定を下記のようにしてブート時のメッセージをコピペしてお送りいただくと、何かわかる場合があります。ポートの設定(COM*)はお手持ちの環境に合わせてください。
もう一つ、microSDカードをZYBOから抜き、Linuxの動作するPCに挿入して、下図に示す”ROOT_FS”パーティションにある”upmpdcli.log”をお送りいただくと、何かがわかる可能性があります。
このパーティションはWindowsマシンでは認識できませんので、必ずLinuxマシンでファイルを採取してください。Linuxマシンをお持ちでない場合、USBカードリーダーとラズパイがあればそちらでも可能です。
Special thanks to…
- Linux-Digilent-Dev ( Native DSD patch –> http://fpga.cool.coocan.jp/wordpress/?p=1128)
( patch for ram disk size ) - u-boot-Digilent-Dev ( patch for ram disk size )
- busybox
- dropbear-0.53.1
- alsa-lib-1.0.29
- alsa-utils-1.0.29
- flac-1.3.1
- audiofile-0.3.6
- curl-7.43.0
- expat-2.1.0
- libmpdclient-2.10
- libffi-3.2.1
- zlib-1.2.8
- glib-2.44.1
- boost-1.58.0
- libid3tag-0.15.1b
- mpd-dsd-0.19.14
- libupnp-1.6.19.jfd3
- libupnpp-0.14.1
- upmpdcli-1.1.3
- Zybo Base System Design ( Digilent )