/ 雑記帳

[ カテゴリー » Raspberry Pi4 Model B ]

NFD基板のI2S位相切換機能って...

たぶん動いていると^^;
一応何時も左右チャンネルがテレコになっていないか?のテスト用音源で
スクリプトを実行した時に左右チャンネルが入れ替わるのが確認出来た。
ただし自分の環境ではスクリプト内容を少しイジらないと動作しなかった。
こんな感じに変更した。

# cat hdmi_inv.py
import RPi.GPIO as GPIO
#INV_PIN = 27
GPIO.setmode(GPIO.BCM)
GPIO.setup(27, GPIO.OUT)
GPIO.output(27, GPIO.HIGH)

この機能を動かすためにはRaspberryPiのI2Cコントロール機能を
有効にしなければならなかったので結構面倒だった(笑)
このNFD基板にも例のクロック基板から闘魂注入をして見たい。
どんな音になるのかなぁ マスターモードからの引き出しは関係してくるのかどうか?

befor-after



参考URL Use I2C on raspberry pi with archlinux-arm

— posted by くま at 05:27 pm  

シームレスな再生環境にはまだ遠いが(笑)

色々なディストリと色々な機器と色々なソフト設定の組み合わせがあり
ブログでは完璧な説明が出来ない事を最初に書いておきます。
まぁ管理人自身のポカ、勘違いもあるのでご指摘いただけると有り難いですm(_ _)m
カーネル再構築でドライバーの守備範囲を広げた環境はまだイジっていて
自分の目標であるPCM-DSD再生環境をシームレスにするためのアプローチの一つです。

# 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'

この状態で
OS:
# 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

ハード:
RaspberryPi4 + Renew SRC4137(サンプリングレートコンバーター) + HDMIコネクタI2S差動送信基板
※リクロック基板、ハットDACからのI2S横取無し。送信基板のみ。

mpd設定:
dop "yes"

allowed_formats "384000:32:2 44100:*:2 48000:*:2 88200:*:2 96000:*:2 96000:*:2 176400:*:2 192000:*:2 352800:*:2 384000:*:2 dsd64:2=dop dsd128:2=dop dsd256:2=dop"

audio_buffer_size "12288"
buffer_before_play "50%"
max_output_buffer_size "131072"
max_connections "128"

この状態で下の様な仕様の音源をDoP変換再生すると
まともに再生出来る場合と雑音混じりになってしまう場合がある。
つい最近までその原因はドライバーの拡張が無茶(笑)だったと考えていたのだが...
あくまで自分の環境の話だが判明した原因はその時のマスタークロックが44.1系なのか48系なのか!
それだけだった。自分の環境ではデジタルチャンネルデバイダーを使っているので
デバイダー入力周波数がコロコロ変わると曲の頭が切れるので固定していた。
SRC基板を入れていて気がつくのに時間がかかったという顛末

Audio
Format : DSD
Format/Info : Direct Stream Digital
Commercial name : DSD64
Format settings : Little
Duration : 8 min 28 s
Bit rate : 5 645 kb/s
Channel(s) : 2 channels
Channel layout : L R
Sampling rate : 2 822 kHz
Compression mode : Lossless
Stream size : 342 MiB (100%)

— posted by くま at 10:51 am  

RaspberryPiの製造ライセンスが終了の様だ

注文していたモノが自動キャンセルになっている。
今後の入手性は改善されるのだろうか?
たぶん悪くなると予想している。
日本業者の購買課の能力は世界のトップレベルだと自分は思っているのが根拠だ。

STOP



— posted by くま at 10:03 pm  

最近気がついたミス...Allo Kali I2S Reclockerの電源供給

Allo Kali I2S Reclockerには重ね合わせて使用する時に
下のRaspberryPiと電源を共通にするか、あるいは別々にするかを
選択するためのジャンパーが付いている。
この二本のピンは片側がRaspberryPiの電源
もう片方はReclockerに接続されている。
自分はもちろん別電源で供給するためこのジャンパーピンはショートせず
この部分を起点にRaspberryPi4へ電源供給するためのサブ基板を作成
取り付けて使用していたがぁ----
信号線を確認していた時に
Kali I2S ReclockerのIOピンは面実装部品だと改めて認識した(笑)
という事はピンは貫通していないという事になる。
悪い予感がしてテスターで当たってみるとこのジャンパーピンから電源供給すると
逆流防止ダイオードを通過してから供給する構造になっていた ええぇ!!
しかも当該ダイオードは約0.2Vも背負っている。 ええぇ!!
仕方がなくRaspberryPiに電源を供給するためだけの基板を追加して
RaspberryPi自身の保護回路も前述のダイオードも通過せず電源が接続するようにしてみた!
音は...音は明らかに変わった!

— posted by くま at 07:01 pm  

Archlinux rt-kernel パラメーターその後...

Preemption Modelは
「5」のFully Preemtible Kernel を選択
プリエンプションの周波数は
300Hz
これが我が家では良い様に聴こえます(笑)
参考URL RaspberryPiに最新のRT-Linuxを入れる方法
     秋の夜長は Raspberry Pi 3 で RT-Linux ビルドに挑戦
この記事を読むと
------------------------------------------------------
タスク切り替えがこの周波数で強制的におきます。 
あまり速くしすぎると実行効率が落ちてしまうので気をつけます。 
タスクを切り替える時間がゼロではないからです。
------------------------------------------------------
とあります。
実は1000Hzも試して見ました。音がスカスカになりました(笑)
秋の夜長編の方に
------------------------------------------------------
マスターモードI2SがないDACの場合の方が効果が大きくでるかもしれません。
------------------------------------------------------
とあります。正にそう言う結果が出ています。
allo kali基板 が水を得た魚の様に歌います。

— posted by くま at 05:48 pm   commentComment [1] 

I2S出力の基板(サウンドカード的モノ)

1.PinkFaun I2S Bridge-Card
2.KALI Reclocker
3.North Fox Digi

現状3系統のプレーヤーをメインシステムに接続して
あーでもないこうでもないを楽しんでいる。
今回すべてのRaspberryPi4の使用OSはArchlinux 64bit rt-kernelとした。
いずれの場合も
mpd + upmpdcli + upplay でプレーヤーは最低限完結する。
音質的にはどのプレ−ヤ−も良い所まで来ている様に思う。

少し前まではハード、特に電源を追いかけていたが
現状やってみたい事はすべてやってみて(笑)
今まで見てみぬふりというか他力本願だったOSをイジっている。
lightmpd smpd-aoe rAUDIO volumio等
無料配布されているプレーヤーソフトも可能な限り試してみた。
その中でもsmpd-aoeは一番だと個人的には思う。
だから何もイジらないでそれで聴いていれば良いものを
どうも血が騒ぐのを止められず archlinux rt-kernel をイジり始める。
たまたま上手く行って音が出始めた。プラシーボ全開の良い音で(笑)

追記 今回のrt-kernelはKali (i2s Reclocker)と相性が良い。

— posted by くま at 08:15 pm  

そう言えばArchphile というのもあった....

archphile


Archphileはかなり昔、RaspberryPi2の頃にしばらく使用していたが
有料化の話が出てきて程なく消えた記憶がある。
思い出して64bit版imgは配布されていないのか?と暫く徘徊していると見つけた!さっそく焼いてみた。
起動も問題なかったが pacman -sy を確認して見るとエラーしか出ない?

# pacman -Sy
:: Synchronizing package databases...
error: failed retrieving file 'core.db' from mirror.archlinuxarm.org : Resolving timed out after 10000 milliseconds
error: failed to update core (download library error)
error: failed retrieving file 'extra.db' from mirror.archlinuxarm.org : Resolving timed out after 10000 milliseconds
error: failed to update extra (download library error)
error: failed retrieving file 'community.db' from mirror.archlinuxarm.org : Resolving timed out after 10000 milliseconds
error: failed to update community (download library error)
error: failed retrieving file 'alarm.db' from mirror.archlinuxarm.org : Resolving timed out after 10000 milliseconds
error: failed to update alarm (download library error)
error: failed retrieving file 'aur.db' from mirror.archlinuxarm.org : Resolving timed out after 10000 milliseconds
error: failed to update aur (download library error)
error: failed retrieving file 'archphile.db' from archphile.org : Resolving timed out after 10000 milliseconds
error: failed to update archphile (download library error)
error: failed to synchronize all databases

カーネルのバージョンを見る限り開発がかなり前ストップしたまま?なんだろうか。
翌朝...深夜の頭脳はボケボケで(笑)そういえばgpg-keyをいじってなかったなぁと....
pacman-key --init
pacman-key --populate
key更新コマンドを実行して再度アップデートを試みるとおお!始まった!!
でも...うーん余りに低速!どうなんだろう。
# uname -a
Linux archphile 5.10.83-1-rpi-ARCH #1 SMP PREEMPT Tue Dec 7 15:21:39 UTC 2021 aarch64 GNU/Linux
スタートラインには立てたがこれからまた時間が必要になる。

参考リンク Archphile 1.19 beta - codename Corona for the Raspberry Pi 4 is up

— posted by くま at 11:58 pm  

Linux rAudio 5.16.0-rc3-rt7-v8 #1 SMP PREEMPT_RT Wed Dec 8 13:04:50 JST 2021 aarch64 GNU/Linux

moct氏から教えてもらった新しいプレーヤーソフト
開発している方々は元々volimio開発のメンバーから袂を分けた方々らしいです。
(GUIがそっくり??)
download先 rAudio-1
さっそく rAudio-1-64bit-20121203.img.xz を使ってみると中々音が良いので
ちょっと悪戯してrt-kernelをインストールをしてみました。
最近いじっているDebian系のkernelと作業内容は同じでした。
で!このプレーヤーソフトをイジって見ようと思った理由は
ズバリ!開発ベースが Archlinux だからです。
プラシーボダラダラ状態ですが素晴らしい音がすると思います。

rAudio-11


rAudio-rt



追記 HDMI出力ではタッチパネルで操作出来る様になっているがそのままでは日本語が表示出来ない。
   表示はchromiumを改造して行っている様なので/usr/share/applications/chrome.desktopの
   Exec 行に env LANG=ja_JP.UTF-8 を追加する。
   こんな感じ Exec=env LANG=ja_JP.UTF-8 /usr/bin/chromium %U
   localeをイジるとぶっ壊れます。

— posted by くま at 09:50 am  

64bit rt-kernel への道(2)

パッチのdownload先
https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/
カーネルソースのdownload先
https://github.com/raspberrypi/linux

一番参考になったサイトは
64bit 版 Raspberry Pi OS のカーネルモジュールのビルド環境設定
1.gcc のビルドという部分は実はクロスコンパイル環境の構築するための作業になっている。
なのでこれをintel-CPUのPC上で行えばクロスコンパイル環境が出来る。
ただしrpi-sourceは使用しなかった。
このソース取得部分はたかじん氏のサイトの方法を真似させていただきましたm(_ _)m
このサイトの説明で大変に重要な事は最後の2行です(笑)
$ KERNEL=kernel8 make ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu-
※ ビルドコマンドが make の場合
とにかく例外なくこの呪文を使えと
たとえばKERNEL=kernel8 make menuconfig ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu-

使用したソース等
2021-05-07-raspios-buster-arm64-lite.img
linux-9299025206cb3f9b1146aa2c3c1de5df8fc92e9c
(linux-rpi-5.16.y.zip)
patch-5.16-rc3-rt7.patch.xz
binutils-2.37.tar.xz
gcc-8.4.0.tar.xz

ここまで来ればもう根性しかない(笑)という事で
パッチを当てたソースをコンパイルじゅうたん爆撃をした結果として

root@raspberrypi:~# uname -a
Linux raspberrypi 5.16.0-rc3-rt7-v8 #1 SMP PREEMPT Sat Dec 4 19:35:24 JST 2021 aarch64 GNU/Linux

「rt7」です。憧れ?のリアルタイムカーネルです。

root@raspberrypi:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndallodigione [snd_allo_digione], device 0: Allo DigiOne HiFi wm8804-spdif-0 [Allo DigiOne HiFi wm8804-spdif-0]
Subdevices: 1/1
Subdevice #0: subdevice #0

問題なくサウンドカードを認識しています。

音出し成功です。
肝心の音は疲れすぎで後日コメントします(笑)
とりあえずddコマンドでバックアップを取り
それを書き戻して動作が確認できたので一安心です。
ところが...
追記12/05 えふさんのコメントからプリエンプションのミスが発覚しました!
本来Fully Preemptible Kernel (Real-Time)を選択すべき部分でした。

RT


再度configしてコンパイルをやり直してSDカードに反映しました。
コンパイル終了後に残っている.configをエディターで開いて再度確認しました。

CONFIG_HAVE_PREEMPT_LAZY=y
CONFIG_PREEMPT_LAZY=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
CONFIG_PREEMPT_RT=y
CONFIG_PREEMPT_COUNT=y
CONFIG_PREEMPTION=y

大丈夫な様です^^;

— posted by くま at 03:57 pm   commentComment [8] 

緊急めも upmpdcli インストール

通常のMPD をインストール
# apt-get install mpd

※upmpdcli をインストール(raspbian buster対応版)
リポジトリ キーの登録する。
# apt install dirmngr
# gpg --keyserver pool.sks-keyservers.net --recv-key F8E3347256922A8AE767605B7808CE96D38B9201
# gpg --export '7808CE96D38B9201' | sudo apt-key add -

cat /etc/apt/sources.list.d/upmpdcli.list

buster(debian 10)用
deb http://www.lesbonscomptes.com/upmpdcli/downloads/raspbian/ buster main
deb-src http://www.lesbonscomptes.com/upmpdcli/downloads/raspbian/ buster main

# apt-get update
# apt-get install upmpdcli

— posted by くま at 11:35 am   commentComment [2] 

<< 2024.4 >>
SMTWTFS
 1 2 34 56
7 8910 1112 13
1415 161718 1920
21 222324 2526 27
28 2930    
 
























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