Raspberry Pi OS 最新対応状況(2023年10月時点)

Posted by: otsuka

ビート・クラフトの 11ah 無線通信モジュール BC-11ah は Newracom の 11ah chip NRC7292 を使用しており、
動作させる際には NRC7292 Software Package for Host mode (Linux OS) の使用を前提にしています。

この nrc7292_sw_pkg は、
  • nrc7292 chip用の linux kernel driver
  • 11ah ネットワーク設定用コマンドラインアプリケーション cli_app
  • 上記を wpa_supplicant や hostapd と連携動作させ AP や STA として動作させるための python スクリプト
から構成されています。

これらのうち nrc7292 chip用 linux kernel driver は linux kernel の mac80211 に依存しているのですが、
linux kernel 5.19 で変更が加えられる前の mac80211 driver API を前提にしていたため
最初の公開リリース v1.3.0 から v1.4 (2023.06.16) までは linux 5.18 以下の version でしか
動作させることができませんでした。
しかし Raspberry Pi OS の kernel version は以下のような対応関係で
Raspbian Kernel Releases
Raspberry Pi OS の version ごとに次々新しくなり
2023年5月3日以降リリースの Raspberry Pi OS は全て kernel 6.1.x になっているため
利用できなくなってしまっていました。
(手元で patch を当ててビルドすることはできていましたが正式対応ではありませんでした。)

ところが2023年9月9日にリリースされた nrc7292_sw_pkg v1.4.1 から
ようやく正式に kernel 6.1.x がサポートされたため、
2023年10月18日時点で最新の version である Raspberry Pi OS 2023年10月10日版 で動作させてみました。

使用した Raspberry Pi OS は、
Raspberry Pi OS with desktop
Release date: October 10th 2023
System: 32-bit
Kernel version: 6.1
Debian version: 12 (bookworm)
kernel が 6.1.x に更新されているだけでなく、
ベースになっている Debian version も 12 (bookworm) に更新されています。
この環境に v1.4.1 版の Raspberry Pi 向け setting マニュアル に従って
nrc7292_sw_pkg v1.4.1 をインストールして動作確認しました。

AP 側にはフルノシステムズの 11ah アクセスポイント ACERA 330 を使用し、
BC-11ah を STA にして接続しました。

start.py を STA モード、WPA3-personal で実行すると以下のようになります。
pi@raspberrypi:~ $ cd nrc_pkg/script/
pi@raspberrypi:~/nrc_pkg/script $ ./start.py 0 3 JP
Done.
Done.
------------------------------
Model            : 7292
STA Type         : STA
Country          : JP
Security Mode    : WPA3-SAE
BD Name          : nrc7292_bd.dat
AMPDU            : AUTO
CQM              : ON
Download FW      : uni_s1g.bin
MAX TX Power     : 13 dBm
Power Save Type  : Always On
Listen Interval  : 1000
------------------------------
NRC STA setting for HaLow...
[*] Set Max CPU Clock on RPi
1400000
1400000
1400000
1400000
Done
[0] Clear
sudo: iptables: command not found
sudo: iptables: command not found
Failed to stop dhcpcd.service: Unit dhcpcd.service not loaded.
[1] Copy and Set Module Parameters
total 664
drwxr-xr-x 2 pi   pi     4096 Oct 17 18:27 .
drwxr-xr-x 4 pi   pi     4096 Oct 17 18:12 ..
-rwxrwxrwx 1 pi   pi      271 Oct 17 18:12 copy
-rwxr-xr-x 1 pi   pi     2104 Oct 17 18:12 nrc7292_bd.dat
-rwxr-xr-x 1 pi   pi   331436 Oct 17 18:12 nrc7292_cspi.bin
-rwxr-xr-x 1 root root 331436 Oct 18 18:07 uni_s1g.bin
-rwxr-xr-x 1 root root 331436 Oct 18 18:07 /lib/firmware/uni_s1g.bin
====================================
 STA INTERFACE    : wlan0
 USE DHCP Client
====================================
Config for STA is done!
IP and DHCP config done
[2] Set Initial Country
[3] Loading module
sudo insmod /home/pi/nrc_pkg/sw/driver/nrc.ko  fw_name=uni_s1g.bin listen_interval=1000 bd_name=nrc7292_bd.dat
[4] Set Maximum TX Power
Type     : limit        Tx power : 13
                        OK
[*] Transmission Power Control(TPC) is activated
[5] Set guard interval
OK
[*] Start DHCPCD and DNSMASQ
Failed to start dhcpcd.service: Unit dhcpcd.service not found.
[6] Start wpa_supplicant on wlan0
Successfully initialized wpa_supplicant
wlan0: SME: Trying to authenticate with 00:d0:1d:87:ba:68 (SSID='new-lab123' freq=5180 MHz)
wlan0: SME: Trying to authenticate with 00:d0:1d:87:ba:68 (SSID='new-lab123' freq=5180 MHz)
wlan0: PMKSA-CACHE-ADDED 00:d0:1d:87:ba:68 0
wlan0: Trying to associate with 00:d0:1d:87:ba:68 (SSID='XXXXX' freq=5180 MHz)
wlan0: Associated with 00:d0:1d:87:ba:68
wlan0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
wlan0: WPA: Key negotiation completed with 00:d0:1d:87:ba:68 [PTK=CCMP GTK=CCMP]
wlan0: CTRL-EVENT-CONNECTED - Connection to 00:d0:1d:87:ba:68 completed [id=0 id_str=]
[7] Connect and DHCP
Waiting for IP
Waiting for IP
Waiting for IP

nrc.ko の load も成功し wpa_supplicant での認証も成功していますが、iptables による NAT の設定は行われず
DHCP によるアドレスの取得も行われず Waiting for IP のままになってしまいます。
これは Raspberry Pi OS 12 から
  • default では iptables はインストールされず nftables だけがインストールされるようになった
  • ネットワークの設定が dhcpcd でなく NetworkManager で行われるように変更された
ためです。
Bookworm — the new version of Raspberry Pi OS の Networking のあたりに説明されています。

start.py の中では wpa_supplicant でのアソシエーションの後
dhcpcd で wlan0 に IPアドレスが付与されるまで待つようになっており、
これが行われないためこのようになっています。

start.py 実行前に予め $ apt install iptables で iptables をインストールしておき、
この Waiting for IP の状態になったら別の Terminal を起ち上げて $ sudo dhclient wlan0 を実行すると
IP アドレスが付与され、
        inet 192.168.10.163  netmask 255.255.255.0  broadcast 192.168.10.255
IP assigned. HaLow STA ready
--------------------------------------------------------------------
Done.
のように表示して start.py は正常に終了します。

このように2023年10月現在最新の Debian version: 12 (bookworm)ベースの Raspberry Pi OS は
nrc7292_sw_pkg v1.4.1 をそのままでは使用できません。
使用するためには dhcpcd で行っている設定部分を
NetworkManager のコマンドラインインタフェース nmcli で行うよう修正する
などの対応が必要になります。

一方、最新版が Debian version: 12 (bookworm)ベースになったため Legacy 扱いになった
Debian version 11: (bullseye) ベースの Raspberry Pi OS (Legacy)
Raspberry Pi OS (Legacy) with desktop
Release date: May 3rd 2023
System: 32-bit
Kernel version: 6.1
Debian version: 11 (bullseye)
では、nrc7294_sw_pkg v1.4.1 はそのままセットアップするだけで正常に動作します。
当面は Raspberry Pi OS (Legacy) での使用をお勧めします。