Starting from Bluetooth SDK 2.11 (Gecko SDK Suite 2.5), it is possible to set the HFXO crystal tuning setting (CTUNE) by storing the value in the User Data page as a manufacturing token. This makes it possible to have a unique CTUNE setting for each device (instead using one single calibration value for all devices).
There are multiple ways to set the CTUNE, these are listed in UG136: Silicon Labs Bluetooth ® C Application Developer's Guide (Chapter 4). Storing the CTUNE as a manufacturing token is one of the many available options.
Because of this change introduced into the SDK and the sample applications, you may see the following type of pop-up window when connecting your development kit.
The text in the pop-up is: “This device contains a factory programmed CTUNE value in it’s eeprom. Do you want to apply this as a manufacturing token?”
This pop-up means that Studio has detected a CTUNE calibration value in the EEPROM that is mounted on the radio board. The device on the radio board (e.g. a BGM11S module) cannot access the EEPROM memory directly. Therefore, to use this board-specific calibration value it needs to be written into the device internal flash memory (i.e. copied from the radio board EEPROM into the EFR32 internal flash).
If you select YES in the dialog, then the tuning value from radio board EEPROM is saved in the User Data page of the module as a manufacturing token. The startup code in the Bluetooth sample applications can then access the tuning value when setting up the internal clocks. (the relevant code is in function initMcu_clocks() )
NOTE: If your application uses the User Data page for some other purposes, then you should select NO in the pop-up dialog. Otherwise the data you have in the User Data page is erased and overwritten with the CTUNE value.
If you select NO, then the CTUNE value detected in radio board EEPROM is simply ignored. You can tick the “Do not ask again” checkbox if you do not want to see this pop-up each time you connect the kit to your PC.
The CTUNE calibration value is stored in User Data page at a fixed offset 0x100.
You can also write the CTUNE value into this location manually by using Simplicity Commander. Following example shows how to write CTUNE value 300 (0x012C) as a manufacturing token:
commander.exe ctune set --value 0x012C
You can also check the value of the CTUNE manufacturing token with command:
commander.exe ctune get
Sample output of the ctune get command is shown below.
Getting CTUNE values from the Device Info page, stored in EEPROM on the board, and MFG token. DI: Not set Board: 345 Token: 300 DONE
The “ctune get” command tries to read the CTUNE calibration value from three different locations:
Note that there can be several CTUNE values set in different places. The logic how the actual CTUNE tuning word is selected is explained in UG136.
An alternative way to access the CTUNE manufacturing token is to use Device Configurator in Simplicity Studio, as shown in the following screenshot.