MultiTech's official mbed team.

You are viewing an older revision! See the latest version

Dot firmware change log

Dot AT Command Firmware Change Log

For versions 3.x and forward, this change log will only list changes, fixes, and issues for the AT Firmware itself. See the Dot Library change log for Dot Library changes, fixes, and issues. Changes in versions 3.x.x and onward apply to mDot and xDot unless explicitly specified.

Dot Library Change Log

Download from github


  • LoRaWAN 1.0.4
  • Regional Parameters 1.0.3rA
  • FUOTA - Fragmentation and Multicast Setup v1.0.0
  • Support for EU868, US915, KR920, IN865, RU864, AU915, AS923-1, AS923-2, AS923-3 and AS923-JAPAN
  • New AT Commands
    • AT+BTO - Class B Timeout
    • AT+CTO - Class C Timeout
  • xDot
    • Removed some commands and options to reduce firmware size
      • help
      • =? option
      • AT&V
      • AT&S
      • Error details have been removed, only ERROR is returned
  • Configuration Updates
    • Changes to the configuration are not backwards compatible with previous versions
    • A device will lose all configuration and identification if reverted to a previous firmware
    • Configuration is saved with redundancy and wear leveling to increase resiliency and allow recovery after write errors due to loss of power or reset during a write cycle
  • mDot sleep can be interrupted by LowPowerTimer expiration when RTC_ALARM_OR_INTERRUPT is used.
  • xDot now supports FUOTA when an external SPI flash is provided
    • Block Device Requirements
      • For a block device to work with the XDot it must meet the following criteria:
        • Work with MBed OS DataFlashBlockDevice or SPIFBlockDevice classes
        • Maximum 4KB sector erase size
        • Maximum 512 byte page size
        • SPIF type components must support Serial Flash Discoverable Parameters (SFDP)


AT Firmware


  • mbed-os-5.15.1


AT Firmware


  • mbed-os-5.13.4
  • LoRaWAN 1.0.4 (LW1.0.4)
    • MAX FCNT GAP check removed
    • Join Dev Nonce is incremented with each Join Request sent
    • Join App Nonce is validated to increment with each Join Accept received
      • Nonces are reset when AppEUI/JoinEUI is changed
  • Added unsolicited result code option AT+URC=1
    • Outputs RECV when packet is received
  • Added AT+RXO=3 option for EXTENDED_HEX output including dev_addr and fcnt for each payload
  • Added multicast setup options
    • AT+NA=(1-8),<DEV-ADDR>
    • example: AT+NA=1,00112233 - setup multicast dev address
    • AT+NSK=(1-8),<NWK-SESSION-KEY>
    • AT+DSK=(1-8),<APP-SESSION-KEY>
    • AT+MCRX=(1-8),(DR0-DR15),(FREQ),(-1-7:PERIOD,-1:CLASS_C)
    • AT+JN - Join Nonce counters <DEV-NONCE>,<APP-NONCE>
      • Nonces are saved to flash after each join App Nonce is validated to be incremented from the Join Server per LW1.0.4
    • AT+JNV - Enable/disable Join Nonce validation in Join Accept
    • AT+REPAIR=1 to erase flash and restore current config settings on mDot
    • AT&WP - Save Protected settings available in all firmware
    • AT+DI - Protected DeviceEUI can be changed
    • AT+NI=2,<EUI> - Set default AppEUI/JoinEUI, value if set will be used as the default AT+NI setting when AT&F is issued
    • AT+NK=2,<KEY> - Set default AppKey, value if set will be used as the default AT+NK setting when AT&F is issued
  • Pin Outputs
    • Join Status available on Associate Pin (mDot:A2, xDot:GPIO0)
    • Rx Packet pin is brought high when packet is received, the pin is reset when a new command issued. (mDot:D12, xDot:GPIO1)
      • AT+RECV can be used to retrieve the packet and reset the pin
    • Fragment and Parity indexes changed to start at 1
    • McKEKey compatible derivation to unpack multicast session keys
    • Session Start Time as GPS time supported

Bug Fixes

  • Fix dynamic plan (EU/AS/IN/KR) ADR option 6 to enable all defined (non-zero) channels

Known Issues

  • Sleep current on mDot is 10 uA higher than previous version.
    • This appears to be caused by mbed-os-5.13.4
    • A firmware built with mbed-os-5.15.1 is available and does not exhibit this issue


  • mbed-os-5.13.4
  • BugFix: Restore channel mask in AU/US with AT+FSB=0
  • BugFix: Wait for non-zero RSSI during LBT channel activity test


  • mbed-os-5.13.4
  • BugFix: ADR back-off to DR0
  • BugFix: ADR back-off calculate min-DR from enabled channels
  • LoRaWAN 1.0.3 Support
  • Objenious Network approved


AT Firmware


  • Upgraded mbed-os to 5.11.1
  • Added RU864
  • Added support for LoRaWAN 1.0.3rA
  • Added Class B
    • AT+DC=B
    • AT+BLS Beacon Lock State
  • Added AT+GPSTIME
  • Added AT+TXS to return available payload bytes for next transmission
  • Added options to AT+ADR to set ACK_LIMIT and ACK_DELAY
  • Added frequency offset for fine tuning AT+FO, measure with AT+SENDC (continuous wave)
  • Added optional continuous wave arguments: AT+SENDC: [TIMEOUT],[FREQUENCY],[POWER]
  • Added XDOT-FOTA passthrough support AT+RXO=2 and AT+SD serial data mode
  • AutoSleep functionality and AT+AS command was removed
  • Removed obsolete commands: AT+RECVC, AT+RXF, AT+JBO, AT+FEC, AT+TXI and AT+RXI
    • Needed flash for new xDot functionality

Bug Fixes

  • Serial Mode buffer not clear with multiple downlinks are received, can run out of RAM and reports old received data
    • Buffer is cleared before received data is requested

Regressions in 3.2.0

  • FOTA initialization did not complete
    • Reduced max parity fragments to 300
  • Downlink 16-bit counter rollover was not handled correctly


  • See 3.2.1 above



  • LoRaWAN 1.0.2
  • Dot Library version 3.1.0
  • Added support for firmware over the air updates (FOTA) -mDot only
  • Added support for multicast messages
  • Added auto sleep support for sleeping between rx windows
  • Added support for IN865, KR920 channel plans
  • Store AppEUI and AppKey in protected settings
  • Upgraded to mBed OS 5.7.7
  • ADR enabled by default
  • Default settings changed to Public LoRaWAN with 5 second Join Delay
  • Added bootloader for xDot
  • Added support for custom bootloader for xDot
  • Update KR920 max payload sizes changed in LW 1.0.2 Regional Specification

Bug fixes

  • AS923 reduce min frequency to cover New Zealand 915-928 MHz
  • Add downlink channel settings for rx1 in EU, IN and KR
  • ChannelPlan: EU868 default channels support only DR0-5
  • Mac Commands buffer fixes, buffer will clear properly
  • Negative Antenna gain functions correctly now
  • AT&F now changes dots to class A
  • LBT now uses AT+TXF for testing at a fixed frequency
  • Added Info logging for wrong packet received information (wrong address, mic failure)
  • Suppress some trace logging to avoid stack overflow
  • Allow default channels to be disabled with a LinkADRReq MAC command
  • Add support for DlChannelReq MAC command for all applicable channel plans
  • Added locking for spi write mDot, now thread safe
  • AU915: DR0-6 support
  • Open rx window on wakeup in Class C mode
  • Fix for backward compatibility for 1.0 and 2.0 dot libraries

Known Issues

  • Sleeping before rx windows close can cause transmit in progess error -Workaround call cancelRxWindow before sleep
  • Commands sent at the wrong baud rate can lock up the xDot and mDot



  • LoRaWAN 1.0.2
  • Dot Library version 3.0.0
  • added +DFREQ command to display and configure (in debug mode) the default channel plan
  • +FREQ command updated to display current channel plan
  • &V shows factory configured channel plan and current channel plan
  • &V shows minimum and maximum datarate and TX power based on current channel plan
  • add +LBT command to enable/disable listen before talk - plans that require it will have it on by default
  • +FREQ now sets "original factory configured channel plan" but does not change current channel plan
  • +FREQ displays "original factory configured channel plan" not the current channel plan
  • +FREQ supports "NONE" channel plan
  • removed NZ918 channel plan
  • added AS923_JAPAN channel plan (AS923 w/LBT enabled)
  • ATI also displays MTS-Lora version info

Bug Fixes

  • +FREQ=? and +DFREQ=? don't display usage since they are read only commands
  • serial data mode now filters out packets on port 0 so they are not displayed since the payload contains MAC commands
  • make usage for +TXDR and +TXP more generic now that we have many channel plans
  • fix default channel plan definition from "AS915" to "US915"
  • +FREQ rejects string unless it exactly matches a channel plan
  • assert that ChannelPlan & mDot pointers are valid
  • fix broken functionality in +CHM, +TXCH, and AUTO_OTA joins that was switching on invalid channel plan type
  • &V displays current channel plan instead of plan from protected config
  • channel plan must be chosen at compile time using macro - CHANNEL_PLAN=CP_<plan>
  • default channel plan (if no macro is provided) is US915
  • pointer to ChannelPlan object must be passed to mDot::getInstance

Known Issues

  • Configuration is not backward compatible with applications built with 1.0.x and 2.0.x library versions


  • filesystem operations will error if system voltage is too low (<2.7V) in order to prevent potential filesystem corruption


  • ATI output mbed version used to build library
  • use sleep instead of deepsleep until hardware changes to support lowest power
  • ADR datarate decrease 1 packet later after 97 packets without downlink
  • Test mode times out after 160 packets
  • Sleep - wake-up on rising edge, add empty rise and fall handlers


  • FSK mode fixes for xDot, can send up to 242 bytes
  • fix garbage characters on sleep


  • Allow dev address 00000000
  • Fix P2P power limiting based on configured frequency and regional regulations


  • Better stop mode current 55 uA
  • Calibrate tx power based on measure power at each setting
  • ADR reduce datarate after each ADR_ACK_DELAY (32)
  • AT+SENDC mode changed to block until reset, test command


  • Exponential Join Backoff from 15s to 1 hour between join attempts sets (US: 16 attempts, EU: 8 attempts) EU duty cycle is still enforced.
  • Remove requirement to be joined to network in order to configure for AUTO_OTA
  • AUTO_OTA join will not start when AT+NJM=2 is issued. Device will wait for reboot.
  • AUTO_OTA skip FSB search if set to 0 (64 channel mode), FSB search is moved to MTS-Lora
  • Return greatest of JoinBackoff or DutyCycle time off air
  • Use calibarated Tx Power for determining radio output power
  • Restore channel group to 64 channel mode after join if FSB is 0.
  • Default the join delay settings based on public or private mode setting
  • Update AT+WD and AT+WI usage limits
  • Fix output in HEX for payloads received larger than 128 bytes


  • Reset LinkCheckAnsReceived and PongReceived flags on TxDone, caused link check/pong false positives [IN:1928]
  • Test Mode Join trigger will reset the device
  • Test Mode will exit if downlink is not received in 128 packets
  • Updated AT+FSB help to mention AU915
  • Updated AT+JR help to mention AU915
  • removed AT+JRX0, AT+JR2D, AT+JR2F - Join testing does not need to change the default join rx params


  • Class C auto ack in serial data mode
  • AT+PWR allow upto 30 dBm
  • Added AT+JRX0, AT+JR2D, AT+JR2F


  • AT+MAC can be used to read or clear the MAC command uplink buffer
  • Join Duty cycle limitation 1% first hour, 0.1% next ten hours, 0.01% there after
  • Random Join Datarate
  • Aggregate Duty Cycle limitation configurable by MAC command
  • AT+TXCH output is fixed


  • AU915 Support according to LoRaWAN 1.0.1
  • ACK and REP settings take effect without save/restart
  • Peer to peer rx window open at start
  • Duty cycle will run for all datarates
  • Added check for max payload
  • Class C support AT+DC=C (use AT+SD or debug log to see packets received from server)
  • AT+MAC command to inject mac commands into mac layer (see attached doc for command instructions, debug output will show effect of commands)
  • AT+TXCH output has been changed
  • AT+CHM - allows changing the channel mask of enabled channels AT+CHM=0,00FF (enable 0-15) AT+CHM=1,FF00 (enable 48-55)
  • +PING and +NLC fixed
  • Peer to peer much better (aka works)


  • Switched LoRaWAN implementation to MTS-Lora




  • AT+TXP is radio output power, AT+ANT is antenna gain for computing total output power for regulations
  • Remove 1200 as debug baud rate option



  • AT+TXDR can accept values (0-15, DR0-DR15, or SF_7-SF_12) depending on AT+FREQ setting (0-6) -> (DR0-DR6), (7-12) -> (SF_7-SF12)



  • LoRaWAN 1.0 Certified



  • AT+SMODE=1 stays awake until all buffered data is sent
  • AT+SMODE=1 wait for duty cycle before attemping send in EU868



AT+TXP - range changed to 0-20 dBm, antenna gain is applied when setting radio with this power to achieve desired output dBm



  • Features
    • AT+SLEEP - Enter sleep mode (0:deepsleep,1:sleep)
    • AT+WP - Wake pin used for sleep mode (1-8) (1:DIN,DIO2-7,DI8) (default: DI8)
    • AT+JD - join rx window delay 1st window opened at setting 2nd is 1 s after
    • AT+RXD - rx window delay 1st window opened at setting 2nd is 1 s after
    • AT+PS - preserve session over power off and reset in AUTO_OTA mode
    • AT+AP - configure app port for uplink data
    • AT+ANT - configure gain of installed antenna -127 dBi - 128 dBi, (default: 3 dBi)
    • AT&K0/3 - Hardware Flow Control (AT&K0: disable, AT&K3: enable)
    • AT+REP - Set number of times to repeat unconfirmed frames (0-15)
    • AT+ULC - Get or set the uplink counter number (sequence number)
    • AT+DLC - Get or set the downlink counter number (sequence number)
    • AT+RS - Restore session info from flash
    • AT+SS - Save session info to flash
    • AT+TXCH can change channels only for EU868, error for US915
    • AT&V - Update output to include new configuration options
    • help - Move test commands to bottom of help output Add headers for test and debug commands in help output
    • AT+SDR - get the datarate currently used by the mac layer
  • Removed
    • AT+SENDH - AT+TXDR can accept US(DR0-DR4) and EU(DR0-DR7) to include high-speed datarates US(DR4:SF8BW500) and EU(DR6:SF7BW250,DR7:FSK)
  • Bugfixes
    • AT+SNR - reports SNR values correctly
    • RTC clock not reset over sleep
    • Serial data mode can be entered from command term and escaped with +++
    • Auto OTA mode for EU868 will wait for free channel before trying next join with escape possible
    • Add upto 10 random seconds between join attempts

Known Issues



  • Features
  • Bugfixes
    • Response for US915 - DR4 fixed
    • check the duty-cycles and enable and expired duty cycles before looking for free channel.
    • [1415] +TXN may return very large number
    • added channels to the session to be restored after sleep in AUTO OTA mode.
    • Start uplink counter at 0
    • Sequence number no longer increases by 2 when acks are off
    • [1417] Duty cycle elapsed time was doubled across sleep

Known Issues



  • Features
    • Wake Delay is now maximum time in ms to wait for data on serial port
  • Bugfixes
    • Session is reset on power-on/reset
    • Join stats are now counted on successful join
    • US915 - rx1 datarate for high bandwidth channel
    • AUTO OTA link check off by one
    • AUTO OTA link count is saved over sleep
    • AUTO OTA US915 frequency sub-band is saved over sleep

Known Issues

  • Response for US915 - DR4 does not follow Table 22: Data rate mapping in LoRaWAN r1.0
  • The duty-cycle timer event may be missed, channels remain disabled even though timer expired
    • Fix: check the duty-cycles and enable and expired duty cycles before looking for free channel.
  • +TXN may return very large number
    • This could have happened when the duty-cycle is very close to expiring and a few clock ticks happen before the function returns.
  • extra channels are not saved over sleep.
    • Fix: have to add the channels to the session to be restored after sleep in AUTO OTA mode.



  • Features
    • Wake on INTERVAL is now default wake-mode
    • Sleep mode has been disabled, only deep-sleep is available
    • AT+WP is removed as it is only used with sleep mode
    • EU868 power limited to 14 dBm, unless in 10% duty band
  • Bugfixes
    • Payload length is checked against current data-rate limit

Known Issues

  • Set AT+LOG=0 may help if lock-ups are seen during sleep
  • Session is not reset on power-on/reset in AUTO OTA mode
  • AT+SENDH - Use TXDR=8 to receive response packets
  • LCT check is off my one when using ACK's requiring an extra packet to detect network loss



  • Features
    • txDatarate is saved over sleep
  • Bugfixes
    • Sleep is now available in release firmware
    • Duty cycle checks for spurious wake-ups

Known Issues

  • Set AT+LOG=0 may help if lock-ups are seen during sleep



  • Features
    • AT+SLEEP - moved from debug command, 0:deep-sleep,1:sleep
    • AT+WI - was AT+SDWI, wake interval
    • AT+WTO - was AT+SDTO, wake timeout
    • AT+WD - was AT+SDWD, wake delay
    • AT+WP - wake pin, digital inputs 2-8
    • AT+WM - wake mode 0:interrupt, 1:interval
  • Bugfixes

Known Issues



  • Features
  • Design Changes
    • EUI byte order in join request is now LSB
    • EUI byte order is configurable with AT+JSO
    • AT+ACK - now number of attempts, so setting of 1 with try once, 2 - twice, and so on. 0 is still off
    • AT+IPR and AT+DIPR - baud rate changes don't take effect until reset
    • Private mode Rx datarates follow public model,
    • rx1DatarateOffset and rx2Datarate received on join accept
    • Send and sendi will accept messages containing commas
    • Ack retries are now send attempts requiring an ack
  • Bugfixes
    • Reset network session on factory default

Known Issues

  • Start Mode - AT+SMODE=1 and AT+NJM=2
    • To exit reset mDot and press '+++', there will be a 1 second window before mDot attempts joining network



  • Features
    • AT+PN - can be applied without resetting mDot
    • Serial data mode with auto join, added escape opportunity on start-up
    • Serial data mode with auto join, added sub-band search if network lost
    • Added default usage and updated usage info for read-only commands
  • Debug Commands
  • Design Changes
    • AT+PING - command moved to network message layer
      • Changed to not be confused with application data
      • Breaks compatibility with network server before 0.0.3
  • Bugfixes

Known Issues



  • Features
    • EU Frequencies 3 default + 5 configurable on gateway and sent with join response
    • EU Payload limits SF_12 - 51 SF_11 - 51 SF_10 - 51 SF_9 - 115 SF_8 - 242 SF_7 - 242
    • EU Duty cycle tracking, tx channels limited by frequency restrictions
    • AT+TXCH - list frequencies for EU and US
    • AT+PING - response includes gateways rx rssi/snr of packet
    • AT+SENDI - more responsive escape from command, does not stop on missed ack
    • AT+SENDI - reduced minimum interval to 100 ms
    • AT+TXN - time in millisecs before next TX opportunity when duty cycle checking (EU868)
    • AT+TOA - time on air in millisecs for number of bytes with current datarate setting
    • AT+TXW - enable/disable waiting for rx windows to expire
    • AT+LCT - set number of link check or ack failures to tolerate before consider network lost
    • AT+JR - Join retries - configurable and used by mdot-library, not used by at-command set
    • AT+NSK - Returns session key from mac if in OTA or AUTO_OTA join mode
    • AT+DSK - Returns session key from mac if in OTA or AUTO_OTA join mode
    • ATI - Output format changed MultiTech mDot Firmware: 0.0.13 Library : 0.0.2
  • Debug Commands
    • AT+TXF - set tx frequency until reset
  • Design Changes
    • AT+RXTO - removed, replaced by AT+TXW, since only timeout value is expiration of windows.
    • AT+SM - removed, switch between lora and fsk mode not needed
  • Bugfixes
    • AT+SEND blocks until acked

Known Issues

0.0.12 Changes Allow at+send with no param to get server response without payload to send Public/private network setting, private setting uses 1/2 second join window Increase max size for received message to 255 bytes Network join feedback on XBEE_RSSI pin, blinks while waiting for network response, on when joined Limit size of payload based on Datarate SF_10 - 11 bytes SF_9 - 53 bytes SF_8 - 129 bytes SF_7 - 242 bytes Allow any TX Power 2-20 Features AT+FSB - set frequency sub band in US 915 AT+TXCH - lists channels for frequency sub band in US 915 AT+NLC - Network Link Check AT+SENDH - high bandwidth channel send AT+SDWD - serial data wake delay AT+PN - public/private network setting - use private network with Conduit/Network Server AT+DP - data pending, when server has more to send Bugfixes Hex values are validated for 00-ff range and correct number of delimiters Baud rates validated Reset ack timer if packet rx'd without ack bit set Spira 001003, fixed delayed response to escape sequence Spira 001004, AT+SD can lose data when acks are enabled. now buffering data to avoid loss when parsing for +++ escape sequence Following commands abort on '+++' AT+RECVC AT+SENDI Known Issues AT&W, AT&WP give 'OK' even if there is an error with the SPI flash writing 0.0.11 Changes Bugfixes Fixed Serial Data Mode missing last byte and null byte at beginning Increase max payload to 255 bytes Known Issues Hex values are not validated for 00-ff range Following commands abort on any input AT+RECVC AT+SENDI Following commands are not implemented AT+NLC - network link check AT+TXCH - tx channels, display channel hopping frequencies AT&W, AT&WP give 'OK' even if there is an error with the SPI flash writing 0.0.10 Changes Bugfixes Better input validation for key/address/id fields DeviceId and FrequencyBand are read-only for production Ping added to production command list Remove extra carriage return after command input Add space after colon to Query Command output Following commands except input with colons, dashes or dots as delimiters AT+DI AT+NA AT+NK AT+DSK AT+NSK Following commands output current value with delimiters AT+DI AT+NK AT+NSK AT+DSK Known Issues Following commands abort on any input AT+RECVC AT+SENDI Following commands are not implemented AT+NLC AT+TXCH Hex values are not validated for 00-ff range Serial Data Mode missing last byte and possible null byte at beginning Max payload 64 bytes or 50 bytes of application data AT&W, AT&WP give 'OK' even if there is an error with the SPI flash writing 0.0.9 Updated config display to include delims in device and network id AT&V Added support to change Frequency Band AT+FREQ Added receive support AT+RXFREQ AT+RXTO AT+RECV AT+RECVC Added config to output rx packets in hex or binary AT+RXO Display packets received in windows after send AT+SEND AT+SENDI AT+SENDB Updated parameter query response e.g. ------- AT+NK? AT+NK:(0,(hex:16)),(1,(string:128)) OK -------- Added Commands: AT+RXTO AT+RXO AT+RXF Known Issues: AT+TXCH is not implemented 0.0.8 Initial Version

All wikipages