[!CAUTION] The software package released here is specifically designed for the NRC7292 EVK, and the accompanying board data files in https://github.com/newracom/nrc7292_sw_pkg/tree/master/package/evk/binary and https://github.com/newracom/nrc7292_sw_pkg/tree/master/package/evk/sw_pkg/nrc_pkg/sw/firmware are intended solely for this model. If users plan to use this software package with other devices that incorporate the NRC7292 chip, they should utilize the board data file supplied by the device's vendor.
[!IMPORTANT] For support regarding the SAE Hash-to-Element (H2E), please refer to https://github.com/newracom/nrc7292_sw_pkg/blob/master/README-H2E.md
package
├── doc
├── evk
│ ├── binary
│ └── sw_pkg
│ └── nrc_pkg
└── src
├── cli_app
├── ft232h-usb-spi
├── nrc
└── nrc_hspi_simple
NRC7292 Software package is provided in this repository. Please refer to the following git command to get it.
cd ~/
git clone https://github.com/newracom/nrc7292_sw_pkg.git
You can get Device Tree Source (DTS) for NRC7292 in dts directory. Please install DT overlay by following commands below.
cd /boot/overlays
sudo dtc -I dts -O dtb -o newracom.dtbo newracom.dts
sudo vi /boot/config.txt
dtoverlay=newracom
Please upload the contents in host/evk/sw_pkg to sw_pkg directory on host platform, and follow below commands to install release package.
cd sw_pkg
chmod +x ./update.sh
./update.sh
And you can also install key binaries or build host driver as below.
Please follow below commands to install firmware, driver and cli_app.
cd evk/binary
cp ./cli_app ~/nrc_pkg/script
cp ./nrc.ko ~/nrc_pkg/sw/driver
cp ./nrc7292_cspi.bin ~/nrc_pkg/sw/firmware
You can get the pre-built host driver in nrc_pkg/sw/driver, but you can build it by youself by following below commands.
cd package/src/nrc
make clean
make
cp nrc.ko ~/nrc_pkg/sw/driver
If you want to apply a specific package to your exiting package directory, you can choose one of following methods.
Let's assume that you have v1.3.0 and want to apply v1.3.1 to your package location.
This needs your cloned repository and the internet connection.
cd repo/nrc7292_sw_pkg
git pull
git tag -l
git checkout v1.3.1
There are a couple of configurable parameters as below.
# Default Configuration (you can change value you want here)
##################################################################################
# Raspbery Pi Conf.
max_cpuclock = 1 # Set Max CPU Clock : 0(off) or 1(on)
##################################################################################
# Firmware Conf.
model = 7292 # 7292/7393/7394
fw_download = 1 # 0(FW Download off) or 1(FW Download on)
fw_name = 'uni_s1g.bin'
##################################################################################
# DEBUG Conf.
# NRC Driver log
driver_debug = 0 # NRC Driver debug option : 0(off) or 1(on)
dbg_flow_control = 0 # Print TRX slot and credit status in real-time
#--------------------------------------------------------------------------------#
# WPA Supplicant Log (STA Only)
supplicant_debug = 0 # WPA Supplicant debug option : 0(off) or 1(on)
#--------------------------------------------------------------------------------#
# HOSTAPD Log (AP Only)
hostapd_debug = 0 # Hostapd debug option : 0(off) or 1(on)
#################################################################################
# CSPI Conf. (Default)
spi_clock = 20000000 # SPI Master Clock Frequency
spi_bus_num = 0 # SPI Master Bus Number
spi_cs_num = 0 # SPI Master Chipselect Number
spi_gpio_irq = 5 # NRC-CSPI EIRQ GPIO Number
# BBB is 60 recommanded.
spi_polling_interval = 0 # NRC-CSPI Polling Interval (msec)
#
#
ft232h_usb_spi = 0 # FTDI FT232H USB-SPI bridge
# 1 : NRC-CSPI_EIRQ Input Polling
# 2 : NRC-CSPI Registers Polling
#################################################################################
max_txpwr = 24 # Maximum TX Power (in dBm) epa = 0 # (7394 only) External PA : 0(none) or 1(used) bd_name = '' # board data name (bd defines max TX Power per CH/MCS/CC)
##################################################################################
guard_int = 'long' # Guard Interval ('long'(LGI) or 'short'(SGI)) ##################################################################################
short_bcn_enable = 1 # 0 (disable) or 1 (enable)
legacy_ack_enable = 0 # 0 (NDP ack mode) or 1 (legacy ack mode)
beacon_bypass_enable = 0 # 0 (Receive beacon frame from only AP connected while connecting)
ampdu_enable = 2 # 0 (disable) 1 (manual) 2 (auto)
ndp_ack_1m = 0 # 0 (disable) or 1 (enable)
ndp_preq = 0 # 0 (Legacy Probe Req) 1 (NDP Probe Req)
cqm_enable = 1 # 0 (disable) or 1 (enable)
relay_type = 1 # 0 (wlan0: STA, wlan1: AP) 1 (wlan0: AP, wlan1: STA) relay_nat = 1 # 0 (not use NAT) 1 (use NAT - no need to add routing table)
power_save = 0 # STA (power save type 0~3) ps_timeout = '3s' # STA (timeout before going to sleep) (min:1000ms) sleep_duration = '3s' # STA (sleep duration only for nonTIM deepsleep) (min:1000ms) listen_interval = 1000 # STA (listen interval in BI unit) (max:65535)
bss_max_idle_enable = 1 # 0 (disable) or 1 (enable) bss_max_idle = 1800 # time interval (e.g. 1800: 1843.2 sec) (1 ~ 65535)
sw_enc = 0 # 0 (HW), 1 (SW), 2 (HYBRID: SW GTK HW PTK)
peer = 0 # 0 (disable) or Peer MAC Address static_ip = 0 # 0 (disable) or Static IP Address batman = 0 # 0 (disable) or 'bat0' (B.A.T.M.A.N routing protocol)
self_config = 0 # 0 (disable) or 1 (enable) prefer_bw = 0 # 0: no preferred bandwidth, 1: 1M, 2: 2M, 4: 4M dwell_time = 100 # max dwell is 1000 (ms), min: 10ms, default: 100ms
credit_ac_be = 40 # number of buffer (min: 40, max: 120)
discard_deauth = 1 # 1: discard TX deauth frame on STA
bitmap_encoding = 1 # 0 (disable) or 1 (enable)
reverse_scrambler = 1 # 0 (disable) or 1 (enable)
use_bridge_setup = 0 # AP & STA : 0 (not use bridge setup) or n (use bridge setup with eth(n-1))
##################################################################################
You can apply your parameters by updating start.py script file.
vi nrc_pkg/script/start.py
#### Access Point (AP) running procedure
The following is the parameters for start.py script file.
channel [S1G Channel Number] * Only for Sniffer & AP
sniffer_mode [0:Local | 1:Remote] * Only for Sniffer
mesh_mode [0:MPP | 1:MP | 2:MAP] * Only for Mesh
mesh_peering [Peer MAC address] * Only for Mesh
mesh_ip [Static IP address] * Only for Mesh
ibss_ip [0:DHCPC or static IP | 1:DHCPS] * Only for IBSS
Example:
OPEN mode STA for US : ./start.py 0 0 US
Security mode AP for US : ./start.py 1 1 US
Local Sniffer mode on CH 40 for Japan : ./start.py 2 0 JP 40 0
SAE mode Mesh AP for US : ./start.py 4 3 US 2
Mesh Point with static ip : ./start.py 4 3 US 1 192.168.222.1
Mesh Point with manual peering : ./start.py 4 3 US 1 8c:0f:fa:00:29:46
Mesh Point with manual peering & ip : ./start.py 4 3 US 1 8c:0f:fa:00:29:46 192.168.222.1
OPEN mode IBSS for US with DHCP server : ./start.py 5 0 US 1
Security mode IBSS for US with DHCPC client : ./start.py 5 1 US 0
Security mode IBSS for US with static IP : ./start.py 5 1 US 0 192.168.200.17
Note:
sniffer_mode should be set as '1' when running sniffer on remote terminal
MPP, MP mode support only Open, WPA3-SAE security mode
The following shows an example of AP running for US channel, and its channel can be configured in nrc_pkg/script/conf/US/ap_halow_open.conf. For WPA2/WPA3 modes, please refer to nrc_pkg/script/conf/US/ap_halow_[sae|owe|wpa2].conf files.
cd nrc_pkg/script ./start.py 1 0 US
#### Station (STA) running procedure
The following shows an example of STA running for US channel, and its channel can be configured in nrc_pkg/script/conf/US/sta_halow_open.conf. For WPA2/WPA3 modes, please refer to nrc_pkg/script/conf/US/sta_halow_[sae|owe|wpa2].conf files.
cd nrc_pkg/script ./start.py 0 0 US
#### Sniffer running procedure
The following shows an example of local mode sniffer running for US channel 159.
cd nrc_pkg/script ./start.py 2 0 US 159 0