Dot library change log
Dot Library Change Log¶
Changes in versions 3.x.x and onward apply to mDot and xDot unless explicitly specified.
Up to date mDot Library and change log available on Github
Up to date xDot Library and change log available on Github
Change log for latest releases since 2020 has moved to github, see above links.
4.0.0 (Sep 2020)¶
- mbed-os-6.1.0
- 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
- 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)
- For a block device to work with the XDot it must meet the following criteria:
- Block Device Requirements
- Updated bootloader
- Supports image manifest allowing full images, compressed images and differential updates
- Firmware image utility available https://pypi.org/project/mtsmultitool/
3.3.5¶
- 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
- Join Nonce counters
- Nonces are saved to flash after each join App Nonce is validated to be incremented from the Join Server per LW1.0.4
- Enable/disable Join Nonce validation in Join Accept
- Repair Flash to erase flash and restore current config settings on mDot
- Save Protected settings available
- DeviceEUI can be changed
- Set default AppEUI/JoinEUI
- Set default AppKey
- Fix dynamic plan (EU/AS/IN/KR) ADR option 6 to enable all defined (non-zero) channels
- FUOTA
- Fragment and Parity indexes changed to start at 1
- McKEKey compatible derivation to unpack multicast session keys
- Session Start Time as GPS time supported
Known Issues¶
- Sleep current on mDot is 10 uA higher than previous version.
- This appears to be caused by mbed-os-5.13.4
3.2.5¶
Updated library on 11-08-2019 to ARMC6 compiler
Bug Fixes¶
- Restore channel mask in AU/US with AT+FSB=0
- Wait for non-zero RSSI during LBT channel activity test
- ADR back-off to DR0
- ADR back-off calculate min-DR from enabled channels
3.2.1¶
Changes¶
- Upgrade mbed-os to 5.11.1
- Added support for LoRaWAN 1.0.3rA
- Removed AutoSleep functionality
- Added Class B
- Added BeaconRx and BeaconLost events: mDotEvent.h
- Added BeaconLocked and BeaconData properties to mDotEvent
- Added getGPSTime to perform DeviceTimeReq
- Added ServerTimeSeconds and ServerTimeMillis to mDotEvent to return DeviceTimeAns
- setDeviceClass accepts argument of "B" to enter beacon acquisition state
- setPingPeriodicity, getPingPeriodicity to control Class B windows
- getNextTxMaxSize returns available payload bytes for next transmission
- Added getFrequencyOffset, setFrequencyOffset for fine tuning of Tx due to crystal variance
Bug Fixes¶
- Invalid MAC commands being processed
- Verify length of last command
- Lock-up if sleep is called during/before Rx Windows
- State is reset on wake-up
- Join when class C enabled could report false negative response for Rx2
- Join timeout extended passed end of Rx2 window in Class C mode
- Repeated calls to restoreNetworkSession will flip channel mask
- Channel mask is restored correctly with multiple calls
Regressions in 3.2.0¶
- Downlink 16-bit counter rollover was not handled correctly
3.2.0¶
- Added support for LoRaWAN 1.0.3rA
- Added Class B
- Removed AutoSleep functionality
- Added Class B
- Added BeaconRx and BeaconLost events: mDotEvent.h
- Added BeaconLocked and BeaconData properties to mDotEvent
- Added getGPSTime to perform DeviceTimeReq
- Added ServerTimeSeconds and ServerTimeMillis to mDotEvent to return DeviceTimeAns
- setDeviceClass accepts argument of "B" to enter beacon acquisition state
- setPingPeriodicity, getPingPeriodicity to control Class B windows
- getNextTxMaxSize returns available payload bytes for next transmission
- Added getFrequencyOffset, setFrequencyOffset for fine tuning of Tx due to crystal variance
3.1.0¶
Enhancements¶
- 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
3.0.0¶
Changes¶
- ADR validation enforces minimum of 2 enabled 125kHz channels for US915 and AU915 plans - follows Semtech reference
- xDot - check system tick prescaler value after waking from sleep and fix if necessary
- KR920 chooses random join datarate instead of exclusively using DR2
- US915 max TX power to 30dB and reduce if necessary when preparing for TX (< 50 125kHz channels enabled)
- min TX power set to 0 for all channel plans
- IN865 updated to match final 1.0.2 spec - updated max TX power and ADR handling & validation
- fix AS923 ADR validation - plan only has 2 default channels, not 3
- update ADR handling to be compliant with 1.0.2 spec - process multiple sequential ADR commands atomically
- update min/max TX powers to line up with 1.0.2 spec - EU, AS, KR channel plans affected
- AS923 define min downlink DR based on downlink dwell time - section 2.7.7 of 1.0.2 spec
- add getDefaultFrequencyBand and setDefaultFrequencyBand
- remove setFrequencyBand
- getFrequencyBand now returns the current channel plan (frequency band)
- removed NZ918 channel plan
- default TX power, datarate, & LBT configuration if saved configuration was saved with a different channel plan
- only restore network session if it was saved with the same channel plan that's currently in use
- LBT can be configured with setLbtTimeUs & setLbtThreshold
- update LoRa and FSK RSSI offsets
- add version information for MTS-Lora
- add DlChannelAns MAC command
- removed built-in channel plans - pass a ChannelPlan object to mDot::getInstance
- add KR920 and AS923 channel plans
Bug Fixes¶
- add FB_* enums to channel plan enum for full backwards compatibility
- clear data pending flag when sending a packet to ensure app doesn't see false positives
- correct max TX power for channel plans
- fix AS923 ADR validation - plan only has 2 default channels, not 3
- setTxPower now validates using channel plan minimum and maximum
- ACK timer does not start when the uplink is a join request
- disable CRC for all LoRa downlink packets & enable it for all FSK downlink
- fix 32 bit counter rollover at 16 bits
- xDot now opens RX windows at same time as mDot
- RX2 frequency & datarate is correctly initialized on startup
- 128 byte network name and passphrase no longer returned corrupted by getNetworkName & getNetworkPassphrase
- handle duplicate session files in filesystem
- disable CRC for downlink packets according to LoRaWan spec
- enable CRC for FSK
- don't reset FrequencySubBand to 0 after successful join in case gateway doesn't support all 64 channels - wait for channel mask from GW
- set link state back to IDLE in P2P mode - resolves issue where sends fail after CRC error in P2P mode
Known Issues¶
- none
2.0.17¶
Changes¶
- No changes
Bug Fixes¶
- No changes
Known Issues¶
- No changes
2.0.16¶
Changes¶
- check PVD before executing filesystem transactions - greatly reduces chance of filesystem corruption on mDots running at voltages < 3.3V
Bug Fixes¶
Known Issues¶
2.0.15¶
Changes¶
- Save and restore internal GPIO state around sleep mode to achieve lowest possible power consumption
- add mbed library version to library version
- ADR: check adr request datarate and channel mask independently
- enable test mode TX delay
- ADR: Do not change datarate until ACK_LIMIT + ACK_DELAY + 1 (64 + 32 + 1 = 97)
- update test mode packet timeout to 160
Bug Fixes¶
- Wake up from Sleep mode on either edge instead of only falling edge
Known Issues¶
2.0.14¶
Changes¶
- FSK mode fixes for xDot, can send up to 242 bytes
Bug Fixes¶
Known Issues¶
2.0.10¶
Changes¶
- Allow dev address 00000000
- Fix P2P power limiting based on configured frequency and regional regulations
Bug Fixes¶
Known Issues¶
2.0.8¶
Changes¶
- 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)
Bug Fixes¶
Known Issues¶
2.0.1¶
Changes¶
- Alternate between 125 and 500 kHz channels on join for US915/AU915
- Calculate join backoff as random value between 0 and max duty-cycle for current backoff period.
- Join backoff keep track of time-on-air for current period
- Cycle through datarates on join attempts
- Class C handle rx timeouts for missed ACK and missed join, skip rx2 window event as rx2 is opened on timeout of rx1
- Add support for generating CW of cert testing
- ADR check if datarate was lowered below current payload size and increment as necessary
- Do not allow mac commands in payload and options bytes. Bad check caused link check failure. [IN:1928]
- P2P will use TX frequency setting in EU868 and respect duty cycle according to set power level (Must set to 869.85 MHz and Power + Ant < 7 dBm for 100% duty-cycle)
- Antenna gain param change will take effect immediately
- Public/Private mode will take effect immediately
Bug Fixes¶
Known Issues¶
1.1.0¶
Changes¶
- Function to clear uplink mac command buffer
- Function to retrieve uplink mac command buffer
- Function to cancel rx windows
Bug Fixes¶
- TX DataRate is no longer reset during OTA join process
- US915 Rx1 with datarate offset for TxDR 0,1,2 and Offset 1,2,3 fixed
- Convert input of SF_12 or SF_11 to DR0 in US915
- US915 64 channel mode skipped channel 16
Known Issues¶
1.0.13¶
Changes¶
- 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
Bug Fixes¶
- AT+TXCH output is fixed
Known Issues¶
1.0.12¶
Changes¶
- 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)
Bug Fixes¶
Known Issues¶
1.0.9¶
Changes¶
Switched LoRaWAN implementation to MTS-Lora
Bug Fixes¶
Known Issues¶
1.0.8-1 Sleep¶
Changes¶
- Improved sleep functionality.
- Sleep (stop) mode leaves the application in control of the external I/O pins. In order to achieve lowest power draw, it is recommended that those pins be configured at analog inputs with no pull resistors during sleep. If the application needs to maintain a pull up or pull down resistor on any of the external pins, this mode needs to be used. Otherwise deep sleep (standby) is recommended.
- Deep sleep (standby) power draw was found to be inconsistent. Deep sleep is now consistent at about 40uA. When deep sleep is requested, all I/O pin states are saved before sleep and restored after sleep. The mDot library invokes stop mode on the processor so that some internal pins can be pulled high or low during sleep to achieve minimum power draw. When exiting sleep, the processor is not reset and RAM is maintained.
Bug Fixes¶
Known Issues¶
1.0.8¶
Changes¶
Bug Fixes¶
- US ADR fixed for 64 channels
- EU ADR commands accept only ctrl mask of 0 or 6
- Add configured channels only in EU868 mode
Known Issues¶
1.0.6¶
Changes¶
- Handle packet repeat settings with timeout values and reset rx window flags
- Fix SF to DR convert in setTxDatarate function
Bug Fixes¶
- Add configured channels to the session on startup [IN:001786]
- next tx ms now looks only at channels that support current datarate
Known Issues¶
1.0.5¶
Changes¶
- FSK Payload 50 bytes
Bugfixes¶
- Stop RX2 window only if valid packet received
- Apply correct frequency for duty-cycle in peer-to-peer mode [IN:1775]
Known Issues¶
1.0.4¶
Changes¶
- LoRaWAN 1.0 Certified
Bug Fixes¶
- Extract RX Datarate from MAC command correctly
Known Issues¶
1.0.3¶
Changes¶
- ADR functionality complete
Bug Fixes¶
- ADR parameter validation
Known Issues¶
1.0.0-rc2¶
Changes¶
- Reset server ACK requested on txdone
Bugfixes¶
- 868 optional channels in join accept message received as LSB
- Update downlink counter only if mic passes
- Save timer value to temp variable, addresses race condition that led to MAX_INT wait times [IN:001725]
- Power adjustments of txPower as radio output and antenna gain accounted for
- Removed redundant max payload size check at 242
- Mac timers start on Wakeup [IN:001719]
Known Issues¶
1.0.0¶
Changes¶
- Preserve Session - allow configuration to preserve session in AUTO_OTA mode over reset/power, save session must be called before power down to save uplink counter
- Save Session - allow user to save session including uplink counter
- Restore Session - allow user to restore session including uplink counter
- Join Delay - allow configuration of join rx window 1 delay
- Rx Delay - allow configuration of rx window 1 delay
- App Port - allow configuration of port for application data
- RTC clock not reset over sleep
- sleep - two sleep modes available sleep and deepsleep
- duty-cycle checks time off air instead of toggling channel in channel mask
- add aggregate duty cycle limiting
- add Repeat setting to repeat unconfirmed frames (0-15) 0|1 send once
- expand send error messages to include duty cycle limits met messages
- Keep RxTimingSetupAns in mac command buffer until downlink is received
- Choose random datarate upto the configured datarate for join request
- Implemented AddChannel function
- Implemented LoRaWAN 1.0 EU868 test-mode
- Implemented join duty-cycle based on LoRaWAN 1.0.1
- Join duty-cycle 1% for 1st hour, 0.1% 1-10 hours and 0.01% beyond 10 hours is enforced in US and EU modes
- Add upto 10 random seconds between join attempts
- Add UplinkCounter, Rx1Delay, Datarate, TxPower, Repeat, Rx2Frequency, DownlinkCounter, AggregateDutyCycle to session info
- Add seedRandom function to allow external seeding of RNG, defaults to RSSI reading from radio to generate random seed
- highBw is deprecated in the send function, setTxDatarate can accept high-speed datarates US(DR4:SF8BW500) and EU(DR6:SF7BW250,DR7:FSK)
- setTxDatarate accepts values US(0-4,8-13) and EU(0-7) for datarates listed in LoRaWAN
Bugfixes¶
- SNR - reports correct value in cB
- NewChannelReq - disable channel when freq = 0
- Reset server ACK requested on txdone
- SxRadio - increase FSK rx timeout
- Use radio random to seed psuedo rand function in LoRaMac
- 868 optional channels in join accept message received as LSB
- Update downlink counter only if mic passes
- Save timer value to temp variable, addresses race condition that led to MAX_INT wait times [IN:001725]
- Power adjustments of txPower as radio output and antenna gain accounted for
- Removed redundant max payload size check at 242
- Mac timers start on Wakeup [IN:001719]
Known Issues¶
0.0.9¶
Changes¶
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¶
0.0.8¶
Changes¶
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
0.0.7¶
Changes¶
- Sleep mode
- added sleep mode
- added wake mode, interval, delay and timeout settings for sleep mode
- User file storage, up to 4 user file may be open at a time
- added save, append, read, move, delete options for files
- added open, seek, read, write and close options for files
- added firmware upgrade from user file
Bugfixes¶
- EU868 duty cycles, check for spurious wake-ups
Known Issues¶
- US915 sending using highBW option requires txDatarate to be set to SF_8 to receive response
- LinkCheckThreshold check is off by one when using ACK's require one extra packet to detect network loss