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

y-dc5のブログ一覧

2024年05月23日 イイね!

pine64+でSPDIF出力

PINE64+でネットワークオーディオの続き。
やっと24bit出力ができた。でも20bitが出ない・・・まあ、20bitのファイルがないしいいか・・・必要なら24bitに変換すれば良いし。

という事で前回はSPDIFは16bitでしか音が出なかった訳ですが、怪しそうな所を見つけてたのでネット検索した所、知りたい回答がありました!
といっても英語だったのと、オレンジパイのフォーラムだったので気づきませんでしたね。 検索は「sun4i-spdif 24bit」でやったら、フォーラムで修正箇所が書いてありました。

1カ所目 DMA設定が2バイトしか無いので、16ビット分しか確保してない→設定で2バイトと4バイトを切り替えるようにする
ファイルはsun4i-spdif.c fmtに16・20・24ビットの設定を書き込むところへDMAの設定を追加。
これソースの最後の方にhost->dma_params_tx.addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;って16ビット用のみ書いてあるんですよね。 初期のSPDIFは48KHz16bitまでだったのが修正されてなかったんでしょうね。


switch (params_format(params)) {
case SNDRV_PCM_FORMAT_S16_LE:
fmt |= SUN4I_SPDIF_TXCFG_FMT16BIT;
break;
case SNDRV_PCM_FORMAT_S20_3LE:
fmt |= SUN4I_SPDIF_TXCFG_FMT20BIT;
break;
case SNDRV_PCM_FORMAT_S24_LE:
fmt |= SUN4I_SPDIF_TXCFG_FMT24BIT;
break;
default:
return -EINVAL;

修正

switch (params_format(params)) {
case SNDRV_PCM_FORMAT_S16_LE:
fmt |= SUN4I_SPDIF_TXCFG_FMT16BIT;
host->dma_params_tx.addr_width = DMA_SLAVE_BUSWIDTH_2_BYTES;
break;
case SNDRV_PCM_FORMAT_S20_3LE:
fmt |= SUN4I_SPDIF_TXCFG_FMT20BIT;
host->dma_params_tx.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
break;
case SNDRV_PCM_FORMAT_S24_LE:
fmt |= SUN4I_SPDIF_TXCFG_FMT24BIT;
host->dma_params_tx.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
break;
default:
return -EINVAL;


2カ所目 SUN4I_FORMATSの設定の所の名称が違う。昔のカーネルの時の名称のまま。 同じSUN4IでもI2Cは合っていたのでこれは直ぐに気付いたんですが、上のDMAは分からなかったですね・・・


#define SUN4I_FORMATS (SNDRV_PCM_FORMAT_S16_LE | \
SNDRV_PCM_FORMAT_S20_3LE | \
SNDRV_PCM_FORMAT_S24_LE)


修正
#define SUN4I_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_LE)


以上sun4i-spdi.c の2か所を修正してビルド→既存のsun4i-spdi.ko と入れ替えると16と24bitが使えるようになります。私は44.1KHz16bitと48KHz32bit(元は24bitだけど録音時に32bitとなったファイル)で確認しました。使えないのは下の2種類を確認。

20bit・・・ドライバーで対応してないとエラー発生。 どうやら16・24ビットしか受け付けない模様。 20bitの3LEは他のドライバー(SOCとかALSA関係の)が対応してないのかも。 元のソースコードを見ても良くわからなかった(もしかしたらsun4i-spdifと同じで最新ソースでビルドしたら直るのかも)のと、自分は困らないのでで諦めました。

24bit-3LE・・・まあSNDRV_PCM_FMTBIT_S24_LEって設定してるんだし3LEは不可ですよね。 これ以上は20bitと同様、困ってないので諦めました。

とりあえず一般的には困らない(と思う)レベルでSPDIFの出力に成功です。 SUN50I-A64チップを積んでる(もしくはSUN8Iも)SBCではすべて同じだと思います。 
秋月電子でPINE64+を買った人は結構いるはずなんですが、SPDIFの日本語の情報が全然検索に出てこないんですよね・・・他の人は音楽に使ってないのか、使っててもUSBとかHDMI・I2Sを使っているからこんな悩みはなかったのか・・・? 自分の再インストール時の情報を兼ねて簡単に公開しておきます。
Posted at 2024/05/23 22:20:20 | コメント(0) | トラックバック(0) | オーディオ | パソコン/インターネット
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) | トラックバック(0) | オーディオ | パソコン/インターネット
2023年04月27日 イイね!

PINE A64+ でネットワークオーディオ

ちょっと前までラズパイが品薄な為、PINE A64+(以下PINE 秋月でメモリ1G版を購入)でMPDを導入してネットワークオーディオを組んだので忘備録。

環境 家庭内有線LANにてNASとPINEを接続して、スマホでLAN内のWAVファイルを再生。 音はUSBDAC→アンプ→スピーカー

PINEの本体は100均の小物入れに入れて使用。 CPUは少し熱いのでヒートシンクを貼り付けて使用した方が良さそう(ネットでもそうしてる人が多いみたい)

インストールについて
まずはOS
armbianの Jammy CLIバージョン。
インストールや設定はネットの先人の記事を参考にて導入
SDカードにてブートとして使用。

その後のインストール
まずはMPD
次にUpmpdcli(MPDの日本語文字化けで色々弄ったけどいまいちだったのでupnp対応にしてfidataで操作する事にした)

設定
NASをフォルダとして扱えるようにマウント(/etc/fstabに書き込んで起動時に自動マウントさせる) 前提としてNASとPINEは固定アドレスで使用してる。

MPDはUSBのDACのみ使用。 その他ZeroconfをONとか名前とか設定。
UpmpdcliはMPDのホストとポートを設定(MPDで設定したもの似する)
      レンダラーネームは分かりやすい物を設定。

電源について
PINEにはpower on offの端子があるのでそこにスイッチを取り付け。 これだけで電源供給してるけど、パワーoffの状態からボタンで起動可能。 でもこれだけではパワーoffはできません。 調べたらACPIで可能との事です。

まずはACPIのインストール
次に/etc/acpi/events のなかのファイルbutton_power(作ったんだったっけ?)を編集して
event=button/power
action=poweroff
と入れる。 ボタンが押されたらパワーoffしなさいと言う意味。 
これでボタンでON・OFF出来る様になる。 毎回SSH接続してpower off って打つのは面倒なので必須設定ですね

後はNASでminmserverをインストール(qnap製のは対応してて、インストール可能だった)
スマホでは fidataをインストール(この辺の設定は検索したらすぐわかったので悩まなかった。 一番悩んだのはMPDとクライアントソフトでの文字化け、日本語ディレクトリが見えないとか色々。)




*注 もしも参考にされるなら・・・
   自分用のメモのため、途中省いた物が多いけど、だいたいこの流れでPINEでネットワークオーディオが完成しました。
   書いた人はlinux知識は無し。でもMS-DOSは使ってたので、SSHを利用してファイルの読み書き等はすんなり出来ましたので、コマンドプロンプトを利用できる人ならそんなに手こずらないと思います。
Posted at 2023/05/02 21:12:25 | コメント(0) | トラックバック(0) | オーディオ | パソコン/インターネット
2020年03月17日 イイね!

フロントスピーカー交換

15日にフロントスピーカー交換しました。
まずは取り付けベース


横から


ホンダはスピーカー穴が特殊なので苦労しました。この形は4mmのベニア板と厚紙で作って、エポキシ接着剤で補強しました。これは補強以外にも防水も兼ねてですね。
これでスピーカー取付穴を塞ぐ+スピーカーを取付けられます。

そして取り付け


スピーカーはフォステクスのFE125WKです。このユニットでギリギリサイズです。これ以上だとマグネットがぶつかって入りません。

ユニットはペーパーコーンです。これを使いたいのでわざわざ面倒なベースを作って仕切りを作った訳です。じゃないと雨の水滴でコーンが駄目になってしまいます。

又、スピーカー裏の空気が抜ける通路の確保をしたいので板厚も薄くした結果が下写真です

見事ぴったりな隙間(笑)
こんなにぴったりとは思いませんでした。 これでスピーカーはフリーエアーで鳴る筈です。ですので解像度の高い音を期待したいです。

という事で終了。本格的にはエージングが進んでから調整します。 現時点では低音スカスカで解像度アップという感じです。

Posted at 2020/03/19 22:00:51 | コメント(0) | トラックバック(0) | オーディオ | クルマ
2016年12月10日 イイね!

ヴェゼルにツイーター(TW4Metal)取り付け

ヴェゼルにツイーター(TW4Metal)取り付け半年前にコンデンサー聞き比べして早半年・・・やっとつけました(^^;

最初は純正位置(網の裏)につけるつもりだったんですけど
ちょっと大きさが合わなかったので「ええい、面倒!外にねじ止めじゃ」
って事で純正の部分の上となりました。
ええ、いつもの事です(笑)
ツイーターはMarkAudioのTW4Metalです。

電気的な取り付け方
ナビは前後左右の4chでタイムアライメントが取れるので、フルレンジを
フロント、ツイーターはリアに接続。 タイムアライメントはツイーターが
ドアに対して20cm位遠いのでそれを入力。

スピーカーのボリュームはツイーターとフルレンジでテストトーンを
使用して調整、これは完全に自分の耳で調整です。
ナビの機能でマイクを付けて自動調整してくれますけど、結局は
値を微調整するので最初から手動調整です。

ツイーターのカットオフは3.3μFのコンデンサ1本(6db/oct)です。
これ以上は面倒って事と、フルレンジはスルーで繋いでいるので
そっちまでいじる事になるのでお手軽な方法を選びました。
(そもそもそれ以上するなら両方外部アンプにして、チャンネルディバイダー
 を作った方が楽だし部品代安いし)

ツイーターのコンデンサはTRITEC AUDYN CAP 3.3μFです。
理由は前々回の記事の通り。


そして視聴
やっぱりツイーターがあると全然違いますね。
細かい音がよく聞こえる、人の息遣いがわかる・・・とか色々

今のつけ方だとガラスに反射した音を聞いてるので、あんまり期待して
いなかったのですけど、思った以上によくなりました。
本当は取り付けの台座を作って外部アンプを導入して・・・って思って
いたんですけど、ツイーターはナビの出力でも結構大丈夫かもしれない。
と言いつつ外部アンプと比べたら反対の事言うかも(笑)
ついでにサイバーナビの内蔵アンプだから不満が出ないだけって事もあり。


次の予定
ナビにもバッ直。 フルレンジ用外部アンプの交換(自作中)
Posted at 2016/12/11 16:17:21 | コメント(0) | トラックバック(0) | オーディオ | クルマ

プロフィール

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

ユーザー内検索

<< 2025/8 >>

     12
3456789
10111213141516
17181920212223
24252627282930
31      

愛車一覧

ホンダ グレイスハイブリッド ホンダ グレイスハイブリッド
三度セダンを選びました。 車はセダン!って人間みたいです(笑) 快適な車に仕上げていき ...
ホンダ インテグラ ホンダ インテグラ
インテグラ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月
ヘルプ利用規約サイトマップ
© LY Corporation