BC-11AH-A (ASKEY社製モジュール搭載 Raspberry Pi 802.11ah HAT)の使用手順
Posted by: otsuka
BC-11AH-Aの終売と後継機BC-11AH-A2の発売開始に伴い、 使用するためのソフトウェアセットアップ内容の更新を行いました。 また、設定済みの OS イメージをダウンロードしていただけるようにしました。 BC-11AH-A/A2用設定済み起動イメージファイル2025.11 Release をご覧ください。
Newracom社製の 11ah chip NRC7394 を実装しているASKEY社製モジュールを搭載した Raspberry Pi 用の 11ah HAT(拡張モジュール) BC-11AH-A を発売しました。- Raspberry Pi4 起動用 microSD カードの作成
- Raspberry Pi OS の設定
- NRC7394 Software Pacakge のインストールと設定
1. Raspberry Pi4 起動用 microSD カードの作成
Raspberry Pi Imager を使用するか、 または Raspberry Pi 公式ページから OS image のダウンロード後 dd コマンドにより Raspberry Pi4 起動用 microSD カードを作成します。 OS image は 32bit 版の Raspberry Pi OS (Legacy) の Desktop を使用します。 2024年11月現在での legacy イメージ (Debian11 bullseye ベース)を使用する理由は、 nrc7394_sw_pkg の動作が dhcpcd でのネットワーク管理を前提にしており dhcpcd でネットワークが管理されているのは bullseye までだからです。 Debian12 bookworm ベースの最新のイメージからは ネットワークの設定が NetworkManager で行われるよう変更されているため そのままでは動作させることができません。 (32bit 版の GUI なし lite イメージに dhcpcd や iptables をインストールして追加の設定をすれば 最新のイメージでも動作することは確認しています。)2. Raspberry Pi OS の設定
1 の手順で作成した起動用 microSD カードで Raspberry Pi4 を起動したら以下の設定を行います。2.1. 32bit kernel の有効化
Raspberry Pi4 向けの Raspberry Pi OS は 6.1.* kernel 以降 32bit 版でも 64bit kernel が使われるようになりました。 https://github.com/raspberrypi/firmware/commit/379d5bfa60bf3b0afff413a18344aaaf3bde0083 このまま使用すると後の手順でビルドする NRC7394 host driver は 32bit ユーザーランド上でビルドされるため 32bit 版 modules になり 64bit kernel には load できないので /boo/config.txt に arm_64bit=0 を記述して再起動し 32bit kernel が使われるようにします。 (Raspberry Pi3 では最初から 32bit kernel で起動するのでこの手順は不要です。)2.2. SSH、SPI、Serial Port の有効化
raspi-config を使って ssh、spi、serial port を有効にします。 serial port は login shell としての使用は no で無効のままにし hardware interface のみ yes で有効にします。2.3. 追加 package のインストール
最初に今後の Raspberry Pi OS の設定や使用に便利なアプリケーションをインストールしておきます。 インストールするアプリケーションは好みに応じて選択・調整してください。pi@raspberrypi:~ $ sudo apt install vim lv tree screen次に NRC7394 host driver をビルドするのに必要な kernel header をインストールします。
pi@raspberrypi:~ $ sudo apt install raspberrypi-kernel-headersさらに、11ah でのスループット計測用に iperf をインストールします。
pi@raspberrypi:~ $ sudo apt install iperf iperf3
2.4. RasPi on board の Broadcom Wifi と Blutooth の無効化
既存の電波帯域と 11ah との干渉を避けて 11ah インタフェースのみを有効にするため、 Device Tree Overlay に用意されている Broadcom の Wifi と Blutooth の無効化設定を使って無効化します。 /boot/config.txt に末尾に以下の記述を追加して再起動します。dtoverlay=disable-bt dtoverlay=disable-wifiまた、Broadcom Wifi と Blutooth の driver が読み込まれないよう、 /etc/modprobe.d/raspi-blacklist.conf に以下の記述を追加します。
blacklist brcmfmac blacklist brcmutil11ah といっしょに on board の Wifi と Blutooth も使用したい場合は、 一旦これらの設定を行って 11ah の正常動作が確認できたら /boot/config.txt と /etc/modprobe.d/raspi-blacklist.conf からこれらの記述を削除して Wifi と Bluetooth に必要な設定を適宜行ってください。
2.5. Newracom Wifi に必要な package のインストールと設定
11ah インタフェースを AP (Access Point) として使用する際に必要なパッケージをインストールします。pi@raspberrypi:~ $ sudo apt install hostapd dnsmasq11ahインタフェースを STA (Station) として使用する際に誤って使われないよう、 Raspberry Pi OS の wpa_supplicant パッケージの設定ファイルをリネームしておきます。
pi@raspberrypi:~ $ cd /etc/wpa_supplicant/ pi@raspberrypi:~ $ sudo mv wpa_supplicant.conf wpa_supplicant.conf.unused
2.6. mac80211 driver の load
NRC7394 host driver が依存する mac80211 driver が OS の起動時に自動で読み込まれるよう設定します。 /etc/modules に default では i2c-dev のみが記述されているので、mac80211 を加え以下の内容になるようにします。i2c-dev mac80211
3. NRC7394 Software Pacakge のインストールと設定
Raspberry Pi OS に行っておく設定が完了したら NRC7394_SW_PKG のインストールを行います。 Newracom の github の nrc7394_sw_pkg のリリースページ https://github.com/newracom/nrc7394_sw_pkg/releases/tag/v1.2.1 から nrc7394_sw_pkg-1.2.1.tar.gz をダウンロードし展開しておきます。pi@raspberrypi:~ $ curl -LOJ https://github.com/newracom/nrc7394_sw_pkg/archive/refs/tags/v1.2.1.tar.gz pi@raspberrypi:~ $ tar xvf nrc7394_sw_pkg-1.2.1.tar.gz
3.1. dts による User mode SPI device driver の無効化
NRC7394 モジュールは SPI Master 0 で Raspberry Pi と接続されていますが、 User mode SPI device driver が load されていると chip-select ピンが busy になり NRC7394 host driver を load することができません。 そこで、Blutooth や Wifi と同様に Device Tree Blob Overlay の仕組みを使って User mode SPI device driver を無効にします。 まずそのために用意された dts をビルドして dtbo にし、/boot/overlay/ に配置します。pi@raspberrypi:~ $ cd nrc7394_sw_pkg-1.2.1/dts/ pi@raspberrypi:~/nrc7394_sw_pkg-1.2.1/package/dts $ dtc -I dts -O dtb -o newracom.dtbo newracom_for_5.16_or_later.dts pi@raspberrypi:~/nrc7394_sw_pkg-1.2.1/package/dts $ sudo cp newracom.dtbo /boot/overlays/起動時にこの Device Tree Blob Overlay が読み込まれるよう /boot/config.txt に以下の記述を追加し、再起動します。
dtoverlay=newracom以下のように spidev0.0 が無くなりspidev0.1 だけになっていたら OK です。
pi@raspberrypi:~ $ ls -l /dev/spidev* crw-rw---- 1 root spi 153, 0 Nov 6 /dev/spi0.1
3.2. nrc7394_sw_pkg のインストール
update.sh を実行し、/home/pi/ に nrc_pkg をインストールします。pi@raspberrypi:~ $ cd nrc7394_sw_pkg-1.2.1/package/evk/sw_pkg/ pi@raspberrypi:~/nrc7394_sw_pkg-1.2.1/package/evk/sw_pkg $ ./update.sh Copy new package apply nrc_pkg Change mode Done
3.3. NRC7394 host driver と cli_app の更新
インストールされた nrc_pkg 内の NRC7394 host driver は 現在起動している kernel より古い kernel 向けにビルドされているので src から再度ビルドし直して配置します。pi@raspberrypi:~ $ cd nrc7394_sw_pkg-1.2.1/package/src/nrc pi@raspberrypi:~/nrc7394_sw_pkg-1.2.1/package/src/nrc $ make clean pi@raspberrypi:~/nrc7394_sw_pkg-1.2.1/package/src/nrc $ make make[1]: Entering directory '/usr/src/linux-headers-6.1.21-v7l+' CC [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/nrc-mac80211.o CC [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/nrc-trx.o CC [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/nrc-init.o CC [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/nrc-debug.o CC [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/hif.o CC [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/wim.o CC [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/nrc-fw.o CC [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/nrc-netlink.o CC [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/nrc-hif-cspi.o CC [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/mac80211-ext.o CC [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/nrc-stats.o CC [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/nrc-pm.o CC [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/nrc-dump.o CC [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/nrc-bd.o CC [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/nrc-s1g.o LD [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/nrc.o MODPOST /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/Module.symvers CC [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/nrc.mod.o LD [M] /home/pi/nrc7394_sw_pkg-1.2.1/package/src/nrc/nrc.ko make[1]: Leaving directory '/usr/src/linux-headers-6.1.21-v7l+' pi@raspberrypi:~/nrc7394_sw_pkg-1.2.1/package/src/nrc $ cp nrc.ko /home/pi/nrc_pkg/sw/driver/また、NRC7394 host driver を操作する cli_app バイナリも src からビルドして更新します。
pi@raspberrypi:~ $ cd nrc7394_sw_pkg-1.2.1/package/src/cli_app/ pi@raspberrypi:~/nrc7394_sw_pkg-1.2.1/package/src/cli_app $ make libcli_app.a cli_app pi@raspberrypi:~/nrc7394_sw_pkg-1.2.1/package/src/cli_app $ cp cli_app /home/pi/nrc_pkg/script/
3.4. NewraPeek のインストール
Sniffer mode の際に使用する packet キャプチャーソフト NewraPeek をインストールします。 NewraPeek は Wireshark を 11ah 対応にしたものです。 詳細や使用方法はUG-7394-011-NewraPeek.pdfで確認してください。pi@raspberrypi:~ $ cd nrc_pkg/script/sniffer/Wireshark_4.0.5/このディレクトリにある README.txt のインストール手順に従います。 まず Raspberry Pi OS 11 (bullseye) の Wireshark 3.4.16 の関連パッケージをインストールします。
pi@raspberrypi:~/nrc_pkg/script/sniffer/Wireshark_4.0.5 $ sudo apt install -y wireshark lxqt-sudo omniidl libpcap0.8-dev python3-ply libsnacc0c2 snacc libminizip1NewraPeek は deb パッケージのバイナリで提供されていますので、deb ディレクトリに移動し ディレクトリ内にある Wireshark-4.0.5 11ah 対応改変版 deb パッケージで default の Wireshark 3.4.16 を上書きします。
pi@raspberrypi:~/nrc_pkg/script/sniffer/Wireshark_4.0.5 $ cd deb/ pi@raspberrypi:~/nrc_pkg/script/sniffer/Wireshark_4.0.5/deb $ sudo dpkg -i lib*.deb pi@raspberrypi:~/nrc_pkg/script/sniffer/Wireshark_4.0.5/deb $ sudo dpkg -i wireshark*.deb pi@raspberrypi:~/nrc_pkg/script/sniffer/Wireshark_4.0.5/deb $ sudo dpkg -i tshark*.debこれで全てのパッケージのインストールと設定が完了し、 BC-11AH-A が使用できる状態になりました。 11ah インタフェースの操作は /home/pi/nrc_pkg/script/ にある start.py、stop.py などのスクリプトと /home/pi/nrc_pkg/script/conf ディレクトリ内にある設定ファイルで行っていくことになります。 実際の操作の詳細は UG-7394-001-EVK User Guide (Host Mode).pdf で確認してください。