• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

なかるうのブログ一覧

2021年08月22日 イイね!

仮想化オーディオサーバーの製作(1)

仮想化オーディオサーバーの製作(1)前回購入したファンレスのミニPCを何に使うか。
自宅サーバーのリプレースという大役に抜擢してみました。












(2024/1追記)
Broadcomによるvmware社の買収が完了し、ここで紹介したvSphere Hypervisor(ESXi)にも影響が取りざたされています。はっきりしたところで記載したいと思います。

(2024/2追記)
無償版vSphere Hypervisor(ESXi)の提供終了が公式に発表されました。残念です。

(2024/7追記)
ESXiの代わりにProxmox VEで作り直しました。
仮想化オーディオサーバーをProxmox VEで再構築した

(2025/4追記)
無償版ESXi8の提供が再開されました。



オンプレミスで行こう。

サーバーがあると、PCの更新・故障時など復旧がアプリだけで済むので楽ですが、今ならクラウドストレージという選択もありますね。でも大容量のデータには回線が少し頼りない。
PCが2台以上ある家ならまだまだサーバーの意味はあると思いますし、回線が十分実用的になっても、自分は何だかんだ言いながらローカル保存にこだわっている気がします。特に音楽は。

今までの自宅サーバーはこれ。その前はNASでした。
alt
PRIMERGY TX100 S1(富士通)
静かで良かったプライマジー。CPUは65WのXeon E3110を35WのL3110に換装、OSは今は無きWindows Home Server2011、2TB×4台のエンタープライズHDDをStablebit Drivepoolで束ねて使っておりました。
このスペックで約10年間、途中OSをWindows Serverに更新し、24時間365日ノートラブルで走ってくれました。お疲れさま。
(WHS使いやすかったのに、何でやめちゃうかなマイクロソフトさん・・・)

しかし
ちょっとやり過ぎた。
反動で、今回はダウンサイズします。
alt
PN41(ASUS)
手のひらサイズのミニPCです。スペックは前回レビューした通り。
alt
さすがに10年も経つと、6ワットのAtomでもXeonに勝っちゃうんですね。


システムプラン

こんな感じに考えてみました。
仮想マシンVM1で、PC用のファイルサーバーとオーディオ用DLNAサーバーを担います。VM2(,3,4,...)は自由に使える砂場(実験用環境)です。各VMは高速の仮想ネットワークでつながります。
alt
省電力CPUに仮想化で機能を詰め込む・・・
ダウンサイジングターボか!
機能を仮想マシンにどう割り当てるか、各マシンにリソースをどう割り振るか、このあたりがキモになりそうです。


スペック検討

PN41の128GBではサーバーにならないので、盛ります。
alt
右下:W4N3200CM-8GR DDR4-3200(PC4-25600) 8GB×2枚 (Crucial by Micron)
右上:SSD-CK500N3/N EXCERIA M.2(Type2280) NVMe-SSD 500GB(キオクシア)

(2021/10/1変更)
SNVSE/500G Kingston SSD NV1-E 500GB M.2 2280 NVMe(キングストンテクノロジー )
左:WDS200T1R0A-EC WD Red SA500 2.5インチSSD 2TB(Western Digital)

メモリー:16GB
サーバーだけなら標準の4GBでもいけそうですが、CPUがJasper Lakeになって最大メモリー量が16GBに増えたこともあり、仮想化を本格導入する気になりました。

システム用SSD(M.2):500GB
ESXi7.0のシステム領域に最大128GB、残りが仮想マシン用の領域(データストア)になります。Roonのシステム(ライブラリではない)に64~128GB必要、となると250GBではちょっと手狭かなと。
信頼性重視で「速い」のより「熱くない」のが欲しくて、最初SATAのM.2を入れてみましたが認識しませんでした。写真のようにヒートスプレッダが付けられるものの、あんな爆熱のNVMeが5年とかもつのかね?

データ用SSD(2.5インチ):2TB
底板ごとスライドさせて取り付ける構造になっています。なかなか攻めてる設計ですね。
NAS用のドライブを選定。以前のサーバーは2TB×4ですがDrivepoolでファイルを2重化していたので実質4TB、さらに半減したのは動画データを使わなくなったためです。

自分のハードディスクの消費量が減ったのは2012年から。
同年は著作権法改正で違法ダウンロードが刑罰化された年ですが、同時に市販BD/DVDのリッピング行為も(レンタルかセルを問わず、個人利用であっても)違法となりました。自分はこれで「冷めた」というか。
正当に購入したコンテンツをメディアプレーヤーやネットワークプレーヤーで楽しむことすら認めない、「そんなメディアならもう結構」と購入激減。その分のお金は当時既にDRM撤廃に転じていた音楽に回すようになりました。


閑話休題。音楽、写真、ドキュメントで2TBもあれば問題なしです。
バックアップにはUSB接続のHDDを使います。

以降、仮想化基盤、OS、アプリの順にインストールしてゆきます。つまづいたところを中心に記しておきます。


vSphere Hypervisor(ESXi)のインストール

ハイパーバイザー型仮想化基盤のESXiを導入します。
以前にシングルボードコンピュータのAPUで試しているので、こちらもご覧ください。
APUと仮想化で遊ぼう

ESXiはガチのエンタープライズ製品で、企業のサーバー室にあるブレードサーバーとかで動いているものです。管理者側のソフトウェアのためWorkstation Playerあたりと比べると小難しい印象があり、また今回もそうでしたがコンシューマー向けPC、特にLANコントローラーがIntel製でない機種ではひと手間必要になるケースが多いようです。インストールさえ突破できれば、あとは安定して使える良い製品なのでガンバリます。

VMwareのサイトから無償版ESXiのISOイメージをダウンロード。ライセンスコードも入手します。Rufusなどイメージ書き込みアプリでインストール用USBメモリーを作成します。
PCはBIOS設定でSecure Bootを無効化、起動順序をUSB優先、仮想化支援機能のVT-dを有効化しておきます。

PN41のLANコントローラーは2.5GbE対応のRealtek RTL8125で、ESXiのインストーラは認識せず
alt
中断してしまいました。選択肢は2つ。
・ドライバーを追加したカスタムISOを作成する(2.5Gbps、ESXi6.7以前のみ)
・RTL8153搭載のUSB-LANアダプターを使う(1Gbps、ESXi7.0のみ)
alt
運よく、前回lightMPDの動作確認用に購入したアダプターがRTL8153でしたのでこれを使用します。

USBポートにアダプターを接続し、再度USBメモリーから起動すると今度は
alt
インストール先ドライブの選択まで進めます。選択したドライブは消去され、全領域がESXiの管理下に置かれます。

しかしこの後再びエラー。
alt
Exception: No vmknic tagged for management was found.
と表示されて止まりますがインストール自体は完了しています。
Alt-F1でシェルを開き、rootでログイン(パスワード無し)。USBメモリーを抜いてrebootすると、
alt
ESXi使いにはお馴染みの起動画面が表示されます。
IPアドレスの表示が0.0.0.0となっておりネットワークが機能していないようです。

F2を押してrootでログイン(初期パスワード無し)し、DCUI(ダイレクトコンソールUI)を呼び出します。
alt
よく見ると管理用ネットワーク(Management Network)関連の設定がグレーアウトされ選択できなくなっています。
「Network Restore Options」から「Restore Network Settings」を実行し、一度トップ画面まで戻るとネットワークが使えるようになるので、「Configure Management Network」「Network Adapters」でネットワークアダプターを選択します。
パスワード、SSHやシェルの有効化、必要によりIPアドレスの固定化もここで設定しておきます。

ローカルコンソールでの設定はここまで。以降はネットワーク上の別のPCから操作します。
ブラウザでhttps://アドレスを開くと、vSphere Web Clientという管理画面になります。
alt

「管理」「ライセンス」画面でライセンスコードを入力して完了・・・と思いきや、まだ罠がありました。
alt
インストール時のUSB-LANドライバー「cdce」ではリンク速度が100Mbpsとなっています。以下の手順で1Gbps対応のドライバーをインストールします。
vmware Flings - USB Network Native Driver for ESXi
ドライバーやインストール用のコマンドはESXiのバージョンにより異なるので、ここで確認しておきます。

「ホスト」画面の「アクション」ボタンからメンテナンスモードに入ります。
alt

「ストレージ」画面からデータストアブラウザを開きます。任意の場所にダウンロードしたドライバーをアップロードします。
alt

データストアは、/vmfs/volumesにあります。
ローカルコンソールの黄色い画面に戻り、Alt-F1でシェルを開き(Alt-F2で戻ります)、esxcliコマンドでインストールします。SSHを有効にしてあれば、次のようにリモートでも可能です。
alt
ファイル名やディレクトリ名は、Linuxと同様TABキーによる補完が使えます。

再起動すると、ドライバーが「uether」に変わり1Gbpsでリンクしました。
alt
メンテナンスモードを終了することを忘れずに。




ここまでで仮想化基盤が構築できました。
長くなったので残りはまた今度。
Posted at 2021/08/22 00:47:21 | コメント(0) | トラックバック(0) | オーディオ | 趣味
2021年08月06日 イイね!

最後のAtom?Jasper Lakeを試す

最後のAtom?Jasper Lakeを試すWindowsで使うにはちょっとパワー不足として評価が固まってしまった感のあるCPU「Atom」ですが、低消費電力でファンレス動作が可能なためオーディオ用PCには使い勝手が良く・・・またまた試しました。







昨年レビューした「Atom」搭載PCは4機種。


HeroBox (CHUWI)
ネットワークオーディオ自作(4) lightMPDをPCで


GD41 (KODLIX)
ネットワークオーディオ自作(5) lightMPDをPCで(リベンジ編その1)


Neo G41V-4 (MINIX)
ネットワークオーディオ自作(6) lightMPDをPCで(リベンジ編その2)


LIVA Q2 (ECS)
ネットワークオーディオ自作(7) lightMPDをPCで(番外編)

これらの機種のCPUはコードネーム「Gemini Lake」または「Gemini Lake Refresh」で、その後継となる「Jasper Lake」世代のプロセッサーを搭載したPCが登場しました。


現在リリースされている「Jasper Lake」はこの6モデル。
(もう一つ、なぜかこの表には出てきませんがCeleron N5095というTDPが15Wのモデルがあります。)
ファンレスが狙えるTDPは概ね6W以下※、lightMPDに適したクアッドコアのモデルを絞り込むとPentium Silver N6000かCeleron N5100となります。
※より消費電力の大きなCPUでも、大がかりな冷却機構によりファンレスを実現している例はあります。

ん?Atomの話じゃないのって?何ともややこしいところで、Atom用の設計(マイクロアーキテクチャ)でもブランド名は上位のPentium SilverまたはCeleronとネーミングされており、Atom名を冠したモデルはJasper Lake世代にはありません。
これは「ユーザーさんは難しいことは気にせず、名前で性能を判断してね」というIntelのメッセージで、モデル名の数字が排気量を示さなくなった某欧州車と似たところがあります。こういう、ユーザー視点?のネーミングスキームが流行っているのかしら。技術的な解説を行うニュースサイトなどでは苦労していることでしょう。厳密なところはWikipediaなりへどうぞ。

ニュースサイトの記事によれば、プロセッサーとしてのAtomはこの世代で最後ではないかとのことで、今後は省電力コアとして別の製品ラインに取り込まれるのか、それともライバルのARMにその座を空け渡してしまうのか。
個人的にはファンレスや乾電池駆動が好きなんです。かつての

とか、映画「ターミネーター2」のあの子がATMでお金をおろす()時に使ってたやつとか。スマホにキーボードをつけたのじゃなくて「PCと同じ」がいい。なので省電力のインテルアーキテクチャ(LPIA)は続けて欲しいのですが・・・さてどうなるか。

(2022年追記)Intel Coreプロセッサーの最新版「Alder Lake」は、高性能のPコアと高効率(省電力)のEコアを組み合わせた構成となり、Atom系列のCPUコアがEコアとして採用されました。
・・・ということで、Atomの魂は主力のCoreプロセッサーに取り込まれた形です。ただし、まだ製品としては登場していませんが、Atom相当とも言えるEコアだけのモデルが存在するとの情報もあります。

(2023/1追記)第12世代Core(Alder Lake)/13世代Core(Raptor Lake)の下位モデルとして、Eコアだけの「Alder Lake-N」が発表となりました。また少し前にブランド名の変更もあり、従来のPentium(Gold/Silver)やCeleronはIntel Processorとして一本化されました。
Intelのサイトには、Intel Core i3 Processorとして8コアのN305/N300、Intel Processorとして4コアのN200/N100/N97、2コアのN50、そして久しぶりのAtomブランド、x7425E/x7213E/x7211Eも掲載されています。これらがJasper Lakeの後継、Atomの実質的な末裔ファミリーとなります。
Jasper Lake世代AtomのTremontコアから1世代進んだGracemontコアとなり、性能的には向上していますが消費電力的にはどうでしょうかね。


購入

今回購入したのはこれ

PN41 N5100モデル(ASUS、写真左)

手のひらサイズの「ミニPC」に分類される製品です。
縦横11.5cm。IntelのNUCとほぼ同サイズ、右のAPUやCDケースと比べるとサイズ感がわかると思います。
まだ国内導入はされておらず、Amazon.co.ukから購入。もう慣れましたがベコベコの段ボールで届きました。
(2022/5/17追記)N5100モデルの国内販売が決定しました。自分が購入したものとは入出力やストレージの仕様が変わっているようです。詳しくはメーカーサイトをご覧ください。


UK仕様はプラグの形状が違います・・・も、もちろん知ってましたですわよ。
ACアダプター本体は100~240V対応なので、ここだけ市販の100V仕様のケーブルに交換すれば問題なく使えます。アダプター側は3pinの「ミッキー」タイプ。


エッジが立っていてカワイイというよりスタイリッシュ系ですね。こんなちっちゃいPCなら何台でも欲しくなります。
完全ファンレスで無音動作ですが、天板を放熱に利用しているようでかなり熱くなります。
後面のインターフェースは左からHDMI、DisplayPort、USB Type-C、2.5GbEのLAN、USB3.1×2、DC19V。DisplayPortはモデルによってLANやVGA、COMになります。Type-CのUSBはUSB-PDとして電源入力にも使えます。
(2022/5/17追記)国内モデルではUSB Type-CがminiDisplayPortに変わっています。


前面にはオーディオジャック、USB Type-C、USB3.1と電源スイッチがあります。


底面。さすが大手ASUS、しっかりした鉄板の筐体で好印象です。
小さいのに内部は拡張性の高い設計になっています。メモリーはDDR4のSO-DIMMが2スロット、ストレージはM.2(放熱板付き)に加え2.5インチのSSDも搭載可能です。


動作確認


購入したモデルはWindows 10 Proの海外版がインストールされていました。初期セットアップは英語で進める必要がありますが、問題なく日本語化できました。(画像はWindows Update後のため購入時とは異なります)


HWiNFOでCPU情報を取得してみました。
Celeron N5100は4コア4スレッドで、ベースクロック1.1GHz、ブースト時2.8GHz。メモリーは4GBシングルチャネル、SSDはNVMeの128GB。
(2022/5/17追記)国内モデルのストレージはeMMCの64GBに変わっています。



APU2のGX-412TCがデータベースになかったので、GX-412HCで代用しています。
N5100のマルチスレッド性能は以前のN4100とほとんど変わりませんが、シングルスレッド性能が大きく向上しています。とはいえ最新のデスクトップPC向けCPUと比べるほどのものでもありません。


圧倒的な低消費電力は変わらず。


こちらはシステム情報。LANコントローラはRealtek製です。
発熱がそれなりにあり、SSDがNVMe、セッティングもパフォーマンス志向になっているようで、全体の消費電力は以前のモデルほど下がらないかもしれません。

PC Mark 10のスコアです。

下は普段使っているマシン(Ryzen 5 3400GE)のスコア。比較するとWebは問題なし、ビジネスアプリは体感半分くらいで業務で支給されたら怒るけど家でなら使えなくもない感じ。画像処理や動画編集には、当然ゲームにも厳しいですね。メモリーの少なさもあってか、初回のWindows Updateは特に重かったです。


lightMPDは

lightMPDのx86_64版で動作確認がとれているハードウェアはLIVA ZおよびLattePandaです。lightMPDの公式サイトには、
「Liva、Lattepanda 以外の機種でもイーサネットコントローラに Realtek 8169PCIやIntel 82575/82576を使った機種なら動作する可能性はあります。(保証はできません)」
とあります。

lightMPD起動用USBメモリーの作成方法については冒頭でリンクしたブログをご覧ください。
USBメモリーをPCに挿入、BIOSでSecure Bootを無効化・起動順序をUSB優先に変更して再起動・・・しましたが動作せず。モニターに表示されるログを見るとLANコントローラの認識に失敗しているようで、最新の2.5GbE対応チップに互換性がないのかもしれません。残念。
USB接続のLANアダプターが使用できるとの情報を見つけたので、試してみたいと思います。

(2021/8/12追記)
LANアダプター追加によりlightMPDが動作するようになりました。BIOSで内蔵LANを無効に設定するだけ、設定ファイルの編集などは不要です。

搭載チップはRealtek RTL8153のものが使えるようです。


車載するなら

100V電源の普通のPCと同じで、ACアダプターを接続しても電源スイッチを押すまで起動してくれません。
電源が供給されたらすぐに起動するようBIOSの設定を変更できること。手の届くところにPCを置けない車載ではこれが条件となります。

ASUSのBIOSはGUIなんですね。ACアダプター接続で即起動することを確認できました。サイネージモード、あるいはキオスクモードとも呼ばれています。


消費電力測定

PN41のDCプラグは外径5.5mm/内径2.5mmのセンタープラスでAPUと同じでした。電源ラインにワットチェッカーをはさんで計測します。

プリインストールされているWindows10では、起動時のピークで13W程度


起動完了後は最小5W程度ですが、ディスクアクセス中は10W台に跳ね上がります。


ベンチマークアプリ(PCMark 10)を動作させると、平均6~11W程度で推移しますが、ピークでは12Wを超えることもありました。

(2021/8/12追記)
USB-LANアダプターによりlightMPDを使用すると、FLAC音源再生時で11W、DSD再生時は13W程度となりました。


これまでレビューした機種の中では、全体に消費電力は高めのようです。
それでもデスクトップPCとして見れば超低消費電力であることに変わりはなく拡張性も高いので、色々と使い道はありそうです。
・ファイルサーバー
・音楽サーバー(MinimServer、RockならRoonもいけるかも)
・Daphile
・仮想化基盤(ESXi)
などなど。遅いWindowsマシンとして使うより楽しいのでは?

(追記)ESXiを使ってファイルサーバー兼音楽サーバーを製作してみました。こちらもご覧ください。
仮想化オーディオサーバーの製作(1) (ESXi)
仮想化オーディオサーバーの製作(2) (TrueNAS/OpenMediaVault)
仮想化オーディオサーバーの製作(3) (MinimServer/Roon)


ずっとこのジャンルをウォッチしているのは、オーディオ用リニア電源の
alt
UltraCap LPS-1.2 (UpTone Audio)
でPCを駆動してみたいからで、この定格(DC12V 1.1A)で動作し、lightMPDのDSD/PCMやサンプルレート変換をこなせるだけの性能を備えた「10ワットPC」が欲しいのですが、なかなか見つかりません。(電源が19Vの本機は最初から外れているのですけど。)
サーバーは前回作ったし、これさえあれば車載システム完成なんだけどなぁ・・・

Atomが終わったらファンレスのミニPCというジャンル自体が消滅してしまうのでは?という不安を抱きつつ、Jasper Lakeはまだまだ出始めなので旅は続きます。




ネットワークオーディオ関係の記事をまとめてみました。よかったらこちらもご覧くださいませ。
ネットワークオーディオを楽しもう
Posted at 2021/08/06 02:13:06 | コメント(0) | トラックバック(0) | オーディオ | 趣味
2021年07月09日 イイね!

直結ネットワークオーディオ(実用化編) - MinimServer2 on OpenWrt/RaspberryPi3 -

直結ネットワークオーディオ(実用化編) - MinimServer2 on OpenWrt/RaspberryPi3 -前回製作した「直結(ハブレス)」ネットワークオーディオ。とりあえず動いたものの、ソフトウェアルーターとして実装したWi-Fiの安定性がイマイチなのが気に入らず・・・今回が実用化編となります。








みん友さんのコメントから始まった前回のプランです。私はシステムアップしただけ。
alt
サーバーとレンダラーをHUBレスで直結しています。当然ですが対向接続でつながるのは2台で、これだけではコントロールポイントともインターネットとも通信できません。サーバー役のラズパイにルーター機能を実装し、Wi-FiとEthernetをソフトウェア的に接続(ブリッジ)、上位のLANとはセグメントを分けてルーティングすることにより、非オーディオパケットがレンダラーに流れ込まないよう遮断します。

アナログ的な物量は別として、理屈ではかなり理想的なオーディオサーバーになっていると思うので構成はそのまま、ソフトウェアルーターの部分を1からやり直しました。


OS選定

使用したのはタイトル画像のOpenWrt
オープンソースのルーター用OSで、主に市販ルーターのファームウェアに上書きして使うものですが、ラズベリーパイでも動作します。Linuxベースであるのと、豊富な機能拡張用パッケージでカスタマイズできることから、今回のようにモニターもキーボードも接続しない「ヘッドレス」用途では汎用OSに近い感覚で使うことができます。

汎用OSにルーター機能を実装して苦労するなら、ルーター用OSでサーバーアプリを動かす方が近道では?
という発想です。ラズパイ用のセットアップガイドはこちら


OSのビルド

え、ビルドから始まるの?
サーバーアプリのMinimServer2用にOSの構成(ビルドオプション)を変更します。
これ近道なのか?いきなり怪しくなりました・・・

もちろん公式サイトには機種ごとのインストールイメージが掲載されていて、ラズパイの場合それをダウンロードしてmicroSDカードに書き込むだけで普通はOKです。
サーバーアプリもパッケージで簡単にインストールできるminiDLNAがあり、そちらを使えばビルド不要で簡単そうですが・・・自分はMinimServerを使いたいので、こちらの道を行きます。

ビルド環境としてLinuxが必要です。WindowsPC上にホスト型仮想化環境のVMware Workstation Playerを、その上にUbuntuをインストールしました。
alt
Ubuntu Japanese Team公式サイトからダウンロードしたISOイメージをVMに食わせるだけでセットアップがサクっと進みます。Windowsとのファイルのやり取りはドラッグ&ドロップでできますし、ハードウェアが仮想化されるおかげでUbuntu側に特別なドライバとか必要なし。DVDを焼いて素のPCにインストールするより快適ですね。

HDDの容量はビルド終了後にこのくらい膨らむので、仮想マシンに最低30GBほど割り当てておきます。他のマシン設定はデフォルトで大丈夫です。
alt

公式サイトのクイックガイドはこちら
[OpenWrt Wiki] Quick Image Building Guide

ちょうどラズパイ3B用のOpenWrtをビルドする解説記事があり参考になりました。ありがとうございます!

ガイド(「Debian / Ubuntu」の部分だけでOK)に従い、GitやSubversionなど開発系パッケージをインストールしてから以下の手順でOpenWrtのソースコードを取得します。
~/xxxxxx$ cd 
~/$ git clone https://git.openwrt.org/openwrt/openwrt.git 
~/$ cd openwrt 
~/openwrt$ git fetch --tags 
~/openwrt$ git tag -l      (Ctrl-Z to exit) 
~/openwrt$ git checkout v19.07.7 
~/openwrt$ ./scripts/feeds update -a 
~/openwrt$ ./scripts/feeds install -a 

~/openwrt$ make menuconfig 

とするとメニュー形式の設定画面になります。

上から3行でターゲットを指定。ラズパイ3Bでは64bit版と32bit版から選べ、今回は32bit版を選択しました。4行目のターゲットイメージではsquashfsを外していいです。
alt
Advanced configuration options => Toolchain optionsからUse glibcを選択します。これがビルドの目的です(後述)。
alt
OpenWrtにはaptやyumに相当するopkgというパッケージ管理システムがありますが、この選択により標準のパッケージの多くは使えなくなります。後で必要になる機能は全てここで追加してコンパイルします。
Base system --->
[*] block-mount
[*] libstdcpp
Kernel modules --->
    Filesystems --->
[*]     kmod-fs-exfat
[*]     kmod-fuse
    USB Support --->
[*]     kmod-usb-storage
[*]     kmod-usb-storage-extras
[*]     kmod-usb-storage-uas
[*]     kmod-usb-uhci
[*]     kmod-usb2
    Wireless Drivers --->
[*]     kmod-mt76x2u
LuCI --->
    1. Collections --->
[*]     luci
Multimedia --->
[*] ffmpeg
Utilities --->
    Disc --->
[*]     blkid
[*]     lsblk
    Editors --->
[*]     nano
    Filesystem --->
[*]     fuse-utils
[*] dmesg
[*] ldd
[*] tar
[*] usbutils


(2021/7/13追記)UPSのjuice4haltを使う場合は以下も追加。
Base system --->
    busybox --->
        coreutils --->
[*]         usleep


設定を保存して終了。夜寝る前に
~/openwrt$ make V=sc 
しておけば、翌朝にはbin/targetsディレクトリにイメージが出来て(またはエラーでコケて)います。

ビルドして出来たインストール用イメージ(gz形式)からimgファイルを展開しmicroSDカードに書き込みます。書き込みアプリはWin32DiskImagerRufusなどで、Raspberry Pi Imagerも使えます。


ルートパーティション拡張

初期状態のルートパーティションは256MBでした。サーバーアプリ導入用に拡張しておきます。
Gparted(Gnome PARTition EDitor)を使います。ビルド環境にインストールするか、CDやUSBメモリーから起動できるLive版もあります。
alt
画像は公式サイトより。右上のプルダウンでmicroSDカードを選択、ext4フォーマットの領域を空き領域全体に拡張、最後に適用(チェックのボタン)すれば完了です。誤ってPCのHDDを操作して起動不能にしないよう注意。
(2021/7/17追記)8GBのカードでは問題ありませんでしたが、もっと大容量のカードで空き領域いっぱいまで拡張するとエラーになることがあります。確保するサイズは1GBもあれば不足することはないでしょう。


OS起動

ローカルのコンソールはなく、PCからネットワーク経由で操作します。
初期状態ではLANポートに固定IPアドレス「192.168.1.1」とDHCPサーバーが設定されており、そのままホームネットワークに接続すると障害が発生する可能性大です。PCのLANケーブルを家のルーターから抜きラズパイと直結します。他の接続はまだ行いません。
alt

(注)ラズパイは出荷状態では内蔵Wi-Fiの地域コードが設定されておらず、設定するまで電波が出ません。しかしラズパイ3B用のOpenWrt(19.07)ではこの設定が機能していないため、インストール前に別のOS(Raspberry Pi OSのraspi-configなど)でコードを「JP」に設定する必要があります。
Wi-Fiは地域コードを元に出力レベルや周波数を制限することで、国ごとの規制に対応しています。誤った設定だと国内法を逸脱した電波を出力する可能性があるので、他の国に設定するのは「ご法度」です。設定はハードウェア(EEPROM)に記憶され、OSを変更しても上書きしない限り維持されます。

コンソールとして
alt
SSH接続によるCUIと(画像のアプリはPuTTY)、
alt
ブラウザで操作する「LuCI」というWebGUIが用意されています。見た目は市販ルーターの管理画面のようなこのLuCIが強力で、画面をつついているだけでご飯3杯いけそうです。この感覚わかる方は是非。

ラズパイ版のファイルシステムは普通のext4のため、電源を落とすときはSSHコンソールからコマンドを入力します。面倒なので最後にUPSを導入して自動化します。
# poweroff 

(注)外部からラズパイに侵入されないよう、ホームルーターの設定を必ず確認します。プロバイダーとの契約内容によっては、ラズパイのポートがIPv6で外部から丸見えになる場合があります。しかも最大手のフレッツなどデフォルトの設定でそうなっているところもあり危険です。NATとかプライベートアドレスとかv4時代の生半可な知識は罠ですよ、というのは自分の話。


OpenWrtの用語

以下の用語を理解しておくと設定がやりやすいと思います。

デバイス(radio0, eth0など)
:物理的なネットワーク用ハードウェア。LANやWi-Fiアダプター。

インターフェース(wlan0, br-lanなど)
:デバイスを設定することによって作成される「接続」。デバイスと1対1とは限らず、複数のインターフェースを束ねた仮想的なインターフェースもある。

ゾーン(wan, lanなど)
:インターフェースをWAN側やLAN側に割り当てた「まとまり」。

例えば、radio0 という「デバイス」で上位のルーターに接続すると「インターフェース」wlan0 になり、それを「ゾーン」wan に所属させる、といった感じ。
LANポートをローカル側にしたりインターネット側にしたりといった設定が柔軟にできるようになっており、なるほど良く出来ています。


Wi-Fiネットワークに接続

ラズパイの内蔵Wi-Fiでインターネットに接続します。
alt

LuCIなら市販ルーターの感覚で簡単に設定できると思います 。ユーザーガイドはこちら。
[OpenWrt Wiki] Connect to client Wi-Fi network

「Network」-「Interface」画面を開き、EditボタンからLAN側IPアドレスを上位のネットワークと別のアドレス(冒頭のシステム図では192.168.13.1)に変更。いったんPCの接続が切れ、90秒以内にブラウザorSSHを開きなおして再接続すると有効化されます。
alt
「Network」-「Wireless」画面を開き、デバイス「radio n」(n=0,1,2...)でネットワークのスキャンを実行。見つかったアクセスポイントに接続すると、インターフェース「wlan n」が作成されます。ゾーンやルーティングは自動で入力されるので確認だけ。
alt
alt


ローカルネットワーク構築
alt
現在のOpenWrtでは、ラズパイの内蔵Wi-Fiを使ったAP-STAモード(アクセスポイントとクライアントの同時利用)は動作しないようです。USB接続のWi-Fiアダプターを1個追加し、有線LANとブリッジを構成します。

(参考情報)
GitHub - USB WiFi Adapter Information for Linux

公式にドライバーが用意されている機種でもアクセスポイントとしては使えない場合があります。いくつか失敗して落ち着いたのがこれ。
alt
A6210-100JPS(NETGEAR)
WiFi 無線LAN USBアダプター 子機 AC1200 867+300Mbps 高性能アンテナ USB延長ケーブル付き


ちょっと大柄ですが、OpenWrtで動作実績のある機種を購入しました。

搭載チップを確認。
# lsusb
Bus 001 Device 004: ID 0846:9053 NetGear, Inc.

チップは MediaTek MT7612U です。

Wi-Fiの機能を確認。
# iw list -A 4 "interface combinations" 
    valid interface combinations: 
        * #{ IBSS } <= 1, #{
managed, AP, mesh point } <= 2, 
          total <= 2,
#channels <= 1, STA/AP BI must match 
ハードウェアとしてはAP-STAモード対応で、実際に設定もできましたが安定動作しませんでした。単機能で使う分には安定しているので、アクセスポイント専用に使用します。

「Network」-「Wireless」画面を開くと、接続したデバイスが増えています。Editボタンから「アクセスポイント」モードのインターフェースを追加。
alt
alt
追加したインターフェースはデフォルトで「lan」ゾーンに割り当てられています。
alt
br-lanという仮想インターフェースが最初から設定されていて、ここに追加されたインターフェースはルーターのローカルネット側端子のようにブリッジされて同一ネットワークになります。前回のようにインターフェースやデーモンの起動順序を気にする必要もなく、LuCIのGUIで直感的に設定できます。

これでネットワークが構成できました。さすがはルーター用OS、この種の設定はお手のもの。
反面ここから先はルーター用OSにルーター以外の仕事をさせるためちょっと面倒になります。GUIは使えずコマンドラインで操作します。


USBディスクのマウント
alt
サーバーを構築するため、USBストレージを接続します。
alt
ポータブルSSD 480GB SSD-PL480U3-BK/N (バッファロー)

exFAT形式でフォーマットし楽曲ファイルを入れたSSDを接続し、認識されることを確認します。
# blkid 
/dev/sda1
: LABEL="SSD-PLU3" UUID="C2C4-9374" TYPE="exfat" PARTUUID="dd3dafec-01"

以下のコマンドでマウントします。マウント名usbhdd1は任意です。(19.07では、exfat形式のストレージをfstabで自動マウントさせることはできませんでした。この方法だと接続するUSBポートを変えるとマウントに失敗することがあるので、以降つなぐ場所は変更しません。)
# mkdir /mnt/usbhdd1 
# mount -t exfat -o sync,dev,noatime,noexec
/dev/sda1 /mnt/usbhdd1 
# ls /mnt/usbhdd1 

ファイルが表示されればOK。

起動時にマウントするようスクリプトを設定します。/etc/rc.localファイルを直接編集するか、LuCIでも可能です。
alt


Javaのインストール

この後で入れるMinimServer2を動かすためにJavaの実行環境を準備します。
MinimServer2の要求はJava8以上。OpenWrtには「JamVM」という軽量のランタイムが用意されていますが、MinimServer2とはバージョンが合わず使えません。

ならば、とフルセットのJDK(Java開発キット)をインストールしようとしたところ、OpenJDKやOracleJDKはOpenWrtに未対応でした。
これは、OpenWrtがCのライブラリとして軽量のmusl-libcを採用しており標準的なglibcを使っていないためです。そこでOpenWrtのビルドオプションを変更してglibcを使えるようにした、というわけです。

Oracle JDK8(Java SE Development Kit)を公式サイトよりダウンロード。OSを32bitで構成したので、Javaも32bit版の「Linux ARM 32 Hard Float ABI」を使います。

PCでダウンロードしたJDKをSSDに入れてラズパイに移動し、/usr/share ディレクトリに展開します。
# cp /mnt/usbhdd1/oraclejdk-8u291-linux-arm32-vfp-hflt.tar.gz /usr/share 
# cd /usr/share 
# tar xzvf oraclejdk-8u291-linux-arm32-vfp-hflt.tar.gz 

tarで展開されたファイルのオーナー設定が正しくない?chownコマンドで修正しました。パスの通ったディレクトリにリンクを張って起動確認します。
# chown -hR root:root jdk1.8.0_291 
# ln -s /usr/share/jdk1.8.0_291/bin/java /usr/sbin 
# java -version 
Java(TM) SE Runtime Environment (build 1.8.0_291-b10) 
Java HotSpot(TM) Client VM (build 25.291-b10, mixed mode) 



MinimServer2のインストール

UPnP/DLNAサーバーのMinimServer2をインストールします。ラズパイ用は32bitのarmhf(ARMハードフロート)版です。

SSDに入れておいたMinimServerのインストールパッケージを/usr/shareディレクトリに展開します。
# cp /mnt/usbhdd1/MinimServer-2.0.18-linux-armhf.tar.gz /usr/share 
# cd /usr/share 
# tar xvf MinimServer-2.0.18-linux-armhf.tar.gz 


MinimServerのセットアッププログラムを実行。OpenWrt用にrootのシングルユーザーとして設定します。
# minimserver/bin/setup root 
MinimServer desktop integration is not available 
MinimServer automatic startup is not available 

エラーとなった自動起動は後で設定します。

MinimServerの初期設定を行うため、コマンドライン版のstartcで起動します。
# minimserver/bin/startc 
初回だけライブラリの場所を聞かれるので入力する
(ここでは /mnt/usbhdd1/Music)
alt
やったぜ。ゴールが見えてきたか?
ライブラリのスキャンが始まり、しばらく経って「MinimServer is running」と表示されれば起動完了。
alt
MinimWatch(とJava)をインストールしたPCに同じ内容が通知され、アイコンが緑色になります。ならない場合はPCのファイアウォールがJavaをブロックしていないかチェック。パブリックネットワークあるある。

startcによる起動ではコンソールを閉じるとMinimServerも止まってしまうので、いったん終了します。
>exit 
デーモン(サービス)として起動させるのは次のコマンドです。
# /usr/share/minimserver/bin/startd 
/etc/rc.localファイルに追加して自動起動させます。
alt
リブートしてPCのタスクトレイにあるMinimWatchのアイコンが再度緑色になれば成功です。
# reboot 


MinimStreamerのインストール

ここまでで通常の再生は可能になっていますが、MinimServerの特徴であるトランスコード配信を行うにはMinimStreamer(有償)をインストールします。設定方法は以前のブログをご覧ください。ffmpegはOSビルド時に追加済みのためインストール不要です。
ネットワークオーディオ自作(8) ラズパイサーバーを改良する
alt


UPSの接続とシャットダウン用スクリプトのインストール

電源を落としたら自動でシャットダウンするようUPS(無停電電源)を追加し、あわせて電源を12V化します。ハードウェアは
alt
Juice4halt J4H-HV-TRM(Nelectra)
です。こちらも上のブログで紹介しました。

UPSで自動シャットダウンさせるためのスクリプトをセットアップします。ダウンロードはこちら

/usr/shareディレクトリにjuice4haltディレクトリを作成し、SSD経由でスクリプトをコピーします。
# cd /usr/share 
# mkdir juice4halt 
# cd juice4halt 
# cp /mnt/usbhdd1/shutdown_script /usr/share/juice4halt 
# nano shutdown_script 

(2021/7/13追記)スクリプトを修正します。
・先頭のbashをshに変更
・パラメータが小数点となっているsleepをusleepで置換
 例:sleep 0.1s -> usleep 100000
・sudoを削除

/etc/rc.localの最後(exit 0の手前)に次の1行を追加。
/usr/share/juice4halt/shutdown_script & 
alt
スクリプトに実行権限を設定。
# chmod 755 shutdown_script 
電源を切断・再投入し、機能を確認します。
# poweroff 

もう一つのスクリプト、rebootj4hは標準のrebootコマンドの代わりに使用します。rebootコマンドで再起動した場合、その後の自動シャットダウンは無効となります。
# cp /mnt/usbhdd1/rebootj4h /usr/share/juice4halt 
# chmod 755 rebootj4h 
# ln -s /usr/share/juice4halt/rebootj4h /usr/sbin 
# nano rebootj4h 

こちらも同様に修正します。




以上で完成です。ネットワーク再生システムに移行し動作確認します。
設定に使ったPCをレンダラーに変更し、USB-DACを接続します。lightMPDなら同じPCをUSBメモリーから起動させればOKです。LANポートにはDHCPサーバーを設定していますがlightMPDのIPアドレスは固定のため、lightmpd.confでサーバーと通信可能なアドレスに設定しておきます。
スマホを作成したアクセスポイントにWi-Fi接続し、UPnP/DLNAコントロールアプリで再生します。
alt
この状態で24h連続再生させ特に問題なく安定動作しているので、実用化「合格」とします。結構トラブルシュートが必要でしたね。




ネットワークオーディオを、ネットワークの性能に特化したOSで動かす。いい音出そうな気がしません?
また、世の「オーディオ用HUB」が一般のHUBより高音質だとするなら、「HUBレス」の音質はどこに位置するのか?これもちょっと面白いテーマです。

64bit版も作ってみたいし、SFPも試したいところですが今はお腹いっぱい。しばらくは「聴き専」に回ることにします。


讃美歌320番「主よ、御許に近づかん」

天界まで召される見通せるような音が出てくると良いなぁ。
疲れたよパトラッシュ・・・


ネットワークオーディオ関係の記事をまとめてみました。よかったらこちらもご覧くださいませ。
ネットワークオーディオを楽しもう




(2021/7/14追記)ホームでの動作確認を終え、車載運用を開始しました。カーオーディオでの第一印象は「硬質で明確」。鮮度感のある生きた音が出てきました。

(2021/7/23追記)間違いなく楽しい音にはなったのですが、ちょっとキツいというかデジタルっぽい?これはアレだな、と
alt
iPurifier DC (iFi-Audio)
を12V化したラズパイの電源ラインに入れてみたら正解でした。ハブレスにしたことにより、ハブからのノイズ混入が無くなった一方で、サーバー側の信号品質が影響するようになった・・・のか?
いよいよ禁断のオーディオ用LANケーブルでも試してみますかね。1本で済むシステムになりましたし。

(2021/8/1追記)
LANケーブルにSAECのSLA-500を使ったところ効果あり。電源の対策と合わせて音のキツさは消えクリア・ダイナミックなメリットが残りました。HUBやネットワーク分離のためのサブルーター・それらの電源が不要な点も使いやすく、主力音源として正式採用します。
それにしてもサーバーで音が変わるなんて面白い。

(2021/7/18追記)
64bit版のOpenWrtをビルドしてみました。MinimServer2やJavaも64bit版を使用する以外、今回と同じ手順でいけます。しかし現在の19.07ではCPUのクロック制御に不具合があり、次の安定版となる21.02(今はrc3)を待った方が良さそうです。

(2021/10/17追記)
21.02がリリースとなったので、再度64bit版をビルドしました。JavaはOracle JDK8の64bit版、MinimServer2もAarch64版を使用。このバージョンでは特に目立った不具合もなく普通に使えるようになりました。逆にメモリ1GBのラズパイ3Bで64bit化したところで機能・性能的なメリットも感じませんでしたが、音質は32bit版と完全に同じではなく比べてみるのも楽しいかと。
Posted at 2021/07/09 23:52:32 | コメント(1) | トラックバック(0) | オーディオ | クルマ
2021年05月16日 イイね!

直結ネットワークオーディオ(概念実証編)

直結ネットワークオーディオ(概念実証編)どうも、半年ぶりのブログです。更新の少ないこんなところに見にきてくれて、ありがとうございます。

ここ2年ほどはネットワークオーディオに取り組んでいます。PV数を見る限り結構人気のこのシリーズ、今回はちょっとマニアックなところを攻めます。






自分のネットワークオーディオはこんな構成で始めました。
alt
ラズベリーパイ(3B)のサーバー
ネットワークオーディオ自作(1) MinimServer
APU.2D4のレンダラー
ネットワークオーディオ自作(2) lightMPD
を製作しました。スマホからコントロールする、コンパクトなDLNA/UPnP/OpenHome対応システムです。

こんな風に車載しました。
ネットワークオーディオ車載
alt
モバイルルーター Aterm MR04LN(NEC)
スイッチングハブ LSW-TX-3EP/CUW(BUFFALO)

その後、レンダラーをAPUからPCに
ネットワークオーディオ自作(7) lightMPDをPCで(番外編)
サーバーはUPSを変更して12V電源化、アプリをMinimServer2へ
ネットワークオーディオ自作(8) ラズパイサーバーを改良する
と更新しています。PCを車載するため安定化電源も追加しました。
PC用安定化電源(遅延起動対応)


音源を自前で用意するセルフ再生としては、機能的にはこれで満足。音質的にもそれまでのAndroid端末やDAPより改善しましたが、ネットワークオーディオにふさわしい音質改善方法は何かないものか、と探ってみました。


オーディオ用ネットワークの分離
alt
オーディオ用ネットワークを他と分離するために、図のルーター2(数千円で購入できるトラベルルーター)を追加しました。詳しくはこちら。
ネットワークオーディオ用ネットワークの分離
こんなことで音質が上がる、てゆうか「落ちなくなる」んですよ。ネットワークにつながっている機器が多いほど効果を実感できると思います。

これで完成だな、と整備手帳を上げて悦に入っていたところ、
「追加ルーターはラズパイでできるのでは?」
「ついでにHUBも無くせるんじゃね?」

とのレビューコメント(意訳)を頂きました。

ぐぬぬ・・・その手があったか!
ネットワークに欠かせない、というか「あって当たり前」のHUBを無くしてしまうというのは、相当にアグレッシブな発想です。コメントではストレートマフラーに例えられていたのが言い得て妙だなぁと。世の中にはオーディオ用スイッチングHUB(!)なんてのがある位なので、良いか悪いかはともかく音質への影響があるはずと直管、いや直感しました。
高級ケーブルとかも否定はしません(むしろ好物です)が、もっと根本的な、原理的なところに手を入れる、そんなアプローチでオーディオをやってみたかった!のです。
それに、ラズパイがあればサーバーもルーターもHUBも要らないなんて、今ネットワークオーディオで商売しているメーカーさんは・・・やらないよね。


システムプラン

まずはイメージから。
alt
サーバーとなっているラズパイにソフトウェアルーターを追加し、
・モバイルルーターに対する子機 と
・スマホに対する親機
の2つの役割を持たせます。ラズパイ・PC・スマホの3台でオーディオ専用ネットワークLAN2を構成します。ルーター機能によりセグメントを分ければ、上位のネットワークLAN1からLAN2に不要なブロードキャストパケットが流れ込むことはありません。さらにサーバーとレンダラーは対向接続のため他からのアナログ的なノイズ混入はゼロ、かつHUBによるバッファ(ストア&フォワード)動作もなく低レイテンシーです。

なお理解のためwlan0およびwlan1と分けて記載してあるWi-Fiは、実際にはラズパイの内蔵Wi-Fiだけで実現できます。
USBドングル型のアダプターを使用する場合も「デュアルモード」対応かつ同時動作可能な機種なら同じく1つでOKです。


OS導入

ラズパイのOSは今回もデスクトップレス版を使用します。
OSイメージ作成アプリのRaspberry Pi Imagerを公式サイトからダウンロード、Raspberry Pi OS Lite(32bit)を選択してmicroSDカードに書き込みます。
alt

ラズパイのコンソールとして、USBポートにキーボード、HDMIポートにモニター(TVでも可)を接続、microSDカードをセットして起動します。
LANポートには何もつなぎません。よって最初はインターネットが使えず、ローカルコンソールで設定してゆきます。


Wi-Fiネットワークに接続

OS標準の構成ツールで設定します。
(ログイン後、以下同じ)
$ sudo raspi-config 
alt

「System Options」から「Wireless LAN」を選択、初回は地域コードの設定を促されるので「JP」を選択後、接続するルーターのSSIDとパスワードを入力します。
「Localization Options」からタイムゾーンとキーボードも設定しておきます。日本語キーボードを使う場合、設定しないと「 | 」(パイプ記号)が入力できなかったりするので注意。

リブート後、Wi-Fiが有効になります。
$ ifconfig wlan0 
としてIPアドレスが割り振られていれば成功です。(起動時の画面にも表示されます。スマホアプリの Fing も便利。)
ここまででインターネットに接続できたので、OSを最新状態に更新しておきます。
$ sudo apt-get update 
$ sudo apt-get full-upgrade 
$ sudo reboot 


内蔵Wi-Fiアダプタの機能を調べてみました。
$ iw list | grep -A 4 "interface combinations" 
    valid interface combinations: 
        * #{ managed } <= 1, #{ P2P-device } <= 1, #{ P2P-client, P2P-GO } <= 1, 
          total <= 3, #channels <= 2 
        *
#{ managed } <= 1, #{ AP } <= 1, #{ P2P-client } <= 1, #{ P2P-device } <= 1, 
          total <= 4,
#channels <= 1 
managed はクライアント、APはアクセスポイントです。model 3B のラズパイでは、クライアントとアクセスポイントの同時動作は可能ですがチャンネル数は1、つまり同じチャンネルを共有するということ。速度は落ちるかもですが、DLNAのコントロール用なので大丈夫でしょう。


Wi-Fiルーター構築

さて肝心のネットワークをどうやって実現するか?いくつか試してみて、ここで解説されている方法がうまく動作したので紹介します。

StackExchange.com - Access point as WiFi router/repeater, optional with bridge

ステップ1. systemd-networkdのインストール
ステップ2. hostapdのインストール
ステップ3. wpa_supplicantの設定(クライアント)
ステップ4. インターフェースwlan0の設定
ステップ5. hostapdの設定(ブリッジ)
ステップ6. wpa_supplicantの設定(ブリッジ)
ステップ7. インターフェースbr0、eth0の設定

手順が多めですが、アレンジが必要なのはWi-Fiの設定とIPアドレスくらいで、ほとんど記事の通りにしていけば大丈夫です。

alt

設定後はこうなります。システムプラン通りです。
これでWi-Fiルーターとしての設定ができました。Wi-Fiのアクセスポイントにスマホなどを接続し、インターネットに抜けられることを確認します。


サーバーとレンダラーの対向接続

こちらは簡単。PC同士を(HUB同士も)直結する場合、本来LANケーブルにはクロスケーブルという特殊な結線のものを使います。しかしLANコントローラとOSが「AutoMDI/MDI-X」対応であれば通常のLANケーブルが使用可能です。

ラズパイとlightMPDのPCを接続し、Wi-Fi上のスマホから Fing などを使ってlightMPDが見えれば通信できています。

ストレートとクロスを間違えたり、HUBレスにしたからといって機器に電気的な過負荷がかかったり壊れたりすることはありません。普通に動くケースが多いと思います。


MinimServer2のインストールと設定

UPnP/DLNAサーバーのMinimServer2をインストールします。方法は以前のブログで紹介した通りなので省略します。
MinimWatchから設定できるプロパティに ohnet.subnet という項目があり、複数のネットワークがある場合にMinimServerが使用するネットワークを指定できるようになっています。今回の構成では192.168.13.0にすべきと思いますが、設定してもしなくても再生できていてよくわかりません。


動作確認と考察

UPS付きラズパイとLIVA Q2はクルマで運用中のため別システムを作って動作確認しました。
alt
ラズパイとPCを直結。PCはUSBメモリーからlightMPDを起動、つながっているDAPはUSB-DACの代わりです。ラズパイにWi-Fi接続したスマホから、UPnPコントロールアプリ(BubbleDS)で再生しています。

改善と検討したい点がありますが、ひとまず完成とします。
(残課題とフォローアップに記載)

USB伝送におけるバルクペット、ネットワークオーディオのDirettaもそうで、データ伝送プロトコルによる音質改善は最新のデジタルオーディオでは割と見かけるようになりました。
クロック情報が含まれるS/PDIFと違って、USBやネットワークオーディオの伝送経路にはそこかしこに「非同期」が存在し、それを吸収するためのバッファ(メモリー)が必要です。
(非同期が悪ではなく、非同期と同期のどちらが音質的に有利かはケースバイケースなのでここでは触れません。)

大きなバッファを一気に満たすのか、小さなバッファをこまめに制御するのか。また、大きなパケットでドカンと送るのか、小さなパケットでちょろちょろ送るのか。非同期伝送にはシステムの数だけ送り方のバリエーションがあります。

エラーが発生しないよう適切に設計されている限り、送り方でデータが変わるわけではありません。しかしアナログ段への影響は(残念ながら)ゼロにはできず、伝送プロトコルによってその影響をコントロールしよう、ということなのでしょう。

さて音質的にはどんなもんでしょう。
HUBレス伝送によるレイテンシー削減は、ベルトドライブに対するダイレクトドライブのような音をもたらしてくれるのでしょうか。(んなバカな、いやそうとも言えんぞ・・・)
かつてはメーカーしかできなかったようなことが、1万円もしない手のひらサイズのコンピュータで試せるのは楽しいものです。


残課題

・Wi-Fiの制御系がどうにも頼りない感じ。再生時間表示がスキップしたり、アルバムアートの取得が遅かったり、一晩放っておくと接続が切れていたり。対する有線LANの再生系は盤石で、音飛びなど無く良い音で再生を続けてくれるので本腰を入れて改善したいと思います。

・UPnP版のlightMPDにはキャッシュがあり標準で有効になっています。HUBレスにしておいて、最後の最後に1曲まるごと格納できるようなバッファを設けるのはどうなんだろう。思想が合っていないような気もしたりしなかったり。

・あ、MTU値を最適化する宿題ももらってました。これも後日。


フォローアップ
(2012/5/27追記)
まずはよわよわなWi-Fiをなんとかしようと試みました。

1. パワーマネジメント機能の無効化
この対策は定番のようです。FAQにOFF推奨ってなっている機能って何よ?
$ sudo nano /etc/rc.local 
/sbin/iw dev wlan0 set power_save off
/sbin/iw dev ap@wlan0 set power_save off

$ sudo raspi-config 
System Optionsの「Wait for Network at Boot」を有効に

2. ACアダプターの容量アップ
3までのラズパイはmicroBのUSBコネクタで給電する仕様ですが3A近い電流を流すのはちょっと無理があり、ケーブルとコネクタの抵抗成分により電圧不足になりがちです。
コンソールに低電圧の警告「Under-voltage detected!」が出るような状態だと、ラズパイの内蔵Wi-Fiは性能が低下するようです。

以上の2つで多少改善しましたが、完全な解決には至らず。
あれれ、意外と手こずるぞ・・・今回は「概念実証編」ということにして、次回「実用化編」に続きます。
Posted at 2021/05/16 10:01:14 | コメント(2) | トラックバック(0) | オーディオ | クルマ
2020年11月22日 イイね!

Back to Digital

Back to Digital昨年から「ネットワークオーディオ車載!」なんて、一見新しそうなことをしてますけど、
「音質ならまだまだローカル再生だよな!」
ということで、自分で所有している音源を再生するという点ではネットオーディオも広義のローカル再生。昔からのオーディオ、大容量という意味でCDチェンジャーあたりと本質的には変わらないと思っています。

一方カーオーディオにも常時接続、サブスクの流れが来ていて、パイオニアのアレとかでアマプラなどストリーミング再生を楽しんでいる方もちらほらお見かけします。パラダイムシフトと言えるのはそっちだろうなぁと思いつつも旧来のスタイルにしがみついているおじさんです。
地方じゃ5Gどころか4Gさえつながらない道なんていくらでもありますし。




で、2020年ももうすぐ末。わが車のシステムはこうなりました。
alt

alt
前回までに製作した、このシステムを車載しました。

MinimServer2のラズパイは前回のブログ、UPS(無停電電源)のJuice4haltにより12V電源化してあるので、ACC電源で直接駆動できます。

lightMPDを動作させるPCは前々回のブログでご紹介、超小型のLIVA Q2を使いました。
助手席下に置いてみたところファンノイズは許容できそうだったので、他のファンレスPCよりも小型であるメリットを取りました。

PCはラズパイのUPSと違って車両の不安定な12Vには対応しておらず、安定化電源が必要です。オーディオ用リニア電源の
alt
UltraCap LPS-1.2(UpTone Audio)
で駆動・・・しようと思いましたが失敗しました(後述)。


再生系の信号の流れはこうです。
alt
自分のプロセッサーアンプではデジタル入力が48kHzまでの対応のため、44.1kHzと48kHzは無変換、ハイレゾやDSDの音源はlightMPDのソフトウェアで変換を行います。x86_64のCPUパワーを生かして高次の変換演算を行う、という考え方はPC版lightMPDの導入時に紹介した通り。

USB出力前に変換するので、ハイレゾを聴くためのアナログ接続もハードウェアSRCも不要となり、USB-DDCは専用機を使います。ホームオーディオで愛用していた
alt
Audiophilleo2
に再登板してもらいました。
電気喰いで、電源や信号品質に敏感で、ハイレゾ対応能力も今となっては万全とは言えない古参なれど、この音質はなかなか代えが無いのですよ。

USB-DDCは新製品が出なくなり、選定が難しくなってきています。AC電源のものを含めても選択肢は少なく、バスパワー動作で車載に使いやすく音質的にも満足できるものとなると本当に数えるほど。
試してみたい製品はありますが、Audiophilleo2後継のmk2が現役なので今のところこれで十分という気もしています。

接続を終えて動作確認です。
これまで使ってきたAT-HRD500(USBセルフパワーデバイス)のまま前段のサーバーとレンダラーを入れ替えたところまでは順調で、バスパワー動作のAudiophilleo2につなぎ替えたら問題発生。DSD再生時に動作が不安定、というかPCが再起動している感じになりました。これは電流不足だろうと、
alt
iDefender3.0(iFi Audio)
を入れてUSB電源を別供給としたところ安定しました。

リニア電源の定格が12V/1.1Aで約13W、バスパワーのUSB機器が最大2.5W(自分の場合はさらにアイソレータの分も追加)ほど消費するので、PCの消費電力の目標を10W以下としたのですが、LIVA Q2でlightMPDを動作させた時の最大値は11Wほど。わずかなオーバーですがダメでした。そもそも100%近い負荷を前提にした時点で計画ミス、ここは見直しを考えるとします。

しかし音質に関してはlightMPDのパラメータを調整していない現段階でも従来以上のものがあり、とりあえず運用開始しました。
何が良くなったかというと空間表現。オーケストラで言えばTpが上段奥の「あの辺」から聞こえてくる感じが出るようになり喜んでいます。従来はみんな「その辺」だったんですよ、伝わりますかね?
これは超低ジッターのDDC、Audiophilleo2のキャラクターなので期待していたところ。種明かしをすると、DDC専用機を使うためのソフトウェアSRCでありDSD/PCM変換でした、というわけです。


ここ数年ハイレゾとCDフォーマットをシームレスに聴くため、DACやSRC内蔵DDCを試してきました。音質的に決して悪くはない、というか十分楽しめるレベルではあるものの、それ以前の44.1kHz専用構成に届いていない部分もありモヤモヤと・・・
ん?デジャヴを感じて過去のブログを読み返してみれば、4年前に書いておりました。
何のことはない、CDフォーマットの音質を落とさずハイレゾも聴けるようにする(それも現システムではメリットを完全に活かせるわけでもない)のに4年もかかったということ。随分回り道をしたものです。
あのぉ、そろそろ本音言ってもいいですか・・・ハイレゾめんどくさいです・・・対応して実は音質落としてる人、結構いるんじゃないかしら・・・

今年はここまで。来年は何しよう?




(2020/12追記)個人用メモです。「USBのノイズ」とかいう一見ワケわからんワードが出てくるので個人用。
alt
まずはこの部分を何とかしないと。PCの電源にオーディオ用リニア電源を入れたのはUSBをローノイズにするためだったのにiDefenderで別供給にしたのでは意味がない・・・

改善案1【実施済】
alt
リニア電源の出力を5Vに変更し、USBの電源ラインに直接注入する。
PCの電源はAmazonでも買えるDC/DCコンバーターにしました。詳しくは整備手帳で。


改善案2
alt
USBアイソレータの7055にあるUSB電源専用端子を使って、絶縁後の電源をクリーンにする。リニア電源はトランクに移設。


改善案3
alt
USB-DDCをAudiophilleo2 mk2にするとS/PDIF出力段の電源をセパレート可能。本来PurePower用ですがUltraCapの5Vでも使えそうです。

下に行くほど音質的には有利と予想しています。2021年バージョンはこんなところから始めようか。
Posted at 2020/11/22 20:38:52 | コメント(0) | トラックバック(0) | オーディオ | クルマ

プロフィール

「@なかるう のではなく、CableJiveのライトニング延長ケーブルが機能しなくなっていました。メジャーバージョンアップ怖い。」
何シテル?   09/20 15:04
「なかるー」改め「なかるう」、「う」は大きい「う」です。 音楽のあるドライブが好きです。いい音だったらもっと楽しいですよね。なのでいい音を追求してます。 更...

ハイタッチ!drive

みんカラ新規会員登録

ユーザー内検索

<< 2025/10 >>

   1234
567891011
12131415161718
19 20 2122232425
262728293031 

リンク・クリップ

3Wayスピーカーのクロスオーバー設定 位相合わせ 
カテゴリ:その他(カテゴリ未設定)
2025/06/14 21:11:12
備忘 Passat Variant 11年14万kmの整備振り返り 
カテゴリ:その他(カテゴリ未設定)
2024/10/18 00:02:25
Ottocast A2AIR Pro 
カテゴリ:その他(カテゴリ未設定)
2024/06/18 03:24:43

愛車一覧

フォルクスワーゲン パサート セダン フォルクスワーゲン パサート セダン
フォルクスワーゲン パサート セダン (DBA-3CCAX) に乗っています。 シトロエ ...
日産 ティーダラティオ 日産 ティーダラティオ
(2015/8)乗り換えのため手放しました。 日産 ティーダラティオ15G(DBA-S ...

過去のブログ

2025年
01月02月03月04月05月06月
07月08月09月10月11月12月
2024年
01月02月03月04月05月06月
07月08月09月10月11月12月
2023年
01月02月03月04月05月06月
07月08月09月10月11月12月
2022年
01月02月03月04月05月06月
07月08月09月10月11月12月
2021年
01月02月03月04月05月06月
07月08月09月10月11月12月
2020年
01月02月03月04月05月06月
07月08月09月10月11月12月
2019年
01月02月03月04月05月06月
07月08月09月10月11月12月
2018年
01月02月03月04月05月06月
07月08月09月10月11月12月
2017年
01月02月03月04月05月06月
07月08月09月10月11月12月
2016年
01月02月03月04月05月06月
07月08月09月10月11月12月
2015年
01月02月03月04月05月06月
07月08月09月10月11月12月
2014年
01月02月03月04月05月06月
07月08月09月10月11月12月
2013年
01月02月03月04月05月06月
07月08月09月10月11月12月
2011年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ
© LY Corporation