Third Encore

思い出すために忘れたことたち

Raspberry Pi

Raspberry PiのRoon Bridgeで設定したことまとめ

FirewallにUFWを使っている際のポート解放設定 /etc/ufw/applications.d/roonbridge [Roon Bridge] title="Roon Bridge" description="Roon Bridge" ports=1025:65535/tcp|1025:65535/udp して $ sudo ufw allow from [Your localnet]/24 to any app "Roon B…

Overlay Filesystem (OverlayFS)の導入

ざっくりルート・ディレクトリのファイル類をRAM上に展開するものとのこと。 qiita.com 試した結果分かったこと: 現状適用できるのはkernelのメインラインの5.15まで 自分でビルドしたkernelを/bootにコピーする時にsudo make installではなくsudo cp arch/a…

MacでRaspberry Pi用kernelをcross-compileする時に発生するAppArmorのエラー回避方法

security/apparmor/Makefileを下記の通り修正 # SPDX-License-Identifier: GPL-2.0 # Makefile for AppArmor Linux Security Module # obj-$(CONFIG_SECURITY_APPARMOR) += apparmor.o apparmor-y := apparmorfs.o audit.o capability.o task.o ipc.o lib.o …

Scheduling policyのFIFOとRound-robin (RR)はデフォルトでは有効になってないよって話

タイトル出オチです。RTパッチを当ててもRTなscheduling policyはデフォルトで無効です。make menuconfigする時に忘れず有効にすること。

UpmpdcliとMPDの間にSquidを挟んでキャッシュする際の設定

/etc/squid/squid.confの必要部分抜粋 refresh_pattern .(aif|aiff|wav|flac|m4a|mp3)$/i 0 0% 240 reload-into-ims ignore-reload ignore-no-cache ignore-no-store > cache_mem 2560 MB maximum_object_size_in_memory 2 GB memory_cache_mode always memo…

Raspberry Pi 4BのUSB 2.0バスパワーのカット方法

$ echo -n "1-1" | sudo tee /sys/bus/usb/drivers/usb/unbind https://artfinex.co.jp/wp/wp-content/uploads/2019/03/afx_RaspberryPiRaspbianUSB_Reset_UHF.pdf 2022年5月29日追記: 上記だとデバイスが接続されているポートをunbindするだけだったので結…

Linuxのオーディオ / 割込関連プロセスの優先度を上げる

現状core 0にOS関連、core 1にMPD、core 2にPipeWire、core 3にupmpdcliを割り当てているのですが、OS関連プロセスの中からaudio関連のプロセスの優先度を上げる方法がALSAのサイトに載っていました。 www.alsa-project.org /etc/security/limits.conf に下…

2022年4月22日のメモ

CPU idle time (CPUIdle) Governorの設定方法 $ echo "governor名" | sudo tee /sys/devices/system/cpu/cpuidle/current_governor

Raspberry Piの電源いろいろ

Anker Nano II 30W 低ノイズのGaN電源。通常のGaN電源のような、付帯音の影響と思われるギラッとした感じが控えめ。それでもGaN独特のシャッキリとした音がします。 Anker Nano II 30W (PD 充電器 USB-C)【独自技術Anker GaN II採用/PD対応/PSE技術基準適合 …

2022年4月12日のメモ

MPDのinput_cacheはローカルのファイルにしか適用されないらしい…。 github.com のでUpmpdcliが受けたファイルをキャッシュしようとするといまだにpolipoを使うことになるみたいだ。 2022年4月13日追記: polipoは古すぎるのでSquidとかPrivoxyを使えとのこと…

MPDのPipeWire plug-in

MPD -> PipeWireで音を出すのに苦労したのでメモ。 Raspberry Pi OSのapt installで入るMPDはPipeWire非対応、PipeWireをインストールした後自分でMPDをbuildすること PipeWireをupgradeした時は一度confファイル類を全削除、テンプレートからコピーすること…

MacでのLLVMを使ったRaspberry Pi 64bit kernel cross-compile

下記のページによると、基本的にはLLVMをインストールして $ make ARCH=arm64 LLVM=1 CROSS_COMPILE=aarch64-linux-gnu- が実行出来れば良い。 www.kernel.org Clang / LLVMのインストール 下記の手順に沿って実行。特に問題は起きませんでした。 students-t…

2022年1月24日のメモ

Clang / LLVMでkernelにFull LTOをかけてラズパイ上でビルドする時はメモリを6GiB弱使うっぽいのでRAMとswap合わせてそれ以上を用意しておく必要がある kernel 5.16系をLLVMでbuildしようとした時に出るエラーはCONFIG_COMPAT_VDSOを無効にすると回避出来る…

Raspberry Piのストレージ

UASP + NVMeなケース。 アイティプロテック AOK-M2NVME-U31G2 NVMe(PCI Express接続タイプ)M.2 SSDケース USB3.1Gen2接続対応 AOTECH Amazon 速度のボトルネックはケースなのでSSDは適当にケースのベンチマーク結果より速いものをチョイス。 キオクシア KIOX…

Raspberry Piのkernelのscheduler

kernelのconfigオプションで選べるschedulerは3種類 Cluster Multi-core SMT Cluster Scheduler www.phoronix.com L2 cacheなどのリソースを共有しているコアがある場合に有効、Raspberry Piはこのパターン、音の変化も最も大きく、音質に有効そう。 Multi-c…

Linuxのkernelのver.がよく分からない話

Allo Boss2を使っていて、Boss2のドライバが入っていてRTパッチが当てられるのが5.16か5.4系列で、新しい方が良いのかと思っていたのですが、新機能がどんどん追加されているのは5.14あたりのkernelらしい。 Clang / LLVM用にだけLTOやPGOが追加されているよ…

CPU governor

Userspaceに設定しておけば所望のCPU周波数が適用されるので大丈夫かと思っていたのだけど、PerfomanceとUserspaceで同じkernelでもlatencyがガクッと違った。 CPU governor Performance時のlatency CPU governor Userspace時のlatency 調べて資料を読むと、…

Realtime kernel特有のSystemdパラメータ

ここに詳しく書いてある。 access.redhat.com 実例はmoOde audioのmpd.serviceを見るとわかりやすい。 github.com

2021年12月27日のメモ

Raspberry Piのkernleのheaderのinstallは $ apt install raspberrypi-kernel-headers GCCでmakeしたkernelは起動するのにClangでmakeしたkernelが起動しなかった件、 $ sudo cp arch/arm64/boot/Image /boot/kernel8-`make kernelrelease`.img でkernel ima…

KernelのPGO

2022年1月1日追記: make KCFLAGS=-fprofile-use を実行すると、gcovを--preserve-pathオプション付きで実行した際の出力ファイル名のファイルが求められるのに/sys/kernel/debug/gcov以下のファイルは元のソースのディレクトリ構造を維持しているので、ファ…

Clang / LLVMでProfile-Guided Optimization (PGO)

ざっくり CFLAGS/CPPFLAGS="-O3 -mcpu -fcoverage-mapping -fprofile-instr-generate -gline-tables-only" LDFLAGS="-fprofile-instr-generate" \ LLVM_PROFILE_FILE="code-%p.profraw" を設定してbuild、実行。 $ cd /path/to/src して $llvm-profdata merg…

2021年12月23日のメモ

Qiitaの水が合わないのではてなに出戻り libclang_rt.profile-aarch64.aはLLVMの中のcompiler-rtに含まれている ClangとLLVMをbuildしてもインストールされなくて困って調べた。 compiler-rt.llvm.org -fprofile-instr-generateに出力パスを付けると結果が出…