NOTE: BMDware is no longer actively developed. Please refer to this article for more information.
Factory firmware for the BMD-300, BMD-301 and BMD-350 was updated to version AE in September 2017. This guide outlines options for migrating modules from AB to AE. There are three way primary update options: Windows programming utility, OTA update & UART.
If you have already updated to AD firmware, there is no need to update to AE. BMDware remains the same. The only changes are in the bootloader.
Gain Access to Rigado's GitHub Repositories
Access to Rigado's GitHub repositories is now open.
Updating with Windows Programming Utility
A simple "one-button" programming utility is available through the "programmers" repository located on GitHub. This method uses a SEGGER J-Link debug probe and the SWD port on the BMD-300.
For the BMD-3xx-EVAL, the on-board J-Link-OB interface may be used with the on-board module, or with an external design through the "Debug Out" connector, J3. Nordic Semiconductor's nRF 51 DK or nRF52 DK may also be used with the Debug Out connector, P19.
- Connect the J-Link interface to the SWD port on the BMD-300.
- Clone (download) the "programmers" repository to a convenient location ("git_location")
- Enter the directory: <git_location>\programmers\Factory Images\BMD-300\BMD-300_AE_wMAC
- Run the utility "BMD300 Programmer.exe"
- Enter the MAC address printed on the module label
- Click on "Program"
That's it! The module is now updated with the latest factory firmware.
For modules already deployed or in designs that do not have the SWD (debug) port available, an over-the-air (OTA) may be performed. The update needs to be performed in multiple steps in order to ensure the module is correctly configured. There is an update to the existing (AB) RigDFU which needs applied prior to sending any other updates. Next, since RigDFU and S132 versions are dependent, a combined update is sent. This is followed by the BMDware application firmware.
- Download all three files attached to this article
- Follow the OTA updates with Rigado Toolbox (using the "BMDware" section") instructions to send the
- Follow the OTA updates with Rigado Toolbox (using the RigDFU section)instructions to send in order:
- rigdfu_3_4_0_s132_3_1_0_ota.bin file
- bmdware_rel_nrf52_s132_3_2_1_ota.bin file
The MAC address is retained with the OTA update. The module is now updated with the latest factory firmware.
NOTE: Restart the module (power cycle or hard reset) and restart the Rigado Toolbox app to ensure proper operation after these updates.
The update needs to be performed in multiple steps in order to ensure the module is correctly configured. This method requires use of Rigado's GitHub Repository. Please ask for access on our contact page.
- Download the three update .bin files attached to this article
- Clone (download) the "bootloader-tools" repository to a convenient location (ex: "git_location")
- Navigate to the follow directory in command line: <git_location>\update-tools\serial
- Copy the update files to the same location
- Update in the order:
- Apply the updates using the format:
python3 dfu.py -s <serial port> -i <update file>
python dfy.py -s COM6 -i bootloader_update_to_3_2_3_45_app_v2_ota.bin
python3 dfu.py -s /dev/tty.usbmodem141111 -i bootloader_update_to_3_2_3_45_app_v2_ota.bin
Note: reset the module to start RigDFU if no response is found.
The MAC address is retained with the UART update. The module is now updated with the latest factory firmware.
The J-Link MSD may need to be disabled if you see errors in the UART Update:
- Run jlink.exe (JLinkExe on a Mac or Linux)
- At the prompt, type in `MSDDisable`, then `exit` and be sure to power-cycle the BMD-300-EVAL
AE Update Changes
BMDware Major Updates
- Now supports Nordic SoftDevice S132 v3.1.0, v3.0.0 and v2.0.0
- AT Mode hot-swap allows changing from AT mode to UART bridge without system reset
- UART Flow Control Fix
- UART Speed and buffering improvements, Data Length Extension support
- Now supports Nordic SoftDevice S132 v3.1.0, v3.0.0 and v2.0.0
- moved to SDK12's system_nrf52.c, which includes Nordic Semiconductor errata_108()
- added 2 second delay upon receiving activate and reset command
- added restart command to BLE protocol, which initializes system without requiring a reset
- removed extraneous app_error_checks, which were causing activation failures
BMDware Release Notes v3.2.1
- SoftDevice S132 3.1.0 Support -- BMDware has been updated to support newer SoftDevices from Nordic Semiconductor. The main feature of this release for BMDware is support for Data Length Extension (DLE) and MTU negotiation. The maximum supported data length is 247 which works out to a payload size of 244 bytes. The MTU negotiation process will select the largest possible MTU based on the central and peripheral capabilities. If the central device supports DLE, it will be enabled. In addition, the minimum connection interval has been lowered to 7.5 ms which is the minimum for the S132.
- AT Mode Hot Swap -- AT Mode can now be controlled via the AT Mode pin without performing a system reset. This feature is not enabled by default. The following commands have been added:
- Enable: 0x70 0x01
- Disable: 0x70 0x00
- Retrieve State: 0x71
- AT Mode:
at$hotswap <x>where <x> is `1` for `enable` and `0` for disable
- Query the current state with:
- BLE: When Hot Swap is enabled, any buffered data being transfer over BLE will be cleared. This setting is saved across resets and power cycles.
- BLE UART Improvements -- The BLE UART now takes advantages of the 6 packets per connection interval as specified by the Nordic SoftDevice. This means, even fairly speedy data transfers can be achieved (~5.6 KB/s) even with a 20 byte MTU. In addition, flow control has been improved to allow for much faster baud rates to work correctly.
- Other Features -- Added
`at$mac?command to retrieve the MAC address via AT Mode.
- Fixed issue with UART flow control -- Flow control is now properly enabled. In addition, data coming in over BLE is buffered appropriately until it can be transmitted over the physical UART. Data coming into the BMD-300 over the UART is also appropriately buffered until it can be transmitted over BLE. RTS will be set when the UART input buffer is almost full and cleared once BLE transfers empty the buffer.
- Fixed device name permissions -- Device Name is now read-only.
- Fixed UART enable glitch -- UART would occasionally send 0xFF or 0xFE byte to appear on the bus during power-up.
- Fixed RESET pin operation -- If the reset pin is held low, BMDware will now always reset.
- Fixed DTM mode entry -- BMDware will now reliable enter DTM mode.