This article is about the factory default firmware used for the BT121. There are actually two possible default firmware images used in production: one flashed into the bare modules and another one flashed into the modules that populate the carrier boards of the DKBT development kits. These two firmware images are shortly discussed below, and a few notes will follow for your consideration.
- The factory firmware for the modules in the carrier boards of the development kits is obtained from the project files under the directory \example\bgdemo\ of the SDK.
According to the configuration line <uart baud="115200" flowcontrol="true" bgapi="false" /> in the hardware.xml you can realize that the BGAPI host serial protocol over UART is disabled. In fact, the module operates fully in standalone mode thanks to the demo application defined in the BGScript called bgdemo.bgs, which is one of the other project files found under the same directory, and made part of the firmware by the instruction <script in="bgdemo.bgs" /> entered into the project.xml file. You can test this firmware by following the steps in the Quick Start Guide that comes with the DKBT. Additionally you can learn more about it in the "Software Getting Started Guide" available at http://www.silabs.com/products/wireless/bluetooth/bluetooth-low-energy-modules/bt121-bluetooth-smart-ready-module
- On the other hand, the bare BT121 modules come with a factory firmware obtained by using the bgbuild.exe of the SDK version 1.0.0 build 97 with the example project files found under the directory \example\bt121\ of the same SDK. From the hardware.xml configuration file you can see that the BGAPI host serial protocol is enabled over the UART at 115200 with flow control enabled, according to the line <uart baud="115200" flowcontrol="true" bgapi="true" />. In this case, the module operates in hosted mode (also known as Network co-processor mode, or NCP mode) and there is no autonomous functionality provided by a BGScript. For instance, there is no script running that would start LE advertisements or that would turn BR/EDR visibility on, so the module at start is idle and invisible to other Bluetooth devices in range, as it is just waiting for the first instructions from its host system.
Generally speaking, if you are good with the factory default UART configuration of the bare modules, and you are not after the standalone functionality provided by a BGScript, while the default GATT database is also fine with you because for example you are going to use the module as a GATT Client, then you do not need to re-flash a module and you are ready to have your host MCU to configure and control the module using the BGAPI serial binary protocol over the UART interface.
But in any other case (the majority, according to our customer base) you would consider developing a firmware fully tailored to your application, by creating new, or editing existing project configuration files. With the appropriate project files you would then build the firmware image for your modules using the bgbuild.exe free compiler found in the SDK, and you would program your modules as discussed in the article at http://community.silabs.com/t5/Wireless-Knowledge-Base/Programming-the-BT121/ta-p/173579
Update: as of the release of the firmware/SDK version 1.1.2 build 184, the old version 1.0.0 build 97 has become deprecated, thus it is strongly recommended to re-program your modules in any case, so to make sure that they are running the latest firmware release, either based on your own project files, or on the updated version of the factory default firmware which is still found under the directory \example\bt121\ of the SDK (ready image file having name of BT121_BGAPI_UART115k.bin)
Notice here as well, that our Sales and Field Marketing teams are available to give guidance to our customers on how to create custom parts, so that the BT121 modules would be pre-programmed in our factory lines with any firmware image provided by the customer.