2026年08月01日

Radioberry が “No local devices found!” になった話

カーネルアップデートで kernel module が置いていかれた

久しぶりに Radioberry HF SDR Transceiver Pi HAT を Raspberry Pi 4 に挿して、openHPSDR を起動してみたところ、No local devices found! と表示されてしまいました。

No local devices found!.png

最初は HAT の接触不良や、Radioberry 側のサービス停止を疑いました。HATを差し替えた直後だったので、GPIOの接触が悪いのかなとも思いました。

しかし、確認していくと原因はもっとソフトウェア寄りでした。

症状

Radioberry の service 状態を確認すると、radioberry.service が起動と停止を繰り返していました。

sudo systemctl status radioberry --no-pagerjournalctl -u radioberry -b --no-pager | tail -100

ログを見ると、次のようなエラーが出ていました。

chmod: cannot access '/dev/radioberry': No such file or directory

つまり、Radioberry の daemon が使うはずの /dev/radioberry が存在していません。

さらに確認すると、

lsmod | grep radioberrymodinfo radioberry 2>/dev/nullls -l /dev/radioberry

いずれも期待した結果が出ませんでした。

原因

現在動いているカーネルを確認すると、

uname -r

結果は次の通りでした。

6.12.75+rpt-rpi-v8

一方で、Radioberry の kernel module は古いカーネル用のものしか残っていませんでした。

find /lib/modules -name '*radioberry*' -print

結果は、

/lib/modules/6.1.0-rpi7-rpi-v8/kernel/drivers/sdr/radioberry.ko

でした。

つまり、以前は 6.1.0-rpi7-rpi-v8 用の radioberry.ko で動いていたものの、Raspberry Pi OS のカーネルが 6.12.75+rpt-rpi-v8 に更新され、Radioberry の kernel module が現在のカーネルに対応していない状態になっていました。

Radioberry のような out-of-tree kernel module は、カーネルが更新されると再ビルドが必要になります。今回はまさにそれでした。

復旧作業

Radioberry のソースツリーに移動します。

cd ~/Radioberry-2.x/SBC/rpi-4/device_driver/driver

必要であれば、カーネルヘッダとビルド環境を入れます。

sudo apt updatesudo apt install -y raspberrypi-kernel-headers build-essential git

ドライバを再ビルドします。

make cleanmake

ビルド自体は成功し、radioberry.koradioberry.dtbo が生成されました。

ただし、sudo make install は途中で失敗しました。

chmod: cannot access '/dev/radioberry': No such file or directory

ここで分かったのは、kernel module 自体はロードされても、Device Tree Overlay が有効になっていなければ probe() が呼ばれず、/dev/radioberry が作られないということです。

Device Tree Overlay の設定

まず、生成された overlay を /boot/firmware/overlays/ にコピーします。

sudo cp radioberry.dtbo /boot/firmware/overlays/

次に、現在のカーネル用に kernel module をコピーします。

sudo mkdir -p /lib/modules/$(uname -r)/kernel/drivers/sdrsudo cp radioberry.ko /lib/modules/$(uname -r)/kernel/drivers/sdr/sudo depmod -a

そして /boot/firmware/config.txt に Radioberry の overlay を追加します。

sudo nano /boot/firmware/config.txt

末尾に以下を追加しました。

dtoverlay=radioberry

私の環境では、すでに次のような表示用 overlay が入っていました。

dtoverlay=vc4-kms-v3dmax_framebuffers=2

これは Raspberry Pi の画面表示用なので、Radioberry とは別です。その下に dtoverlay=radioberry を追加しました。

設定後、再起動します。

sudo reboot

復旧確認

再起動後、dmesg を確認すると、今度は probe() が呼ばれていました。

dmesg | grep -i radioberry

ログには次のような表示が出ました。

inside radioberry_probe functionradioberry - Device property 'rx-sample-gpio' found!Radioberry: registered correctly with major number 239Radioberry char: device class created correctlyRadioberry: The rx samples pin is mapped to IRQ: 58inside loading_radioberry_gateware functionRadioberry gateware file size: 335337

さらに、/dev/radioberry も作成されました。

ls -l /dev/radioberry

結果は、

crw------- 1 root root 239, 0 /dev/radioberry

でした。

権限を変更してから、Radioberry service を起動します。

sudo chmod 666 /dev/radioberrysudo systemctl enable radioberrysudo systemctl start radioberrysudo systemctl status radioberry --no-pager

最終的に、service は正常に起動しました。

Active: active (running)Main PID: radioberry

これで Radioberry は復旧しました。

まとめ

今回の原因は、HAT の故障や接触不良ではなく、Raspberry Pi OS のカーネル更新により、Radioberry の kernel module が現在のカーネルに対応しなくなっていたことでした。

復旧のポイントは次の3つです。

1. 現在のカーネル用に radioberry.ko を再ビルドする
2. radioberry.dtbo を /boot/firmware/overlays/ に置く
3. /boot/firmware/config.txt に dtoverlay=radioberry を追加する

Radioberry のように kernel module や gateware が絡む環境では、動いているSDカード自体がかなり重要な資産になります。
動作確認できた時点で、SDカードのイメージを保存しておくべきだったと反省しました。

今後、安定運用するなら、カーネルを固定しておくのも一つの方法です。

sudo apt-mark hold raspberrypi-kernel raspberrypi-kernel-headers

ただし、セキュリティアップデートや他の機能との兼ね合いもあるので、開発用と安定運用用のSDカードを分けておくのが一番安全だと思います。

posted by MON at 00:00| Comment(0) | TrackBack(0) | 月記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
【今是昨非】http://nomulabo.com/