Tag Leonardo Firmware Changelog



FW 3.127.12  

  • [b] - bugfix - The Barometer data were not sent when the rotation and barometer data were enabled at the same time. Fixed now. Only FWs v3.127 were affected by this issue.

  • [ch] - Code refactored 

  • [ch] - change - Data_Conf() function was implemented - it call confirmation callbacks, that can be registered by application when @f Data_Req() is called. The registered callbacks are called once, the data request is done (data are sent).

  • [ch] - improve - the buffer where the data requests are stored was improved - it is a 2-dimensional array now. The second dimension represents the priority of data requests. It prevents the buffer from occupancy with low priority data requests, which could block higher priority data requests.

FW 3.127.11

  • [b] - bugfix - Tag Leonardo with MPU9250 frozen in boot-loop because of WDOG timer - the sensor config take longer than expected. Fixed by prolonged WDOG timeout during tag initialization. Only version 3.127.10 was affected by this issue.

FW 3.127.10

  • [b] - bugfix - The rotations did not work correctly on the tags without the IMU sensor MPU9250. The integrated accelerometer was not configured correctly. This issue affect also older released FWs. Fixed.

FW 3.127.9

  • [b] - bugfix - long RI did not work because of a bad WDOG setting. Fixed.

  • [b] - bugfix - sensor setting - accelerometer could not be activated and other unmounted sensors could be activated - masking byte was composed incorrectly. Fixed.

  • [b] - bugfix - the tag could freeze in after start RX mode. It was caused by a poorly defined condition of the while loop, which holds the tag in the RX mode. Fixed.

FW 3.127.8

  • [b] - bugfix - there was not possible to disable Backchannel in older versions of FW. Behavior was the same for BC_period 0 (which should work as disable) and 1.

  • [ch] - hardcoded default values (which are applied after DFU) for BC_period and BC_period in sleep mode were changed to the 0 - disable BC.

FW 3.127.7

  • [b] - bugfix - LED could freeze in ON state (or OFF state) after blinking (caused by BC request). It was caused by the app_rtc_timer implementation error. The lowest timeout was not defined, so if the very low timeout was set, the RTC counter value could overtake the CC register value before RTC IRQ was enabled. Fixed - minimal app_rtc_timer timeout is 10tcks now (approx. 305us).

FW 3.127.6

  • [b] - bugfix - there was not possible to turn on sensors in v3.127.5. Fixed.

  • [b] - bugfix - the tag could not receive wireless config if it was sent as unicast (MAC address was not initialized at the RX time). Fixed.

FW 3.127.5

  • [b] - bugfix - barometer setting - in older versions of FW (including released versions) was possible to set the barometer to enable, and barometer precision set to disable. In this weird state, the barometer was set to high precision.

  • [b] - bugfix - unmounted sensors setting - in FW version 3.126 and older, was possible to set enable sensors that are not mounted on the tag. These tags could report unmounted sensors as active. Fixed.

  • [b] - bugfix - The tags that are on the charging pad are automatically set to send barometer data. An unmounted barometer was not prevented in the FW. So if the tag without a barometer was placed on the charging pad, the error occurs (tag restarted by WDOG).

  • [b] -    bugfix/change - In previous FWs with backchannel the BC period during charging was counted using std bc_period, now it is counted from bc_periond in sleep mode.

  • [ch] - error response was implemented to backchannel operation - if the request for an unknown application is received, or received data are corrupted, tag responses with error code.

FW 3.127.4

  • [ch] - compatibility with older FWs was implemented. FW can be updated via BLE and saved settings are retained.

  • [ch] - information about Sleep mode and about the tag is currently charged was added to blink. It was not in the previous 3.127 versions, but it was in older versions from 3.120 to 3.126.4.

  • [ch] - New configurable parameters were added - Backchannel Period and Backchannel Period in Sleep Mode.

  • [ch] - BC Period, BC Period in Sleep Mode, BC version, and FW revision were added to infoblink.

  • [ch] - Backchannel ACK is now sent with reduced 64 symbols preamble length.

FW 3.127.3

  • [ch] - The application timer has been implemented. It allows applications to schedule asynchronous operations (registered callback will be called after a defined time, outside the standard call of Application).

  • [ch] - Application priority has been added. It determines in which order the data from applications will be put into the UWB frame.

  • [ch] - The application that can control LED via backchannel was implemented. ON/OFF/Flashing states of the LED can be set. ON/Flashing can be set for a defined time. Flashing period and PW can be also set. LED Control application can also send the current state of the LED to the server via UWB. It can be also set to send it periodically.

  • [b] - Some bugs in MAC header composing were resolved. Only versions 3.127.1 - 3.127.2 were affected by this issue.

FW 3.127.2

  • [ch] - Processing of backchannel frames at the MAC layer was implemented.

  • [ch] - Structures of the UWB frames were changed. All payloads are sent as TLV structures inside the universal message type. See UWB frame encapsulation for more information. Old message types and their structures are still supported by RTLS Studio.

  • [ch] - The application layer was to the FW. It allows the implementation of custom applications, that are called in every blink period. Applications can send data to the server in UWB frames. There is also possible to send data in the opposite direction from the server to the application on the tag.

FW 3.127.1

  • [ch] - The backchannel feature was implemented. See backchannel documentation for more information.

  • [ch] - Periodical RX feature was removed from the FW. The backchannel feature can be used instead of it.

  • [ch] - Multi-layer FW model was implemented into FW. It has 4 layers PHY, MAC, Presentation, and Application.

  • [ch] - UWB radio driver (decadriver) was updated to the newest version.

FW 3.126.4 - Released  

  • [b] bugfix - barometer chip (DPS310) can return incorrect value of pressure after it is reset. It is caused by a HW bug within the chip. The patch was implemented.

FW 3.126.3

  • [ch] battery voltage measurement on NFC request - the timestamp of the request is now stored to EEPROM together with measured value
  • [ch] the timestamp of last reconfiguration of the tag via NFC is now stored in EEPROM
  • [ch] update of tag info structure and tag config structure during FW upgrade was changed to by compatible with new structures, that contain the timestamps

FW 3.126.2

  • [ch] FWs for all platform is unified now. In older versions, the Asset needed a different FW than other platforms (iMU, Personal, Vehicle). The preprocessor macros which made the difference between these FWs were removed and substituted by runtime branching(simply said -#ifdefs was replaced by ifs).
  • [ch] Minimal battery voltage for Li-Pol batteries was slightly increased (from 3200mV to 3300mV). This will mitigate over-discharge Li-ion battery risk. This change will have a negligible effect on battery life.

FW 3.126.1

  • [ch] new configurable parameter was added. TX power correction can be now set by the user. This value will be added to TX power and the resulting value will be applied to UWB radio. The correction value will be used for all octets in the TX power setting. This allows to set TX power correction to stay compliant with regulation for tag customizations. It can be changed only in service mode. Normally the correction is disabled and UWB calibration values are taken from OTP memory.
  • [ch] Action requests via NFC was added. The user can use the NFC application to perform some actions that were previously only possible by pressing a button.
  • [ch] Turn ON action request - user can Turn ON the tag using NFC request.
  • [ch] Turn OFF action request - user can Turn OFF the tag using NFC request.
  • [ch] Switch the tag to Device Firmware Update mode, action request - user can Switch the tag to DFU mode using NFC request. This action is only applied if the tag was turned on when the switch to DFU is requested. Once the tag is switched to DFU mode, it can be only switched back to normal mode by FW update, or by a restart of the tag initiated by pressing a button.
  • [ch] Battery measure, action request - tag can measure the battery on demand, and the resulting value of battery voltage will be stored in the EEPROM, so it can be read over NFC. The measured value will be stored in EEPROM 5 seconds after request.
  • [ch] Tags MAC address is stored to the flash during the switching the tag to DFU mode. Thanks to it, the MAC address is accessible from DFU firmware. The new version of DFU 3.0 uses the MAC address and adds it to the BLE Device name during the BLE advertising.
  • [ch] The update of configuration structures was completely rewritten. Any configuration structure (saved configuration and default configuration) that was used in the older FW version can be updated to the new configuration structure after the FW upgrade. The new parameter in the config will be set to hardcoded default. If the data in EEPROM will be corrupted, the all configuration of the tag will be set to hardcoded default values.

FW 3.125.8 - RELEASED  

  • [b] bugfix - Once the tag Leonardo Personal was placed on a wireless charger, it froze. The Source of this problem was the feature that sends the barometer values during charging to have possibility to re-calibrate baro within the system. As the Personal does not have the barometer, it going to the reset when the FW trying to read pressure data. Fixed. Versions 3.125.7 to 3.125.8beta1 was affected by this issue.

FW 3.125.RC8beta1

  • [b] bugfix - High current caused by ACC_IRQ pin was resolved. Problem: If the ACC_IRQ pin was pushed to 1 just before accelerometer shutdown, and after that the tag was switched to DFU mode, the current consumption was increased about 254uA during DFU mode. 

FW 3.125.RC8beta0

  • [b] bugfix - High current caused by ACC_IRQ pin was resolved. In previous versions of FW was an issue with high current consumption in shutdown state of the tag (all variants). Once the tag shutdown command was triggered from the button, the sensors (including accelerometer) are switched to power-down mode. If the accelerometer detect the motion just right before switch to the power-down mode, the ACC_IRQ pin stay in "log1" value (pushed by ACC) while the same signal is pulled to "log0" on MCU side. This caused an increase of current consumption by about 254 uA. Problem fixed.
  • [b] bugfix - High current caused by interrupt request from NFC_FC pin was resolved. In previous versions of FW, there may have been an increase in power consumption caused by an NFC_FD pin irq enable during a shutdown state. If the user put the tag to NFC field during shutdown state, it can increase the current consumption to about 450 uA. It was caused by a related interrupt request from RTC1. This issue was resolved by disable of irq from NFC_FD pin. Furthermore the RTC1 is now fully disabled during shutdown state.
  • [b] bugfix - An attempt to switch to DFU mode, when the battery was low, caused the device to switch to an undefined state. Now, MCU stays in shutdown, once the battery level is too low for DFU mode.


  • [b] bugfix - Once the FW is updated from FW 3.124 to FW 3.125, the update of Configuration Structure is done by a new FW. It passed a bad size of the new structure and MCU access to uninitialized memory due to the incorrect structure size. Because of misalignment, the program went into hard fault. The issue is fixed in FW 3.125.7 - the right size of the structure is now passed.


  • [b] barometer freezing issue workaround - small portion of DPS310 sensors has HW issue, could be related to some batch of sensors only. All FW versions up to now are affected. Problem description: DPS310 returns always constant baro value regardless true pressure. Implemented workaround: Once the chip freeze is detected the DPS310 sensor is resetted by FW.


  • [ch] time period of Low battery signalization was prolonged from 5 secs to 30 secs
  • [b] disabling of push-button (configurable parameter enable/disable PB) do not work in versions 3.125.RC0 to 3.125.RC4. This bug is fixed now.


  • [b] bugfix - disable of IRQ from DW_RST pin was added - it was still enable in unreleased versions 3.125.0 - 3.125.RC3. It could cause irrelevant asynchronous interrupt.
  • [ch] WDOG timeout after end of charging was shortened to TWO second (instead of RR_during_charge) - This change don't affect behavior of tag during normal operation.


  • [ch] time period of Low battery signalization was defined as preprocessor macro in setting.h - refactoring only
  • [ch] time delay between NFC field deactivation (tag remove from NFC field) and new setting check was defined as macro in setting.h - refactoring only
  • [ch] redundant variable NFC_field_actve was removed - refactoring only
  • [ch] configure of RAM retention was added to MCU_init()


  • [b] bugfix - Saved config cant be correctly loaded from EEPROM in version 3.125RC0 and RC1. Its fixed now.
  • [ch] update of FW firmware revision was added - the info about FW version in EEPROM is updated when the FW is updated from revision 3.125.1 to 3.125.2. In older versions this info was only updated when the FW was updated from older subversion.


  • [ch] new configurable parameter - "sending special blink on button press" can be disable now
  • [ch] functions _GPIO_IRQ_handler() and GPIO_IRQ_handler() was refactored - some functionalities was moved to other functions


  • [ch] XTAL startup time adjusted.
  • [ch] new configurable parameter - push-button can be disabled
  • [ch] new configurable parameter - "switch tag ON/OFF by button" can be disabled
  • [ch] new configurable parameter - "enter Device Firmware Upgrade by button" can be disabled
  • [ch] new configurable parameter - "enter RX state of UWB radio by button" can be disabled (Leo Asset only)
  • [ch] new configurable parameter - "reset configuration to factory default by button" can be disabled
  • [ch] new feature - signalization of low battery voltage using LED
  • [ch] configuration structure (NFC configuration) was changed
  • [ch] the special blink which indicates, that the button was pressed, is now send on button release - previously it was sent on press event. The blink is not send on long press now.

FW 3.124.6

  • [b] bugfix - EEPROM read via NFC using the Tag Leonardo Configurator application might provide wrong information about mounted sensors. This problem applies only for Tag Leonardo Asset variant. It contains accelerometer only, but in the EEPROM memory there are also other sensors. Information provided via RTLS Manager is correct.  The bug does not affect the behavior of the tag and it is present from v3.124.RC1.

FW 3.124.5

  • [b] compilation issue fix - some changes in project/sources/documentation was done to allow compilation on any PC.

FW 3.124.RC1

  • [ch] new feature - tag is turned on once it is put on Qi charger (if battery level is low - it will be turn on when the voltage rise above 3.3V)
  • [ch] tag info (FW version) in EEPROM is automatically updated when FW is updated via BLE
  • [ch] PRIMASK is used to solve potential race condition - tag is put to sleep mode
  • [b] bug - New config via NFC is received and applied but cannot be updated in EEPROM. The config is applied only until the tag was restarted.

FW 3.123.RC1

  • [b] max RAW value of LiPo battery level was changed from 214 to 212 to meet same range as on Tag IMU
  • [ch] I2C frequency for NFC chip (nt3h2111) was reduced to 100 kHz
  • [ch] some unnecessary includes was removed from main.c
  • [ch] functionality that save the default setting to EEPROM was moved into sewio_routines.c (this function is not called/compiled in STD FW)
  • [b] bugfix - accelerometer threshold was bad defined in older FW. It was defined as uint8_t, therefore the value higher then 255 could not be used as threshold.
  • [+] Doxygen comments was added into the source codes.
  • [-] some obsolete, unused variables was removed from global structures.

FW 3.122.RC1

  • [b] bugfix - Random deviation was changed - it has not uniform distribution in some cases.
  • [b] bugfix - low battery auto-shutdown did not work correctly in older versions.
  • [b] bugfix - Wireless config did not work correctly on Leonardo Asset. Tag could be reseted by WDOG in some cases during RX state.
  • [ch] PLATFORM is automatic derived from MAC address during saving tag info into the EEPROM (this function is not called/compiled in STD FW)

FW 3.122.RC0 

  • [b] bugfix - in older versions the MAC addresses was generated from DW1000 IDs, but due to the unexpected change in the vendor manufacturing process, in rare occasion there could be duplicated addresses. Now the addresses are generated by Sewio within manufacturing process and stored into MCU flash. 

  • [ch] new PLATFORM of the Tag Leonardo were established: 

  • 2 - Tag Leonardo iMU 

  • 3 - Tag Leonardo Asset 

  • 4 - Tag Leonardo Personal 

  • 5 - Tag Leonardo Vehicle 

  • PLATFORM is stored to flash as part of MAC address 

FW 3.121.beta0 

  • [b] bugfix -since the random deviation uniformity problem was fixed (3.119.beta2), reset of tag could have occurred assuming rotation was activated and the user pressed a button 

  • [b] bugfix - the tag FW 3.120.0 could freeze when user push the button while battery charging and took off the device from the charging pad (this had to happen in a very fast sequence). 

FW 3.120.beta0 

  • [+] support for Device Firmware update via Bluetooth added - newest bootloader and softdevice s132 3.0.0 and setting.hex - generated from FW hex must be downloaded into tag together with FW. DFU is accessible by very long press (10 s) of button. See DFU_guide for more info. 

  • [+] new msgType was added - its send during the tag charging with fixed periond 30 s. 

  • [ch] own memcpy function was implemented in older version as workaroud for bug - std memcpy caused HardFault, but it was resolved, so now the building memcpy from string.h is used 

  • [b] bugfix - I2C frequency, for communication with the nt3h2111, had to be reduced to 100 khz, because when using 400 khz communication was unreliable. For communication with other chips on this bus, the frequency of 400 kHz is still used 

  • [b] bugfix - in earlier versions, a bad RF profile could be stored in the EEPROM if the profile was changed via UWB. This issue is resolved in 3.120 

  • [b] power problem with MPU9250 was resolved - the tags power consumption was reduce from approx 100 uA to approx 33 uA during the tag sleep 

FW 3.119.beta3 

  • [b] bugfix - NFC config - if user set ACC sleep mode via NFC without tag restart, the tag stay in sleep forever. Workaround for beta2 - reset the tag after NFC config 

  • [b] bugfix - NFC config - if user set ACC sleep Disable via NFC during NoMotion sleep - tag incorrectly sent blink as InSleep Msg type. Workaround for beta2 - reset the tag after NFC config 

  • [b] bugfix - NFC config - Rotation + barometer couldn't be set via NFC. Workaround for beta2 - use UWB config 

  • [b] bugfix - rotation did not work correctly in beta2 

  • [b] bugfix - all sensor send incorect value after no-motion sleep 

  • [ch] sensor axes was swamped for rotation calculation 

  • [ch] battery voltage output was slightly shifted to get the same behavior as on Tag iMU. This change is only relevant for tags which are powered from Li-Pol batteries 

FW 3.119.beta2 

  • [b] bugfix - random deviation had not uniform distribution in previous versions of FW 

  • [b] bugfix - blinking during sleep (in sleep refresh rate) did not working correctly in previous versions of FW, it could freeze sometimes 

FW 3.119.beta1 

  • [+] new feature - Refreshrate in sleep can be set. If the tag go into no-motion sleep, it still can sent blinks in defined refreshrate. In-sleep blinks are taggedist item 

  • [+] new feature - user setting can be change via NFC without restart of the tag - setting is updated 5s after setting is received (resp. after the tag is removed from the NFC field) 

  • [chinfoblink have new structure - refresh rate in sleep was added 

  • [ch] wireless config message have new structure - refresh rate in sleep was added 

  • [ch] tag is automatic shutdowned, when its placed on charger 

  • [ch] new algorithm for CRC 

  • [ch] NFC chip can be shutdowned, when is no need to do R/W operation 

  • [ch] different alignment of some structures is now used 

  • [b] bugfix - when user wanted to shutdown the tag by holding the button pushed, the tag was shutdowned only if tag was not in the no motion sleep state 

FW 3.119.0 beta 

  • all functionalities are implemented - same behavior as FW3.118.8 for Tag IMU and Tag PiccolinoMoreover sampling period of all sensors is optimized with respect to Refresh rate.