夏真っ盛りで日々、最高気温が更新されています。
毎年いつ落ち着くのかと、祈るばかりです。
こんにちは、Ndictです。
今年の夏の対策として、毎日3L以上を飲むように心掛けています。
今回はRocky Linux 10でSDRをしていきたいと思います。
前提として
1. RTL-SDR ドライバは EPEL10 に公式 RPM(rtl-sdr-2.0.1-3.el10_0)が存在。依存関係を壊さず導入可能です。
2. gqrx は現時点で EL9 までしかビルドしていません。
- EL9 RPM を強引に導入すると libqt5core.so.5()(64bit) など ABI 不一致で破綻します。
- 代替として公式 AppImage(v2.17.6 以降)を採用。RTL-SDR ドライバ同梱しています。
そこで「RTL-SDRはEPEL10のRPMをそのまま」「gqrxはAppImageで完結」という切り分けが現状、ノーコンパイルで動く唯一のルートになると考えました。
目標は NHK-FM 82.5 MHz を聞くことです。
動作環境
バージョンは 10.0 (Red Quartz) です。
使うドングルはRTL-SDR.COM V4です。
アンテナはRTL-SDR.COM V4付属のアンテナを使用します。
手順
- RTL-SDR インストール
- DVB ドライバ競合回避
- udev ルール&権限設定
- FUSE3/fusermount 準備
- ドングルテスト
- gqrx AppImage 取得
- gqrx の初回起動とセットアップ
① RTL-SDR インストール
1 2 3 4 5 |
sudo dnf install rtl-sdr -y sudo dnf install epel-release -y sudo dnf update -y |
これで /usr/bin/rtl_test
などが使えるようになります。
EPEL10 の rtl-sdr-2.0.1-3.el10_0
をそのまま使えるのは良いですね。
② DVB ドライバ競合回避
USB を挿した瞬間に DVB 用カーネルモジュール が先に掴むと
rtl_test: usb_open(): Device or resource busy
が出てハマります。
デフォルトで有効な DVB USB ドライバをブラックリスト化します。
②-① ブラックリスト設定
1 2 3 4 5 6 7 8 9 10 11 12 |
# /etc/modprobe.d/rtl-blacklist.conf を新規作成 sudo tee /etc/modprobe.d/rtl-blacklist.conf <<'EOF' blacklist dvb_usb_rtl28xxu blacklist rtl2832 blacklist r820t EOF sudo depmod -a # 既にロード済みならその場で外す sudo modprobe -r dvb_usb_rtl28xxu rtl2832 r820t || true |
②-② 成功確認
1 2 3 4 |
lsmod | grep -E 'dvb_usb_rtl28xxu|rtl2832|r820t' \ || echo '競合モジュールなし → OK' |
③udev ルール&権限設定
1 2 3 4 5 6 7 8 9 10 11 12 |
sudo groupadd -f plugdev sudo usermod -aG plugdev $USER sudo tee /etc/udev/rules.d/20-rtlsdr.rules <<'EOF' SUBSYSTEM=="usb", ATTR{idVendor}=="0bda", ATTR{idProduct}=="2838", \ GROUP="plugdev", MODE="0666" EOF sudo udevadm control --reload-rules sudo udevadm trigger |
再ログイン必須 — 反映しないと rtl_test
が Permission Denied になります。
※ DVB ドライバでハマらないための確認
WindowsではZadigでWinUSBを手動バインドしないと始まりませんが、
「Linuxなら挿すだけで OK」というのは半分合っています。
実際には カーネルの DVB ドライバが先に掴む/udev 権限が足りないことの 2 点で沼ります。
僕もここで何度もハマったので、チェックリストが以下のものになります。
「rtl_testがBusy/Permission denied になる」という人は試してみてください。
追加チェックリスト(沼脱出フロー)
手順 | コマンド | 成功の目安 |
---|---|---|
① DVB モジュール残存チェック | lsmod | grep rtl28 |
何も表示されない |
② 残っていたら即アンロード | sudo modprobe -r dvb_usb_rtl28xxu rtl2832 r820t |
エラーなしで戻る |
③ ブラックリスト確認 | grep dvb_usb_rtl28xxu /etc/modprobe.d/* |
1 行以上ヒット |
④ udev 反映確認 | udevadm info -q property -n /dev/bus/usb/* | grep GROUP |
GROUP=plugdev |
⑤ 権限テスト | groups $USER | grep plugdev |
plugdev が含まれる |
⑥ ドングル再挿→テスト | rtl_test -t |
R828D / 2.4 MS/s が走る |
ワンライナーで一気に診断したい場合
1 2 3 4 5 6 7 |
lsmod | grep -E 'dvb_usb_rtl28xxu|rtl2832|r820t' \ && echo '⚠️ DVB ドライバが残っています' \ || echo '✅ DVB ドライバはロードされていません' # ⚠️ が出たら ②→③ を、Permission denied が出たら ④→⑤ をチェック |
④FUSE3/fusermount 準備
これで gqrx の AppImage が Cannot mount AppImage…
で落ちることはありません。
① FUSE3 本体とランタイムを導入
1 2 3 |
sudo dnf install -y fuse3 fuse3-libs |
② 旧コマンド名 “fusermount” 互換リンクを作成
1 2 3 |
sudo ln -sf /usr/bin/fusermount3 /usr/bin/fusermount |
③ fusermount3 に set-uid を付与(念のため)
1 2 3 |
sudo chmod u+s /usr/bin/fusermount3 |
AppImage は内部で fusermount
を呼び出します。
Rocky Linux 10 には fusermount3
しか無いのでリンクで名前を合わせるだけ。
インストールするのは fuse2 系ではなく fuse3 パッケージです。
⑤ドングルテスト
1 2 3 |
rtl_test -t |
- E4000は旧世代チップ。V4はR828Dなので見つかりません。
- rtl_testはE4000用ルーチンに入れなかった時点でテストを切り上げる仕様です。
- デバイス検出・サンプリング開始まで通っているので ハードもドライバも問題ないことがわかります。
⑥gqrx AppImage 取得
公式リリース 2.17.6 以降は RTL-SDR ドライバを内包しています。
ダウンロード先はユーザー環境ごとの「ダウンロード」フォルダ(日本語環境なら ~/ダウンロード
)です。
1 2 3 4 5 |
cd "$(xdg-user-dir DOWNLOAD)" wget https://github.com/gqrx-sdr/gqrx/releases/download/v2.17.6/Gqrx-2.17.6-x86_64.AppImage chmod +x Gqrx-2.17.6-x86_64.AppImage |
起動時に xcb plugin
エラーが出た場合は Qt の X11 プラットフォームプラグインが不足しているだけなので、下記を追加して再実行してください。
1 2 3 |
sudo dnf install -y libxcb xcb-util* |

⑦gqrx の初回起動とセットアップ
1 2 3 4 |
cd "$(xdg-user-dir DOWNLOAD)" ./Gqrx-2.17.6-x86_64.AppImage & |
項目 | 設定例 | 補足 |
---|---|---|
Device | RTLSDR Blog V4 … | 1 行だけ出る |
Input rate | 2400000 | 2.4 MSPS(V4の安定上限) |
Audio output → Device | Default | 無音なら変更 |
FM 82.5 MHz(NHK-FM 東京)の例
- 上部周波数バーをダブルクリック →
82.500.000
と入力 → Enter - 右ペイン Mode →
WFM
- Gain スライダーを 15–30 dB で上下し S/N を調整
- オーディオ波形が動き、スピーカーから放送が流れれば成功
ここまで来れば Rocky Linux 10 上で RTL-SDR + gqrx が動作完了です。
あとはお好きな局へ周波数を合わせて遊んでみてください。
※注意事項 — 音が出ない/起動しない
症状 | 確認ポイント | コマンド・操作 | 解決例 |
---|---|---|---|
AppImage が「xcb plugin」エラー | Qt X11 プラグイン不足 | — | sudo dnf install -y libxcb xcb-util* |
ウォーターフォールは動くが無音 | gqrx Audio ウィンドウ | Mute OFF / Gain ≥0 dB | Mute 切替 |
ALSA ミュート | alsamixer -D hw:0 → M |
MM → 00 |
|
ドングル認識せず | USB | lsusb | grep 2838 |
ポート変更 |
DVB 衝突 | lsmod | grep rtl28 |
sudo modprobe -r … |
|
rtl_test Permission denied | plugdev 反映 | groups $USER | grep plugdev |
再ログイン / 追加 |
AppImage mount 失敗 | FUSE3 | — | sudo dnf install fuse3 fuse3-libs sudo ln -sf /usr/bin/fusermount3 /usr/bin/fusermount |
見落としがちなのは ALSA の Headphon チャンネルがミュート のケースです。
alsamixer
で緑 (00) 表示になれば 大丈夫です。
以上、 Rocky Linux 10 でも SDR が実現できました。
最後まで読んでくださり、ありがとうございました。