CODIUM NR+ — Guide de démarrage

Codium Electronique · version 0.1 · 2026-10

Construit sur l'Opener Initiative

Opener Initiative

L'Opener Initiative développe une implémentation open source de la pile DECT NR+. Codium Electronique est membre de son Technical Steering Group (TSG) : les cartes NR+Gate et NR+Node font tourner la pile Opener dès la sortie de la boîte, et leur support matériel est maintenu avec les exemples Opener.

Les cartes

NR+Gate
NR+Node
NR+Gate — passerelle sink FTNR+Node — nœud capteur sans fil
HôteRockchip RK3566 (4× Cortex-A55), 2 Go de RAM, Linux basé sur UbuntunRF9151 Cortex-M33, Zephyr RTOS
Radio NR+Nordic nRF9151, connecteur antenne SMANordic nRF9151, connecteur antenne U.FL / IPEX
PériphériquesLTE Fibocom MA510, GNSS u-blox MAX-M10S, Wi-Fi 5 + BT 5.0, Ethernet 10/100nRF54L15 (BLE 5.4 / NFC), SHT40, LSM6DSL, LIS2MDL, PMIC nPM1300, 2 Mo de flash
AlimentationPoE IEEE 802.3at (injecteur fourni)Charge USB-C, batterie Li-ion (JST PH)
Cibles Zephyrcod_nrp_gw/nrf9151/nscod_nrp_node/nrf9151/ns
cod_nrp_node/nrf54l15/cpuapp
ProgrammationJ-Link sur le port Tag-Connect pour le premier flash, puis OpenOCD sur le RK3566 via GPIO-SWD — à distance, sans sondeSEGGER J-Link sur le port SWD
Logs nRF9151RTT relayé sur le port 9090, UART sur /dev/ttyS7RTT via le J-Link

Flasher l'exemple Opener

L'exemple dectnrp-driver du dépôt opener-samples pilote directement la couche physique DECT NR+ : deux cartes avec le même firmware se synchronisent et s'échangent un ping-pong toutes les 3 s. Les définitions de cartes proviennent du module Codium SDK (codz-sdk), récupéré par west.

Mettre en place l'environnement

Prérequis : les dépendances Zephyr et le SEGGER J-Link Software Pack. Le manifest fige nRF Connect SDK en version v3.4.0.

git clone https://github.com/Opener-Initiative/opener-samples && cd opener-samples
python3 -m venv .venv && source .venv/bin/activate && pip install west
west init -l samples && west update && west zephyr-export
west packages pip --install -- -c constraints.txt
west sdk install
west config build.dir-fmt "{source_dir}/../../build/{board}/{app}"
west config build.sysbuild true

Compiler

Les deux cartes compilent le même exemple ; seule la cible change.

APP=samples/dectnrp-driver
OPTS="-DEXTRA_DTC_OVERLAY_FILE=boards/nrf9151dk_nrf9151_ns.overlay \
      -DEXTRA_CONF_FILE=boards/nrf9151dk_nrf9151_ns.conf"
west build -p -b cod_nrp_gw/nrf9151/ns   $APP -- $OPTS   # NR+Gate
west build -p -b cod_nrp_node/nrf9151/ns $APP -- $OPTS   # NR+Node

Premier flash (J-Link)

Chaque nRF9151 a d'abord besoin du firmware modem PHY DECT NR+ (mfw-nr+-phy_nrf91x1_2.0.0), puis de l'application. Connectez un J-Link au port SWD de la carte — sur la NR+Gate, son connecteur Tag-Connect.

nrfutil device recover
nrfutil device program --firmware mfw-nr+-phy_nrf91x1_2.0.0.zip
west flash -d build/cod_nrp_node/nrf9151/ns/dectnrp-driver   # ou build/cod_nrp_gw/...

Le firmware modem DECT NR+ est distribué par Nordic Semiconductor : demandez-le à votre contact commercial Nordic.

Reflasher la NR+Gate à distance

Une fois le firmware modem en place, le nRF9151 de la passerelle peut être reprogrammé via le serveur OpenOCD embarqué (voir Programmation et débogage distants du nRF9151), avec n'importe quel client GDB — sans sonde :

arm-zephyr-eabi-gdb build/cod_nrp_gw/nrf9151/ns/dectnrp-driver/zephyr/zephyr.elf \
  -ex "target extended-remote <IP>:3333" -ex "monitor reset halt" \
  -ex "load build/cod_nrp_gw/nrf9151/ns/dectnrp-driver/zephyr/tfm_merged.hex" \
  -ex "monitor reset run" -ex "detach" -ex "quit"

Chaque carte affiche SYNCHRONIZED dans son log RTT dès qu'elle entend l'autre, puis affiche le message Hello World! reçu.

Hôte Linux de la passerelle

Se connecter en SSH

La passerelle obtient son adresse en DHCP sur Ethernet, et fait tourner son propre point d'accès Wi-Fi. Son nom embarque le numéro de série imprimé sur le boîtier.

ÉlémentValeur
Nom d'hôtenrp-gw-<SERIAL>
Point d'accès Wi-FiSSID nrp-gw-<SERIAL>, mot de passe NRP-GW-<SERIAL>, passerelle sur 192.168.22.1
Connexionutilisateur codium, mot de passe codium (également dans les groupes sudo et gpio)
SSHssh codium@192.168.22.1 via le point d'accès Wi-Fi, ou ssh codium@<IP> avec l'adresse DHCP Ethernet
Console sériettyS2, 1 500 000 bauds

Changez le mot de passe par défaut (passwd) avant de connecter la passerelle à un réseau partagé.

Lire les données GNSS

Le u-blox MAX-M10S diffuse des trames NMEA sur /dev/ttyS9 à 9600 bauds :

minicom -b 9600 -D /dev/ttyS9      # $GNRMC, $GNGGA, ... (sortie : Ctrl-A X)

Démarrer le modem LTE

Le Fibocom MA510 n'est pas alimenté au démarrage : il faut pulser sa ligne de mise sous tension, puis laisser ModemManager établir le bearer (remplacez <operator_apn> par l'APN de votre opérateur).

sudo gpioset -c gpiochip3 -t 1s,0 29=1       # pulse de mise sous tension, ~15 s pour l'énumération
mmcli -L                                     # le modem doit apparaître comme /Modem/0
sudo mmcli -m 0 --simple-connect="apn=<operator_apn>"
sudo mmcli -b 0                              # statut du bearer, adresse IP
ping -c 3 codium.fr

Le port AT du modem est /dev/ttyUSB1 (115200 bauds). Pour une connexion persistante, créez plutôt un profil NetworkManager : sudo nmcli con add type gsm ifname ttyUSB1 con-name LTE gsm.apn <operator_apn>.

Programmation et débogage distants du nRF9151

La configuration OpenOCD cod-nrp-gw.cfg (dans /usr/share/openocd/site/) pilote les lignes SWD et reset du nRF9151 via linuxgpiod. Démarrez le serveur sur la passerelle, lié à son adresse réseau ; la configuration RTT optionnelle relaie les logs du nRF9151 :

openocd -f cod-nrp-gw.cfg -c "bindto <IP>" -f cod-nrp-gw-rtt.cfg
PortServiceUtilisation depuis votre poste
3333Serveur GDBarm-zephyr-eabi-gdb zephyr.elf -ex "target extended-remote <IP>:3333"
4444Telnettelnet <IP> 4444, puis reset halt, program <file>.hex verify reset
9090Relais RTTnc <IP> 9090 — log Zephyr en direct
—Log UARTsur la passerelle : minicom -b 115200 -D /dev/ttyS7

Dans VS Code, utilisez cortex-debug avec "servertype": "external", "gdbTarget": "<IP>:3333" (exemple dans le README du Codium SDK).