2025年02月02日
DC5のオルタネーター交換しました。
走ってて電圧がどんどん下がっていくのでおかしいな?と思ったらとうとうオーディオが消えてしまいディーラーへ搬入となりました。
原因はオルタネーター故障で、外すついでにベルト交換も頼みました。 オルタネーターはリビルド品です。21年前の車なので新品は無いそうです。
オルタネーターリビルド品はだいたい5万円プラス工賃でした。
Posted at 2025/02/02 11:35:55 | |
トラックバック(0) |
整備DC5 | クルマ
2024年05月23日
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) |
オーディオ | パソコン/インターネット
2024年05月15日
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) |
オーディオ | パソコン/インターネット
2023年05月02日
4月にタイヤ値上げという事で、ギリギリになってグレイスのタイヤ交換してきた。
元々EXグレードのタイヤはスポーツタイヤ(という名の普通のタイヤ?)であまり乗り心地が良くなく、音もうるさい物なので、今回はコンフォートタイヤを選択。 車的にもそっちが正解だと思うんですよねー
で、問題はサイズ。185/55R16って選択肢ないじゃん・・・良いタイヤ=BSのレグノ一択じゃん・・・
という事でレグノに決定。 ミシュランとかヨコハマでも使いたいタイヤが合ったんですけど、サイズがないんじゃしょうがない・・・
インプレ
流石に静かになった(ゴー・シャー → 少しゴー位)
乗り心地も良くなった(ゴツゴツ→コツンコツン位かな)
妻曰く、タイヤが路面を掴んでる感じがするとの事。なんか鋭い(^^;
一番よく分かること。ハンドルが軽い。 まあ、純正タイヤは角ばったタイヤだし、ショルダーが固いんでしょうね。 一瞬スタッドレスかと思う位差が出ました。(元のタイヤのせいだと思う)
燃費はよく測ってないですが、燃費計をみると純正と同じ位かな?少し良いかな?という誤差レベルでした。
総合評価・・・乗り心地・静粛性をアップしたいなら、ちょっと高いといっても他のコンフォートで8万→レグノで10万という感じの差なので、満足度を考えたらよいと思います。
そこまで求めないよ。という場合、ほかのコンフォートタイヤ(ルマンVとか)の方がラベリング上燃費も良いですし、純正よりや乗り心地・静粛性アップとなるでしょうから、一般的にはそっちをお勧めかも。(まあ、車好きならレグノなんでしょうけどね)
Posted at 2023/05/02 21:28:56 | |
トラックバック(0) |
グレイス | クルマ
2023年04月27日
ちょっと前までラズパイが品薄な為、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) |
オーディオ | パソコン/インターネット