Modprobed-db
2023/4/5
某掲示板にudosanがkernel更新の度に「dprobed.db」をアップしているのを見て
どう使うのか?であった。よく調べない自分が悪いのだが...
それで今回調べて見たら これは便利かも という事で試して見る。
参考リンク Modprobed-db
どう使うのか?であった。よく調べない自分が悪いのだが...
それで今回調べて見たら これは便利かも という事で試して見る。
参考リンク Modprobed-db
— posted by くま at 04:39 pm
RaspberryPi3 復活させた...
尖ったOS(笑)ばかり追求していたがたまには普通路線という事で
打ち捨てられた?RaspberryPi3があったので
(以前はsmpdの旧バージョンで運用していたが音源ソースDirのマウントが面倒になって...)
普通のRaspberryPiOSをインストール
mpd upmpdcli をインストールして音楽再生環境を作った。
だがしかし時代は古いものには厳しく特にupmpdcliのインストールは面倒だった!
以前はppaのレポジトリを追加してaptコマンドでインストール可能だったハズ^^;
今回はダメ!?だった。ここで諦めてmpd単体でも音出しは可能だが(笑)
ちょっと粘ったら...半徹夜状態になってしまった(笑)
重要なlib類はほとんどaptではインストール不可でソースをdownloadして来て
ビルドするという もう何だかなぁ
libupnpp-0.22.4 libnpupnp-5.0.1 upmpdcli-1.6.3 等
で!依存関係を無事クリアー!エラーも特に出ない状態でインストール完了したのに
得意のエラーlibupnpp.so.12が無いとか?起動しない!依存関係がぁ!?
エラーが出てないのに??
結論としては pupnpのインストールが必要だった。
忘れているのかなぁ自分(苦笑)
蛇足 ソースインストールには常にOS環境破壊(笑)とか元に戻せなくなるとか
恐ろしいリスクがあるのでは?とういう事で自分はこの様な場合にporgを活用しています。
porg は自分ビルドのパッケージ管理用ツールで以前は paco だったが現在は porg として開発が継続
自分ビルドをインストールする際にporgコマンドを使う事でインストール内容を追跡記録してくれます。
その機能により綺麗にアンインストールが出来るので元に戻して仕切り直しが可能(笑)
RaspberryPiはそのコストパフォーマンスと手軽さ?がウケて初心者の入門用として語られているのを良く見るけど
ホントにそうなんだろうか?と何時も思う。思いどうりになんて全然動かない(笑)
打ち捨てられた?RaspberryPi3があったので
(以前はsmpdの旧バージョンで運用していたが音源ソースDirのマウントが面倒になって...)
普通のRaspberryPiOSをインストール
mpd upmpdcli をインストールして音楽再生環境を作った。
だがしかし時代は古いものには厳しく特にupmpdcliのインストールは面倒だった!
以前はppaのレポジトリを追加してaptコマンドでインストール可能だったハズ^^;
今回はダメ!?だった。ここで諦めてmpd単体でも音出しは可能だが(笑)
ちょっと粘ったら...半徹夜状態になってしまった(笑)
重要なlib類はほとんどaptではインストール不可でソースをdownloadして来て
ビルドするという もう何だかなぁ
libupnpp-0.22.4 libnpupnp-5.0.1 upmpdcli-1.6.3 等
で!依存関係を無事クリアー!エラーも特に出ない状態でインストール完了したのに
得意のエラーlibupnpp.so.12が無いとか?起動しない!依存関係がぁ!?
エラーが出てないのに??
結論としては pupnpのインストールが必要だった。
忘れているのかなぁ自分(苦笑)
蛇足 ソースインストールには常にOS環境破壊(笑)とか元に戻せなくなるとか
恐ろしいリスクがあるのでは?とういう事で自分はこの様な場合にporgを活用しています。
porg は自分ビルドのパッケージ管理用ツールで以前は paco だったが現在は porg として開発が継続
自分ビルドをインストールする際にporgコマンドを使う事でインストール内容を追跡記録してくれます。
その機能により綺麗にアンインストールが出来るので元に戻して仕切り直しが可能(笑)
RaspberryPiはそのコストパフォーマンスと手軽さ?がウケて初心者の入門用として語られているのを良く見るけど
ホントにそうなんだろうか?と何時も思う。思いどうりになんて全然動かない(笑)
— posted by くま at 10:23 am
rt-kernelの確認
2023/4/3
あらぁ こんなの見つけた うちのは大丈夫かな(笑)
CONFIG_HIGH_RES_TIMERS=y
CONFIG_NO_HZ_IDLE=y
CONFIG_PREEMPT=y # low-latency kernel
CONFIG_PREEMPT_RT=y # real-time kernel
CONFIG_HIGH_RES_TIMERS=y indicates your kernel has high resolution timer support, the CONFIG_NO_HZ_IDLE means your kernel is tickless and the CONFIG_PREEMPT options indicate you're either running a low-latency kernel (CONFIG_PREEMPT) or a real-time kernel (CONFIG_PREEMPT_RT_FULL).
CONFIG_HIGH_RES_TIMERS=y はカーネルが高解像度タイマーをサポートしていることを示し、
CONFIG_NO_HZ_IDLE はカーネルがティックレスであることを示し、
CONFIG_PREEMPT オプションは低レイテンシ カーネル (CONFIG_PREEMPT)
またはリアルタイム カーネル (CONFIG_PREEMPT_RT_FULL) を実行していることを示します。
/proc/config.gz が見当たらない
普段カスタマイズしたカーネルを使っているので、いつものようにカーネルを再構築しようとしたところ /proc/config.gz が見当たらない。
そんなときは、
$ sudo modprobe configs このコマンドを実行すると/proc/config.gz が出現する!
CONFIG_HIGH_RES_TIMERS=y
CONFIG_NO_HZ_IDLE=y
CONFIG_PREEMPT=y # low-latency kernel
CONFIG_PREEMPT_RT=y # real-time kernel
CONFIG_HIGH_RES_TIMERS=y indicates your kernel has high resolution timer support, the CONFIG_NO_HZ_IDLE means your kernel is tickless and the CONFIG_PREEMPT options indicate you're either running a low-latency kernel (CONFIG_PREEMPT) or a real-time kernel (CONFIG_PREEMPT_RT_FULL).
CONFIG_HIGH_RES_TIMERS=y はカーネルが高解像度タイマーをサポートしていることを示し、
CONFIG_NO_HZ_IDLE はカーネルがティックレスであることを示し、
CONFIG_PREEMPT オプションは低レイテンシ カーネル (CONFIG_PREEMPT)
またはリアルタイム カーネル (CONFIG_PREEMPT_RT_FULL) を実行していることを示します。
/proc/config.gz が見当たらない
普段カスタマイズしたカーネルを使っているので、いつものようにカーネルを再構築しようとしたところ /proc/config.gz が見当たらない。
そんなときは、
$ sudo modprobe configs このコマンドを実行すると/proc/config.gz が出現する!
— posted by くま at 11:25 am
最新kernel sourceでrt-kernel環境を構築 ついでにdriver改造
2023/3/30
[root@alarm ~]# uname -a
Linux alarm 6.3.0-rc4-rt1-v8 #1 SMP PREEMPT_RT Thu Mar 30 20:12:33 JST 2023 aarch64 GNU/Linux
[root@alarm ~]# 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
Subdevice 0, name `subdevice #0'
これが実現出来た組合せ(3/30現在)
patch: patch-6.3-rc1-rt1.patch.xz
source: https://github.com/raspberrypi/linux/tree/rpi-6.3.y
VERSION = 6
PATCHLEVEL = 3
SUBLEVEL = 0
EXTRAVERSION = -rc4
現実に戻って冷静になると...
まずrpi-dacドライバーのソース部分をイジって
本来のpcm1794aのハードウェア仕様とはかけ離れた仕様に改造している。
この改造をしても一般的なハードにはメリットがない様に思う。
DSD音源ファイルをDoP、I2S形式で出力する場合にだけメリットがある様に思う。
自分の環境ではAK4137というサンプリングコンバーターICとの組合せで動作を確認している。
RaspberryPiはMCLKを出力出来ないため一般的なスレーブモード動作のDACセットと組み合わせるためには
MCLKを発生させなければならないから
例えばAlloラズパイ用リクロッカー KALI Reclocker基板等と組み合わせる必要がある。
まだ試していないがこの基板使用時に組み合わせるドライバーもrpi-dacドライバーなので
恐らく動作する様に思う。
参考URL:
0028-nikkov-i2s-spdif-2.0.patch
ALSA: pcm: Add support for 705.6KHz and 768KHz sample rate
NanoPi-NEO2 の I2SでMCLK出力 & 384kHz, 768kHz, 1536kHz, 8kHz対応
linux-kernel-projects-rt-6.3
RaspberryPiに最新のRT-Linuxを入れる方法
Raspberry Pi 3とリアルタイムカーネル(1)[RT Preempt導入編]
追記 3/31 intel i9 j8でビルドしてこのぐらいの時間がかかる。
作業概要
1.kernel sourceにリアルタイムカーネルパッチを当てる。
2.RPi-DACの仕様変更のため下に示した部分のsourceを変更する。
3.クロスコンパイル環境でコンパイルを行う。
4.エラー無くコンパイルが終了したらSDカードの該当部分にコピー、再起動して確認する。
パッチと言うものを作った事が無いのでこれで...
#----sound/soc/codecs/pcm1794a.c----------------------------#
29c29
< .rates = SNDRV_PCM_RATE_8000_768000,
---
> .rates = SNDRV_PCM_RATE_8000_192000,
31,32c31
< SNDRV_PCM_FMTBIT_S24_LE |
< SNDRV_PCM_FMTBIT_S32_LE
---
> SNDRV_PCM_FMTBIT_S24_LE
#----include/sound/pcm.h------------------------------------#
124,126d123
< #define SNDRV_PCM_RATE_705600 (1U<<15) /* 705600Hz */
< #define SNDRV_PCM_RATE_768000 (1U<<16) /* 768000Hz */
<
139,143c136,138
< #define SNDRV_PCM_RATE_8000_384000 (SNDRV_PCM_RATE_8000_192000|SNDRV_PCM_RATE_352800|¥
< SNDRV_PCM_RATE_384000)
< #define SNDRV_PCM_RATE_8000_768000 (SNDRV_PCM_RATE_8000_384000|SNDRV_PCM_RATE_705600|¥
< SNDRV_PCM_RATE_768000)
<
---
> #define SNDRV_PCM_RATE_8000_384000 (SNDRV_PCM_RATE_8000_192000|¥
> SNDRV_PCM_RATE_352800|¥
> SNDRV_PCM_RATE_384000)
#----sound/core/pcm_native.c--------------------------------#
2460c2460
< 48000, 64000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000
---
> 48000, 64000, 88200, 96000, 176400, 192000, 352800, 384000
#----sound/soc/bcm/bcm2835-i2s.c----------------------------#
770c770
< .rate_max = 768000,
---
> .rate_max = 384000,
780c780
< .rate_max = 768000,
---
> .rate_max = 384000,
KERNEL=kernel8 make menuconfig ARCH=arm64 CROSS_COMPILE=/usr/bin/aarch64-linux-gnu-
を実行する時に忘れてはいけない事!
CONFIG_PREEMPT_RT=y
CONFIG_HIGH_RES_TIMERS=y
Linux alarm 6.3.0-rc4-rt1-v8 #1 SMP PREEMPT_RT Thu Mar 30 20:12:33 JST 2023 aarch64 GNU/Linux
[root@alarm ~]# 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
Subdevice 0, name `subdevice #0'
これが実現出来た組合せ(3/30現在)
patch: patch-6.3-rc1-rt1.patch.xz
source: https://github.com/raspberrypi/linux/tree/rpi-6.3.y
VERSION = 6
PATCHLEVEL = 3
SUBLEVEL = 0
EXTRAVERSION = -rc4
現実に戻って冷静になると...
まずrpi-dacドライバーのソース部分をイジって
本来のpcm1794aのハードウェア仕様とはかけ離れた仕様に改造している。
この改造をしても一般的なハードにはメリットがない様に思う。
DSD音源ファイルをDoP、I2S形式で出力する場合にだけメリットがある様に思う。
自分の環境ではAK4137というサンプリングコンバーターICとの組合せで動作を確認している。
RaspberryPiはMCLKを出力出来ないため一般的なスレーブモード動作のDACセットと組み合わせるためには
MCLKを発生させなければならないから
例えばAlloラズパイ用リクロッカー KALI Reclocker基板等と組み合わせる必要がある。
まだ試していないがこの基板使用時に組み合わせるドライバーもrpi-dacドライバーなので
恐らく動作する様に思う。
参考URL:
0028-nikkov-i2s-spdif-2.0.patch
ALSA: pcm: Add support for 705.6KHz and 768KHz sample rate
NanoPi-NEO2 の I2SでMCLK出力 & 384kHz, 768kHz, 1536kHz, 8kHz対応
linux-kernel-projects-rt-6.3
RaspberryPiに最新のRT-Linuxを入れる方法
Raspberry Pi 3とリアルタイムカーネル(1)[RT Preempt導入編]
追記 3/31 intel i9 j8でビルドしてこのぐらいの時間がかかる。
作業概要
1.kernel sourceにリアルタイムカーネルパッチを当てる。
2.RPi-DACの仕様変更のため下に示した部分のsourceを変更する。
3.クロスコンパイル環境でコンパイルを行う。
4.エラー無くコンパイルが終了したらSDカードの該当部分にコピー、再起動して確認する。
パッチと言うものを作った事が無いのでこれで...
#----sound/soc/codecs/pcm1794a.c----------------------------#
29c29
< .rates = SNDRV_PCM_RATE_8000_768000,
---
> .rates = SNDRV_PCM_RATE_8000_192000,
31,32c31
< SNDRV_PCM_FMTBIT_S24_LE |
< SNDRV_PCM_FMTBIT_S32_LE
---
> SNDRV_PCM_FMTBIT_S24_LE
#----include/sound/pcm.h------------------------------------#
124,126d123
< #define SNDRV_PCM_RATE_705600 (1U<<15) /* 705600Hz */
< #define SNDRV_PCM_RATE_768000 (1U<<16) /* 768000Hz */
<
139,143c136,138
< #define SNDRV_PCM_RATE_8000_384000 (SNDRV_PCM_RATE_8000_192000|SNDRV_PCM_RATE_352800|¥
< SNDRV_PCM_RATE_384000)
< #define SNDRV_PCM_RATE_8000_768000 (SNDRV_PCM_RATE_8000_384000|SNDRV_PCM_RATE_705600|¥
< SNDRV_PCM_RATE_768000)
<
---
> #define SNDRV_PCM_RATE_8000_384000 (SNDRV_PCM_RATE_8000_192000|¥
> SNDRV_PCM_RATE_352800|¥
> SNDRV_PCM_RATE_384000)
#----sound/core/pcm_native.c--------------------------------#
2460c2460
< 48000, 64000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000
---
> 48000, 64000, 88200, 96000, 176400, 192000, 352800, 384000
#----sound/soc/bcm/bcm2835-i2s.c----------------------------#
770c770
< .rate_max = 768000,
---
> .rate_max = 384000,
780c780
< .rate_max = 768000,
---
> .rate_max = 384000,
KERNEL=kernel8 make menuconfig ARCH=arm64 CROSS_COMPILE=/usr/bin/aarch64-linux-gnu-
を実行する時に忘れてはいけない事!
CONFIG_PREEMPT_RT=y
CONFIG_HIGH_RES_TIMERS=y
— posted by くま at 08:30 pm Comment [2]
うぉ----- DoP万歳!
[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..768000 Hz
Sample formats: S16_LE, S24_LE, S32_LE
Subdevice 0, name `subdevice #0'
pcm1794aハードウエアのサポート範囲を超えた値の設定に成功したと思う(笑)
DSD256音源ファイル再生時のステータスは
access: RW_INTERLEAVED
format: S24_LE
subformat: STD
channels: 2
rate: 705600 (705600/1)
period_size: 16384
buffer_size: 65536
うお-----DoPが大好きだぁ(笑)
これからデバック作業に入るが
上手く行けばDSD256も問題なくDoPで再生出来るハズ!
※パッチの内容について現在 精査中です...
参考URL DSD再生環境(1) 混乱していますがこれでOK?
*** 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..768000 Hz
Sample formats: S16_LE, S24_LE, S32_LE
Subdevice 0, name `subdevice #0'
pcm1794aハードウエアのサポート範囲を超えた値の設定に成功したと思う(笑)
DSD256音源ファイル再生時のステータスは
access: RW_INTERLEAVED
format: S24_LE
subformat: STD
channels: 2
rate: 705600 (705600/1)
period_size: 16384
buffer_size: 65536
うお-----DoPが大好きだぁ(笑)
これからデバック作業に入るが
上手く行けばDSD256も問題なくDoPで再生出来るハズ!
※パッチの内容について現在 精査中です...
参考URL DSD再生環境(1) 混乱していますがこれでOK?
— posted by くま at 08:49 am
ちょっと_φ(・_・
USB type-C ケーブルでの給電はしっかりしたモノを使わないと
エライ事になるとの認識がある。(笑)
今回は U2C-AC10BK
これを使用して問題はなかった。ほっとする。
RaspberryPi400とか言うモノを今イジっています。
エライ事になるとの認識がある。(笑)
今回は U2C-AC10BK
これを使用して問題はなかった。ほっとする。
RaspberryPi400とか言うモノを今イジっています。
— posted by くま at 08:42 am
ArchlinuxベースでRaspberryPi用のrt-kernel作成
2023/3/26
ArchlinuxベースでRaspberryPi用の最新rt-kernel作成につまずいている。
何が問題なのか?
カーネル再構築に必要な最新sourceにrtパッチが綺麗に当たらない。
(腕がないのか??)
少し古いsourceでも上手く当たる組合せを探したが見つからない。
恐ろしいのが arch/arm64/configs/ に
bcm2711_defconfigが存在しないsourceが多く存在している事。
まだまだ勉強が足りないのかなぁ...
参考URL 64bit rt-kernel への道(2)
何が問題なのか?
カーネル再構築に必要な最新sourceにrtパッチが綺麗に当たらない。
(腕がないのか??)
少し古いsourceでも上手く当たる組合せを探したが見つからない。
恐ろしいのが arch/arm64/configs/ に
bcm2711_defconfigが存在しないsourceが多く存在している事。
まだまだ勉強が足りないのかなぁ...
参考URL 64bit rt-kernel への道(2)
— posted by くま at 09:33 am
CLK5340基板接続(3)
2023/3/24
今、RaspberryPi4で聴いていますが良いです。(意味不明^^;
以前からラズパイの弱点はクロックだ!と言われていましたが
確かそうだと納得です。
SRC4137基板との組合せでMCLKを付加してDACに入れると結構良いと感じていたが
今回SRC4137基板に入れるクロックをCLK5340基板から供給すると
やはり更に音質が向上する事が判明!(個人的見解です。)
素晴らしい....音のうなりというか余韻というかタメが聴こえる。
デスクトップPCに比較して音の勢い力がちょっと...と思っていたのだが
これが弱っちいと思っていたラズパイの音なのかと(笑)
余計なHAT基板は使わず絶縁ICを介したI2S差動送信基板のみを搭載しています。
こうするとドライバーの制約が少なくなり
無茶?なサンプリング周波数で試す事が可能になります(笑)
紫色のジャンパー線が見えています。
これは10PIN2列のヘッダーから送信基板一次側の電源を供給するために配線しましたが
元々は近くに見えるJSTのXH 2PINのコネクターから電源を供給する様に設計していました。
どんどん電源を独立供給設計にしていたら電源基板が何枚も必要になって
前段の基板からi2s信号と電源を貰う様に追加配線したものです。
苦肉の策なワケです(笑)
以前からラズパイの弱点はクロックだ!と言われていましたが
確かそうだと納得です。
SRC4137基板との組合せでMCLKを付加してDACに入れると結構良いと感じていたが
今回SRC4137基板に入れるクロックをCLK5340基板から供給すると
やはり更に音質が向上する事が判明!(個人的見解です。)
素晴らしい....音のうなりというか余韻というかタメが聴こえる。
デスクトップPCに比較して音の勢い力がちょっと...と思っていたのだが
これが弱っちいと思っていたラズパイの音なのかと(笑)
余計なHAT基板は使わず絶縁ICを介したI2S差動送信基板のみを搭載しています。
こうするとドライバーの制約が少なくなり
無茶?なサンプリング周波数で試す事が可能になります(笑)
紫色のジャンパー線が見えています。
これは10PIN2列のヘッダーから送信基板一次側の電源を供給するために配線しましたが
元々は近くに見えるJSTのXH 2PINのコネクターから電源を供給する様に設計していました。
どんどん電源を独立供給設計にしていたら電源基板が何枚も必要になって
前段の基板からi2s信号と電源を貰う様に追加配線したものです。
苦肉の策なワケです(笑)
— posted by くま at 10:17 pm
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基板にも例のクロック基板から闘魂注入をして見たい。
どんな音になるのかなぁ マスターモードからの引き出しは関係してくるのかどうか?
参考URL Use I2C on raspberry pi with archlinux-arm
一応何時も左右チャンネルがテレコになっていないか?のテスト用音源で
スクリプトを実行した時に左右チャンネルが入れ替わるのが確認出来た。
ただし自分の環境ではスクリプト内容を少しイジらないと動作しなかった。
こんな感じに変更した。
# 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基板にも例のクロック基板から闘魂注入をして見たい。
どんな音になるのかなぁ マスターモードからの引き出しは関係してくるのかどうか?
参考URL Use I2C on raspberry pi with archlinux-arm
— posted by くま at 05:27 pm
Comments