Skip to content
Jason Reiss edited this page Jun 12, 2025 · 13 revisions

Work in progress on mts-wip branch.

See zephyr/samples/boards/multitech directory. https://github.com/MultiTechSystems/zephyr/tree/mts-wip/samples/boards/multitech

Supported Boards

  • mDot : multitech_mdot
    • Support for built-in flash and SX1272 radio
  • xDot : multitech_xdot
    • Support for built-in eeprom and SX1272 radio
  • xDot AD : multitech_xdot_ad
    • Support for built-in flash and eeprom and SX1262 radio
  • xDot ES : multitech_xdot_es
    • Support for external flash and SX1262 radio

Build instructions

mDot

west build --board multitech_mdot --build-dir build/mdot/lorawan_shell zephyr/samples/boards/multitech/lorawan/shell

Defining the channel plan using command line options

west build --board multitech_mdot --build-dir build/mdot/lorawan_shell zephyr/samples/boards/multitech/lorawan/shell -- -DCONFIG_LORAMAC_REGION_AU915=n -DCONFIG_LORAMAC_REGION_US915=n -DCONFIG_LORAMAC_REGION_EU868=n -DCONFIG_LORAMAC_REGION_EU868=y

Otherwise this can be set in prj.conf for the sample application.

xDot

west build --board multitech_xdot --build-dir build/xdot/lorawan_shell zephyr/samples/boards/multitech/lorawan/shell

xDot AD

west build --board multitech_xdot_ad --build-dir build/xdot-ad/lorawan_shell zephyr/samples/boards/multitech/lorawan/shell

xDot ES

west build --board multitech_xdot_es --build-dir build/xdot-es/lorawan_shell zephyr/samples/boards/multitech/lorawan/shell

Dot Examples

Flash

Simple example of reading/writing FLASH device on boot

EEPROM

Simple example of reading/writing EEPROM device on boot

LoRa

See zephyr samples

  • zephyr/samples/drivers/lora/send
  • zephyr/samples/drivers/lora/receive

LoRaWAN

Certification

LCTT Certification test application

Simple modification to LoRaMAC-node is needed to pass ADR tests. Add StopRetransmission when ChannelsNbTrans is updated by LinkADRReq, otherwise retransmissions start with the previous uplink packet being resent.

zephyrproject\modules\lib\loramac-node\src\mac\LoRaMac.c

2292                            Nvm.MacGroup2.MacParams.ChannelsNbTrans = linkAdrNbRep;
2293                            StopRetransmission();
2294                        }

LoRaWAN Shell

Simple example of saving device credentials to FLASH/EEPROM for OTA Join. Packets can be sent after joining the network. Saving to NVM will use the beginning of the device memory. For production level code a wear-leveling algorithm would be needed.

LoRaWAN Shell Commands

   lw - LoRaWAN Commands
   Subcommands:
   deveui   : Set/get [deveui:HEX8]
   joineui  : Set/get [joineui:HEX8]
   appkey   : Set/get [appkey:HEX16]
   save     : Save Config
   join     : Join Network
   send     : <port> <0:UNC,1:CNF> <payload:HEX>

uart:~$ lw deveui 1122334455667788
uart:~$ lw joineui 1122334455667788
uart:~$ lw appkey 11223344556677881122334455667788
uart:~$ lw save
uart:~$ lw join
uart:~$ lw send 1 0 FFEEDD

TODO

  • Save config and session to NVM
  • Low power modes
  • FOTA
  • Bootloader