This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2564MODA: BLE feature flag not disabled in assisted A2DP mode

Part Number: CC2564MODA
Other Parts Discussed in Thread: TI-BT-4-2-STACK-LINUX-ADDON

Hi there,

We're currently working on integrating a CC2564MODA into our linux system.

At the moment, we're working with the CC2564MODA evaluation board. The Linux Kernel we're using is 4.4 and BlueZ Version is 5.50.

The assisted mode is required to route the audio streams directly to/from an integrated DSP.

We're using the servicepack Version 1.8 from https://www.ti.com/tool/CC256XB-BT-SP (Release date: 16-Aug-2019).

In order to configure the baud rates, we tried to use the BHET tool. Unfortunately, the link is no longer working (https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/719651/cc256xqfnem-cc256x-bluetooth-hardware-evaluation-tool-download-broken) so we used the HCITester Tool from the WL18xx modules: https://www.ti.com/tool/WILINK-BT_WIFI-WIRELESS_TOOLS 

So, the first question would be: Is this tool suitable to go ahead or is there a better suited tool?

As we have already proceeded with the tools from WL18xx.

According to the documentation in CC256xB BT Service Pack (CC256XB_BT_SP_v1.8 Release Notes), for the assisted mode two scripts need to be executed:
initscripts-TIInit_6.7.16_bt_spec_4.1.bts followed by  initscripts-TIInit_6.7.16_avpr_add-on.bts
This Chapter 1.4 Assisted A2DP (A3DP) or WBS enable also mentions, that either BLE or AVPR can be acitive at the same time.

1.4. Assisted A2DP(A3DP) or WBS enable
Using the Assisted modes (A3DP / WBS) require running an additional script “initscripts-
TIInit_6.7.16_avpr_add-on.bts” after running the main service-pack “initscripts-
TIInit_6.7.16_bt_spec_4.1.bts”, which enables the AVPR, as it is not enabled by default.
When using the CC256xB device with the TI dual-mode Bluetooth stack, this procedure
is automatically handled by the Bluetooth stack as long as the CC256XB.h file
(description above) is copied to the stack directory (<install_dir>\Bluetopia\btpsvend\).
Note: Either BLE or AVPR can be enabled at a time. Please refer to the CC2564B
device datasheet for more details.

As we're not using the dual-mode bluetooth stack, we have to load the firmware ourself.

In order to test the firmware load, we tried first to use one of the sample configuration mentioned in the service pack:

 BluetopiaPM_Linux\TIInit_6.7.16.bts
This file is generated by combining the Initscripts-TIInit_6.7.16_bt_spec_4.1.bts and the
Initscripts-TIInit_6.7.16_ble_add-on.bts. It is meant to be used with the TI dual-mode Bluetooth
stack TI-BT-4-2-STACK-LINUX-ADDON. It may also be used with other Linux stacks like BlueZ.

If we put this BTS file into the firmware folder /lib/firmware/ti-connectivity, we can perform an hciattach and interact with the phones (inquiere, scan, pair, connect, etc...) successfully.
So, basic operation seems to be OK.

But as we need the assisted mode, this test was only to show that the rest is working. We need to use the AVPR configuration and not the BLE config.

According to SWRU581.pdf, Annex D, "Using the CC256x Service Pack With Linux (TI-BT-4-2-STACK-LINUX-ADDON)" describes how to compose these two BTS files.

Unfortunately, we cannot exactly follow the procedure described in that document because we cannot open the BTS files in HCITester.

In order to get the bts files - as described in text and not in binary format - we had to open the files using script pad (part of testertools). After selecting the correct XML config, we were able to compose the two files in script pad.

For testing purpose, we created two files, which are also attached to this request:

    • EDAG_BTS_TEST_2_BLE_LINUX.bts /EDAG_BTS_TEST_2_BLE_LINUX.txt
    • EDAG_BTS_TEST_3_AVPR_LINUX.bts / EDAG_BTS_TEST_3_AVPR_LINUX.txt

When placed into /lib/firmware/ti-connectivity we have renamed them to TIInit_6.7.16 of course.

Here are the results, we received.

EDAG_BTS_TEST_2_BLE_LINUX.bts /EDAG_BTS_TEST_2_BLE_LINUX.txt:
hciattach works and we can perform bluetooth communication wiht the phones like inquiry, scan, pair,...)

EDAG_BTS_TEST_3_AVPR_LINUX.bts / EDAG_BTS_TEST_3_AVPR_LINUX.txt
When executing hciattach, the BlueZ stack report the following messages:

    • Found a Texas Instruments' chip!

Firmware file : /lib/firmware/ti-connectivity/TIInit_6.7.16.bts

Sending script to serial device

Loaded BTS script version 1

texas: changing baud rate to 115200, flow control to 1

CCCCCCCCCCCCCCCCCCCCWRCSCCCCWRCCWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRCCCC

Added device hci0

Can't init device hci0: Device or resource busy (16)Can't initialize device: Device or resource busy

The CCC lines are printed, because we havve enabled debuggin in the kernel.

In order to understand the messages, we digged deeper into the Bluez stack.
It turned out that the issue appears during the init process when the kernel requests the chip featured by using HCI-commands.

The following screenshot shows the issue. In line 605, there's a request if the chip is LE capable or not.

Our expectation was that the module reports FALSE but in fact it reports TRUE at this point.

In order to get this information, we have use the dynamic debug function of the kernel in order to trace communication between the two firmware load.
The logs are attached: dmesg_EDAG_BTS_TEST_2_BLE_LINUX_2_Changed_Kernel  and dmesg_EDAG_BTS_TEST_3_AVPR_LINUX_Changed_Kernel.

dmesg_EDAG_BTS_TEST_2_BLE_LINUX_2_Changed_Kernel:
In the lines 355 - 380 you can see the request BT_HCI_CMD_READ_LOCAL_FEATURES 0x1003. For debugging purposes, the answer was printed again in line 370: ff fe 2d fe db ff 7b 87

dmesg_EDAG_BTS_TEST_3_AVPR_LINUX_Changed_Kernel:
In the lines 305 - 355 you can see the request BT_HCI_CMD_READ_LOCAL_FEATURES 0x1003. For debugging purposes, the answer was printed again in line 320: ff fe 2d fe db ff 7b 87

From the Bluez stack, we can conclude that the features, which are read here are comming from the hdev from code sections above.
Because the response is identical using the two differen firmware version, it seems lmp_le_capable function assumes in both cases that BLE is possible. In case of the AVPR setup, that's not the case and the le_setup function fails in line 611.

Looking closer into the function lmp_le_capable shows us, which bit is wrong:

    • #define lmp_le_capable(dev)        ((dev)->features[0][4] & LMP_LE) 
    • #define LMP_LE 0x40
    • Byte at Index 4 is hex "DB" 1101 1011

We would expect that the features reported by the controller should be 0x9B instead of 0xDB in case BLE is disabled/AVPR is loaded.

What can we do in order to change the behaviour of the BT Controller?

Best regards,

Adalbert

  • Attached the files I refered to in the last post...

    BTInfo.zip

  • Hi Adalbert,

    So, the first question would be: Is this tool suitable to go ahead or is there a better suited tool?

    This is the best tool to use.

    Unfortunately, we cannot exactly follow the procedure described in that document because we cannot open the BTS files in HCITester.

    This is strange because you should be able to open the BTS in HCITester. What error do you see when you open the .bts in HCITester? Here is the guide in case that is useful.

    So far, your setup seems to be correct. Just so I understand, do you run the two test cases (EDAG_BTS_TEST_2_BLE_LINUX.bts and EDAG_BTS_TEST_3_AVPR_LINUX.bts) independently? Or do you run the two sequentially?

    Is your overall goal to both enable AVPR and disable BLE at the same time?

    Thanks,
    Jacob

  • Hi Jacob,

    thanks for your feedback. We'll re-check the issue with importing the files in HCITester according to the guide.

    The two cases were run independently. And yes, our goal is to enable AVPR and to disable BLE at the same time.
    The problem is, that the module still reports that BLE is available which causes trouble during the initialisation. That's what we've tried to configure in EDAG_BTS_TEST_3_AVPR_LINUX.bts.

    If you open this file, can you see this combination configured correctly?

    Best regards,
    Adalbert

  • Hi Adalbert,

    Thank you for the additional information. In your EDAG_BTS_TEST_3_AVPR_LINUX.bts, it looks like you have combined the initscripts-TIInit_6.7.16_bt_spec_4.1.bts with the initscripts-TIInit_6.7.16_avpr_add-on.bts. Is that how you created your .bts?

    If so, I think you may need to add the HCI_VS_LE_Enable command to your .bts before the Send_HCI_VS_AVPR_Enable command. The parameters should both be set to "0" to disable LE and prevent the loading of LE code.

    Thanks,
    Jacob

  • Hi Jacob,

    The error message we receive looks like this:

    The XML file was loaded at that time already.

    That issue appears on different machines running Windows 10 and even on a Linux/Wine machines around here.
    But I learned recently, that not all machines expose this issue...

    Just for clarification: Our plan to disable BLE was based on several hints inside the chip documentation, that BLE and AVPR are mutually exclusive:

    Is our interpretation correct?

    We'll add the HCI_VS_LE_Enable command you proposed and perform more tests with this configuration.

    Best regards,

    Adalbert

  • Hello Adalbert, 

    Yes, you are correct in that AVPR and BLE are mutually exclusive.

    That issue appears on different machines running Windows 10 and even on a Linux/Wine machines around here.
    But I learned recently, that not all machines expose this issue...

    It is interesting that this error does not occur on every machine. Based on this post, I believe your BTS may have been corrupted. You may need to create your BTS again. It also could be an issue with the HCITester version you have. 

    I am able to successfully open your "EDAG_BTS_TEST_3_AVPR_LINUX.bts" with HCITester version 3.0.0.37:

    Thanks,
    Jacob

  • Hi Jacob,

    we're using the same version on our machines.
    At the moment, we suspect that the issue with opening the BTS files on particular machines depends on earlier installations of HCITester versions on these particular machines.
    Probably a problem with incomplete deinstallation routines?
    But as we know now, that the WL18xx matches to our module, we can at least try to continue with our tests.

    We did some further tests with the HCI_VS_LE_Enable command in the BTS file.
    We added that command just before the Send_HCI_VS_AVPR_Enable command in the script.

    As it appears two times, we created 3 different BTS Files have added HCI_VS_LE_Enable with parameters set to 0 at the 1st, the 2nd and on both occourances.

    Unfurtunately, the result is identical for all 3 files - the module still reports in the feature request that BT low energy is supported.
    Attached you can find the BTS files as well as the traces we made.

    hci_init1_req:256: hci0 0
    hci_req_add_ev:324: hci0 opcode 0x1003 plen 0
    hci_prepare_cmd:309: skb len 3
    hci_req_add_ev:324: hci0 opcode 0x1001 plen 0
    hci_prepare_cmd:309: skb len 3
    hci_req_add_ev:324: hci0 opcode 0x1009 plen 0
    hci_prepare_cmd:309: skb len 3
    req_run:51: length 3
    hci_cmd_work:4262: hci0 cmd_cnt 1 cmd queued 3
    hci_send_frame:3372: hci0 type 1 len 3
    hci_send_to_sock:196: hdev 83239000 len 3
    hci_uart_send_frame:282: hci0: type 1 len 3
    ll_enqueue:335: hu 831a13c0 skb 99ea1e40
    ll_enqueue:346: device awake, sending normally
    hci_uart_tx_wakeup:150:
    serial_write:335: tty ttyUSB0: serial_write - 4 byte(s)
    usb_serial_debug_data:389: cp210x ttyUSB0: usb_serial_generic_write_start - length = 4, data = 01 03 10 00
    hci_uart_tty_wakeup:559:
    hci_uart_tx_wakeup:150:
    usb_serial_generic_read_bulk_callback:391: cp210x ttyUSB0: usb_serial_generic_read_bulk_callback - urb 0, len 15
    usb_serial_debug_data:389: cp210x ttyUSB0: usb_serial_generic_read_bulk_callback - length = 15, data = 04 0e 0c 01 03 10 00 ff fe 2d fe db ff 7b 87
    usb_serial_generic_submit_read_urb:315: cp210x ttyUSB0: usb_serial_generic_submit_read_urb - urb 0

    •    We start with hci_init1_req function, which just registers the HCI device
    •    Then, the BT_HCI_CMD_READ_LOCAL_FEATURES 0x1003 is requested as described in our 1st post
    •    For all 3 files, we still get the same response: ff fe 2d fe db ff 7b 87

    We would expect that with a successfully loaded AVPR firmware, the response differs because BT-LE is no longer available.
    So, either the HCI_VS_LE_Enable command has not effect on the feature response or the AVPR firmware activates the feature.

    What happens if something goes wrong with the AVPR firmware load? Would that perform a kind of device reset which also re-enables the BT-LE features? Can we somehow see, if the load of the AVPR firmware was successfully done?

    Best regards,

    Adalbert

    BT_NoBLE-Configs.zip

  • Hi Adalbert,

    What is the difference between AVPR_NoBLE_20220303_#2.bts and #4.bts? It looks like both of those .bts load the default CC2564B firmware, disable LE, then enable AVPR.

    Can you try loading these .bts files again, this time taking firmware and HCI logs according to this guide? I'd like to see if the LE_Enable command was interpreted correctly and read the status result. 

    What happens if something goes wrong with the AVPR firmware load? Would that perform a kind of device reset which also re-enables the BT-LE features? Can we somehow see, if the load of the AVPR firmware was successfully done?

    We should be able to see this in the firmware logs. You will need a UART to USB converter (to handle translating the 1.8V logic on the CC2564B). 

    Thanks,

    Jacob 

  • Hi Jacob,

    the file 20220303_#2 executes the Send_HCI_VS_LE_Enable command before the AVPR patch.

    The file 20220303_#4 executes the Send_HCI_VS_LE_Enable command before and after the AVPR patch.

    As both files have no effect in our setup, I conclude that the feature request is not answered correctly by the module if those files are loaded.

    How can this issue be fixed? That looks like to be the root cause for the issues we have with BlueZ described in the 1st post.
    What do we need to do in order to get the module to disable reporting of being BLE capable if the AVPR patch is loaded and BLE is disabled?

    Regarding the firmware logs, I'm not sure if we can get these logs. Please let me check the linked document to see, if we can get these information.

    Best regards,
    Adalbert

  • Hi Jacob,

    digging deeper into the original post regarding the BLE support reported by the module seems to correspond to the Feature Mask defined in the bluetooth core specification. I'm refering to the core specification 5.3.

    This feature mask printed in chapter 3.3 Feature Mask Definition, page 590.
    Bit 38 is described with "LE Supported (Controller)" and if I'm not wrong, then corresponds bit 38 to Byte 4 masked by 0x40 from the lines in the initial post.

    Looking through the command available in HCITester I found the HCI_VS_Set_Supported_Features command, which seems to address exactly these features.
    The only thing I'm wondering is the index for the bytes. At least the description says offsets from 0-2 are allowed.

    Is this a real limitation or just a limit comming maybe from earlier specifications?

    I would suppose, the following lines should disable the announcement of BLE:

    #################################################################
    ## Disable bit 38 of LPM feature mask: LE Supported (Controller)
    #################################################################
    Send_HCI_VS_Set_Supported_Features , 0x04, 0x04, 0x00
    Wait_HCI_Command_Complete_VS_Set_Supported_Features_Event 5000, any, HCI_VS_Set_Supported_Features, 0x00

    Can you confirm that commando affects the feature mask?

    Best regards,
    Adalbert

  • Hi Adalbert,

    I'll look into this request and follow up this week.

    Thanks,
    Jacob

  • Hi Adalbert,

    I tried running the Send_HCI_VS_Set_Supported_Features , 0x04, 0x04, 0x00 command while taking HCI logs. However, I'm not sure this actually disables BLE communication. If you add this command to your .bts, are you still able to pair, scan, advertise, etc.?

    https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/538/HCI_5F00_Supported_5F00_Features.lgr - You can view this file by using the Logger application from the Wireless Tools package.

    Thanks,
    Jacob

  • LoggerFiles_20220321.zip

    Hi Jacob,
    sorry for being late with my response. I was waiting for my hardware prototype system to continue with the tests.

    I've been able to get connected to the debug TX pin of the module and to attach the logger to the running system and to get some more information the firmware load.

    Well, I'm not used to the logger application so I tried to begin with a known good configuration - the EDAG_BTS_TEST_2_BLE_LINUX.bts file linked in this case. Attached you can find the corresponding lgr file.

    I started with the patch upload and the HCI_VS_Goto_Address, which I asuem to execute the patch.
    In the lgr file that should correspond to line #3455 followed by HCI_COMMAND_COMPLETE Event in #3462.
    Inbetween these lines, there's a strange message:
    3460    12:18:57.384   +0:00:01.744    Post patch: Problem parsing command %d. Opcode 0x%x, packet: 0x%x    
    Is that something I need to take care about?

    In the next step I did the same test using EDAG_BTS_TEST_3_AVPR_LINUX.bts.
    Send_HCI_VS_Goto_Address 0xFF83, 0x00087b79, 0x00000000, 0x00000000, 0x00000000, 0x00000000
    Wait_HCI_Command_Complete_VS_Goto_Address_Event 5000, 0x00, 0xff83, 0x00


    I looked for HCI_VS_Goto_Address command and found it in line #3225 and the following lines:

    3225    12:09:56.202   -0:43:20.977    0x0000059B    0x0000059B    sc    ---->    
    3226    12:09:56.205   -0:43:20.974    0x0000059C    0x0000059C    <----    HCI_Command_Complete_Event    
    3227    12:09:56.211   -0:43:20.968    hcic_process_hci_commands: HCI_VS_Write_Memory_Block (Group 3f Opcode 0x305)    
    3228    12:09:56.212   -0:43:20.967    hcic_get_num_of_host_commands. Total free = 3, Reported to host = 1    
    3229    12:09:56.212   -0:43:20.967    HCI Send Event: HCI_COMMAND_COMPLETE_EVT    

    After this point, none of the remaining commands in the logger output.
    They seem to be simply not executed.

    Is it correct to load the patch and to execut the HCI_VS_Goto_Address command before loading the remaining patches?

    Best regards,

    Adalbert

  • Hi Adalbert,

    Sorry for the delay - I was on vacation last week. 

    Inbetween these lines, there's a strange message:
    3460    12:18:57.384   +0:00:01.744    Post patch: Problem parsing command %d. Opcode 0x%x, packet: 0x%x    
    Is that something I need to take care about?

    This could be an issue. I have taken my own logs using the default .bts and AVPR patch and default .bts and BLE patch. I did not see this message in my logs (see attachments below).  

    Is it correct to load the patch and to execut the HCI_VS_Goto_Address command before loading the remaining patches?

    Yes, the HCI_VS_Goto_Address command seems to write to specific registers for RF functionality. 

    I have taken logs that use the initscripts-TIInit_6.7.16_bt_spec_4.1.bts with the AVPR add-on and BLE add-on, respectively. If I use the default bts with the AVPR patch, BLE functions like scanning and advertising do not work. If I combine the default .bts with the BLE patch, scanning and advertising does work. Is it enough to show that BLE functions do not work without specifically enabling BLE? Do you need to check the bits in the Send_HCI_VS_Set_Supported_Features command?

    AVPR initialized, BLE does not work:

    BLE initialized only (no AVPR), BLE works:

    • https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/538/init_5F00_plus_5F00_BLE.lgr
    • #--------------------------------------------------------------------------------
      # Description : Orca L PG 2.0 ROM Initialization Script
      #
      # Compatibility: Orca, 7.0.16 ROM
      #
      # Last Updated: 10-Jun-2019  11:42:14.51
      #
      # Version     : TI_P7_16.42
      #
      #
      #
      #
      # Notes       : Use this script on Orca L PG 2.0, 7.0.16 ROM device only (FW v7.0.16)
      #--------------------------------------------------------------------------------
      
      #################################################################
      ## START of CC256x Add-On
      #################################################################
      
      ## Change UART baudrate
      Send_HCI_VS_Update_Uart_HCI_Baudrate 0xFF36, 0x0001c200
      Wait_HCI_Command_Complete_VS_Update_Uart_HCI_Baudrate_Event 5000, any, 0xff36, 0x00
      
      Com_SetParams 115200, 1
      #################################################################
      ## END of CC256x Add-On
      #################################################################
      
      Send_HCI_VS_Start_VS_Lock 0xFE37, 0x07, 0x10
      Wait_HCI_Command_Complete_VS_Start_VS_Lock_Event 5000, any, 0xfe37, 0x00
      
      
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00086140, 0xfa, "07:10:47:2A:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:FF:B5:00:90:47:68:FF:20:26:30:C0:5D:00:28:26:D0:01:38:1D:D0:01:38:2A:D1:FF:24:95:34:E5:19:29:88:08:20:01:26:B6:46:37:4A:FE:44:10:47:00:29:01:D1:02:20:07:E0:E5:19:29:88:08:20:B6:46:31:4A:FE:44:10:47:48:1C:E9:88:0C:1C:44:43:60:2C:0F:D9:0F:E0:FF:20:99:30:C0:5B:5E:28:09:DB:C4:1C:08:E0:FF:20:ED:30:C4:5B:10:2C:02:DD:06:20:44:43:00:E0:60:24:41:20:00:21:01:22:96:46:1C:4A:FE:44:10:47:01:90:61:08:40:18:01:30:80:01:80:09:02:90:18:4D:00:26:A8:7B:00:28:1F:D0:28:7C:39:78:81:42:1B:D1:15:48:00:2E:00:D0:14:30:00:68:80:06:80:0E:01:99:08:18:80:01:80:09:02:99:01:22:96:46:0F:4A:FE:44:10:47:29:7B:03:91:01:22:96:46:0C:4A:FE:44:10:47:02:28:01:DA"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x0008623a, 0xfa, "03:98:04:19:28:35:01:36:02:2E:D8:D3:00:98:44:60:07:48:33:30:00:90:FF:BD:C0:46:93:E4:04:00:38:1D:08:00:0C:05:1A:00:39:7A:04:00:AD:45:05:00:7B:BF:02:00:AD:45:05:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:78:B5:01:24:A6:46:DB:48:FE:44:00:47:06:1C:DA:4D:28:68:DA:49:09:88:08:18:80:01:80:09:31:1C:A6:46:D7:4A:FE:44:10:47:00:28:0C:D4:D6:48:00:78:04:28:08:D1:D5:48:00:78:03:28:04:D1:2E:60:A6:46:E4:48:FE:44:00:47:E3:4D:28:68:19:21:49:01:08:18:80:01:80:09:31:1C:A6:46:CA:4A:FE:44:10:47:00:28:4C:D4:2E:60:DD:48:01:78:DD:48"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00086334, 0xfa, "00:88:08:43:1A:D0:00:29:18:D0:22:21:E4:48:20:22:12:5C:01:2A:12:D1:09:5C:00:29:0F:D0:41:7F:08:29:0C:D1:09:21:41:77:DF:48:03:21:A6:46:DE:4A:FE:44:10:47:04:20:A6:46:DD:49:FE:44:08:47:00:25:68:1C:00:04:00:0C:A6:46:DA:49:FE:44:08:47:00:28:1D:D0:81:7C:0A:02:C1:7C:11:43:0A:02:01:7D:11:43:0A:02:41:7D:11:43:00:91:69:1C:00:78:A8:22:42:43:D2:48:80:5C:40:00:CF:4A:12:5A:D1:48:40:5D:CF:4B:1B:56:7B:20:80:00:A6:46:CF:4E:FE:44:30:47:01:35:07:2D:D5:DB:E5:48:00:68:50:28:05:D9:E4:48:00:21:A6:46:C1:4A:FE:44:10:47:78:BD:30:B5:05:1C:9C:4C:7E:34:A0:78:03:28:0F:D1:20:88:00:28:0C:D1:E8:69:02:28:09:D1:01:20:86:46:DA:48:FE:44:00:47:02:20:A0:70:D8:48:CA:30:28:62:30:BD:F8:B5:06:1C:B7:69:B0:8A:00:90:E4:49:40:1A:0A:D0:97:38:51:D0:8C:38:45:D0:01:38:3C:D0:22:38:2B:D0:01:38"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x0008642e, 0xfa, "25:D0:F8:BD:21:20:C5:5D:38:1C:00:21:01:24:A6:46:DC:4A:FE:44:10:47:7D:21:C9:00:41:43:D8:48:01:60:00:2D:41:D0:FF:2D:3F:D0:38:1C:29:1C:A6:46:D5:4A:FE:44:10:47:D5:48:02:21:A6:46:D4:4A:FE:44:10:47:00:28:0E:D1:CE:48:D2:49:09:68:01:60:09:E0:01:20:D1:49:08:80:05:E0:38:1C:01:21:8E:46:E6:49:FE:44:08:47:38:1C:00:99:00:22:01:23:9E:46:E3:4B:FE:44:18:47:0C:E0:38:1C:01:21:8E:46:E0:49:FE:44:08:47:05:E0:38:1C:01:21:8E:46:DE:49:FE:44:08:47:DD:48:9E:30:30:62:F8:BD:01:24:A6:46:DB:48:FE:44:00:47:A6:46:DA:48:FE:44:00:47:F8:BD:70:B5:85:69:00:7D:44:21:40:1A:01:28:26:D9:0F:38:0C:D0:28:38:2B:D1:28:78:03:28:28:D1:3B:20:C0:43:05:21:49:57:81:42:22:DD:68:71:70:BD:28:78:00:28:1D:D1:CD:4E:30:1C:01:24:A6:46:CC:49:FE:44:08:47:A8:70:E8:1C:31:1C:0A:22:A6:46:C9:4B:FE:44:18:47"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00086528, 0xfa, "28:1C:A6:46:C7:49:FE:44:08:47:70:BD:46:48:00:78:04:28:04:D1:01:20:86:46:BE:48:FE:44:00:47:70:BD:70:B5:04:1C:66:69:20:7F:17:22:80:1A:3E:4D:24:D0:68:38:34:D1:FF:20:7D:30:80:5D:0D:28:2F:D1:20:69:01:78:30:1C:01:24:A6:46:DA:4A:FE:44:10:47:01:1C:25:D0:08:68:B0:42:22:D1:77:3D:28:78:01:28:1E:D0:08:79:00:28:1B:D0:D4:4D:2C:70:4D:20:A6:46:D3:4A:FE:44:10:47:00:20:28:70:70:BD:82:3D:28:78:05:28:0D:DB:FF:20:79:30:81:5D:30:1C:24:23:01:25:AE:46:CB:4D:FE:44:28:47:CC:48:CA:49:08:18:20:62:70:BD:70:B5:05:1C:2C:69:A2:8E:23:8F:93:42:32:DD:C7:48:01:78:60:8D:01:30:41:43:08:04:00:0C:82:42:29:DA:C6:26:31:5D:C9:09:25:D1:10:1A:C1:49:08:18:83:42:20:DD:C5:20:00:5D:01:28:01:D0:03:28:1A:D1:30:5D:01:28:05:D1:CE:21:09:5D:10:29:04:D0:11:29:02:D0:02:28:0A:D0:70:BD:B5:20:00:5D"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00086622, 0xfa, "00:21:01:22:96:46:B4:4A:FE:44:10:47:02:20:30:55:B3:49:97:20:C0:00:40:18:28:62:70:BD:C0:46:47:76:04:00:5C:61:08:00:4A:61:08:00:39:7A:04:00:45:10:08:00:2C:24:08:00:70:B5:02:69:D4:8E:15:8F:A5:42:1A:DD:C8:21:8B:5C:40:21:19:40:DE:11:F6:01:31:43:12:D1:2C:1B:52:49:86:31:09:78:09:02:8C:42:0B:DD:02:2B:09:D1:C7:21:89:5C:01:29:01:D0:03:29:03:D1:DE:49:DC:4A:51:18:01:62:70:BD:C1:6B:08:00:58:61:08:00:84:18:08:00:46:61:08:00:30:B5:D8:49:D8:4A:13:32:1F:20:00:23:01:24:A6:46:D6:4D:FE:44:28:47:D7:48:00:88:40:0A:00:D2:00:24:D3:48:04:70:30:BD:C0:46:50:17:08:00:00:04:1A:00:B5:F5:04:00:F9:15:05:00:D9:8F:01:00:20:0C:1A:00:CD:18:08:00:78:20:08:00:59:15:08:00:85:87:04:00:F0:B5:06:1C:35:69:30:7E:00:28:1D:D1:C7:27:78:5D:01:28:19:D1:28:1C:01:21:0C:1C:8E:46:C2:4A:FE:44"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x0008671c, 0xfa, "10:47:28:1C:A6:46:BA:49:FE:44:08:47:C8:21:48:5D:1B:28:06:D1:CD:20:40:5D:01:28:02:D1:00:20:78:55:48:55:E7:48:3A:30:30:62:E6:49:E5:4A:5D:32:1F:20:00:23:01:24:A6:46:B1:4C:FE:44:20:47:F0:BD:C0:46:C8:62:08:00:F8:21:19:00:3F:83:02:00:11:24:03:00:10:B5:61:4B:1B:78:40:8D:01:30:43:43:1C:04:24:0C:5E:4B:91:42:07:DB:88:1A:19:1B:88:42:0C:DD:01:21:09:04:40:1A:10:BD:A1:42:02:DA:18:1B:82:42:01:DC:88:1A:10:BD:88:1A:18:18:10:BD:C0:46:06:FD:00:00:BC:62:08:00:51:2A:00:00:C9:67:08:00:04:50:1A:00:6B:F7:04:00:6C:4F:08:00:62:61:08:00:F8:B5:0D:1C:06:1C:00:90:01:24:A6:46:C3:49:FE:44:08:47:30:1C:03:21:A6:46:E5:4A:FE:44:10:47:07:1C:E4:4E:35:80:00:98:07:21:A6:46:E9:4A:FE:44:10:47:00:28:01:D1:68:08:70:80:E6:48:02:21:A6:46:E6:4A:FE:44:10:47:00:28:07:D1:38:1C:68:43:E3:49"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00086816, 0xfa, "08:60:A6:46:DE:49:FE:44:08:47:F8:BD:C0:46:81:6B:08:00:A9:25:05:00:71:70:08:00:05:71:08:00:7D:5E:00:00:C9:6E:08:00:FD:6F:08:00:60:12:08:00:ED:2F:01:00:09:59:05:00:51:BC:04:00:F8:B5:00:90:45:69:68:7C:10:28:11:D1:28:7C:D2:49:06:28:0B:D0:0A:88:01:2A:0A:D1:01:28:01:D0:00:20:05:E0:00:20:08:80:03:20:28:74:01:E0:01:20:08:80:68:7C:0D:28:1B:D1:28:7C:00:28:18:D1:C7:4F:02:26:38:1C:01:24:A6:46:C6:49:FE:44:08:47:03:E0:A6:46:C4:49:FE:44:08:47:00:28:06:D0:01:7A:0D:29:F6:D1:C1:49:4C:31:00:98:01:62:0C:37:01:3E:E8:D1:68:7C:06:28:0A:D1:28:7C:BD:49:06:28:04:D0:08:88:01:28:03:D1:00:20:00:E0:01:20:08:80:F8:BD:69:7D:02:00:64:61:08:00:93:E4:04:00:85:F8:00:00:18:0F:00:00:1D:E4:00:00:2E:2E:08:00:FF:FF:00:00:CB:A3:00:00:ED:92:00:00:F8:B5:00:90:82:69:51:78:C7:69:0B:1F"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00086910, 0xfa, "70:D0:21:3B:E6:48:33:D0:01:3B:73:D1:04:23:BB:80:0C:23:DE:19:49:00:12:78:0A:43:32:70:01:36:00:78:00:28:02:D1:06:25:28:1C:01:E0:07:20:06:25:30:70:01:36:30:1C:0D:21:01:24:A6:46:DE:4A:FE:44:10:47:06:1C:A6:46:DD:48:FE:44:00:47:C0:06:C0:0E:81:02:D9:48:00:78:40:06:40:0E:08:43:07:21:C9:01:01:43:09:04:09:0C:30:1C:A6:46:D2:4A:FE:44:10:47:30:E0:04:23:BB:80:0C:23:DE:19:49:00:12:78:0A:43:32:70:01:36:00:78:00:28:02:D1:06:25:28:1C:01:E0:07:20:06:25:30:70:01:36:30:1C:0D:21:01:24:A6:46:C5:4A:FE:44:10:47:06:1C:A6:46:C4:48:FE:44:00:47:C0:06:C0:0E:81:02:C0:48:00:78:40:06:40:0E:08:43:07:21:C9:01:01:43:09:04:09:0C:30:1C:A6:46:B9:4A:FE:44:10:47:7D:80:03:20:38:80:BA:48:B9:49:09:18:00:98:01:62:F8:BD:10:79:27:28:04:D1:50:79:1E:28:01:D1:23:20:50:71:F8:BD:C0:46:82:04"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00086a0a, 0xfa, "00:00:45:9F:00:00:3F:72:08:00:A9:86:00:00:11:72:08:00:55:31:19:00:3E:A6:1B:00:89:83:00:00:F0:B5:06:1C:F4:69:22:88:10:04:00:0E:01:02:25:20:00:02:09:1A:9C:48:32:D0:05:23:9B:02:C9:1A:10:D0:1B:20:00:02:09:1A:43:D1:10:06:00:0E:04:28:3F:D1:60:7A:01:21:8E:46:CF:49:FE:44:08:47:00:28:2D:D0:F0:BD:C0:78:00:28:33:D0:20:1C:01:24:A6:46:CA:49:FE:44:08:47:C9:4D:2F:1C:C9:48:00:78:01:28:01:D1:00:2F:06:D1:AF:42:1F:D2:A6:46:C6:48:FE:44:00:47:1A:E0:A6:46:C6:48:FE:44:00:47:01:3F:EC:E7:21:78:A8:22:4A:43:C3:4B:9A:5C:00:2A:11:D0:C0:38:00:78:00:28:0D:D1:C0:48:40:5C:07:28:09:DB:20:1C:01:21:8E:46:BE:49:FE:44:08:47:B8:48:B7:49:08:18:30:62:F0:BD:C0:46:AD:99:00:00:FF:72:08:00:B1:2F:00:00:30:B5:05:69:B7:48:00:21:01:24:A6:46:2A:4A:FE:44:10:47:B5:49:01:28:01:D0:00:20:01:E0"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00086b04, 0xfa, "08:68:01:30:08:60:A6:46:AE:48:FE:44:00:47:00:28:08:D0:A6:46:E5:48:FE:44:00:47:00:28:02:D0:02:20:E3:49:08:80:E3:49:E8:68:88:42:22:D1:E2:48:00:78:80:08:1E:D2:E2:48:41:7F:05:29:1A:D1:02:21:41:77:DE:48:00:78:E8:70:59:48:C1:38:00:78:FF:28:05:D1:E6:48:03:21:A6:46:E6:4A:FE:44:10:47:E1:4D:2C:80:A6:46:E1:48:FE:44:00:47:2C:80:A6:46:DE:48:FE:44:00:47:30:BD:65:2A:00:00:00:50:1A:00:00:B5:00:21:01:22:96:46:DC:4A:FE:44:10:47:DA:49:08:80:00:BD:CD:16:03:00:51:2A:00:00:04:50:1A:00:6B:F7:04:00:6C:4F:08:00:44:61:08:00:5C:18:08:00:4F:0C:04:00:5B:0C:04:00:89:3F:04:00:46:61:08:00:F8:B5:CF:48:00:88:C0:08:CE:4C:22:88:D4:49:8A:42:39:D0:D4:49:09:78:03:29:35:D1:61:88:8D:1A:CA:4A:83:1A:88:42:02:D5:00:22:D7:43:00:E0:01:27:00:2D:02:D5:00:22:D6:43:00:E0:01:26:C4:4A:12:78"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00086bfe, 0xfa, "96:46:C3:4A:12:78:94:46:01:22:00:92:C2:4A:B7:42:11:D1:76:46:36:06:36:16:5E:43:67:46:3E:41:00:2D:04:DC:00:2B:0B:DD:12:78:96:19:08:E0:00:2B:06:DC:12:78:B6:1A:03:E0:16:78:00:2B:00:DC:76:42:B7:4A:12:78:B5:4B:1A:70:02:E0:61:88:00:26:00:96:B6:4A:12:68:13:1C:73:43:1B:15:21:80:60:80:E2:48:00:78:31:1C:00:DA:49:42:81:42:04:DD:00:2E:00:D5:40:42:50:43:03:15:0F:4D:41:3D:E8:6F:1E:18:DB:48:00:78:50:43:00:0D:B1:1A:00:DA:49:42:81:42:19:D8:00:98:00:28:16:D0:D6:48:00:78:00:28:12:D0:D5:48:02:21:01:24:A6:46:D4:4A:FE:44:10:47:00:28:09:D1:02:E0:C0:46:31:4F:08:00:EE:67:30:1C:A6:46:CF:49:FE:44:08:47:F8:BD:C0:46:E7:2A:00:00:FB:4F:08:00:89:91:04:00:CA:04:00:00:61:DE:00:00:F0:B5:05:1C:AE:69:EF:69:38:88:DF:49:40:1A:3E:D0:DE:49:40:1A:01:28:2F:D9:25:38:51:D1:DD:48:00:88"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00086cf8, 0xfa, "00:28:4D:D0:30:1C:01:24:A6:46:D9:49:FE:44:08:47:FF:20:1C:30:81:5D:00:29:01:D1:02:21:81:55:FF:21:1E:31:89:5D:00:29:04:D1:82:5D:01:2A:01:D0:00:2A:06:D1:01:29:0A:D1:80:5D:03:28:07:D0:02:28:05:D0:30:1C:A6:46:EC:49:FE:44:08:47:24:E0:30:1C:A6:46:EA:49:FE:44:08:47:1E:E0:3A:20:80:5D:00:28:1F:D0:38:1C:01:21:8E:46:19:49:FE:44:08:47:13:E0:E1:48:00:78:05:28:14:DB:FF:20:26:30:82:5D:30:1C:07:21:00:23:01:24:A6:46:DF:4E:FE:44:30:47:38:1C:A6:46:0E:49:FE:44:08:47:DA:49:5F:20:00:01:40:18:28:62:F0:BD:C0:46:0B:34:04:00:F3:1A:02:00:A0:86:01:00:0F:54:08:00:0F:1A:02:00:42:05:00:00:D9:A3:02:00:17:8F:03:00:C8:18:08:00:50:15:08:00:8D:08:04:00:19:DE:01:00:F8:21:19:00:C8:62:08:00:F0:B5:85:B0:07:1C:B8:69:04:90:B9:8A:E9:48:08:1A:26:D0:E9:49:40:1A:5E:D1:E8:4D:C4:48:00:78"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00086df2, 0xfa, "02:28:59:D1:01:24:A6:46:E6:48:FE:44:00:47:00:28:52:D1:A6:46:E4:48:FE:44:00:47:00:28:4C:D1:A6:46:27:48:FE:44:00:47:00:28:46:D1:28:78:00:28:43:D1:A8:78:00:28:40:D1:A6:20:A6:46:DB:49:FE:44:08:47:3A:E0:04:98:00:21:6A:46:01:24:A6:46:D8:4B:FE:44:18:47:02:A8:00:21:06:22:A6:46:D5:4B:FE:44:18:47:00:25:02:E0:68:1C:05:04:2D:0C:D2:48:00:78:85:42:22:DA:11:20:40:01:68:43:D0:49:0E:18:10:20:80:19:69:46:A6:46:CE:4A:FE:44:10:47:00:28:EA:D1:68:46:02:A9:A6:46:CA:4A:FE:44:10:47:00:28:E2:D0:B0:78:01:28:DF:D0:04:98:BB:49:3A:22:A6:46:C5:4B:FE:44:18:47:C4:48:E2:30:38:62:05:B0:F0:BD:C0:46:CD:33:04:00:4A:24:19:00:7B:86:03:00:11:22:08:00:4A:56:08:00:50:17:08:00:10:B5:15:4C:0C:48:04:80:01:20:86:46:B9:48:FE:44:00:47:B9:49:08:60:09:48:04:80:44:80:10:BD:C0:46:82:07:1A:00"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00086eec, 0xfa, "F9:8E:03:00:00:04:1A:00:B5:F5:04:00:60:61:08:00:51:2A:00:00:50:1D:18:00:54:61:08:00:68:10:00:00:4E:61:08:00:4F:61:08:00:52:61:08:00:4D:61:08:00:4C:61:08:00:FF:FF:00:00:2C:24:08:00:BC:62:08:00:F0:B5:06:1C:35:69:D5:27:7F:00:B1:69:00:29:52:D0:8A:88:50:18:52:18:13:7A:5A:08:F8:2B:01:D3:43:7A:00:E0:00:23:00:7A:C0:07:C0:0F:84:46:39:20:40:5D:9C:4C:25:28:01:D1:13:2A:32:D0:0A:28:03:D1:0F:2A:25:D0:13:2A:23:D0:3A:20:40:5D:20:28:01:D1:19:2B:13:D0:18:2A:2F:D1:24:28:2D:D1:78:5D:02:28:05:D1:28:1C:01:21:8E:46:8C:49:FE:44:08:47:28:1C:01:21:8E:46:8A:49:FE:44:08:47:F0:BD:FF:20:6D:30:40:19:01:22:96:46:86:4A:FE:44:10:47:F6:34:12:E0:28:1C:61:46:24:23:01:25:AE:46:83:4D:FE:44:28:47:08:E0:28:1C:61:46:13:22:24:23:01:25:AE:46:7E:4D:FE:44:28:47:EC:34:34:62:F0:BD:51:61"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00086fe6, 0xfa, "08:00:53:61:08:00:50:61:08:00:04:50:1A:00:6B:F7:04:00:CD:16:03:00:78:B5:00:26:00:96:01:24:A6:46:74:48:FE:44:00:47:73:4D:A8:6D:69:46:A6:46:72:4A:FE:44:10:47:17:21:00:98:01:70:A8:6D:00:99:32:1C:A6:46:6E:4B:FE:44:18:47:6E:4D:0C:20:A8:81:28:69:40:88:0C:28:0C:D0:01:26:B6:02:00:2E:08:D0:A6:46:69:48:FE:44:00:47:01:3E:28:69:40:88:0C:28:F4:D1:A6:46:65:48:FE:44:00:47:78:BD:03:08:00:00:F0:F4:00:00:05:68:03:00:62:61:08:00:F0:B5:87:B0:06:90:5F:48:07:68:01:24:A6:46:56:48:FE:44:00:47:5C:4E:30:1C:01:30:C0:5D:6D:46:28:71:F0:5D:68:71:A8:1D:0B:21:C9:01:C9:59:A6:46:57:4A:FE:44:10:47:AF:21:C9:00:C9:59:A6:46:53:4A:FE:44:10:47:57:21:09:01:C9:59:A6:46:50:4A:FE:44:10:47:22:3E:F1:59:A6:46:4D:4A:FE:44:10:47:A6:46:48:48:FE:44:00:47:12:20:28:70:06:98:49:49:00:22:01:AB"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x000870e0, 0xfa, "A6:46:48:4C:FE:44:20:47:07:B0:F0:BD:C3:0F:08:00:17:08:05:00:35:F7:01:00:D9:E5:01:00:1D:42:02:00:45:10:08:00:F8:B5:00:90:3A:48:07:68:01:25:AE:46:31:48:FE:44:00:47:00:24:37:4E:30:1C:32:38:C4:51:30:1C:2A:38:C4:51:30:1C:22:38:C4:51:B1:20:C0:00:C4:51:30:1C:1A:38:C4:51:59:20:00:01:C4:51:30:1C:12:38:C4:51:08:20:C0:19:04:21:AE:46:2E:4A:FE:44:10:47:B3:20:C0:00:C4:51:57:20:00:01:C4:51:AF:20:C0:00:C4:51:0B:20:C0:01:C4:51:01:3E:F4:55:AE:46:1F:48:FE:44:00:47:00:98:21:49:01:39:22:1C:AE:46:22:4B:FE:44:18:47:F8:BD:05:04:00:00:19:1C:00:00:C1:0F:08:00:99:51:03:00:9B:33:03:00:89:E4:04:00:81:2A:00:00:15:5F:05:00:33:4F:08:00:00:00:08:00:81:94:03:00:D9:3E:02:00:25:00:00:00:47:76:04:00:5C:61:08:00:91:74:04:00:91:F7:01:00:8B:09:04:00:8B:F7:00:00:85:F8:00:00:47:15"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x000871da, 0xfa, "05:00:14:54:08:00:BD:59:05:00:E7:59:05:00:14:24:08:00:21:8F:03:00:85:26:04:00:DC:50:08:00:A6:05:00:00:D5:2A:00:00:2A:FE:00:00:1D:26:05:00:99:94:03:00:A9:25:05:00:40:1E:80:00:D8:4B:19:50:D6:49:0A:50:F7:46:00:B5:D6:4A:01:8B:91:42:07:D0:40:69:40:30:2C:21:01:22:96:46:EC:4A:FE:44:10:47:EB:48:2B:30:00:BD:FC:B5:01:90:45:69:00:24:B8:20:40:5D:01:28:37:D1:C7:26:70:5D:01:28:0D:D0:03:28:0B:D0:28:1C:01:21:8E:46:EA:49:FE:44:08:47:BF:20:40:5D:01:28:27:D1:6C:8D:25:E0:C0:20:44:55:77:5D:74:55:28:1C:01:21:8E:46:E2:49:FE:44:08:47:77:55:BF:26:70:5D:01:28:16:D1:E9:8E:2A:8F:28:1C:01:23:9E:46:DD:4B:FE:44:18:47:00:04:00:0C:04:28:06:DD:6C:8D:C0:1E:84:42:06:DB:04:04:24:0C:03:E0:03:21:C0:20:41:55:74:55:28:8D:61:1C:41:43:08:04:00:0C:01:99:88:61:D1:49:FC:39:09:78:C9:09"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x000872d4, 0xfa, "10:D3:2E:8D:31:1C:01:24:A6:46:EC:4A:FE:44:10:47:00:96:EB:48:02:78:BB:20:43:5D:3A:20:A6:46:EE:4C:FE:44:20:47:ED:48:B5:30:FC:BD:01:1C:0A:7B:EC:48:00:2A:02:D0:C9:69:02:29:01:D1:63:30:F7:46:E9:49:43:39:08:18:F7:46:02:8A:01:79:0A:29:00:DB:0A:21:E5:48:8A:42:01:DD:65:30:F7:46:5B:30:F7:46:01:6A:C8:7B:00:02:89:7B:01:43:B5:48:52:30:02:88:DF:48:91:42:01:D1:2D:30:F7:46:29:30:F7:46:F0:B5:DC:49:00:7F:C0:00:40:18:02:1F:13:88:87:48:DA:38:18:40:10:80:2F:27:3F:02:EF:4D:2F:82:0C:04:24:0C:2C:80:14:26:08:E0:64:20:01:21:8E:46:EB:49:FE:44:08:47:70:1E:06:06:36:0E:A8:89:80:0B:01:D2:00:2E:F1:D1:A8:89:40:05:40:0F:17:D0:07:20:00:02:68:81:2F:82:EB:48:28:81:2C:80:14:24:08:E0:64:20:01:21:8E:46:DD:49:FE:44:08:47:60:1E:04:06:24:0E:A8:89:80:0B:01:D2:00:2C:F1:D1:A8:89:68:88"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x000873ce, 0xfa, "BC:48:FF:30:34:30:F0:BD:10:B5:01:6A:DF:4A:12:68:92:88:12:13:92:07:93:0F:DD:4A:02:2B:01:D0:13:88:00:E0:03:8B:44:68:0C:19:44:60:83:61:48:88:18:1A:10:80:AF:48:E7:30:10:BD:70:B5:05:1C:68:68:00:28:1A:D1:D3:4E:35:20:00:01:84:19:20:68:01:21:8E:46:D1:49:FE:44:08:47:20:7F:00:28:0D:D0:CF:48:00:78:02:28:09:D0:E0:7F:50:21:41:43:71:18:48:8E:01:30:48:86:60:8A:01:38:60:82:00:20:C3:49:08:60:01:20:86:46:C6:48:FE:44:00:47:68:60:C5:48:65:30:70:BD:C5:48:D5:30:F7:46:00:B5:40:69:01:21:8E:46:C2:49:FE:44:08:47:C2:48:35:30:00:BD:41:69:09:7C:06:29:02:D1:01:21:BF:4A:11:80:0F:21:81:60:BE:48:53:30:F7:46:C1:68:43:68:0A:78:0C:2A:07:D1:BB:4A:12:78:00:2A:01:D1:06:22:00:E0:07:22:4A:70:43:61:B7:48:09:30:F7:46:10:B5:80:69:B4:49:09:78:00:29:09:D1:06:24:04:70:01:30:00:21:01:22"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x000874c8, 0xfa, "96:46:B1:4A:FE:44:10:47:08:E0:07:24:04:70:01:30:00:21:01:22:96:46:AC:4A:FE:44:10:47:04:70:01:30:0D:21:01:24:A6:46:A8:4A:FE:44:10:47:E9:49:A6:46:A5:4A:FE:44:10:47:E8:48:5D:30:10:BD:01:1C:E8:48:02:78:E6:48:00:2A:01:D0:5D:30:F7:46:28:22:8A:60:C0:1C:F7:46:E3:49:09:78:05:29:02:D1:01:21:E2:4A:11:70:23:21:81:60:E1:48:27:30:F7:46:10:B5:01:7E:00:7D:08:43:DE:4C:0A:D0:00:20:ED:49:08:70:01:20:86:46:EC:48:FE:44:00:47:20:1C:79:30:10:BD:20:1C:71:30:10:BD:81:69:4A:78:C2:60:49:78:18:29:01:DB:17:21:C1:60:E4:48:39:30:F7:46:C0:46:04:F3:1A:00:80:7B:08:00:D9:FC:00:00:F0:B5:45:68:87:68:01:24:A4:02:05:E0:01:20:86:46:E7:48:FE:44:00:47:01:3C:A8:78:69:78:09:1A:E5:4E:03:29:10:D0:C9:1C:0E:D0:00:2C:0E:D0:03:28:02:DB:C0:1E:00:06:00:0E:34:21:41:43:48:19:03:30:38:60:30:1C"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x000875c2, 0xfa, "21:30:F0:BD:00:2C:E0:D1:04:21:DA:48:0A:1C:23:1C:01:24:A6:46:D9:4C:FE:44:20:47:30:1C:25:30:F0:BD:C0:46:99:94:03:00:F9:8C:00:00:10:B5:D4:4C:A0:88:01:21:8E:46:D3:49:FE:44:08:47:00:28:01:D1:EC:48:A0:80:EA:48:FF:30:6E:30:10:BD:15:86:00:00:6D:67:08:00:62:4F:08:00:F8:B5:04:1C:A0:69:0E:21:0E:18:21:7F:00:29:2C:D1:30:1C:01:25:AE:46:EC:49:FE:44:08:47:00:28:01:D1:00:27:08:E0:AE:46:E9:49:FE:44:08:47:00:78:A8:21:41:43:E7:48:47:5C:38:1C:AE:46:EA:49:FE:44:08:47:80:00:00:90:38:1C:AE:46:E2:49:FE:44:08:47:AE:46:E1:49:FE:44:08:47:02:1C:02:36:30:1C:00:99:51:18:AE:46:DE:4A:FE:44:10:47:A0:69:60:60:DC:48:81:30:F8:BD:DD:48:1B:30:F7:46:AD:45:05:00:A5:21:08:00:DA:49:0A:1C:3A:32:12:78:09:78:89:18:41:60:D8:48:83:30:F7:46:FB:8B:04:00:A9:86:00:00:AD:99:00:00:C6:05:00:00"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x000876bc, 0xfa, "0F:AA:00:00:55:DE:02:00:00:A0:1B:00:F8:B5:00:25:00:95:B9:49:D3:48:00:88:88:42:01:D0:01:26:06:E0:28:1C:01:21:8E:46:CA:4A:FE:44:10:47:2E:1C:95:4F:01:24:3C:76:A6:46:C7:48:FE:44:00:47:3D:72:C6:4F:B8:6D:69:46:A6:46:8C:4A:FE:44:10:47:15:21:00:98:01:70:00:98:46:70:B8:6D:00:99:2A:1C:A6:46:BF:4B:FE:44:18:47:BE:48:3B:30:F8:BD:C0:46:18:80:1B:00:C3:8E:03:00:10:B5:04:1C:9F:49:BA:48:00:88:88:42:05:D1:00:20:01:21:8E:46:B1:4A:FE:44:10:47:01:20:A0:60:B5:48:57:30:10:BD:03:13:00:00:D4:48:08:00:48:61:08:00:84:45:08:00:A3:56:05:00:CE:0F:08:00:29:19:02:00:0F:1A:02:00:81:26:01:00:DB:EF:04:00:B9:28:05:00:44:61:08:00:DB:22:03:00:31:4F:08:00:5D:86:02:00:E7:2A:00:00:FE:B5:00:90:86:69:00:6A:01:90:30:89:00:28:01:D1:00:24:73:E0:31:68:2D:24:64:4A:2C:20:80:18:02:90:3E:23"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x000877b6, 0xfa, "01:9D:5B:5D:00:78:83:42:06:D0:A0:5C:83:42:01:D1:01:27:02:E0:02:27:00:E0:00:27:48:68:00:0F:1D:D2:30:1C:01:25:AE:46:93:49:FE:44:08:47:04:1C:30:68:00:28:05:D0:00:1F:31:1C:AE:46:8F:4A:FE:44:10:47:30:89:00:28:49:D1:4A:21:01:98:08:5C:00:28:44:D1:02:2F:42:D0:FF:21:02:98:39:54:3E:E0:08:25:4C:1B:87:48:00:2F:11:D1:21:88:00:29:03:D1:00:20:30:60:70:60:07:E0:21:88:40:18:31:1C:01:22:96:46:7E:4A:FE:44:10:47:00:20:20:80:11:E0:01:2F:0F:D1:A1:88:00:29:03:D1:00:20:30:60:70:60:06:E0:40:18:31:1C:01:22:96:46:75:4A:FE:44:10:47:00:20:A0:80:30:89:01:38:30:81:E0:78:40:07:40:0F:05:43:E5:70:30:89:00:28:09:D1:4A:21:01:98:08:5C:00:28:04:D1:02:2F:02:D0:FF:21:02:98:39:54:08:34:00:98:44:60:64:48:51:30:FE:BD:C0:46:AA:1B:00:00:5D:15:00:00:A5:E0:01:00:64:61:08:00:6D:17:08:00"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x000878b0, 0xfa, "29:22:08:00:2F:85:03:00:C1:CB:03:00:F0:B5:05:1C:AE:69:00:24:6C:60:10:E0:11:20:40:01:60:43:5A:49:0F:18:10:20:C0:19:31:1C:01:22:96:46:57:4A:FE:44:10:47:00:28:00:D1:6F:60:01:34:55:48:00:78:84:42:EA:DB:54:48:47:30:F0:BD:1E:17:08:00:F1:CA:03:00:91:90:03:00:30:B5:45:69:68:7A:FF:28:0D:D0:01:24:A6:46:4D:49:FE:44:08:47:C2:21:08:5C:02:28:04:D0:68:7A:A6:46:49:49:FE:44:08:47:49:48:CF:30:30:BD:17:8F:03:00:BD:59:05:00:1F:03:00:00:DF:87:04:00:14:24:08:00:19:90:01:00:F0:B5:81:68:81:61:46:68:B8:20:80:5D:41:4F:02:28:0C:D1:01:24:A6:46:3D:48:FE:44:00:47:00:28:05:D0:A6:46:3B:48:FE:44:00:47:01:28:02:D0:38:1C:C0:1C:F0:BD:00:25:68:1C:00:04:00:0C:A6:46:17:49:FE:44:08:47:00:28:0A:D0:FF:21:C1:31:08:18:01:78:02:29:02:D0:00:7D:02:28:01:D1:BC:20:84:55:01:35:07:2D:E8:DB"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x000879aa, 0xfa, "38:1C:8F:30:F0:BD:89:8D:01:00:FF:FF:00:00:29:49:09:78:80:69:C1:70:28:48:63:30:F7:46:29:48:00:78:00:07:40:0E:89:6B:49:06:89:0C:08:18:24:49:08:80:25:48:C5:30:F7:46:F5:2A:00:00:D9:8F:01:00:CB:18:08:00:E9:76:04:00:C5:76:04:00:D5:2A:00:00:39:14:02:00:C5:79:04:00:9D:B1:03:00:87:0F:08:00:79:95:01:00:29:D9:00:00:11:DE:02:00:14:54:08:00:E7:59:05:00:59:DD:02:00:60:61:08:00:D5:44:00:00:ED:20:05:00:4D:0B:04:00:13:22:05:00:00:00:18:00:00:00:08:00:81:94:03:00:33:4F:08:00:8D:D0:03:00:0B:34:04:00:1F:33:04:00:5D:27:05:00:19:DE:01:00:CD:33:04:00:BD:A6:00:00:5A:56:08:00:B1:82:00:00:1C:30:19:00:96:A5:1B:00:B1:35:03:00:FF:B5:68:46:FE:F7:EE:FD:FF:BD:FF:B5:68:46:FE:F7:13:FE:FF:BD:FF:B5:68:46:FD:F0:30:FA:FF:BD:FF:B5:68:46:FE:F7:97:FD:FF:BD:FF:B5:68:46:FD:F0:B6:FA"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00087aa4, 0x8e, "FF:BD:FF:B5:68:46:FD:F0:F9:F9:FF:BD:FF:B5:68:46:FE:F7:22:FE:FF:BD:FF:B5:68:46:FE:F7:8D:FC:FF:BD:FF:B5:68:46:FF:F7:84:F9:FF:BD:FF:B5:68:46:FE:F7:01:FD:FF:BD:FF:B5:68:46:FE:F7:B8:FE:FF:BD:FF:B5:68:46:FE:F7:2F:FD:FF:BD:FF:B5:68:46:FE:F7:EC:FB:FF:BD:FF:B5:68:46:FE:F7:87:FC:FF:BD:FF:B5:68:46:FF:F7:12:FA:FF:BD:FF:B5:68:46:FF:F7:E3:F8:FF:BD:FF:B5:68:46:FE:F7:E6:FF:FF:BD:FF:B5:68:46:FE:F7:EF:FE:FF:BD:FF:B5:68:46:FE:F7:7C:FF:FF:BD"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00087b78, 0x88, "00:B5:F8:F0:41:FA:00:BD:1F:72:08:00:79:74:08:00:D7:73:08:00:07:74:08:00:91:74:08:00:65:74:08:00:B3:74:08:00:05:75:08:00:1D:75:08:00:5F:74:08:00:69:61:08:00:C7:79:08:00:35:75:08:00:5D:75:08:00:ED:75:08:00:05:79:08:00:81:75:08:00:33:73:08:00:51:73:08:00:C9:76:08:00:31:77:08:00:49:79:08:00:B9:79:08:00:19:76:08:00:8B:76:08:00:99:76:08:00:95:77:08:00:BD:78:08:00:A5:50:18:00:B9:50:18:00:3F:72:08:00:1B:73:08:00"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x001af304, 0x80, "1E:8D:00:00:2C:23:03:00:3A:DF:02:00:3A:1A:02:00:64:86:02:00:E8:28:05:00:7E:15:00:00:A6:E0:01:00:54:85:03:00:52:27:01:00:7C:BF:02:00:6C:36:03:00:2E:CC:03:00:C8:90:03:00:F0:8E:01:00:22:28:05:00:BE:59:05:00:72:DE:02:00:6E:DF:02:00:64:DD:02:00:22:45:00:00:BE:A6:00:00:08:83:00:00:B8:14:02:00:AE:B1:03:00:F8:95:01:00:F4:20:05:00:CE:D0:03:00:C6:16:02:00:70:A5:01:00:BC:86:00:00:66:AA:00:00"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00180000, 0xfa, "F0:B5:64:4E:07:22:10:1C:30:70:10:23:73:70:47:20:B0:70:2A:20:F0:70:03:25:28:1C:60:49:01:39:01:24:A6:46:5D:4F:FE:44:38:47:B2:78:F3:78:28:1C:5B:49:A6:46:59:4E:FE:44:30:47:28:1C:58:49:01:31:A6:46:57:4A:FE:44:10:47:28:1C:B9:21:C9:00:A6:46:54:4A:FE:44:10:47:A6:46:53:48:FE:44:00:47:52:4B:00:21:08:1C:1A:68:00:2A:04:D0:02:07:15:0F:22:1C:AA:40:11:43:02:07:12:0F:0F:2A:05:D1:C5:08:06:22:2A:40:4A:4D:A9:52:00:21:04:33:01:30:20:28:E9:D3:3F:21:68:48:41:75:A6:46:47:48:FE:44:00:47:44:49:08:60:C8:20:45:49:08:80:3C:23:44:48:03:70:02:20:44:49:08:70:FF:22:43:48:02:70:43:48:04:70:43:48:04:70:43:48:04:70:43:48:03:70:28:23:43:70:14:23:83:70:08:20:41:4B:18:70:41:48:0C:25:05:73:0B:23:83:73:0D:23:43:73:81:20:00:03:3D:4B:18:60:40:48:03:1C:5A:33:1C:60:00:27:3B:4B:1F:70"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x001800fa, 0xfa, "3C:4B:3A:4E:33:80:02:70:3C:4A:13:80:4F:30:04:70:09:20:21:21:C9:00:0F:22:39:4B:A6:46:39:4E:FE:44:30:47:3A:4E:30:1C:36:38:04:21:A6:46:36:4A:FE:44:10:47:20:1C:A6:46:34:49:FE:44:08:47:30:1C:29:1C:A6:46:30:4A:FE:44:10:47:30:1C:29:1C:A6:46:30:4A:FE:44:10:47:30:4E:A8:19:A6:46:2F:49:FE:44:08:47:30:1C:A6:46:2D:49:FE:44:08:47:A6:46:2C:48:FE:44:00:47:38:1C:A6:46:2B:49:FE:44:08:47:29:49:08:60:2A:48:07:60:2A:48:07:60:2A:48:07:80:0A:20:29:49:08:70:29:48:07:21:01:70:F0:BD:F8:4F:08:00:7B:88:04:00:C6:05:00:00:65:88:04:00:6B:02:18:00:80:7B:08:00:84:F3:1A:00:58:61:08:00:47:76:04:00:4A:61:08:00:51:61:08:00:52:61:08:00:53:61:08:00:4E:61:08:00:4F:61:08:00:50:61:08:00:10:31:19:00:15:13:08:00:D8:11:08:00:F4:20:08:00:64:61:08:00:60:61:08:00:FF:FF:00:00:62:4F:08:00"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x001801f4, 0xfa, "18:24:08:00:B0:3E:18:00:31:06:04:00:9D:F5:04:00:C3:8E:03:00:36:02:1A:00:B5:F5:04:00:A0:17:08:00:CB:07:04:00:07:58:02:00:C0:62:08:00:C5:79:04:00:C4:62:08:00:C8:62:08:00:62:61:08:00:2D:22:08:00:AA:11:08:00:70:B5:45:4D:AE:7F:01:24:A6:46:41:48:FE:44:00:47:B0:42:F8:D1:03:20:17:21:89:01:A6:46:3D:4A:FE:44:10:47:AD:7F:A6:46:3A:48:FE:44:00:47:A8:42:F9:D1:FE:E7:70:B5:3A:49:08:1F:3A:4A:10:60:04:24:37:48:04:70:46:48:02:1C:70:3A:21:23:9B:18:01:25:1D:70:35:4D:0D:60:02:25:55:71:34:4D:4D:60:03:25:15:70:33:4D:8D:60:14:71:33:4C:CC:60:16:24:A4:18:05:25:25:70:31:4D:0D:61:06:25:D5:74:30:4D:4D:61:07:25:95:71:95:1D:2E:4E:8E:61:08:26:A6:77:2D:4C:CC:61:09:24:94:70:2C:4C:0C:62:0A:24:AC:77:2B:4C:4C:62:0B:24:5C:77:2A:4C:8C:62:0C:24:D4:71:29:4A:CA:62:0D:22:5A:75:28:4A"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x001802ee, 0xde, "0A:63:0E:22:02:70:28:4A:4A:63:0F:22:42:70:27:4A:8A:63:10:22:C2:73:26:4A:CA:63:01:38:11:22:02:70:25:4A:0A:64:12:22:02:71:24:4A:4A:64:13:22:C2:77:23:48:88:64:00:20:25:49:08:80:25:49:08:80:19:21:49:01:1F:4A:11:80:4B:21:09:01:1E:4A:11:80:21:49:22:4A:11:80:1D:49:08:70:70:BD:C5:83:04:00:65:88:04:00:3C:4E:08:00:F2:4F:08:00:70:62:08:00:70:52:08:00:E3:7A:08:00:CF:7A:08:00:ED:7A:08:00:F7:7A:08:00:D9:7A:08:00:1F:7B:08:00:29:7B:08:00:15:7B:08:00:0B:7B:08:00:01:7B:08:00:C5:7A:08:00:89:7A:08:00:A7:7A:08:00:E4:52:08:00:93:7A:08:00:75:7A:08:00:7F:7A:08:00:B1:7A:08:00:BB:7A:08:00:9D:7A:08:00:98:23:08:00:32:24:08:00:54:1D:18:00:44:61:08:00:46:61:08:00:FF:FF:00:00:50:1D:18:00"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00184ea0, 0xfa, "70:B5:06:1C:68:4C:A0:8A:0F:28:1D:DA:20:89:00:28:1A:D0:66:48:04:21:01:25:AE:46:68:4A:FE:44:10:47:00:28:11:D1:20:1C:AE:46:61:49:FE:44:08:47:01:1C:08:30:60:4A:10:80:0C:20:00:19:AE:46:60:4A:FE:44:10:47:A0:8A:0F:28:E1:DB:5B:48:40:30:30:62:70:BD:F8:B5:80:8A:FF:21:0B:31:88:42:5B:D0:FF:21:45:31:88:42:16:D1:63:48:00:78:02:28:12:D1:62:49:FF:20:3D:30:40:18:00:90:53:48:40:5C:00:26:86:42:10:D3:51:25:AD:00:28:1C:01:24:A6:46:4F:49:FE:44:08:47:00:28:6C:D1:28:1C:4D:49:A6:46:4D:4A:FE:44:10:47:F8:BD:B1:00:00:98:45:58:00:2D:2F:D0:C2:20:40:5D:00:28:2B:D0:B6:20:41:5D:00:29:27:D1:C5:20:40:5D:01:28:23:D0:24:20:01:24:A6:46:4C:4A:FE:44:10:47:00:06:00:0E:B7:22:51:5D:81:42:17:D0:50:55:00:28:14:D1:2F:8D:39:1C:3B:48:A6:46:3B:4A:FE:44:10:47:29:8E:79:18:08:1A:40:1E:39:1C"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00184f9a, 0xfa, "A6:46:36:4A:FE:44:10:47:40:00:28:86:28:8E:40:08:28:86:01:36:33:48:00:78:B3:E7:00:20:01:24:A6:46:31:49:FE:44:08:47:01:1C:00:90:2F:4D:28:68:01:30:28:60:2B:27:FF:00:2D:4E:2E:48:00:8C:32:68:10:18:80:01:80:09:A6:46:2F:4A:FE:44:10:47:00:28:11:DD:00:98:30:60:28:68:03:28:0A:D9:00:20:A6:46:25:49:FE:44:08:47:23:48:38:5C:A6:46:22:49:FE:44:08:47:00:20:28:60:F8:BD:30:B5:85:69:24:20:00:21:01:24:A6:46:1F:4A:FE:44:10:47:B7:21:48:55:51:25:AD:00:28:1C:A6:46:0E:49:FE:44:08:47:00:28:05:D1:28:1C:0C:49:A6:46:0C:4A:FE:44:10:47:30:BD:C0:46:A0:17:08:00:4A:0C:1A:00:4D:0B:04:00:32:02:1A:00:A5:57:02:00:6B:F7:04:00:8B:09:04:00:1B:0A:00:00:CB:D7:03:00:00:66:E3:01:C7:D5:03:00:FF:FF:FF:01:AD:45:05:00:2F:2E:08:00:C5:79:04:00:C4:62:08:00:C0:62:08:00:48:10:08:00:49:11:02:00"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x00185094, 0xf8, "45:10:08:00:14:24:08:00:93:E4:04:00:39:7A:04:00:00:B5:40:68:01:21:8E:46:2D:49:FE:44:08:47:2B:48:57:30:00:BD:FC:B5:00:90:2F:48:BE:30:00:78:02:28:42:D1:2E:49:FF:20:3D:30:40:18:01:90:25:48:40:5C:00:26:37:E0:B1:00:01:98:45:58:00:2D:2F:D0:C2:20:40:5D:00:28:2B:D0:B6:20:41:5D:00:29:27:D1:C5:20:40:5D:01:28:23:D0:24:20:01:24:A6:46:20:4A:FE:44:10:47:00:06:00:0E:B7:22:51:5D:81:42:17:D0:50:55:00:28:14:D1:2F:8D:39:1C:13:48:A6:46:19:4A:FE:44:10:47:29:8E:79:18:08:1A:40:1E:39:1C:A6:46:15:4A:FE:44:10:47:40:00:28:86:28:8E:40:08:28:86:01:36:0A:48:00:78:86:42:C5:D3:00:98:41:68:81:61:FF:21:41:60:08:48:06:49:08:18:FC:BD:C0:46:73:16:02:00:DB:EF:04:00:1B:0A:00:00:FF:FF:FF:01:2F:2E:08:00:77:02:00:00:FD:A2:01:00:87:0F:08:00:14:24:08:00:93:E4:04:00:AD:45:05:00"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Goto_Address 0xFF83, 0x00087b79, 0x00000000, 0x00000000, 0x00000000, 0x00000000
      Wait_HCI_Command_Complete_VS_Goto_Address_Event 5000, any, 0xff83, 0x00
      
      
      
      
      Send_HCI_VS_Sleep_Mode_Configurations 0xFD0C, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0064
      Wait_HCI_Command_Complete_VS_Sleep_Mode_Configurations_Event 5000, any, 0xfd0c, 0x00
      Send_HCI_VS_Read_Modify_Write_Hardware_Register 0xFD09, 0x001a6058, 0x1000, 0x1000
      Wait_HCI_Command_Complete_VS_Read_Modify_Write_Hardware_Register_Event 5000, any, 0xfd09, 0x00
      Send_HCI_VS_Read_Modify_Write_Hardware_Register 0xFD09, 0x001a6010, 0x0010, 0x0010
      Wait_HCI_Command_Complete_VS_Read_Modify_Write_Hardware_Register_Event 5000, any, 0xfd09, 0x00
      Send_HCI_VS_DRPb_Set_RF_Calibration_Info 0xFD76, 0x01, 0x00005421, 0x00005761, 0x14, 0x05, 0x0a, 0x05, 0x00, 0x07, 0x06, 0x0a, 0x04, 0x05, 0x08, 0x09, 0x0b, 0x0c, 0x0d, 0x0e, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00000000
      Wait_HCI_Command_Complete_VS_DRPb_Set_RF_Calibration_Info_Event 5000, any, 0xfd76, 0x00
      Send_HCI_VS_DRPb_Enable_RF_Calibration 0xFD80, 0x00, 0x00000001, 0x01
      Wait_HCI_Command_Complete_VS_DRPb_Enable_RF_Calibration_Event 5000, any, 0xfd80, 0x00
      Send_HCI_VS_DRPb_Enable_RF_Calibration 0xFD80, 0x3c, 0x00005ff0, 0x00
      Wait_HCI_Command_Complete_VS_DRPb_Enable_RF_Calibration_Event 5000, any, 0xfd80, 0x00
      Send_HCI_VS_Fast_Clock_Configuration_btip 0xFD1C, 0xff, 0x00001388, 0x000007d0, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x0000
      Wait_HCI_Command_Complete_VS_Fast_Clock_Configuration_btip_Event 5000, any, 0xfd1c, 0x00
      
      
      
      Send_HCI_VS_Stop_VS_Lock 0xFE38
      Wait_HCI_Command_Complete_VS_Stop_VS_Lock_Event 5000, any, 0xfe38, 0x00
      
      #################################################################
      ## START of CC2564 Adds-On
      #################################################################
      
      ## Enable fast clock XTAL support
      Send_HCI_VS_Fast_Clock_Configuration_btip 0xFD1C, 0x01, 0x00001388, 0x000007d0, 0xff, 0xff, 0x04, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x0000
      Wait_HCI_Command_Complete_VS_Fast_Clock_Configuration_btip_Event 5000, any, 0xfd1c, 0x00
      
      ## Enable eHCILL
      Send_HCI_VS_hcill_parameters 0xFD2B, 0x0010, 0x0050, 0x96
      Wait_HCI_Command_Complete_VS_hcill_parameters_Event 5000, any, 0xfd2b, 0x00
      
      #Send_HCI_VS_Sleep_Mode_Configurations 0xFD0C, 0x01, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0x0064
      #Wait_HCI_Command_Complete_VS_Sleep_Mode_Configurations_Event 5000, any, 0xfd0c, 0x00
      
      #LE Enable
      Send_HCI_VS_LE_Enable 0xFD5B, 0x01, 0x01
      Wait_HCI_Command_Complete_VS_LE_Enable_Event 5000, any, 0xfd5b, 0x00
      
      # Disable Cortex Sleep
      Send_HCI_VS_LOAD_Cortex 0xFDA8, 0x01
      Wait_HCI_Command_Complete_VS_LOAD_Cortex_Event 5000, any, 0xfda8, 0x00
      
      
      # Cortex Reset (hold in reset while loading IMEM)
      Send_HCI_VS_Read_Modify_Write_Hardware_Register 0xFD09, 0x001bc000, 0x0001, 0x0001
      Wait_HCI_Command_Complete_VS_Read_Modify_Write_Hardware_Register_Event 5000, any, 0xfd09, 0x00
      ########################
      # Patch Start
      ########################
      
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x001b4bac, 0x08, "91:FF:47:F2:9B:35:47:F2"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x001b6320, 0x50, "30:BD:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      Send_HCI_VS_Write_Memory_Block 0xFF05, 0x001b7398, 0x58, "70:47:02:46:14:3A:1E:D0:52:1E:24:D1:8A:78:02:2A:11:D9:12:1F:02:2A:0E:D9:1D:3A:1C:D0:92:1F:02:2A:19:D9:09:3A:17:D0:89:88:40:F2:00:00:C2:F2:30:00:08:43:FD:F7:4B:BE:09:89:40:F2:00:00:C2:F2:30:00:08:43:FD:F7:43:BE:89:88:40:F2:00:00:C2:F2:30:00:08:43:FD:F7:3B:BE:70:47"
      Wait_HCI_Command_Complete_VS_Write_Memory_Block_Event 5000, any, 0xff05, 0x00
      
      ########################
      # Patch End
      ########################
      
      #release Cortex Reset
      Send_HCI_VS_Read_Modify_Write_Hardware_Register 0xFD09, 0x001bc000, 0x0000, 0x0001
      Wait_HCI_Command_Complete_VS_Read_Modify_Write_Hardware_Register_Event 5000, any, 0xfd09, 0x00
      
      # Enable Cortex Sleep
      Send_HCI_VS_LOAD_Cortex 0xFDA8, 0x00
      Wait_HCI_Command_Complete_VS_LOAD_Cortex_Event 5000, any, 0xfda8, 0x00
      
      #RESET BLE
      Send_HCI_VS_LE_Enable 0xFD5B, 0x01, 0x00
      Wait_HCI_Command_Complete_VS_LE_Enable_Event 5000, any, 0xfd5b, 0x00
      
      Send_HCI_VS_LE_Output_Power 0xFDDD, 0x01
      Wait_HCI_Command_Complete_VS_LE_Output_Power_Event 5000, any, 0xfddd, 0x00
      
      #################################################################
      ## END of CC2564 Adds-On
      #################################################################
      

    Best,

    Jacob

  • Hi Jacob,

    No problem, I hope you had a relaxed time during your vacation.

    Thanks for the file. I did some tests already with the file but it seems not to cure the problem.
    In combination with BlueZ, I get still the same problems.

    However, I found that I made a mistake in one of my previous posts:
    Send_HCI_VS_Set_Supported_Features , 0x04, 0x04, 0x00 is not resetting the LE Supported (Controller) flag in the feature mask. It's simply the wrong bit.

    Send_HCI_VS_Set_Supported_Features , 0x04, 0x06, 0x00 is the correct bit an if I insert that into your file at the beginning, it seems the firmware loads successfully. The logger writes now the following lines:

    12430    10:03:42.766   +0:00:03.903    A3DP: Init.  E N J O Y   T H E   M U S I C    
    12431    10:03:42.766   +0:00:03.903    AVPR init completed    

    AVPR_FeatureFix.zip

    Without setting the flag, the bts file you provided does not come to this point.

    Unfortunately, hciattach still reports some problems. It seems it's not able to send out commands:

    hciattach /dev/ttyUSB0 texas 115200 flow
    Found a Texas Instruments' chip!
    Firmware file : /lib/firmware/ti-connectivity/TIInit_6.7.16.bts
    Loaded BTS script version 1
    texas: changing baud rate to 115200, flow control to 1
    Cannot send hci command to socket: Connection timed out
    Can't initialize device: Connection timed out

    At least the logger application does not detect any access or communication.
    We need to do some investigations here. Hints are welcome of course...

    Best regards,
    Adalbert

  • Hi Jacob,

    I'm confused now.

    I just realized that the Send_HCI_VS_Set_Supported_Features commands byte offset is not 0-based as indicated by the online help in HCITester: 0 - Byte #0 , 1 - Byte #1 , 2 - Byte #2

    I tried to read, modify and read again the LMP features written during the initialisation:


    But instead of modifying the byte 0xFE to 0xBE, it modifies the neighbour byte from 0xDB to 0x9B.
    Probably it's worth to update the documentation...

    I tried of course to correct that by using offset 5 instead of 4. Unfortunately, that does not work as expected. The command is executed without errors, but the bit is not changed:

    Furthermore, I'm confused why disabling the LMP feature "RSSI with inquiry results" results in a loading AVPR firmware while leaving this bit untouched does not.

    Best regards,
    Adalbert

  • Hi Adalbert,

    Thanks for the update. I plan to follow up tomorrow or the next day.

    Best,
    Jacob

  • Hi Adalbert,

    I'm still looking into your questions above, but I wanted to ask for clarification on what you said here:

    Thanks for the file. I did some tests already with the file but it seems not to cure the problem.
    In combination with BlueZ, I get still the same problems.

    Do you mean that if you leave the enable AVPR statements and remove everything related to BLE in BluetopiaPM_Linux\TIInit_6.7.16.bts, you are still able to run BLE commands? Do your AVPR-related functions work correctly?

    Thanks,
    Jacob

  • Hi Jacob,

    no, that's not what i meant.

    If I apply the file you provided without modifications, the AVPR seems not to load successfully.
    There's no "AVPR init completed" message on the modules debug putput.

    Meanwhile I did some more tests with the feature mask.
    My assumption was, that the bytes are counted from right to left in the output shown above. However that's not true. The byte with the lowest order is in the left. Therefore, it only seems that the wrong byte was set...

    Means: Send_HCI_VS_Set_Supported_Features , 0x04, 0x06, 0x00 is the right command to disable the BLE flag.
    And this command is required to get the module to reach "AVPR init complete".

    Unfortunately, it does not mean that the BlueZ is also working.
    I've to do some more investigations to get the reason for that.
    First investigations on the ouput messages of the kernel indicate, that this may be linked to the SCO channels.

    I see multile times a block of messages on the log like this:
    [   36.185447] hci_sock_sendmsg:1678: sock 9e22b800 sk 82d5b400
    [   36.185471] hci_tx_work:4022: hci0 acl 4 sco 4 le 0
    [   36.185476] hci_sched_acl:3897: hci0
    [   36.185482] hci_sched_sco:3925: hci0
    [   36.185487] hci_sched_esco:3948: hci0
    [   36.185492] hci_sched_le:3972: hci0
    [   36.185499] hci_send_frame:3372: hci0 type 1 len 8
    [   36.185506] hci_send_to_sock:196: hdev 9e4a6000 len 8
    [   36.185514] hci_uart_send_frame:282: hci0: type 1 len 8
    [   36.185521] ll_enqueue:335: hu 82f61000 skb 82d87f00
    [   36.185527] ll_enqueue:346: device awake, sending normally
    [   36.185533] hci_uart_tx_wakeup:150:
    [   36.185553] serial_write:335: tty ttyUSB0: serial_write - 9 byte(s)
    [   36.185565] usb_serial_debug_data:389: cp210x ttyUSB0: usb_serial_generic_write_start - length = 9, data = 01 2b fd 05 10 00 50 00 96
    [   36.185778] hci_uart_tty_wakeup:559:
    [   36.185784] hci_uart_tx_wakeup:150:
    [   36.187646] usb_serial_generic_read_bulk_callback:391: cp210x ttyUSB0: usb_serial_generic_read_bulk_callback - urb 0, len 7
    [   36.187656] usb_serial_debug_data:389: cp210x ttyUSB0: usb_serial_generic_read_bulk_callback - length = 7, data = 04 0e 04 01 2b fd 00
    [   36.187671] usb_serial_generic_submit_read_urb:315: cp210x ttyUSB0: usb_serial_generic_submit_read_urb - urb 0
    [   36.187693] ll_recv:410: hu 82f61000 count 7 rx_state 0 rx_count 0
    [   36.187699] ll_recv:461: Event packet
    [   36.187707] ll_recv:434: Event header: evt 0x0e plen 4
    [   36.187714] ll_check_data_len:380: len 4 room 1846
    [   36.187719] ll_recv:424: Complete data
    [   36.187737] hci_rx_work:4207: hci0
    [   36.187744] hci_send_to_sock:196: hdev 9e4a6000 len 6
    [   36.187758] hci_rx_work:4236: hci0 Event packet
    [   36.187766] hci_cmd_complete_evt:3043: hci0 opcode 0xfd2b
    [   36.187772] hci_sock_recvmsg:1414: sock 9e22b800, sk 82d5b400
    [   36.187776] hci_req_cmd_complete:4147: opcode 0xfd2b status 0x00

    This line seems to be interresting:
    [   36.185471] hci_tx_work:4022: hci0 acl 4 sco 4 le 0

    As the SCO channels are not needed by the host and should be handled directly by the firmware, I'm wondering if this could be some kind of hint for the problem.

    What does happen if the host tries to setup/access/... SCO channels via HCI interface in case the AVPR firmware is running?

    If yes, are you aware about more configuration options to be set to avoid such issues?
    Are there some more information available?

    So far I looked to the feature flags to disable SCO and eSCO support in the module. The idea was to disable that in order to avoid an attempt to configure SCO channels from the host side, but it seems that changing these flags does not have any effect.

    Are you aware about the version of bluez used together with AVPR mode used at TI for testing? Probably there are some patches which need to be included in our software or further configuration we've not yet identified?

    Best regards,

    Adalbert

  • Hi Adalbert,

    TI does not officially support BlueZ. However, our CC2564MODA controller should be able to interpret the HCI commands sent with BlueZ. Unfortunately, we do not have any documentation with BlueZ and TI Bluetooth controllers.

    I'll review your logs to see if I can suggest another fix.

    Thanks,
    Jacob

  • Hi Jacob,

    I started analyzing the UART communication between module and host.
    It seems there's a response missing to the AVPR_Enable command, which is the last command of the bts file.

    NoBTLE.zip

    In the attachement you can see my config, the logger output and the uart communication.

    According to the logger output, the AVPR_ENABLE command is answered. But if I look to the uart communication, I cannot confirm that.

    BTDebug_Filtered.out is probably more interresting as I filtered everything else but the UART communication and added some comments.

    From the beginning there's a continuous ping pong of HCI command packets and event packet responses.
    That works fine until line 191, where opcode 0xFD92 - AVPR_Enable command is sent.

    Unlike the logger indicates, there's no response visible in the log and the host finally aborts/closes the UART connection.

    I've not yet measured the UART lines yet, so I don't know if there's no response at all, a delayed response or a response with e.g. different baud rates.

    I'm also not sure about the meaning of the different flags of the AVPR_Enable command. The logger decodes one of the flags as "AVPR Enable Mode = 0x00 (on (CPU is on but not running))". Looks a little bit strange to me.

    Best regards,
    Adalbert

  • Before you made the changes to disable BLE with Send_HCI_VS_Set_Supported_Features, were you able to connect to the controller with hciattach without the device initialization timeout? 

    Thanks,
    Jacob

  • Hi Jacob,

    no, that's not working.

    With the unchanged configuration you provided, the hciattach is not working. It reports

    Found a Texas Instruments' chip!
    Firmware file : /lib/firmware/ti-connectivity/TIInit_6.7.16.bts
    Loaded BTS script version 1
    texas: changing baud rate to 115200, flow control to 1
    Can't init device hci0: Device or resource busy (16)Can't initialize device: Device or resource busy

    With this verison, I also can't see in logger application, that the firmware is loaded.

    In the logs you can see that the HCI_LE_Read_Supported_States command seems to be rejected.

    What I don't fully understand is, that this command is not part of the bts file.
    But that may be a follow of other commands executing some sub-commands.

    I assume that's not unlikely, because the number of write memory block commands in the configuration file differs from the number of commands from the logs.
    Furthermore, the amount of data written by the bts file is 200 bytes payload but the same command in the log shows, that the amount of data per command is increased to 256 bytes. At least the header says that the length is 0xff.

    What I can also say from the logs is, that the AVPR_ENABLE command, which should start the firmware, is not sent out.

    Also the opcodes for Send_HCI_VS_Read_Modify_Write_Hardware_Register and Send_HCI_VS_LOAD_Cortex are not visible in the logs. According to the BTS file, these should be executed right after writing the memory blocks and before starting AVPR_ENABLE.

    Logs and config is attached.

    Best regards,
    Adalbert

    TIConfig.zip

  • Hi Jacob,

    I further analyzed the logs from my last post.
    As far as I can see, the AVPR patch ist not loaded at all.

    I can see in my logs that the Goto_Address command 0xff83 is executed and answered.
    According to the logger output, that seemd to work without error.

    From this point on, I don't see further write_memory_block commands (0xff05) in the UART logs from the host.

    I guess, the Goto_address command starts the firmware and puts the module in operational state?

    From this point on, none of the remaining commands of the bts file is executed in the log.
    Instead some host initiated commands seem to be executed.

    Until it comes to LE_Read_Supported_States command.
    Then it seem that a retry of a sequence follows before the tool quits.

    Best regards,
    Adalbert

  • Hi Adalbert,

    I'll respond tomorrow.

    Best,
    Jacob

  • Hi Adalbert,

    Before we continue with hciattach, I wanted to check to see if you have been able to communicate with the controller using HCITester? Perhaps it would be easier to ensure you can enable AVPR correctly using HCITester and then move to hciattach after.

    Thanks,
    Jacob

  • swru581.pdf

    Hi,

    we are also trying to add the assited A2DP mode in cc2564MODA module, we has followed the "swru581.pdf" Document.

    but, we are unable to load the script, we are getting "Device or Resource busy" error. Could you please suggest what procedure we should follow for enable the assisted modes.

    Thanks & Regards,

    shivasagar. 

  • Hi Jacob,

    I just finished the rework of our board to try downloading with an windows host using HCITester.


    Downloading the file using HCITester in deed ends up in a different result than using hciattach.
    Using HCITester, the download continues after applying the 1st part until the Send_HCI_VS_Goto_Address command.

    The remaining patch for AVPR functionality is downloaded as well to the target and the logger output indicates
    837    14:55:53.319   +0:00:11.330    A3DP SINK: Init. S I N K  O N  T H E  A I R !  E N J O Y   T H E   M U S I C  
    838    14:55:53.319   +0:00:11.330    AVPR init completed    
     

    The most obvious difference between downloading the code using hciattach and HCITester is, that after sending out the Send_HCI_VS_Goto_Address command, there are no host originated commands visible in the output of the logger application.
    Commands like Read_Local_Supported_Features are not visible log created when using HCITester for downloading.

    It seems, that even if the commands are executed correctly and answered by the module, there's an effect on the modules behaviour.

    If that guess is true, that would mean, hciattach must not interrupt loading of the BTS file when receiving the response for HCILL command. Instead, it must continue to load the patch until it reaches the end of the file.

    Alternatively, the hcill command may be moved to the end of the file.
    Do you have made experiences which such a behaviour?

    Attached you can find the config file as well as logs created using hciattach and HCITester.

    Best regards,

    Adalbert

    3821.NoBTLE.zip

  • Hi Adalbert,

    The init_plus_AVPR.lgr file I shared on March 28, 2022 is a log of HCITester. I'm fairly sure I am able to see a  response from the controller when I run Read_Local_Supported_Features, but I will double check tomorrow. 

    If that guess is true, that would mean, hciattach must not interrupt loading of the BTS file when receiving the response for HCILL command. Instead, it must continue to load the patch until it reaches the end of the file.

    I've only used HCITester for this type of application, so I am not familiar with how hciattach handles the firmware loading. It sounds like you may have found a discrepancy between the two programs.

    With the "AVPR init completed" message, are you able to begin playing audio? 

    Thanks,
    Jacob

  • Hi Jacob,

    yesterday I investigated more in the direction of "uninterrupted" download of the firmware file.

    Deeper investigations on the hciattach code indicates, that the command, which let stop the download, is the "VS_Sleep_Mode_Configurations" command, which is sent immediately after the "VS_Goto_Address" command.

    In the 1st trials, I simply commented this command out and from the bts file and had success.
    After complete execution of the bts file, I receive the "Sink on the air" message like downloading the config by HCITester.

    And after the BTS file is downloaded completely, the host originated commands appear in the logger output.

    For now, I was able to test basic operations like scaning for devices and pairing/connecting of a phone.
    Performing a call using the phone does not yet work (at least not with audio routed over the module), but that may depend on other issues.
    I need to check the configuration of the external codec attached to the module first.
    I also need to check if the missing sleep mode configuration affects that somehow. Adding that command as last entry instead of commenting it out may be the better choice.

    Best regards,
    Adalbert

  • Hi Adalbert,

    The placement of the VS_Sleep_Mode_Configurations command can affect how the controller state when it loads the firmware. I usually comment that command out for initial testing.

    Best,

    Jacob

  • Hi Jacob,

    current status is, that the firmware is loaded and the module is accessible with this configuration by the host and responding to HCI commands.

    We can setup at least an HFP connection to a phone and initiate e.g. a call via bluetooth.
    The call itself is successfully setup, but no audio is transfered by the PCM interface.

    Looking into the TIInit_6.7.16.xml file shows several commands to configure the PCM interface but it seems, that these commands only adress A2DP-Modes but no HFP modes.
    In general, I've not seen any commands adressing the assisted HFP-Mode in this document.
    I would assume that there's a set of commmands ot load the assisted HFP software similar to the assisted A2DP software.

    The audio example from the Bluetopia Stack (LinuxAUDM) seems not to adress the assisted mode for A2DP.
    There's a document CC2564x Demo applications user guide linked in the CC2564MODA ressources, which explains A3DP mode samples. Where can I find the source code for these examples? It might be helpful to see, which commands have to be sent in that configuration.

    Looking into the source files for AVPR configuration options, I found hints that there's a AVPR debug command available
    BTVS.c, #define VS_AVPR_DEBUG_COMMAND_OPCODE                             ((Word_t)(0xFD91))

    Unfortunately, that command is not described in the XML file mentioned above. Is that command supported by the module?

    Best regards,
    Adalbert

  • Hi Adalbert,

    I'll follow up tomorrow.

    Best,

    Jacob

  • Hi Jacob,

    while reading ahead in the documented HCI commands, I get more and more the impression, that routing audio between HCI interface and PCM/I2S interface is possible without using the assisted mode.

    The commands Send_HCI_VS_Write_CODEC_Config, Send_HCI_VS_Write_CODEC_Config_Enhanced and Send_HCI_VS_Write_SCO_Configuration seem not to be linked to the assisted modes.

    Sounds like they are generic configuration commands to setup the codec interface to the codec and re-route just the audio signal internally to HCI or the codec with the pre-defined settings.

    Where can I find more information about the commands and the order they have to be applied, prerequists that have to be done,...?

    Best regards,
    Adalbert

  • HI Adalbert,

    The "assisted mode" just means that the CC2564MODA is interfacing with the audio codec instead of the host interfacing with the codec:

    We have some information in the HCI_VS Guide for the CC2564x platform: 4370.CC256x VS HCI Commands - Texas Instruments Wiki.pdf

    Best,
    Jacob