改造VolumioとResonessence Labs CONCERO HPでDSDネイティブ再生 part 1

作成日2014年3月20日 暫定版
作成日2014年3月28日 final cutにしたい


前回更新 から3ヶ月も経ってしまいました。でも日記ネタが無かった訳ではありません。
タイトルでバレバレですが、新しいハードに手を出していた為、更新も滞っていました。

Resonessence Labsの HERUS は、とても素直なハードで、とても良い音を出してくれました。
しばらくはこの環境で十分かな?と思っていたのですが...

季節は冬真っ只中の12月後半、家でRaspyの改造やらデバッグやらをしていました。
ふと、Raspy+HERUSの上に手をかざしたところ....Raspyが落ちました。
私は静電気人間です。その自覚はあるのですが、まさかリセットするとは。

Raspyを入れているケースはアルミ削り出しなのですが、その蓋はアクリルです。
シールドできないだけじゃなく、帯電効果だって抜群でしょうね。中身が見えて楽しいんだけど。

例によってアルミ板で工作です。蓋を1.5mmアルミ板に変更しました。
ついでにHERUSを繋ぐUSBケーブルも太いものに戻して一段落です。
バリバリに帯電させた手で触ってみても何も起きなくなりました。

実は今回の私の暴走は、この対策を行ってしまったが為に発生したと言えます。

というのも...
静電気対策の一環として、シールド系を色々強化してみました。
アルミ板の裏には銅シートを貼り付けて高周波への対応もしてみたり、GROUND系も見直しました。
目的は静電気人間対策だけだったのですが、一通りやってみて、音を出してみると....
明らかに音が変わっています。

よりクリアに、緻密度が上がった音に変化してます。
静電対策だけが目的でしたので、音が変わることは全く想定していませんでした。
シールドが音に優位なのは常識でしょうけど、こんなことでここまで変わるとは思いもしませんでした。
想定外の効果に心も安らぎ?清らかな気持ちで2014年を迎えることができました。大げさな。

でも、この安らぎは1ヶ月も続きませんでした。ちなみに今年のオミクジは小吉。

「HERUSでここまでの音が出るのか...。CONCERO HP だとどんな音が出るんだろう...。」
「HERUSはとっても素直だったし、同じメーカーのCONCERO HPだって同じ様に素直なハードに違いない!」
「同じメーカーのほぼ同時期に発売された製品だし、linuxで使えることを明言してるメーカーだし、なんとかなるさ。」

などと考え始めたら、もうダメです。抵抗するのは時間の無駄です。

NETで某ショップに注文入れ、ヤキモキ待つこと2週間弱、1月22日にCONCERO HPは到着しました。

...

そして... その後2ヶ月に渡る、私とCONCERO HPの格闘が幕を開けました。

まず今までの手法でRaspyからの認識はOK。デバイスとしては何の問題もなく動いている様でした。
alsaもmpdも問題なく認識しているステータスです。mpcでは順調に再生されていることになっています。
でも、 音が出ません!!
...順調に再生している事を示すプログレスバーだけが虚しく進んでいきます。

テンション上げすぎて、IE-800のコードを切っちゃったか?
もしかして、このCONCERO HP、アナログ段に初期不良か??
ボリュームがゼロになってるのか???
などと接続をイジリつつ考えていたら、突然音がでました。え?何もしてないよ??

焦る気持ちと共に初めて聞いたCONCERO HPの音は、期待を裏切らないものでした。
ようやく、HDP-R10を越える「熱い」音に出会えた気がしました。

不安の中でも一安心しましたが、再起動してみると...やはり音が出ません...。
そして、ダメか...と諦めた頃に突然、音がでます。


思いつく限りのテストを行い、CONCERO HP自体の不良も疑いつつ、
最後の手段として仕方なくWindowsで試してみると...
問題なく音がでます。

初期不良では無いことは判りましたが、逆に絶望的な気分です。
WindowsやMacで使えても、linuxで利用できなければ私にとっては何の意味も無い機械です。

次の手段はfirmwareのupdateです。
新しいfirmwareが出たのは購入の1ヶ月程前です。
時期的には微妙な気がします。
そしてCONCEROに今現在入っているfirmwareのバージョンを確認する方法はなさそうです。
WindowsやMacから専用ソフトでアップデートしてみないと判らない様でした。
仕方なく...Windows機からアップデートしてみると、firmwareの書き換えが始まりました。

無事書き換えは完了しましたが、音が出ない/出る程の違いが改善されるのでしょうか?

結果はビンゴでした。「とりあえず」音が出なくなる様な事はなくなりました。

でも、それも最初の1日の出来事にすぎません。 日付はとっくに翌日になってましたが..

--------------------------------------

なんとか音自体は100%出るようになりましたが、今まで出会ったことの無い問題が発生しました。

時々、音がフェードアウトするのです。時間的には0.2秒程度でしょうか。
フッと音が小さくなる現象です。やはり「音切れ」の類いだと思われます。
特定の曲でもなく、裏で別の負荷がかかってる様にも思えない状況でも不定期に発生します。

この対策に時間が掛かっていました。というか、今でも完全解決してません。
現時点では「ほぼ」発生しなくなりましたが、おそらく絶滅もしていないと考えています。

原因はある程度はっきりしています。
一言で言ってしまえば、Raspberry Pi用のカーネルのUSBコントローラの バグです。
RaspberryPiの処理能力が低いことや、USBバスの帯域不足などは直接の原因では無い様です。

Volumio 1.2betaでは、上記のベータ版ドライバが採用されたため、Volumioに載せ替えました。
結果、明らかに発生頻度は落ちましたが、完全に発生しない訳では無い様です。

ただ、PHA-2やHERUSとは明らかに違う頻度での音切れですので、このBUGだけが「音切れ」の原因とは思えません。

この点では、受け側であるCONCERO側のトランスポート処理にも問題がありそうな気がします。
一般的にデータ通信では送信側、受信側共にある程度のバッファを確保して通信を行い、データ遅延の影響を排除する作りになっているはずです。
にも関わらず「音切れ」が発生するとしたら、データの送出がCONCEROでのデコードに間に合っていないのでしょうか?

  • USBメモリの読み出し速度が遅すぎる?
  • これはHERUSでは問題無いことと矛盾しそうです。

  • CONCERO側のバッファが小さすぎる?
  • バッファリングを(敢えて?)ほとんどせず、入力ストリームをダイレクトに(もしくはダイレクトに近い形で)デコードしている???
  • うーん。。。ありそうな..なさそうな。

    もしこのロジックだと、USBメモリ読み出しからCONCEROへの送出までの間にちょっとでも遅延が発生すると再生は破綻することになります。
    一般のPCやMacでは問題にならない程度の最小限のバッファリングだったとしても、RaspberryPiには処理能力的に厳しいのかもしれません。

    そして現時点では、やはり「デフォルトの」Raspberry Piでは処理能力が不足していたと考えています。

    「デフォルトの」と書いたのは、対策の過程で足を引っ張りそうな部分を高速化したからです。
    まず、Raspberry PiをOver clockしました。デフォルトで700MHzのクロックを1GHzまであげました。
    但し、1GHzまでは認められているOver clockの範囲内です。製品保証も失いません。保証受けるかどうかは別として...。

    実際、Over clockしたことで確実に「音切れ」の頻度は減りました。
    フェードアウトの現象もアナログテープで言うところのドロップアウトの様な更に短い時間に変化しました。
    そのため発生頻度は同じでも、タイミングによっては気が付いていないだけかもしれませんが。

    そしてUSBメモリがボトルネックを誘発している可能性も排除出来ないので、SSDをテスト的に付けてみようかと思ってたら...
    なぜか500GBのmSATA SSDがピッタリとRaspyに合体してしまいました。
    しかし、残念ながらSSDに替えたことによる劇的な変化は無い様です。現時点で最大1TBまで増量出来る点位です。

    HERUSは「とても素直な」ハードでしたが、CONCERO HPは「思いっきりセンシティブな」ハードの様です。

    しかしながら、CONCERO HPは苦労を厭わせない音を出します。
    大変でしたが、なんとしても使いたいと思わせる魅力ある音です。
    PHA-2やHERUSから乗り換えるには必要十分な音と思います。

    ここまでの過程で、色々な施策を行っています。
    直接関係の無い改造も(多々)ありますが、前回までとは相当様変わりしています。

    サマリー
  • Raspberry Piを1GHzにOver clock
  • ほとんどのserviceを停止。sambaもnginxも停止。
  • Kernelパラメータをいじりまくる。
  • eth0のQoSをいじりまくる。
  • mpd,usbのI/Oタイミングを最優先realtimeに変更
  • どうでも良いprocessを最低優先度,I/Oをidle時のみに変更
  • 500GB mSATA SSDをUSB接続
  • バッテリを10000mAから5000mA 2本に変更 SSDのせいでAC駆動できなくなったので。
  • プラットフォームをUSBコントローラ対策(beta test)の入ったVolumio 1.2betaに変更
  • Volumioが独自に起動していたものを全て停止。既にVolumioじゃないね。
  • mpdを最新版にした。mpd-0.18.9はDSD再生でハングるのでmpd-dsd-0.18.9を採用
  • CONCERO-HPのボリュームノブ操作に対応
  • CONCERO-HPのApple IR remote controller操作に対応
  • RGB LED, Play LED, DSD LEDを実装。
  • LEDはSoftwarePWMによる点灯制御。RGBで7色だったのが100万色表現可能に!
  • i2C接続RTC(Real Time Clock)モジュールを実装。ただの時計です。



  • CONCERO HPバージョン 2014年3月20日時点
    Volumio 今のところの全体像。いつまでこの形を維持できるのでしょうか...。

    バッテリはSONYの5000mAhを2本。2本にした理由は...後で追記予定です。
    意外とお気に入りのモノアイ
    Volumio 黄色くなっている部分。
    実はlight pipeと言う光ファイバでpi基板後方にあるLEDインジケータを持ってきてます。
    SDカードのアクセスランプなので滅多に光らず、隣のPOWERランプの赤が導かれて普段は赤く光ります。

    piの起動時や停止時にアクセスランプが確認できないとトテモ不安なので付けました。

    飛び出している部分はアルミパイプを削り出して作ってます。
    色々ありますが
    Volumio 2つのバッテリを1本のケーブルで充電したかったので、赤いケーブルが刺さっている所にmicro USBメス端子が付いています。

    バッテリを2本にしたのは...
    バッテリ自身を充電しながら給電できるバッテリを使いたかったのですが、それが可能なバッテリはそれほどありません。
    SONYのバッテリはそれが可能なのですが、残念ながらバッテリからの出力が3A以上可能なモデルでも、ACアダプタからの給電は、MAX1.5Aまでです。
    HERUSまでは1.5Aで十分だったのですが、CONCEROとSSDを追加してしまった為、バッテリ駆動は可能だがAC駆動はできない状態になってしまいました。

    仕方なく10000mAhのバッテリを2本に増設してみたのですが、そのサイズと重さにメゲて5000mAhのものを普段は使っています。
    LEDでステータスを表示しようとすると、結構色々付いちゃいました。
    Volumio
    USB Bコネクタをなんとかしてみた
    Volumio USB Bコネクタの処理は面倒です。
    今回は「自作用」のコネクタを加工して無理やり横出しにしました。

    恰好悪いですが、ケーブルを含めるとこれが「最短」になっちゃいます。

    バッテリの長さを利用してケースに縦に入れたときに余計な圧力が掛からない様にしています。
    PHA-2用に作った最終版ケーブルを再利用
    Volumio mSATA-USB変換基板と接続するのに丁度良かったので。

    LEDまで埋め込んだ苦労作が、やっと日の目を見ることができました。
    Apple IR リモコンが使えます。
    Volumio 何故かは判りませんがResonessense Labsの製品はApple IRリモコンが使えるようになっています。

    CONCERO HPはUSB AUDIOデバイスとHIDデバイスの2つのデバイスとして認識されるので、ボリュームノブやリモコンの入力が使えます。
    udevの仕組みにより/dev/input/event0として認識されます。

    どうやってevent0を使おうか悩んでいたのですが、Over Clockの調査をしているときに丁度良いものを発見しました。

    piのOSはOver Clockをデフォルトでサポートしています。
    そして限界を越えた設定をしてしまった場合、SHIFTキーを押しながら起動するとOver Clockがキャンセルされる仕組みが用意されています。
    無駄なパッケージはほとんど入っていないRaspberry Piですが、この為だけにTrigger Happy Daemonというプログラムが入っています。
    全く知りませんでしたが調べてみると、HIDデバイスからの入力をトリガーにして処理を行う事が目的のプログラムです。まさに期待通りのものです。
    /etc/triggerhappy/triggers.dに、こんな感じでconcero_hp.confとかを用意すればすぐvolumeノブもリモコンも使えます。
    こんな感じで起動します。

    thd   --triggers   /etc/triggerhappy/triggers.d/concero_hp.conf   /dev/input/event0   --daemon

    ちなみに今はちょっと工夫して、volumeノブを特定のパターンで操作するとshutdownするようにしてみました。
    残骸(の一部)
    Volumio 色々と試してみました。
    一番下のiBuffalo Voltissimoは1本でもAC駆動できますし、充電及び給電にインテリジェンスなコントロールをしている様で期待が持てました。
    しかし、12VのACアダプタが必要になるのは我慢するとしても、給電時に変なコントロールしちゃってる様で、「瞬断」があります。見た目は常時通電状態なのですが、一瞬途絶える様です。
    その結果、piはOSごと中途半端に落ちてしまいます。もう少し長い時間の「瞬断」ならrebootするのでしょうが、それすらできない中途半端な「電源異常」状態になります。残念です。

    ここに載せた以外にも何本か買いましたが、性能は「値段を反映している」と言う結論でした。
    安い物では無負荷で5V近く出力できても、1A程度の電流を流しただけで4.2Vまで電圧が低下しちゃう様な物が多いです。
    一番優秀だったのは、Voltissimoです。1A以上流して4.9Vを確保しています。瞬断さえ無ければ...
    次に優秀だったのがSONYの一連のバッテリでした。

    それ以外の外国製バッテリはどれもこれも....
    まぁ、こんなのも結局買ってたりするわけで。
    Volumio 音を聴いた瞬間にTCD-D100(DAT Walkman)の音を思い出しました。

    方向性はリスニング向きとは違いますが、いい音です。クール且つドライなモニター系の音です。

    256GBのSDカードに全曲入れて、その日の気分でHERUSと使い分けたりできそうでした。

    でも、フォルダ単位での選択など再生に関する機能が使いづらいです。
    結局、再生用途に使うのは断念です。



    ちなみに、去年のオミクジは大吉でした。




    戻る

    inserted by FC2 system