NRC7394 SW PKG v1.3.2

Posted by: otsuka

Newracom の 11ah chip nrc7394 を使用するためのソフトウェアパッケージ
nrc7394_sw_pkg の更新版
NRC7394 SW PKG v1.3.2
が2026年3月28日にリリースされました。

Release Note によると、
・version 6.9 以上の Linux kernel との互換性修正
・局所発振器(Local Oscillator)からの漏洩信号による断続的なパフォーマンス低下の改善
などが行われたとあります。


一つ前の version NRC7394 SW PKG v1.3.1 を更新する形でインストールする手順を以下に紹介します。

Newracom の github の nrc7394_sw_pkg のリリースページ
https://github.com/newracom/nrc7394_sw_pkg/releases/tag/v1.3.2
から nrc7394_sw_pkg-1.3.2.tar.gz をダウンロードし展開しておきます。
pi@raspberrypi:~ $ cd Downloads/
pi@raspberrypi:~/Downloads $ curl -LOJ https://github.com/newracom/nrc7394_sw_pkg/archive/refs/tags/v1.3.2.tar.gz
pi@raspberrypi:~/Downloads $ tar xvf nrc7394_sw_pkg-1.3.2.tar.gz

Release Note に "Added device tree support for hardware reset GPIO" とあるように
device tree にも更新があるので device tree をビルドして更新します。
pi@raspberrypi:~/Downloads $ cd nrc7394_sw_pkg-1.3.2/package/dts/
pi@raspberrypi:~/Downloads/nrc7394_sw_pkg-1.3.2/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.2/package/dts $ sudo cp newracom.dtbo /boot/overlays/

あとは package/evk/sw_pkg/ の update.sh を実行すれば完了、のはずなのですが、
Raspberry Pi OS 11 の kernel 6.1.21 向けにビルドすると
nrc kernel driver に以下のようなコンパイルエラーが発生することが分かっています。
pi@raspberrypi:~/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc $ make

make[1]: Entering directory '/usr/src/linux-headers-6.1.21-v7l+'
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-mac80211.o
/home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-mac80211.c: In function ‘nrc_register_hw’:
/home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-mac80211.c:5618:8: error: implicit declaration of function ‘regulatory_set_wiphy_regd_sync_rtnl’; did you mean ‘regulatory_set_wiphy_regd_sync’? [-Werror=implicit-function-declaration]
 5618 |  ret = regulatory_set_wiphy_regd_sync_rtnl(hw->wiphy,
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |        regulatory_set_wiphy_regd_sync
cc1: all warnings being treated as errors
make[2]: *** [scripts/Makefile.build:250: /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-mac80211.o] Error 1
make[1]: *** [Makefile:2012: /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.1.21-v7l+'
make: *** [Makefile:58: modules] Error 2
これは、国コードなど regulatory domain を同期的に設定する関数 regulatory_set_wiphy_regd_sync_rtnl を
わざわざ使うようなコードが追加されたものの、この関数は kernel 5.12 以降整理され
regulatory_set_wiphy_regd_sync を使えばいいように変更されすでに存在しないからです。

このエラーが出ないよう、以下のように予め nrc-mac80211.c の 5618 行目を修正しておきます。
pi@raspberrypi:~/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc $ diff -u nrc-mac80211.c.orig nrc-mac80211.c
--- nrc-mac80211.c.orig	2026-04-16 18:23:35.011320298 +0900
+++ nrc-mac80211.c	2026-04-16 18:23:50.711132579 +0900
@@ -5615,7 +5615,7 @@
 	 * workqueue that may run after hostapd has already started.
 	 * _sync_rtnl requires the caller to hold the RTNL lock. */
 	rtnl_lock();
-	ret = regulatory_set_wiphy_regd_sync_rtnl(hw->wiphy,
+	ret = regulatory_set_wiphy_regd_sync(hw->wiphy,
 		(struct ieee80211_regdomain *)&mac80211_regdom);
 	rtnl_unlock();
 	if (ret)

このように修正しておいてから update.sh を実行します。
pi@raspberrypi:~/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc $ cd ../../../package/evk/sw_pkg/
pi@raspberrypi:~/Downloads/nrc7394_sw_pkg-1.3.2/package/evk/sw_pkg $ ./update.sh 
nrc_pkg_v1_3_1
Backup previous package
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.2/package/src/nrc/nrc-mac80211.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-mac80211-twt.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-twt-sched.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-trx.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-init.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-debug.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/hif.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/wim.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-fw.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-netlink.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-hif-cspi.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/mac80211-ext.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-stats.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-pm.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-dump.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-bd.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-s1g.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-trace.o
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc-ps.o
  LD [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc.o
  MODPOST /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/Module.symvers
  CC [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc.mod.o
  LD [M]  /home/pi/Downloads/nrc7394_sw_pkg-1.3.2/package/src/nrc/nrc.ko
make[1]: Leaving directory '/usr/src/linux-headers-6.1.21-v7l+'
Building cli_app
libcli_app.a
cli_app
Change mode
Done

これで /home/pin/nrc_pkg にインストールされていた 1.3.1 は nrc_pkg_v1_3_1 にリネームされ、
1.3.2 が /home/pi/nrc_pkg にインストールされます。

あとは日本国内使用向けに /home/pin/nrc_pg/script/start.py の max_txpwr を 13 に設定し、
10% duty 設定を以下のように行なったら
duty_cycle_enable = 1        # 0 (disable) or 1 (enable)
duty_cycle_window =  1000000
duty_cycle_duration = 100000
OS を再起度して更新した newracom.dtbo を読み込んで起動すれば更新完了です。