こんにちは。
direttaのalsaドライバー(メーカーのサポートなしです)の存在を知り、ここ2ヶ月ほどarchlinuxでdirettaのalsaドライバーの再生が出来ないかトライしてます。
しかし中々うまくいきません。
Linuxは使ってますが、ドライバーのmakeは初めてやります。
アドバイスが頂けたら嬉しいです。
https://www.diretta.link/download/preview.html" target="_blank">https://www.diretta.link/download/preview.html
DirettaALSAdriver_0_99_0.tar.zst
現在APU2+smpdのAoE再生とWindows10のdiretta再生の2つで楽しんでます。
音質はAoEの方が好みです。direttaの音は悪くはないのですが。
direttaを使うのにWindowsを使いたくないと言うと怒られそうですが。。。
出来れば使いたくないです(^^;;
OSが良くないのかと思い、試しにarchlinux(rt-lts kernel)にdesktop環境とfoorbar2000(v1.6最新版はダメでv1.4最終版使用)と
direttaのasioドライバーをwine経由でインストールして再生してみました。
問題なく音が出ました。Windowsよりarchlinuxの方が断然音が良く、暫く使っていました。
foobar2000でファイル再生やtidalのハイレゾもストリーミング再生ができるので、これで十分かなと思いましたが、やはりdirettaのalsaドライバーで聴きたくなりました。
最終的にはAPU2にalsaドライバーをインストールして使いたいです。コアが4つありdirettaに使えそうですね。
<ドライバーのreadme.txt 内容>
Not for commerical use. Non-redistributable.
cd xxxx/driver
make KERNELDIR=[terget kernel folder]
insmod xxxx/driver/diretta_alsa.ko
xxxx/syncAlsa [product unique name] [interface No, 0 is all] [Target address] [PoNO]
auto connect
xxxx/syncAlsa [product unique name] [interface No, 0 is all]
となっています。
ドライバーを解凍後、
cd update/driver
make KERNELDIR=lib/modules/5.10.73.54.realtime1-1-rt-lts/build
するとalsa_bridge.ko が作成されます。
insmod update/driver/alsa_bridge.ko
insmod: ERROR: could not insert module update/driver/alsa_bridge.ko: Unknown symbol in module
となってしまいます。
ソースプログラムをコンパイルする開発環境は、
怪造カードのためにArchLinuxをインストールする(4)を見てインストールしました。
pacman -Syy
pacman -S base-devel xmlto docbook-xsl kmod inetutils bc wget unzip
pacman -S glibc git make autoconf automake libtool pkg-config patch
よろしお願いします。
こんにちは。
diretta targetを持っていないので音出しまでは出来ていませんが、
こちらの環境で試した範囲ではx86_64 AoE用のカーネル(通常版、apu2専用コンパクト版)でinsmodは出来ました。
# modinfo alsa_bridge.ko
で表示されるようにlsmodでsndとsnd_pcmがロードされいれば大丈夫ではないかと思います。
apu2のようにサウンドデバイスのない筐体ですと起動時に読み込まれませんので
# modprobe snd
# modprobe snd_pcm
とした後にinsmodして下さい。
これでもだめならinsmodした後に
# dmesg | tail
とするとなにがエラーになっているか表示されます。
私がmakeしたモジュールをお渡しことも可能です。
いかがでしょう?
udosanさん
ありがとうございます^^
# modprobe snd
# modprobe snd_pcm
# insmod update/driver/alsa_bridge.ko
の順番で無事できました。
xxxx/syncAlsa [product unique name] [interface No, 0 is all] [Target address] [PoNO]を実行すると、direttaのtargetを認識できました。
このPCにRoon bridgeをインストールしたのですが、roon appsのオーディオデバイス
一覧にこのRoon bridgeが現れません。sysytemctl statusで見ると、active (running) になってます。
試しに以下を実行すると、
# cat /proc/asound/cards
0 [SPECBridge752 ]: -
# cat /proc/asound/devices
2: [ 0- 0]: digital audio playback
3: [ 0] : control
33: : timer
となります。
Roon bridgeのalsaの設定など変更が必要なのでしょうか?
その後ですが、Direttaのターゲット側をOLIOSPECのターゲットPCに入れ替えてみました。
Roon bridgeでは相変わらずroon appsのオーディオデバイス一覧にこのRoon bridgeが現れません。
ただし、aplay再生すると何と音が出ました(^o^)/
続く?。。。
お試し版で試そうとしたらうまく起動できませんでした(^^;)
aplayで音が出たならデバイスとしては正しいのだと思いますがroonbridgeはもっとターゲットの情報がいろいろ戻ってこないと対象デバイスにできないのではと推測します。
お試し版が動いたら検証を進めたいと思います。
とりあえず、mpd最新版0.23.5とupmpdcliをインストールしてみました。
DirettaはOLIOSPECのターゲットPCから音が出ました。
何故かRoon bridgeは未だできてません。
それとターゲットがOLIOSPECのターゲットPCの時は
# aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: OLIOSPECBridg [], デバイス 0: OLIO.SPEC_Bridge: []
サブデバイス: 1/1
サブデバイス #0: subdevice #0
となり音が出ますが、
ターゲットをSPECBridgeに変えると
# aplay -l
aplay: device_list:274: サウンドカードが見つかりません...
となり、本命のSPECのBridgeから音が出ません。
ターゲット側のドライバーのバージョンが影響しているのでしょうか。。。
udosanさん
ありがとうございます。
こちらで使用してるターゲットのドライバーバージョンは、1_94_1を使ってます。
それと
xxxx/syncAlsa [product unique name] [interface No, 0 is all] [Target address] [PoNO]
の[ ]内の数値は、Windows10でasio ドライバーをインストールして起動させて、調べました。
[update/syncAlsa_x64 OLIO.SPEC_Bridge eth1 fe80::96c6:Target address 1_94_1
となりました。
udosanさん
お試し版をインストールしてみました。
Windows10でasioドライバーをインストールして起動させてnameやaddressを調べ、
alsa_bridgeで試しました。
sudo update/syncAlsa_x64 USB_Bridge_Limited eth1 fe80::2xxxxx X64_1_97_14
でした
# aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: USBBridgeLimi [], デバイス 0: USB_Bridge_Limited:DIYINHK USB Audio 2.0 []
サブデバイス: 1/1
サブデバイス #0: subdevice #0
となり、無事お試し版でも音が出ました。
mpd最新版0.23.5とupmpdcliの方でも音が出ました。
Roonは未だ。。。
シネマさん
こちらでもお試し版が動いたので試してみました。
aplayでの音出しは出来ました。
しかし、どんなデバイスでもデバイス番号で指定すればとにかくデータを送りつけてしまう他のアプリと違って
roonはデバイスドライバーから所定の情報(対応周波数とか)が返ってこないと対象にしないのではと推測します。
ソースがあるのでその辺も自分で修正できれば良いのですがあいにくスキルがなく。。。
残念です。
udosanさん
検証ありがとうございました。
archでalsa driverが使えるようになった事が何よりも嬉しい事です。
Roonは今まで通りasio driverとAoEの二刀流でいこうと思います。
mpdはalsa driverを使っていこうと思います。
本命のSPECのBridgeからも音が出るようになりました^^
シネマさん
roonbridgeの代わりにspueezeliteをいれればとりあえずroonからの再生は可能かと思います。
試してませんが(スミマセン)。
udosanさん
udosanさんのsqueezeliteをインストールしました^^
squeezelite.confの設定で手こずってます。
# cat /proc/asound/cards
0 [Audio ]: HdmiLpeAudio - Intel HDMI/DP LPE Audio
Intel HDMI/DP LPE Audio
1 [SPECBridge752 ]: -
このカード名を以下のようにしてますが、上手くいきません。
AUDIO_DEV="-o sysdefault:CARD=SPECBridge752
番号の1を入れてみましたが、駄目でした。
シネマさん
# squeezelite -l
とすれば指定可能なデバイスの一覧が出ますのでそれにしたがって記述下さい。
オプションの解説はこちらです。
https://ralph-irving.github.io/squeezelite.html" target="_blank">https://ralph-irving.github.io/squeezelite.html
やっぱりまだ実際には試してません(スミマセン)
シネマさん
すみません。squeezeliteでdirettaのデバイスを試したところ
alsa_open:533 unable to set hw params: Invalid argument
となりました。ドライバーを修正しないとsqueezeliteも動かないようです。
ほんとすみません。出来るだけソースにらんでみます。
シネマさん
うちのapu2でも試してみましたが専用カーネルだとinsmodしたあと再起動するとkernelがロードエラーになって起動しないです。
びっくりしました。
普通のカーネルなら起動できるのかとかいろいろ試してみます。
シネマさん
rt-ltsの汎用の方は大丈夫でした。
rtは専用版でも動きました。
有益な情報をありがとうございます。
archlinuxにインストールしたHQPlayer 4 EmbeddedでもDiretta再生できました。
そこで、自動起動できるようにしたいと思い、「alsa_bridge.ko」の読込までは自動でできるようになったのですが、
「xxxx/syncAlsa [product unique name] [interface No, 0 is all] [Target address] [PoNO]」の自動実行がうまくいきません。
上記コマンドの自動実行の方法をアドバイス頂けないでしょうか?
なーくんさん
僕は手動でやってます。
是非自動起動について知りたいです。
udosanさん
こちらも起動しなくて焦りました。
rtは専用版でも動くんですね。
是非試さなくては!!
なーくんさん
シネマさん
systemdのサービスにすれば自動起動できます。
というわけでサンプルとしてインストーラーを作りました。
syncAlsa_x64があるフォルダで(driver/alsa_bridge.koもある)以下のように実行すればalsa_bridge.koがロードされてsyncAlsa_x64がサービスになります。
# curl -O https://udo.sakura.ne.jp/diretta/diretta_setup.tar.gz" target="_blank">https://udo.sakura.ne.jp/diretta/diretta_setup.tar.gz
# tar xvf diretta_setup.tar.gz
# sudo ./setup.sh install
syncAlsa_x64にオプションが必要なときはdiretta.serviceを編集してください。
あくまでサンプルです。archlinuxを前提しています。
./setup.sh uninstallでアンインストール出来ます。
udosanさん
サンプルのご提供ありがとうございます。
無事に自動起動ができました。これで、Windows Updateを気にせず、音楽を楽しめるようになりました。
また、サンプルのシェルを見て、勉強になりました。
この度はありがとうございました。
udosanさん
ありがとうございます。
これで音楽を聴いてる時はWindowsから解放されます^^
お試し版でちょっと試した範囲ではWindowsよりarchlinuxから再生した方が良い感じでした。
やっぱりWindowsでの再生はいろいろ難しいものを感じます。
それからシェルはベースは私のオリジナルではないので恐縮してしまいます。
oliospecでいつの間にかこんな製品作っていたんですね。
https://www.oliospec.com/shopdetail/000000011674" target="_blank">https://www.oliospec.com/shopdetail/000000011674
これなら今回のを使えばapu2でもっと安く作れるなと思いました。
いまはapu2も入手できないようですが。
udosanさん
apu2が入手出来ないので、apu1に入れて鳴らしてます♪
いつの間にかosがarchlinuxだらけになりました(^o^)
シネマさん
引き続きx86お試し版で動作確認をしているのですが、同じUSBDACがWindows ASIOからだと384KHzを受け付けるのに対し、ALSAからだと192KHzどまりになります。
ソースのそれっぽいところを直してみたのですがうまく行かず。
開発元に伝えて修正いただけると良いかと思います。
シネマさん
ソースを読んで確認したところ
DSDがDoPのみで対応するUSBDACだとPCMの対応最大周波数が正しく計算されないというバグでした。
それから普通に使うにはあまり関係ないかもしれませんが、705.6/768KHzだと
SyncBuffer not enough mute data return
というエラーになってsyncAlsaが止まってしまいます。
さらに最大周波数が48KHzのUSBDACも正しく計算されないです。
うーーん、ちょっといろいろ検証が足りてない感じのソースです。
udosanさん
こちらではroonで384KHz(←96k)と705.6KHz(←88.2k)にアップサンプリングして、alsa_driverで再生出来ました。
(DSDやDoP再生は音源を持ってないので未確認です。)
シネマさん
うちでは
ターゲットはx86お試しUSB版で起動したPCにUSB DAC(2種類)を接続して試したいるのですが、
705.6/768KHzはWindowsからだとOKでarchlinuxからだとsyncAlsaが落ちるという結果になっています。
大丈夫なパターンもあるのですね。
すみません。DSDやらDoPやら言っているのは分かりづらいですが、
ドライバーからroonに渡される対応最大周波数が
native DSD対応のDACだと正しくて、DoPしか対応していないDACだと間違って設定される
と言うことです。
roonのデバイス設定のadvancedのところにある周波数が1段低くなります(384再生出来るDACなのに192となる)。
DirettaのALSAdriverが104.9になってsyncAlsaの実行にglibc 2.34以上が必要になりました。
glibc 2.34は去年の8月にリリースされたのにarchlinuxでは2.33のままでバージョンアップされていません。
そのためarchlinux環境では104.9を実行することが出来ません。
いまは104.8からコンパイル環境を変えただけなのであえて入れ替える必要はありませんが、今後機能に変更があると支障が生じます。
AURにあったglibc 2.34をビルドしました。これをインストールすれば104.9も実行できるようになります。
ただし他のモジュールの実行がどうなるか定かでないので、いざというときはOSから再インストールする覚悟でご利用下さい。
世間一般では2月にglibcの2.35がリリースされるのでarchlinuxがこれを正式に採用してくれることを祈るばかりです。
https://udo.sakura.ne.jp/diretta/glibc-git-2.34.r579.g5b8e7980c5-1-x86_64.pkg.tar.zst" target="_blank">https://udo.sakura.ne.jp/diretta/glibc-git-2.34.r579.g5b8e7980c5-1-x86_64.pkg.tar.zst
私の能力ではDirettaのALSAdriverのビルトができず、既製のものはないかと探していたところ、Audiolinux という有料ソフトに出会いました。
archlinuxベースのソフトですが、支払いを済ませるとダウンロードリンクが指定され、ダウンロードしてUSBメモリに焼いて、起動できます。メニューページから、mpdその他の再生ソフトを簡単にインストールでき、さらにsshログインすれば、DirettaのALSAdriverをインストールすることができました。そのやり方は、Diretta Alsadriverで検索することができます。
わたくしが入手したのは、x86用のconsole版ですが、他に、headless版、raspi版もあります。
とにかく簡単です。
祈りが通じたか、archlinuxのglibcが2.35で正式にリリースされました。
104.9もビルド、実行できます。
GentooPlayerも正式にDirettaをサポートしたようです。
Diretta Targetをもっていないので試せていません。(T_T)
udosan さん
ありがとうございます。
104.9試してみます。
knkn59 さん
現在はお試し版として44.1KHzなら無制限で利用できるようになっています(他の周波数は60秒だけ再生可能)。
https://help.diretta.link/en/support/solutions/articles/73000514866-download-limited" target="_blank">https://help.diretta.link/en/support/solutions/articles/73000514866-download-limited
udosan さん、ありがとうございます。
忘れてましたが、これがありますね。
早速、試してみます。
私もお試し版で頑張ってます。
出来れば購入したいと思っているのですがoliospecのラズパイのやつはずっと品切れのままでどうしようもありません。USBメモリーだけで安く売ってくれると良いのですが。。。
Udosan さん
Diretta shop Dnegozio (https://www.diretta.link/shop/" target="_blank">https://www.diretta.link/shop/)ではライセンスのみの購入できるようです。
Licensed products can be buy from any country.
と書かれています。
ドングルはPC、Ras Piで使えると書かれています。
価格は250ユーロ(約32000円)ですね。
knkn59さん
情報ありがとうございます。
英文よく読んでませんでした。
ライセンスは日本からでも買えるんですね。
でも250ユーロなんですよね。。。
微妙に踏ん切りが付きづらい価格です。
udosan さん
私も購入には踏ん切りがつかないのですが、Paypalでの支払い画面まで行けたので間違いなく購入はできそうです。
GentooplayerがDitrettaのライセンス購入が必要ですが、最近のアップデートでDiretta Targetに対応したようです。Raspi4、3B、APU、X86いずれでも使えそうです。targetは44Khzのみならおためしで使えるようです。とりあえずこれからいろいろ試してみようと思います。