Skip to main content
Senior
March 3, 2021
Solved

BlueNRG firmware version questions

  • March 3, 2021
  • 2 replies
  • 1046 views

I am currently using the X-NUCLEO-BNRG2A1 to experiment with the BlueNRG-2. Using the getBlueNRGVersion function, I see that the hardware version is 0x12 and the firmware version is 0x2211 and had some questions on how to interpret this:

  1. I believe the hardware version represents bluetooth 5.0, but how is the firmware version interpreted? (I found some information in DT0074 that makes me think 0x2211 corresponds to V3.4.1a, but I didn't find any image with that version number on the ST website).
  2. The X-NUCLEO-BNRG2A1 is listed as bluetooth 5.0 compliant, while the standalone BlueNRG-2 is listed as bluetooth 5.2 compliant. Is this simply the result of flashing different BLE stack images (since the X-NUCLEO-BNRG2A1 uses a BlueNRG-M2SP which contains a BlueNRG-2)?
  3. Does the BlueNRG-2 come preflashed with an image for use as a network coprocessor?
  4. Are there compatibility issues between the main application HCI APIs and different versions of the BlueNRG-2 coprocessor images?
  5. Where can I find documentation on the differences between BlueNRG-2 coprocessor firmware versions?
This topic has been closed for replies.
Best answer by Winfred LU

Hardware version is also known as the cut version of the IC, which comes with the chip when produced (DIE_ID). 0x12 would be cut v1.2.

Firmware version is the BLE stack (library) version being programmed in flash. 0x2211 is strange - possibly it shall be 0x211, which means stack v2.1a.

The details for different firmware versions is in ReleaseNotes, that comes with BlueNRG-1_2 DK, by default under:

file:///C:/Program%20Files%20(x86)/STMicroelectronics/BlueNRG-1_2%20DK%203.2.1/Docs/BlueNRG1_fw_stack_release_notes/BlueNRG-1_release_notes.html

X-NUCLEO-BNRG2A1 is built with BlueNRG-M2SP module.

BlueNRG-M2SP was previously certified to Bluetooth 5.0 with firmware version 2.1A, and currently certified to Bluetooth 5.2 with firmware version 2.1C.

BlueNRG-2 is not (pre)flashed with an image.

2 replies

Winfred LU
Winfred LUBest answer
ST Employee
March 4, 2021

Hardware version is also known as the cut version of the IC, which comes with the chip when produced (DIE_ID). 0x12 would be cut v1.2.

Firmware version is the BLE stack (library) version being programmed in flash. 0x2211 is strange - possibly it shall be 0x211, which means stack v2.1a.

The details for different firmware versions is in ReleaseNotes, that comes with BlueNRG-1_2 DK, by default under:

file:///C:/Program%20Files%20(x86)/STMicroelectronics/BlueNRG-1_2%20DK%203.2.1/Docs/BlueNRG1_fw_stack_release_notes/BlueNRG-1_release_notes.html

X-NUCLEO-BNRG2A1 is built with BlueNRG-M2SP module.

BlueNRG-M2SP was previously certified to Bluetooth 5.0 with firmware version 2.1A, and currently certified to Bluetooth 5.2 with firmware version 2.1C.

BlueNRG-2 is not (pre)flashed with an image.

BPaikAuthor
Senior
March 4, 2021

Thanks for your response, I have a few more follow up questions for you (sorry, this is the second time I'm posting this since I didn't mark it as a reply to your message and it won't let me delete my posts):

  1. Does the BlueNRG-M2SP module come preflashed or blank?
  2. If I upgrade the BlueNRG-M2SP on the X-NUCLEO-BNRG2A1 to firmware version 2.1C, will it still be compatible with my main application software? (i.e. does the SPI interface remain the same?).
  3. I just double-checked the firmware version of the BlueNRG-M2SP and confirmed that it does report 0x2211. I am running the sensor demo from X-CubeBLE2 on the STM32L476RG.

Winfred LU
ST Employee
March 5, 2021
  1. BlueNRG-M2SP module doesn't come with flashed firmware, as far as i understand.
  2. Yes. SPI interface and protocol will be the same.
  3. OK. If we look into X-CUBE-BLE2 for getBlueNRGVersion() implementation, the MSB byte (first 2 nibble) comes from LSB of HCI revision.
uint8_t getBlueNRGVersion(uint8_t *hwVersion, uint16_t *fwVersion)
{
 uint8_t status;
 uint8_t hci_version, lmp_pal_version;
 uint16_t hci_revision, manufacturer_name, lmp_pal_subversion;
 
 status = hci_read_local_version_information(&hci_version, &hci_revision, &lmp_pal_version,
				 &manufacturer_name, &lmp_pal_subversion);
 
 if (status == BLE_STATUS_SUCCESS) {
 *hwVersion = hci_revision >> 8;
 *fwVersion = (hci_revision & 0xFF) << 8; // Major Version Number
 *fwVersion |= ((lmp_pal_subversion >> 4) & 0xF) << 4; // Minor Version Number
 *fwVersion |= lmp_pal_subversion & 0xF; // Patch Version Number
 }
 return status;
}

For the MSB byte, 0x22, the first nibble is HW part and the second nibble is FW major version number.

Previously I was thinking of just FW version itself, which was 0x211 (w/o HW part) instead of 0x2211 (w/ HW part), so.

Now it is clear.

BPaikAuthor
Senior
March 4, 2021

Thanks for your response, I have a few more follow up questions for you:

  1. Does the BlueNRG-M2SP module come preflashed or blank?
  2. If I upgrade the BlueNRG-M2SP on the X-NUCLEO-BNRG2A1 to firmware version 2.1C, will it still be compatible with my main application software? (i.e. does the SPI interface remain the same?).
  3. I just double-checked the firmware version of the BlueNRG-M2SP and confirmed that it does report 0x2211. I am running the sensor demo from X-CubeBLE2 on the STM32L476RG.