/ 雑記帳

拡張 alsa driverを使ってdiffファイルを再生(GPIOからのI2S出力)

※自分は各種フォーマットの音源ファイル出力をI2Sで!且つシームレス再生を目指しています^^;
alsa driverのソースをイジって帯域、ビット数を拡張改造したものを当てて
diffファイルを再生(PCM変換で)した時に
バックの方から絶えずザーという雑音が発生する不具合を何度も経験しているが
この対策として/etc/mpd.conf で formats "*:32:*" の設定をすると
自分環境では無くなる?のだが他の方も同じなのか知りたい(笑)

root@raspberrypi:~# alsacap
*** Scanning for playback devices ***
Card 0, ID `sndrpirpidac', name `snd_rpi_rpi_dac'
Device 0, ID `RPi-DAC HiFi pcm1794a-hifi-0', name `RPi-DAC HiFi pcm1794a-hifi-0', 1 subdevices (1 available)
2 channels, sampling rate 8000..768000 Hz
Sample formats: S16_LE, S24_LE, S32_LE
Buffer size range from 32 to 131072
Period size range from 16 to 1024
Subdevice 0, name `subdevice #0'

下の様にDSD64を再生すると...
format: S24_LE で出力されている表示になるが
最初から24bitを指定すると雑音が出てくる。??
と思うが(自分の聴力が変なのか?) 
他に同じなハード系とソフトの組み合わせを運用している方が居ない?様で
この結果に確信が持てない...耳が悪いかも(笑)

root@raspberrypi:~# cat /proc/asound/card0/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S24_LE
subformat: STD
channels: 2
rate: 352800 (352800/1)
period_size: 512
buffer_size: 65536

----------------------------------------------------------------------------
追記 
allowed_formats "*:32:*" これで指定すると強制?なのか(笑)
この状態でも雑音は出ない...

DSD64再生時
# cat /proc/asound/card0/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 352800 (352800/1)
period_size: 512
buffer_size: 65536

PCM44.1KHz(CDからリッピング)
# cat /proc/asound/card0/pcm0p/sub0/hw_params
access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 44100 (44100/1)
period_size: 490
buffer_size: 22050

— posted by くま at 10:56 pm  

RaspberryPi5 コマンドラインで現在の印加電圧表示

知らなかった^^;
Amazonから購入した純正同等品?の電源アダプターで44.1KHz音源再生時の電圧は?

root@raspberrypi:~# vcgencmd pmic_read_adc EXT5V_V
EXT5V_V volt(24)=5.04912000V

せっかくだから秋月から購入した5V/6.2Vのスイッチングアダプター出力端子をUSB-Cへ改造したもの
([all] usb_max_current_enable=1 設定あり)

root@raspberrypi:~# vcgencmd pmic_read_adc EXT5V_V
EXT5V_V volt(24)=5.08128000V

— posted by くま at 10:41 am  

patchの作成

30年ぐらい前にRedhat-Linuxの市販バージョンを購入して以来
ディストリを変えて弄り続けていたがソースを編集してビルドするなんて考えてもいなかった(笑)
patch(パッチ)というものを使って効率よく間違いなく修正するというのは知っていたが
その当て方や作り方は良く分からず(苦笑)
もっぱらviエディターを使い手動でソースを変更してビルドをするというプリミティブな世界!(笑)
もうジジイになってパッチを作って見ようと思い立ちやってみた。
最近頻繁のしているalsa拡張のモノを作ってみて 
綺麗に当たった様なので上手くいったかも...

$ patch -p1 < test-patch
patching file include/sound/pcm.h
patching file sound/core/pcm_native.c
patching file sound/soc/bcm/bcm2835-i2s.c
patching file sound/soc/codecs/pcm1794a.c
patching file sound/soc/dwc/dwc-i2s.c

試しにDesktop環境にrt-kernelを組み込んでみた。大丈夫だと思う。
ちなみに使った .config は /boot にある。
気に入らないのはubuntuをSSDにインストールした時と比べて何でこんなにモッサリなの??
という部分です。誰か対策を知っていたら教えてくださいm(_ _)m

alsa-rt


追記 間違っているかも(笑)
Raspberry Pi Imagerでインストール可能なubuntu(SSDインストール)は
前述の併記設定をしてもi2sデバイスを認識しない。
(自分環境だけなのか?モジュールはロードされる。)
もしかするとPCIe-SSDの使用と何か被る部分があるのかも知れない。
今日時点でRaspberryPi5はsymphonic-mpdでdownload可能な
U氏 or F氏のイメージでaoe方式で使うのが良いと思う。

自分は所謂へそ曲がりなのでImagerで64bit版のOSをUSBメモリーへ焼いて起動を確認後に
mpd upmpdcli をインストールしてi2s信号を直でDAC(入力にAK4137があるのでMCLKを生成)
に入力して聴いているが
それでも十分にRaspberryPi5特有のマッスル的音質が楽しめる様に思う!
冷却には純正アクティブクーラーを付けているが外付けファンを別電源で追加している。
(オーバークール気味の方が良く感じる。)
   

— posted by くま at 08:37 am  

えふさん のclangビルドイメージでの動作検証

とりあえず えふさん のclangビルドイメージでの動作検証は一通り終わった。
個人的感想として 良い!(笑)
clonezillaでバックアップも作成出来た。あとはひたすら聴くのみだな。
ここ半月ばかり悩みに悩んだRaspberryPi5も目処が付いた様に思う。
そうなるともう一台欲しくなる病が(笑)
現状電源関連は動作優先もモノを接続しているがUSB-PD関連の実験をもう少し進めて
音質重視の電源を接続可能にして5A供給のワーニングも出ない様にしたいなぁ

[root@alarm:~]$ status vsound
* vsound.service - Audio over Ether Virtual Sound Card
Loaded: loaded (/usr/lib/systemd/system/vsound.service; enabled; preset: disabled)
Active: active (running) since Mon 2024-04-15 08:48:14 JST; 7min ago
Main PID: 429 (aoe)
Tasks: 1 (limit: 9260)
CPU: 92ms
CGroup: /system.slice/vsound.service
`-429 /usr/bin/aoe -i end0

Apr 15 08:48:14 alarm systemd[1]: Started Audio over Ether Virtual Sound Card.
Apr 15 08:48:14 alarm aoe[429]: 000018.183 main [ 450] 0| aoecli v0.15 [end0] HWaddr 2C:CF:67:09:FA:4B
Apr 15 08:48:14 alarm aoe[429]: 000018.183 main [ 451] 0| Destination MAC address FF:FF:FF:FF:FF:FF (Auto Detect)
Apr 15 08:48:14 alarm aoe[429]: 000018.183 main [ 458] 0| [end0] link is up! (0 ms)
Apr 15 08:48:14 alarm aoe[429]: 000018.183 main [ 469] 0| MTU: 1500

— posted by くま at 08:56 am  

384000 Hzの壁(2)

@donuts-shop73さん
@えふさん
@udosanさん
お陰様で解決したと思います(現在検証中...)

root@raspberrypi:~# alsacap
*** Scanning for playback devices ***
Card 0, ID `sndrpirpidac', name `snd_rpi_rpi_dac'
Device 0, ID `RPi-DAC HiFi pcm1794a-hifi-0', name `RPi-DAC HiFi pcm1794a-hifi-0', 1 subdevices (1 available)
2 channels, sampling rate 8000..768000 Hz
Sample formats: S16_LE, S24_LE, S32_LE
Buffer size range from 32 to 131072
Period size range from 16 to 1024

Subdevice 0, name `subdevice #0'

追記-1 
   現在自分のお気に入りの曲をこの環境で聴き直しをしていますが...
   プラシーボもあるかと思いますが良いと思います。
   ただRaspberryPi5環境構築のコスト上昇分を考えた場合は自分的には
   かなり割高になっている様に思います。
   まぁAudioなんてその割高分にナンボ払えるかという趣味なんですが(笑)
追記-2
   symphonic-mpdの高音質実現思想を考えるに
   とにかくPC内でやるべき仕事を軽くして(時には2台使用して)
   やるべき仕事を早く確実に熟す事で音質を上げるという事だと理解している。
   なので現在RaspberryPi4で完成している環境でRpi4に課されている仕事は
   十分に軽減されていると思う。だから今以上に強力なハード(RaspberryPi5)に多大な労力をかけて
   リヤ環境を移植する必要は全く無いと考えているのだろうと 自分は考えている。

   その逆方向的考え方として強力なRaspberryPi5を使えば前述した仕事の軽減をある程度省いても
   良い音へたどり着けるのでは?という素人考えで単体での出音に拘っている。
   そしてそれを実現させたいと各界を騒がせてしまっているという現状であるm(_ _)mスミマセン

— posted by くま at 09:12 pm  

色々と確認..

root@raspberrypi:~# rpi-eeprom-
rpi-eeprom-config rpi-eeprom-digest rpi-eeprom-update
root@raspberrypi:~# rpi-eeprom-config
[all]
BOOT_UART=1
BOOT_ORDER=0xf461
POWER_OFF_ON_HALT=0
root@raspberrypi:~# rpi-eeprom-update -a
BOOTLOADER: up to date
CURRENT: Fri 16 Feb 15:28:41 UTC 2024 (1708097321)
LATEST: Fri 16 Feb 15:28:41 UTC 2024 (1708097321)
RELEASE: default (/lib/firmware/raspberrypi/bootloader-2712/default)
Use raspi-config to change the release.

蛇足...RaspberryPi5の5V電源の供給はUSB-Cコネクタ以外の部分に接続すると

reset-5V


このワーニングが出るのだが3.3Vの電源ラインに注入?すると出ないと思われる。
だからHAT基板と追加する場合にもしその基板上に3.3Vのレギュレターが搭載されていて
且つ親基板(RaspberryPi5)からの5V供給で物足りない?場合は
そのレギュレター以降に3.3Vを注入すれば良いかも
試してみるのは破壊の可能性があるので 追試はしないでね(笑)

— posted by くま at 06:46 pm  

384000 Hzの壁(1)

root@raspberrypi:~# alsacap
*** Scanning for playback devices ***
Card 0, ID `DAC', name `I-Sabre Q2M DAC'
Device 0, ID `I-Sabre Q2M DAC i-sabre-codec-dai-0', name `I-Sabre Q2M DAC i-sabre-codec-dai-0', 1 subdevices (1 available)
2 channels, sampling rate 8000..384000 Hz
Sample formats: S16_LE, S32_LE
Buffer size range from 32 to 131072
Period size range from 16 to 1024

Subdevice 0, name `subdevice #0'

i2sデバイスは何を組み込んでも 384000 Hz なのか?
USBだと問題なかったのに...

参考URL  Rpi5 sampling rate dac hat #5748

— posted by くま at 10:35 pm  

 

RaspberryPi5 rt-kernelのBuildにやっと成功した!

昨日、○どさんのアドバイスを貰ってやっと自分環境で
RaspberryPi5用rt-kernelのBuildに成功したぁ〜
自分が所有する最速?PCでも一時間程度時間がかかるので
力任せの trial and error というワケにもいかなくて停滞していたのだが...
その結果としてやはり768000Hzまでのパッチを当てても
352800Hzまでにしかならなかった...
この結果はrt-kernelではない通常kernelでも同じだったので
やはりそうなのか...となった。

ネット上にはRaspberryPix用kernel再構築の記事はいくつもあるのだが
最新であるRaspberryPi5用且つ日本語のものは見つけられなかった。
加えて大筋のやり方は書いてあるが
付随する細かいところはそれぐらい分かるでしょ!
見たいな感じでやってみては失敗を繰り返して...(笑)

自分環境はArchlinux上にクロスコンパイル環境を作ってkernelのコンパイルまでを行い
RaspberryPi5本体へ成果物を移す作業及びモジュールをインストールする作業は
sshfs を使ってクロスコンパイルを行ったディレクトリーを
RaspberryPi5内のディレクトリーへマウントして行っている。
LANを通してコピーすると余りに時間がかかってしまうからだ。
この方法の欠点はRaspberryPi5内にもクロスコンパイル環境を作らなければいけない事だ(笑)
で!今回ネットを徘徊していたら直接メディアに向けてインストール出来るコマンドオプションを発見!

KERNEL=kernel_2712 make modules_install INSTALL_MOD_PATH=/media/manta/root/ ¥
ARCH=arm64 CROSS_COMPILE=/usr/bin/aarch64-linux-gnu-

たぶんこれは/media/manta/root/ この部分に
インストールメデイアのrootパーテーションを指定すると思われる!
今度試して見ようと思う。

— posted by くま at 08:38 am  

音が楽しい 良いと思う!

うどさんに作っていただいた例のイメージはRaspberry Pi Imagerで
USBメモリーに焼いてもOK!ヤリィ!m(_ _)m

1.aptでmpd upmpdcli をインストール /etc/mpd.conf /etc/upmpdcli.confを設定
2./boot/firmware/config.txt へ併記の形でデバイス名を入れる。再起動...
3.upnp環境があればこれだけでUPnP audio Control Point系ソフトで再生可能に!

まぁ細かい事は気にしないで...(768000Hzは?)
RaspberryPi5の高性能を楽しむのも良いのでは...

— posted by くま at 11:00 pm  

RaspberryPi5 今までの設定で音が出るのかぁ?!(>ω<)

事のはじまりはRaspberryPi5でPCIeカードを動作させることが可能になった事だった。
実際にサウンドカードを刺してみるとモジュールがロードされるのにalsaでは認識されない不具合が発生した!
確認のためその環境のままRaspberryPi4で問題なく動作していたI2S出力可能なHATを取り付けてみると
あれ!I2Sデバイスを認識しない!という困った状況が発生!そこから色々弄り始めたが自己破壊モードに入ったり(笑)
何度もやり直しテストが続いた...とにかく思いつく限りのキーワードでネットを検索していたら
前記事を見つけてこれだ!って思った。

この一行が鍵だった!!
dtoverlay=hifiberry-dacを併用すると有効になる
kkuma@raspberrypi:~$ uname -a (※通常のImagerでインストール可能なラズビアンで成功したのが嬉しい!)
Linux raspberrypi 6.6.20+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.6.20-1+rpt1 (2024-03-07) aarch64 GNU/Linux

kkuma@raspberrypi:~$ cat /boot/firmware/config.txt

# Enable audio (loads snd_bcm2835)
dtparam=audio=on
dtparam=i2s=on
dtoverlay=hifiberry-dac
dtoverlay=i2s-dac

kkuma@raspberrypi:~$ aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: vc4hdmi0 [vc4-hdmi-0], デバイス 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 1: vc4hdmi1 [vc4-hdmi-1], デバイス 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 2: sndrpirpidac [snd_rpi_rpi_dac], デバイス 0: RPi-DAC HiFi pcm1794a-hifi-0 [RPi-DAC HiFi pcm1794a-hifi-0]
サブデバイス: 0/1
サブデバイス #0: subdevice #0

追加でソースからalsacapコマンドを追加して見たが

kkuma@raspberrypi:~$ alsacap
*** Scanning for playback devices ***
Card 0, ID `sndrpirpidac', name `snd_rpi_rpi_dac'
Device 0, ID `RPi-DAC HiFi pcm1794a-hifi-0', name `RPi-DAC HiFi pcm1794a-hifi-0', 1 subdevices (1 available)
2 channels, sampling rate 8000..192000 Hz
Sample formats: S16_LE, S24_LE
Buffer size range from 32 to 131072
Period size range from 16 to 1024

Subdevice 0, name `subdevice #0'

拡張kernelを作りたいが...作リ方が分からない...

※注意事項 
自分の環境はサウンドデバイスを使用せずRaspberryPi5のI2S出力ピンから
直接I2S信号を取り出している。
その後にAK4137基板でMCLKを加えDACへ送信している状態で音出し成功...

— posted by くま at 04:55 pm  

<< 2024.11 >>
SMTWTFS
     12
3456789
10111213141516
17181920212223
24252627282930
 
























T: Y: ALL: Online:
ThemePanel
Created in 0.1328 sec.