• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+
イイね!
2024年05月15日

PINE A64+ でSPDIF出力ができた(半分だけ?)

PINE A64(ラズパイみたいなもの)をオーディオ用途(MPDをUPNP+USBDACでネットワークプレイヤー)として使っているのですが、A64にはSPDIF出力(資料にわOWA)が有るのでそれに挑戦してみました。 理由の2つ目は昔作ったFN1242使用のDACがあるのでシンプルにSPDIFにしたかった事。

やってみてえらいハマりました。結局ソースコードを読んで検討する事3週間(^^;
先日ようやく16bit/96KHz(多分192KHzまでOKなはず、でも再生ファイルがないので未検証)で再生ができました。
結論は「armbian(というかdebianやubuntu)のsun4i-spdif.koではA64のspdifは正常に動作しない。使用しているカーネルに合ったソースコードよりディバイスドライバをビルドしてインストールの必要あり。」 また、24bitは再生速度が半分で変なのでソースコードも完全でないのかも(linux6.6.)

私の再生するファイルはCDリッピング物が殆どなので16bitで困らないんですが、チップは24bit対応ってなってるので動作させたいですね・・・

ちなみにOSはarmbian(jammyとbookworm両方)とdietPI(bookworm)の3種全部やったけど、最終的にarmbianのbookwormで実施


以下やった事をダラダラと忘備録
1.まず最初に試した(調べた)こと。
 SPDIFはデバイスツリーでspdif@1c21000(spdifドライバー)の項目のの内、status="disabled";となっている → ディバイスオーバーツリー(本体のディバイスツリーを後から上書き修正できる方法)でokayに変えること。 又、サウンドの設定としてドライバーとcodecの設定をすること。
------オーバーレイファイル------

/dts-v1/;
/plugin/;

/ {
compatible = "allwinner,sun50i-a64-spdif\0allwinner,sun8i-h3-spdif";

fragment@0 {
target = <&spdif>;
__overlay__ {
pinctrl-names = "default";
pinctrl-0 = <&spdif_tx_pin>;
status = "okay";
};
};

fragment@1 {
target-path = "/";
__overlay__ {
spdif-sound {
compatible = "simple-audio-card";
simple-audio-card,name = "On-board SPDIF";

simple-audio-card,cpu {
sound-dai = <&spdif>;
};

simple-audio-card,codec {
sound-dai = <&spdif_out>;
};
};

spdif_out: spdif-out {
#sound-dai-cells = <0>;
compatible = "linux,spdif-dit";
};
};
};
};
------ここまで------
結果は惨敗。再生できるけど再生速度が半分位のゆっくりで低い音が出てくる。
しかも24bitを再生(aplayにて)すると16bitしか再生出来ないとのエラーまで・・・

2.次にやったこと。gitHubのソースコードを見て色々検証。
 どうもarmbianというか、元になるDebian自体sun4i-spdif.koというallwinner用SPDIFのドライバーは有るが古いのでは? という事でソースコードからビルドすることに(デバイスのビルド方法は下のサイトで勉強しました。)
https://qiita.com/iwatake2222/items/1fdd2e0faaaa868a2db2
https://www.aps-web.jp/academy/23638/

 ここでつまづきポイント。ソースコードからのビルドにはヘッダーファイルが必要ですが、allwinner,sun50i-a64のチップ用にはsunxi用のが必要で(私の実施したときは6.6.16-current)その時のソースコードが必要。最初GitHubからsunxi-spdif.cとかダウンロードしてビルドして大量のエラー発生。何でかと思ったらlinux3の古いコードでした、エラー発生して当然。
結局6.6.16のコードを下の所からコピーして使いました。これは大元のlinuxのソースコードですね。armbianでもDebianでもないので、dietpiとか他のlinux系でも流用できそうですね。
(ファイルはGitHubでもあるんですが、下のサイトの方がバージョン毎に探せて便利だったので)
https://elixir.bootlin.com/linux/v6.6.16/source/sound/soc/codecs/spdif_transmitter.c
https://elixir.bootlin.com/linux/v6.6.16/source/sound/soc/sunxi/sun4i-spdif.c

最初はlinux-ditが駄目だと思ってspdif_transmitter.cをビルド→標準のcodecドライバーのspdif-dit.koを削除してspdif_transmitter.koをインストールして確認→症状変わらず。
次にsun4i-spdif.cをビルドして標準のsun4i-spdif.koと入れ替えて確認→16bitなら音出し成功となったので、spdif_transmitterは要らなかったかも? もう元のを消した後なので未検証ですが・・・まあ次やる時にはsun4i-spdifからやります。


この3週間長かった・・・(まあ夜だけしか出来ないから3週間かかったんだけど)
linuxのドライバービルドを1から勉強が出来たから良いとしますか(^^;

今はusb-ddcから自作FN1242DACにしてた時と同じ音が出ています。spdif接続なんだから当たり前ですが、余計な機器が無くなった分「物理的」にすっきりしてやったかいがありました。

最後にSPDIFの電子工作について。
こっちは簡単にPH8端子→2SC1815のベース → エミッタ → 抵抗による分圧回路+コンデンサというシンプル設計。 本来は色々やらないといけないんですが、接続の相手が自作で分かってたのもあって、簡易接続です。 
ここでもはまったことが一つ。PH8って電流吐出し専用ピンなんですね。PNPトランジスタでスイッチング動作しないんで悩んだ後にチップの取説を探したら答えが書いてあった・・・いや、プルダウン抵抗使ってもトランジスタから出力しないとは思わなかった。
ブログ一覧 | オーディオ | パソコン/インターネット
Posted at 2024/05/15 23:55:35

イイね!0件



今、あなたにおすすめ

関連記事

13年前のノートPC
つうるさん

ドライバーを入れると
固形ワックス命さん

iPodApple 表示
セイシェル倶楽部さん

この記事へのコメント

コメントはありません。

プロフィール

「1年点検とスタッドレスに交換 http://cvw.jp/b/409060/43675604/
何シテル?   01/26 22:49
題名通りなDC5の走行・記録のページでしたが 子供が産まれてから走る機会が殆ど無くなりました。 今はグレイスでゆるくのんびりとやっていきます。
みんカラ新規会員登録

ユーザー内検索

<< 2025/5 >>

    123
45678910
11121314151617
18192021222324
25262728293031

愛車一覧

ホンダ グレイスハイブリッド ホンダ グレイスハイブリッド
三度セダンを選びました。 車はセダン!って人間みたいです(笑) 快適な車に仕上げていき ...
ホンダ インテグラ ホンダ インテグラ
インテグラTypeRの前期型です。 主に筑波サーキットを走っていますが、この頃は本庄のよ ...
ホンダ ヴェゼル ホンダ ヴェゼル
ハイブリッドの違和感(モーターとエンジンの連携)がなじめそうも無かったので普通のCVTモ ...
アウディ A4 (セダン) アウディ A4 (セダン)
オーディオを弄るのでその記録用です。 2014年 21万キロ目前で色々修理が見えてきた ...

過去のブログ

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月
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月
2012年
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月
2010年
01月02月03月04月05月06月
07月08月09月10月11月12月
2009年
01月02月03月04月05月06月
07月08月09月10月11月12月
2008年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ

あなたの愛車、今いくら?

複数社の査定額を比較して愛車の最高額を調べよう!

あなたの愛車、今いくら?
メーカー
モデル
年式
走行距離(km)
© LY Corporation