Hi Everyone,
I hope you’re all doing well.
We’re still waiting for Qorvo to provide support for Android. We really need sample code or documentation to proceed. I have reviewed the iOS example and gathered some logs. Below, I will first share the logs and then ask my questions. I would really appreciate any help regarding Android + Qorvo sample code.
First of all:
I found this sample (.hex file + Android source code + Python script):
GitHub - UWB Ranging Sample
I was able to run this sample, but it only works with UWB and does not support BLE. If I had access to the firmware source code, I could modify it to make it work.
Questions:
Firmware Source Code:
Question 1:
- Does anyone have access to the firmware source code for this sample from github as I mentioned that link?
BLE Communication Logs Explanation:
During BLE communication after pairing:
- Step 1: The iPhone sends
0A
to the Dev Board. - Step 2: The Dev Board responds with:
01 01 00 00 00 14 00 00 00 00 00 00 00 00 00 00 15 01 00 01 00 3F F5 03 00 B8 0B 00 00 00 00 01 01 01 11 D7 19 00
- The response structure is as follows:
struct AccessoryConfigurationData {
uint16_t majorVersion; // NI Accessory Protocol major version
uint16_t minorVersion; // NI Accessory Protocol minor version
uint8_t preferredUpdateRate;
uint8_t rfu[10];
uint8_t uwbConfigDataLength;
uint8_t uwbConfigData[MAX_UWB_CONFIG_SIZE]; // Undefined content
} __attribute__((packed));
- The first byte is the message ID, but we cannot determine the contents of
uwbConfigData
(01 00 01 00 3F F5 03 00 B8 0B 00 00 00 00 01 01 01 11 D7 19 00
). - This data is passed into a lock function before being sent to the phone.
// UWB middleware responsibility
niq_populate_accessory_uwb_config_data(&config->uwbConfigData , &config->uwbConfigDataLength);
- Also Apple’s documentation does not explain the contents of
uwbConfigData
.
Question 2:
- Does anyone have details on the function below that populates the
uwbConfigData
?
niq_populate_accessory_uwb_config_data(&config->uwbConfigData , &config->uwbConfigDataLength);
Shareable Configuration Bytes:
- The phone sends the following data to the Dev Board as Shareable Configuration Bytes:
0B 01 00 01 00 19 45 55 A7 48 00 00 0B 09 06 00 10 0E B0 01 03 D8 D4 87 12 1F 1B 43 42 C8 00
- The only struct I found is:
typedef struct __attribute__((__packed__)) {
uint8_t message_id;
uint8_t payload[NI_MAX_PACKET_SIZE];
} ni_packet_t;
- The content is passed into this function:
niq_configure_and_start_uwb(packet->payload, data_len-1, (void*)&fira_config);
Question 3:
- Does anyone know what this data represents?
Channel Configuration Issue:
- As I understand the iphone sends the channel number and preamble to the Dev Board.
- because I attempted to change the channel from 9 to 5 by modifying the FiRa configuration in the firmware’s C code. However, the system is still using channel 9.
Question 4:
- Why isn’t the channel change taking effect? How can we properly change it to channel 5?
finally ,we are a Automative company , and alreay we singed NDA with qorvo.
Any insights or suggestions would be greatly appreciated!
Best regards,
Meti