某掲示板で質問したが検索しているうちに答えの記事を見つけて解決出来た?様に思う。
たぶんベテランの方々の間では即知の問題だったのかなぁ...
事の始めは自分は実験用サブシステム
RaspberryPi4(GentooPlayer Diretta Target)
APU2D4(Diretta Host)
KALI Reclocker基板
やなさん送信基板
DAC AK4493EQ気楽kit製基板
の組み合わせでI2S出力で使用した時に
DSD64までしか再生出来ない事に加えて自動でPCMに変換されて且つDSD64以外のファイルも
24bit/192kHzで出力されます。
残念ながらDAC基板はPCMしか受け付けませんがAK4493EQなら768KHzまではいけるはずです。
どうも出力が192kHzまでに制限されているような感じです。
この現象はgentooplayerで発見したのですが流石にGentooPlayerのカーネルをコンパイルする勇気も技術もありません笑)
GentooPlayer使用時の場合で某掲示板中udosanさんにアドバイスをいただいて
[1] i-sabre-q2m/k2m and i2s general
[31] Generic-1 I2S (hifiberry-dac)
どちらか?試してみてくださいとの事でした。試して見たのですが
どうしても安定した再生が出来ない...
なので自前でイジっている汎用rt-kernelソースを使ってリンク先の内容を実験してみる事にしました。
[root@alarm ~]# uname -a
Linux alarm 5.16.0-rc3-rt7-v8 #4 SMP PREEMPT_RT Sat Apr 2 22:52:37 JST 2022 aarch64 GNU/Linux
参考リンク:
Raspberry as generic i2s master at 384kHz
以下は参考リンク先記事概要
2017年11月、Raspberry Linuxカーネルは、i2sバスの384kHzをサポートするように更新されました。
それ以前は、ストックカーネルは192kHzに制限されていましたが、
汎用i2sマスタードライバーrpi-dacはまだです。
i2sバスでは、Piをマスターまたはスレーブとして使用できます。
Piを汎用i2sマスターとして使用する場合は、rpi-dacドライバーを使用できます。
このドライバのみが、pcm1794aコーデックの使用により192kHzに制限されています。
これは一般的なドライバを混乱させる少し混乱しますが、
pcm1794aコーデックを使用します。そのため、pcm1794のサンプルフォーマットとレートにも制限されています。
rpi-dacドライバーを使った場合は...という事らしいです。
最終的にいたずらも含めてこんな感じにしてみました。
お分かりいただけるでしょうか(笑)
思い付きで32bit分も加えたがこの改修は素晴らしいと思う。
RaspberryPi4 + KALI Reclocker基板 + Archlinux の組み合わせで使っている方は
是非とも挑戦して欲しい。購入して良かったと惚れ直すかも知れない。
自分の環境では参考ページにあるパッチは当たりませんでした。
テキストエディターで開いて該当箇所を手修正後にコンパイルを行いました。
sound/soc/codecs/pcm1794a.c b/sound/soc/codecs/pcm1794a.c
static struct snd_soc_dai_driver pcm1794a_dai = {
.name = "pcm1794a-hifi",
.playback = {
.channels_min = 2,
.channels_max = 2,
.rates = SNDRV_PCM_RATE_8000_
384000,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S32_LE
},
カーネル再構築インストール後に適応されているか?コマンドで確認...
[root@alarm ~]# alsacap
*** Scanning for playback devices ***
Card 0, ID `sndrpirpidac', name `snd_rpi_rpi_dac'
Device 0, ID `RPi-DAC HiFi pcm1794a-codec-0', name `RPi-DAC HiFi pcm1794a-codec-0', 1 subdevices (1 available)
2 channels, sampling rate 8000..384000 Hz
Sample formats: S16_LE, S24_LE, S32_LE
Subdevice 0, name `subdevice #0'
この状態でmpd.confで32bit再生を指定後再生するとS32_LEが使われている様に表示されますが
真偽の程は??です(笑)
[root@alarm ~]# c00
access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 44100 (44100/1)
period_size: 4410
buffer_size: 22050
S32_LE HiFi rpi-dac
2 Comments [+]
Comments