BC-11AH-A/A2 の Raspberry Pi OS 13 (Trixie) での利用手順

Posted by: otsuka

BC-11AH-A/A2用設定済み起動イメージファイル2025.11 Release
のページでも言及したように、
Newracom の NRC7394 Software Package for Host mode (Linux OS)
・ネットワークの管理が dhcpcd で行われていること
・linux kernel が 6.1.* であること
が正常に動作する要件でした。

このため、Raspberry Pi OS 12 (Bookworm) から
・ネットワーク管理が dhcpcd から NetworkManager になった
・2025年5月6日リリースのイメージ以降 linux kernel が標準で 6.12.* になった
ことで、
Raspberry Pi OS 12 (Bookworm) 以降の Raspberry Pi OS で起動している
・Raspberry Pi 3
・Raspberry Pi 4
64bit の Raspberry Pi OS 12 (Bookworm) 以降の Raspberry Pi OS でしか起動できない
・Raspberry Pi 5
では NRC7394 Software Package for Host mode (Linux OS) を必要とする BC-11AH-A/A2 は
使用することができませんでした。

BC-11AH-A/A2 はもともとは
できるだけ NRC7394 Software Package for Host mode (Linux OS) をそのまま使用していただく
ことを想定していたのですが、BC-11AH-A/A2 を新しい環境でも使用していただくため
必要最小限の変更を加えて Raspberry Pi OS 13 (trixie) で BC-11AH-A/A2 を使えるようにする手順
を紹介します。

ここで行う変更は BeatCraft の責任で試行して紹介しているものです。


1. kernel 6.12.x 対応版 nrc driver を含む nrc7394_sw_pkg の設定とインストール

nrc7394_sw_pkg を folk し、 Raspberry Pi kernel 6.12.* でもビルドが成功するよう nrc driver を調整しました。
以下の github リポジトリから BeatCraft 改変版の nrc7394_sw_pkg をダウンロードし
Raspberry Pi OS 11 (Bullseye) 向けに設定するのと同じ手順で設定してください。

https://github.com/BeatCraft/nrc7394_sw_pkg/tree/kernel_6_12_support
pi@raspberrypi:~ $ cd Downloads
pi@raspberrypi:~/Downloads $ git clone --branch kernel_6_12_support https://github.com/BeatCraft/nrc7394_sw_pkg.git nrc7394_sw_pkg-kernel_6_12_support
Cloning into 'nrc7394_sw_pkg-kernel_6_12_support'...
remote: Enumerating objects: 1378, done.
remote: Counting objects: 100% (339/339), done.
remote: Compressing objects: 100% (166/166), done.
remote: Total 1378 (delta 202), reused 231 (delta 173), pack-reused 1039 (from 1)
Receiving objects: 100% (1378/1378), 135.60 MiB | 18.70 MiB/s, done.
Resolving deltas: 100% (889/889), done.
この nrc7394_sw_pkg-kernel_6_12_support を使って
BC-11AH-A/A2用設定済み起動イメージファイル2025.11 Release
で紹介したのと同じ設定を Raspberry Pi OS 13 (Trixie) 上で行なってください。

上記ページ 「3.2. nrc7394_sw_pkg のインストール」の
update.sh 実行の際、
/home/pi/Downloads/nrc7394_sw_pkg-kernel_6_12_support/package/src/nrc/
の nrc driver がビルドされますが、
Raspberry Pi 4 で起動している場合には
kernel 6.12.47+rpt-rpi-v8 向けにビルドされ、
Raspberry Pi 5 で起動している場合には
kernel 6.12.47+rpt-rpi-2712 向けにビルドされて
出来た nrc.ko が
/home/pi/nrc_pkg/sw/driver/nrc.ko
にコピーされます。

2. NetworkManager の停止

nrc7394_sw_pkg で 11ah インタフェースを様々なモードで起動するスクリプト start.py は
dhcpcd での管理を前提に記述されているので、
NetworkManager を停止します。
NetworkManager による管理に戻せるようアンインストールはしません。

pi@raspberrypi:~ $ sudo systemctl stop NetworkManager.service
pi@raspberrypi:~ $ sudo systemctl disable NetworkManager.service

3. iptables、dhcpcd5、openresolv のインストールと設定

dhcpcd パッケージをインストールします。
dhcpcd と連携して dns 設定を行う openresolv もインストールします。
pi@raspberrypi:~ $ sudo apt install dhcpcd5 openresolv

また、Raspberry Pi OS 12 (Bookworm) から iptables の代わりに
nftables が default でインストールされるようになりましたが、
start.py では iptables で NAT 等の設定をするので iptables もインストールします。
pi@raspberrypi:~ $ sudo apt install iptables

上記パッケージのインストール後、
Raspberry Pi OS 12 (Bookworm) 以降削除されてしまった dhcpcd の設定ファイルを
設定した nrc7394_sw_pkg の中からコピーしておきます。
pi@raspberrypi:~ $ cd nrc_pkg/etc/dhcpcd/
pi@raspberrypi:~/nrc_pkg/etc/dhcpcd $ sudo cp dhcpcd.conf /etc/

4. dnsmasq のインストールと dhcpcd との連携の調整

次に主に AP 動作のときに必要となる dnsmasq もインストールします。
pi@raspberrypi:~ $ sudo apt install dnsmaswq

Raspberry Pi OS 11 (Bullseye) までは dnsmasq をインストールしたら
dhcpcd で取得した dns 情報を dhcpcd の resolvconf hook がうまく処理して
/etc/resolv.conf と /run/dnsmasq/resolv.coonf を書き換え
名前解決ができるようにしてくれたのですが、
Raspberry Pi OS 13 (Trixie) に dhcpcd を入れても
Raspberry Pi OS 12 (Bookworm) 以降に入った NetworkManager 向けの調整のためか
dnsmasq と連携する設定を正しく書き換えてくれなくなってしまいました。

そこで、dhcpcd の hook を新たに追加してしまいます。

/lib/dhcpcd/dhcpcd-hooks/

90-dnsmasq-resolvconf
という名前で以下の内容のファイルを作成します。

#!/bin/sh
# 90-dnsmasq-resolvconf
# eth0 の DHCP 情報から /run/dnsmasq/resolv.conf を生成する

IFACE="eth0"
SRC="/run/resolvconf/interfaces/${IFACE}.dhcp"
DST_DIR="/run/dnsmasq"
DST="${DST_DIR}/resolv.conf"

# dhcpcd のフック理由のうち、IP が変わるタイミングでだけ実行
case "$reason" in
    BOUND|RENEW|REBIND|REBOOT|INFORM)
        [ "$interface" = "$IFACE" ] || exit 0

        if [ -f "$SRC" ]; then
            mkdir -p "$DST_DIR"
            # nameserver 行だけ抜き出して書き出す
            grep '^[[:space:]]*nameserver[[:space:]]' "$SRC" > "$DST"
        fi
        ;;
    *)
        exit 0
        ;;
esac

作成後これに実行権をつけます。
pi@raspberrypi:~ $ sudo chmod +x 90-dnsmasq-resolvconf

これで dhcpcd が dhcp サーバーから取得した dns 情報を
openresonv の resolvconf が /run/dnsmasq/resolv.conf に書き出し、
/etc/resolv.conf は 127.0.0.1 のローカルを見に行くよう設定され
dnsmasq が dnsフォワーダーとして動作して名前解決が行われるようになります。


ここまでの設定を行うことで
Raspberry Pi OS Trixie でも BC-11AH-A/A2 が使えるようになります。


ただし GUI に一点調整不能の問題があります。
Raspberry Pi OS 11 (Bullseye) までは
dhcpcd で設定されたインタフェースの接続状況が
GUI のツールバーのネットワークアプレットに表示されたのですが、
NetworkManager での管理に変更された Raspberry Pi OS 12 (Bookworm) 以降 では
ツールバーのネットワークアプレットも NetworkManager と連携するよう変更されており、
その状態の Raspberry Pi OS 13 (Trixie) に dhcpcd をインストールしているため
ツールバーのネットワークアプレットは eth0 や 11ah の wlan0 が正しく接続できていても
接続されていない状態の表示のままになります。
この点だけは現状で解決方法がありません。
ターミナルから ifconfig や iw コマンドでネットワークの状態を確認してください。