BC-11AH-A/A2用設定済み起動イメージファイル2025.11 Release

Posted by: otsuka

BC-11AH-A の後継機 BC-11AH-A2 の発売開始に伴い、
これら両機種を使用するのに必要な Newracom のソフトウェアの 2025年11月時点での最新 version
NRC7394 SW PKG v1.3.1
を設定済みの起動イメージファイルの 32bit version と 64bit version を作成しました。

以下のURLからダウンロードしていただけます。
https://github.com/BeatCraft/raspios-img_for_BC11-AH/releases/tag/2025.11

64bit version
BC-11AH-A_2025-05-06-raspios-bullseye-arm64_nrc7394_sw_pkg-1.3.1.img.xz
32bit version
BC-11AH-A_2025-05-06-raspios-bullseye-armhf_nrc7394_sw_pkg-1.3.1.img.xz

Raspberry Pi Imager などで microSD カードに書き込んで使用してください。
イメージ作成時に rootfs パーティションを縮小していますので、
使用時には起動後 raspi-config のメニューから
6 Advanced Options --> A1 Expaned Filesystem
を選択しパーティションを拡大して使用してください。

これらのイメージは
NRC7394 Evaluation Kit User Guide (Raspberry Pi setup)
UG-7394-018-Raspberry_Pi_setup.pdf
の手順に従って作成したものですが、細部に調整を加えながら設定しておりますので
作成の詳細な手順を以下に記載します。


BC-11AH-A/A2 を使用するためには chip vendor である Newracom の用意した
NRC7394 Software Package for Host mode (Linux OS)
を利用する必要があります。

上記の github の NRC7394 Software Pacakge ページ上には
Newracom の開発ボードである nrc7394 EVK 向けのみ対応との注意書きがありますが、
BeatCraft 製の Raspberry Pi 802.11ah HAT である BC-11AH-A/A2 でも正常に動作することを確認しています。

設定は NRC7394 Evaluation Kit user Guide (Raspberry Pi setup) に従って以下の順序で行います。

  1. Raspberry Pi 起動用 microSD カードの作成
  2. Raspberry Pi OS の設定
  3. NRC7394 Software Pacakge のインストールと設定

NRC7394 Software Pacakge (以後 nrc7394_sw_pkg と呼びます)は
Raspberry Pi 3 および Raspberry Pi 4 での動作を前提にしています。

Raspberry Pi 5 に関しては
Raspberry Pi OS 12 (Bookworm) の 2023年10月10日 Release から起動できる OS が提供されていますが、
nrc7394_sw_pkg は dhcpcd でネットワークを管理する前提で構成されているため
Raspberry Pi OS 11 (Bullseye) までしか動作対象としておらず、
nrc7394_sw_pkg に修正・改造を加えていない状態では正常に動作させることができません。
Raspberry Pi 5 で動作させるための設定方法については別途記述します

BC-11AH-A2 のハードウェアの詳細に関しては、
https://github.com/BeatCraft/11ah/tree/main/Hardware/BC-11AH-A2
にあります
BC-11AH-A2_users_manual.pdf
を参照してください。


1. Raspberry Pi 起動用 microSD カードの作成

raspberrypi.com のダウンロードサイト
https://downloads.raspberrypi.com/
から Raspberry Pi OS 11 (bullseye) の最後のリリースをダウンロードします。

64bit version を使用する場合は
2025-05-06-raspios-bullseye-arm64.img.xz
32bit version を使用する場合は
2025-05-06-raspios-bullseye-armhf.img.xz
をダウンロードします。

ダウンロードした OS イメージファイルを Raspberry Pi Imager で開いて microSD カードに書き込むか、
xz コマンドで圧縮を展開した後 img ファイルを dd コマンドで microSD カードに書き込む、などの方法で
Raspberry Pi 起動用 microSD カードを作成します。


2. Raspberry Pi OS の設定

1 の手順で作成した起動用 microSD カードで Raspberry Pi を起動したら以下の設定を行います。

2.1. pi ユーザーの作成
nrc7394_sw_pkg は pi ユーザーでの実行を前提にスクリプトが構成されています。
そのため 1 の手順で作成した起動用 microSD で Raspberry Pi を最初に起動した際に pi ユーザーを作成してください。
1 の手順で起動用 microSD カードを作るのに Raspberry Pi Imager を使うなら、書き込みの途中で
「設定を編集する」ボタンを押して予め pi ユーザーを作成しておくこともできます。
以後の手順で Raspberry Pi OS 上での操作は pi ユーザーで実行することを前提にしています。

2.2. 32bit kernel の有効化
この手順は Raspberry Pi 4 で 32bit version を使用する場合にのみ必要になります。
Raspberry Pi 3 で 32bit version を使う場合は最初から 32bit kernel で起動するのでこの手順は不要です。
また 64bit version を使う場合は kernel も userland も 64bit なのでこの手順は不要です。

Raspberry Pi 4 向けの Raspberry Pi OS は 6.1.* kernel 以降 32bit version でも 64bit kernel が使われるようになりました。
https://github.com/raspberrypi/firmware/commit/379d5bfa60bf3b0afff413a18344aaaf3bde0083
このまま使用すると後の手順でビルドする NRC7394 host driver は
32bit ユーザーランド上で armhf の gcc でビルドされるため 32bit 版 modules になり
64bit kernel には insmod できないので
/boo/config.txt に arm_64bit=0 を記述して再起動し 32bit kernel が使われるようにします。

2.3. SSH、SPI、Serial Port の有効化
raspi-config を使って ssh、spi、serial port を有効にします。
serial port は login shell としての使用は no で無効のままにし hardware interface のみ yes で有効にします。

2.4. 追加 package のインストール
最初にインストール済みの default packages を更新してから
今後の Raspberry Pi OS の設定や使用に必要となるアプリケーションをインストールしておきます。
インストールするアプリケーションは好みに応じて選択・調整してください。
pi@raspberrypi:~ $ sudo apt update
pi@raspberrypi:~ $ sudo apt upgrade
pi@raspberrypi:~ $ sudo apt install vim lv tree screen
次に NRC7394 host driver をビルドするのに必要な kernel header をインストールします。
pi@raspberrypi:~ $ sudo apt install raspberrypi-kernel-headers
さらに、11ah でのスループット計測用に iperf、iperf3 をインストールします。
pi@raspberrypi:~ $ sudo apt install iperf iperf3

2.5. 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 brcmutil
11ah といっしょに on board の Wifi と Blutooth も使用したい場合は、
一旦 nrc7394_sw_pkg の設定を最後まで行なって 11ah の正常動作が確認できたら
/boot/config.txt と /etc/modprobe.d/raspi-blacklist.conf からこれらの記述を削除して
Wifi と Bluetooth に必要な設定を適宜行ってください。
ただし、11ah のインタフェースと on board Wifi を同時に使用する際には
nrc7394_sw_pkg 内のスクリプトの中でインタフェース名の調整などが必要になります。
(nrc7394_sw_pkg は on board Wifi を使用しない前提で
11ah インタフェースだけを wlan0、wlan1 と想定しているため)

2.6. Newracom Wifi に必要な package のインストールと設定
11ah インタフェースを AP (Access Point) として使用する際に必要なパッケージをインストールします。
pi@raspberrypi:~ $ sudo apt install hostapd dnsmasq
11ahインタフェースを 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.7. 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.3.1 から
nrc7394_sw_pkg-1.3.1.tar.gz をダウンロードし展開しておきます。
pi@raspberrypi:~ $ cd Downloads/
pi@raspberrypi:~/Downloads $ curl -LOJ https://github.com/newracom/nrc7394_sw_pkg/archive/refs/tags/v1.3.1.tar.gz
pi@raspberrypi:~/Downloads $ tar xvf nrc7394_sw_pkg-1.3.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 を insmod することができません。
そこで、Blutooth や Wifi と同様に Device Tree Blob Overlay の仕組みを使って
User mode SPI device driver を無効にします。
まずそのために用意された dts をビルドして dtbo にし、/boot/overlay/ に配置します。
pi@raspberrypi:~ $ cd Downloads/nrc7394_sw_pkg-1.3.1/dts/
pi@raspberrypi:~/Downloads/nrc7394_sw_pkg-1.3.1/package/dts $ dtc -I dts -O dtb -o newracom.dtbo newracom_for_5.16_or_later.dts
pi@raspberrypi:~/Downloads/nrc7394_sw_pkg-1.3.1/package/dts $ sudo cp newracom.dtbo /boot/overlays/
起動時にこの Device Tree Blob Overlay が読み込まれるよう /boot/config.txt に前述の Wifi、Bt 無効化に
さらに以下の記述を追加し、再起動します。
dtoverlay=disable-bt
dtoverlay=disable-wifi
dtoverlay=newracom
以下のように spidev0.0 が無くなりspidev0.1 だけになっていたら正しく設定が反映されています。
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 をインストールします。
この update.sh の中で nrc7394_sw_pkg を構成するファイル一式のコピーの後
NRC7394 host driver と、それを操作するための cli_app バイナリが src からビルドされ
所定の PATH (nrc.ko は /home/pi/nrc_pkg/sw/driver/ 、cli_app は /home/pi/nrc_pkg/script/ )にコピーされます。
pi@raspberrypi:~ $ cd Downloads/nrc7394_sw_pkg-1.3.1/package/evk/sw_pkg/
pi@raspberrypi:~/Downloads/nrc7394_sw_pkg-1.3.1/package/evk/sw_pkg $ ./update.sh
Copy new package
apply nrc_pkg
Model number: 7394
Kernel version: 6.1.21
Building nrc.ko

make[1]: Entering directory '/usr/src/linux-headers-6.1.21-v7l+'
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc-mac80211.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc-mac80211-twt.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc-twt-sched.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc-trx.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc-init.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc-debug.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/hif.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/wim.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc-fw.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc-netlink.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc-hif-cspi.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/mac80211-ext.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc-stats.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc-pm.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc-dump.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc-bd.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc-s1g.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc-trace.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc-ps.o
  LD [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc.o
  MODPOST /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/Module.symvers
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc.mod.o
  LD [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.1/package/src/nrc/nrc.ko
make[1]: Leaving directory '/usr/src/linux-headers-6.1.21-v7l+'
Building cli_app
removed 'libcli_app.a'
removed 'cli_app'
libcli_app.a
cli_app
Change mode
Done

3.4. NewraPeek のインストール
Sniffer mode の際に使用する packet キャプチャーソフト NewraPeek をインストールします。
NewraPeek は Wireshark を 11ah 対応にしたものです。
詳細や使用方法はUG-7394-011-NewraPeek.pdfで確認してください。
以下の手順は 32bit 版にインストールする手順です。
    64bit 版へのインストールは Raspberry Pi OS の元になっている debian の multiarch の仕組みを利用します。
    64bit 版への Newrapeek のインストール手順は
    Raspberry Pi OS 64bit 版への Newrapeek のインストール
    をご覧ください。
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 libminizip1
この際 Wireshark が標準ユーザーでもパケットキャプチャーできる設定にするか聞かれますので
yes を選択してインストールしてください。
インストール完了後以下のコマンドで pi ユーザーを wireshark グループに参加させます。
pi@raspberrypi:~/nrc_pkg/script/sniffer/Wireshark_4.0.5 $ sudo usermod -a -G wireshark pi
これをしておかないと、
GUI の ツールバーの Internet メニューから Wireshark を起動してパケットキャプチャーを開始したとき
ネットワークデバイスへのアクセス権がないためキャプチャーができません。

NewraPeek は 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

3.5. hostapd と wpa_supplicant の更新
WPA3-SAE の H2E(Hash-to-Element) サポート のため、hostapd と wpa_supplicant を更新します。
Raspberry Pi OS 11 の default の hostapd 2.9 と wpa_supplicant 2.9 は
sae_pwe(PWE導出のためのSAEメカニズム)の設定に対応していないので、
UG-7394-001-EVK User Guide (Host Mode).pdf の pp.37-38
Appendix A.
Upgrade hostapd & wpa_supplicant for supporting WPA3
に従ってソースコードから hostapd と wpa_supplicant を更新します。
このドキュメント内の手順では 2.10 に更新していますが、すでに 2.11 の安定版が Release されていますので
2.11 に更新します。

3.5.1. hostapd
pi@raspberrypi:~ $ cd Downloads/
pi@raspberrypi:~/Downloads $ wget http://w1.fi/releases/hostapd-2.11.tar.gz
pi@raspberrypi:~/Downloads $ tar xvf hostapd-2.11.tar.gz
pi@raspberrypi:~/Downloads $ sudo apt-get update
pi@raspberrypi:~/Downloads $ sudo apt-get install libnl-3-dev libnl-genl-3-dev libssl-dev
pi@raspberrypi:~/Downloads $ cd hostapd-2.11/hostapd
pi@raspberrypi:~/Downloads/hostapd-2.11/hostapd $ cp defconfig .config
vim などで .config の中の以下の設定のコメントアウトを外して有効に編集する。
CONFIG_OWE=y
CONFIG_WPS=y
CONFIG_SAE=y
CONFIG_TESTING_OPTIONS=y
応答の遅い nrc7292 搭載のデバイスと接続する可能性がある場合は
hostapd-2.11/src/ap/wpa_auth.c の79行目の eapol_key_timeout_subseq を
vim などで編集し以下のように元の 1000 から倍の 2000 に伸ばす。
static const u32 eapol_key_timeout_subseq = 2000; /* ms */
ビルドしてインストール
pi@raspberrypi:~/Downloads/hostapd-2.11/hostapd $ make 
pi@raspberrypi:~/Downloads/hostapd-2.11/hostapd $ sudo make install

3.5.2. wpa_supplicant
pi@raspberrypi:~ $ 
pi@raspberrypi:~ $ cd Downloads/
pi@raspberrypi:~/Downloads $ wget http://w1.fi/releases/wpa_supplicant-2.11.tar.gz
pi@raspberrypi:~/Downloads $ tar xvf wpa_supplicant-2.11.tar.gz
pi@raspberrypi:~/Downloads $ sudo apt-get update
pi@raspberrypi:~/Downloads $ sudo apt-get install libnl-3-dev libnl-genl-3-dev libssl-dev
pi@raspberrypi:~/Downloads $ sudo apt-get install libdbus-1-dev libdbus-glib-1-dev
pi@raspberrypi:~/Downloads $ cd wpa_supplicant-2.11/wpa_supplicant
pi@raspberrypi:~/Downloads/wpa_supplicant-2.11/wpa_supplicant $ cp defconfig .config
vim などで .config の中の以下の設定のコメントアウトを外して有効に編集する。
CONFIG_OWE=y
CONFIG_SAE=y (元々に有効になっている)
CONFIG_MESH=y
CONFIG_WPS=Y (元々に有効になっている)
以下の設定はコメントアウトして無効にする。
#CONFIG_DRIVER_WIRED=y
#CONFIG_DRIVER_MACSEC_LINUX=y
#CONFIG_CTRL_IFACE_DBUS_NEW=y
#CONFIG_WNM=y (元々に無効になっている)
ビルドしてインストール
pi@raspberrypi:~/Downloads/wpa_supplicant-2.11/wpa_supplicant $ make 
pi@raspberrypi:~/Downloads/wpa_supplicant-2.11/wpa_supplicant $ sudo make install

3.6. 日本国内で使用するための設定
11ah を日本国内で使用するために必要な設定を
11ah インタフェースを各モードに設定して起動するスクリプト start.py の中の設定項目に行います。
/home/pi/nrc_pkg/script/start.py の
53行目
最大出力は 24 から 13 に変更します。
max_txpwr         = 13       # Maximum TX Power (in dBm)
167行目から169行目
duty 比設定を有効にし、
duty window(この時間の間に)と duty cycle(どれだけの間電波を出すか)をマイクロ秒で設定します。
以下の例は設定可能な最短の間隔で、 1秒間に0.1秒電波を出す設定です。
# Duty cycle configuration
duty_cycle_enable = 1      # 0 (disable) or 1 (enable)
duty_cycle_window =  1000000
duty_cycle_duration = 100000
10% duty の詳細に関してはBC-11AH-Aでの10% dutyの設定をご覧ください。

これで全てのパッケージのインストールと設定が完了し、
BC-11AH-A/A2 が使用できる状態になりました。
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
で確認してください。