43438: A lot of unknown HCI command 0xfc2e/0xfc4c during boot

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
AxLi_1746341
Level 7
Level 7
10 comments on KBA 5 comments on KBA First comment on KBA

Hi,

Test on sdk-6.1. (The same errors on sdk-6.0.1)

I got a lot of HCI errors during boot if ENABLE_BT_PROTOCOL_TRACES is defined.

My testing code is pretty simple as it just calls wiced_bt_stack_init() then start wiced_bt_ble_observe().

I got below error after calling wiced_bt_stack_init() .

The HCI command 0xfc2e/0xfc4c seems to be HCI_CMD_OPCODE_WRITE_RAM/HCI_CMD_OPCODE_LAUNCH_RAM.

The BLE still working but these Errors seems abnormal things....

I have no idea what's going on, maybe someone from cypress can clarify if this is a problem or not.

e.g

00:00:01.751000 SENT Command to HCI. Name: (null)  (Hex Code: 0xfc2e  Param Len: 0) Ctrl(0)

00:00:01.759000 Error - Unknown HCI command: 64558 [0xfc2e] Length: 0

00:00:01.765000 --

00:00:01.768000 --

00:00:01.770000 RCVD Event from HCI. Name: HCI_Command_Complete  (Hex Code: 0x0e  Param Len: 4) Ctrl(0)

00:00:01.780000 Parameters

00:00:01.782000                      Num HCI Cmd Packets : 1 (0x01)

00:00:01.789000                                 Cmd Code : 0xfc2e  ((null))

00:00:01.796000 00

00:00:01.798000 --

00:00:01.849000 --

00:00:01.850000 SENT Command to HCI. Name: (null)  (Hex Code: 0xfc4c  Param Len: 70) Ctrl(0)

00:00:01.859000 Parameters

00:00:01.862000 Error - Unknown HCI command: 64588 [0xfc4c] Length: 70

00:00:01.868000 --

00:00:01.877000 --

00:00:01.879000 RCVD Event from HCI. Name: HCI_Command_Complete  (Hex Code: 0x0e  Param Len: 4) Ctrl(0)

00:00:01.889000 Parameters

00:00:01.891000                      Num HCI Cmd Packets : 1 (0x01)

00:00:01.897000                                 Cmd Code : 0xfc4c  ((null))

00:00:01.904000 00

00:00:01.906000 --

00:00:01.908000 --

00:00:01.910000 SENT Command to HCI. Name: (null)  (Hex Code: 0xfc4c  Param Len: 255) Ctrl(0)

00:00:01.919000 Parameters

00:00:01.921000 Error - Unknown HCI command: 64588 [0xfc4c] Length: 255

00:00:01.928000 --

00:00:01.953000 --

00:00:01.955000 RCVD Event from HCI. Name: HCI_Command_Complete  (Hex Code: 0x0e  Param Len: 4) Ctrl(0)

00:00:01.965000 Parameters

00:00:01.967000                      Num HCI Cmd Packets : 1 (0x01)

00:00:01.974000                                 Cmd Code : 0xfc4c  ((null))

00:00:01.980000 00

All "Unknown HCI command" lines during boot as below:

00:00:01.759000 Error - Unknown HCI command: 64558 [0xfc2e] Length: 0

00:00:01.862000 Error - Unknown HCI command: 64588 [0xfc4c] Length: 70

00:00:01.921000 Error - Unknown HCI command: 64588 [0xfc4c] Length: 255

00:00:01.998000 Error - Unknown HCI command: 64588 [0xfc4c] Length: 255

................ // same messages repeat many times...

00:00:12.576000 Error - Unknown HCI command: 64588 [0xfc4c] Length: 255

00:00:12.652000 Error - Unknown HCI command: 64588 [0xfc4c] Length: 255

00:00:12.728000 Error - Unknown HCI command: 64588 [0xfc4c] Length: 255

00:00:12.804000 Error - Unknown HCI command: 64588 [0xfc4c] Length: 8

00:00:12.858000 Error - Unknown HCI command: 64590 [0xfc4e] Length: 4

00:00:13.162000 Error - Unknown HCI command: 64551 [0xfc27] Length: 12

0 Likes
1 Solution
Anonymous
Not applicable

Hi Axel,

Don't worry about the messages. The issue is with the protocol_print function. 0xfc4c is the Write_RAM opcode as you rightly guessed.

In the protocol_print function, when an event is received, it checks for the opcode and prints accordingly.

Previously, 0xff was used for Vendor specific commands. So the parser in the print function checks if the group opcode is 0xff instead of 0xfc.

That is why it wrongly prints " Unknown HCI command".

I believe the application will work as expected even if you receive these messages.

View solution in original post

4 Replies
Zhengbao_Zhang
Moderator
Moderator
Moderator
250 sign-ins First comment on KBA 10 questions asked

Hi Axel:

   Actually , I met the same HCI error log as you posted , and find some clues in the SDK  release, below comments are located in firmware.mk.

# By default,the 20706A2/43012C0 will use the firmware images that are part of the release.

# The firmware driver is picked depending on the BT chip, XTAL frequency and the mode it is configured with(controller/embedded).

# E.g. If 20706 A1 BT chip with XTAL 40Mhz is selected in controller mode,

# then the file path would be 20706A1/40Mhz/bt_firmware_controller.c.

# E.g. If 20706 A2 BT chip with XTAL 40Mhz is selected in embedded mode,

# then the file path would be 20706A2/40Mhz/bt_firmware_embedded_(EMBEDDED_APP_NAME).c.

# For embedded mode, the EMBEDDED_APP_NAME should be provided in the application MakeFile.

# The EMBEDDED_APP_NAME will be same as the application name used to generate firmware in the 20706-SDK.

# NOTE: Only 20706A2 and 43012 will support both controller/embedded Mode. Rest of the BT chips support controller mode only.

and another comments:

# Set the below flag to 1, if application needs to be executed on Embedded Stack (CYW943907WAE3 only).

USE_BT_EMBED_MODE := 0

ifeq ($(USE_BT_EMBED_MODE), 1)

$(info "Embedded Stack")

$(NAME)_COMPONENTS += libraries/drivers/bluetooth/wiced_hci_bt \

                      libraries/protocols/wiced_hci

GLOBAL_DEFINES     := USE_WICED_HCI

EMBEDDED_APP_NAME := hci_spp_le_app

VALID_PLATFORMS    = CYW943907WAE3

according above , we can conclude we need to set USE_BT_EMBED_MODE=1 ,  then we can have a component support

$(NAME)_COMPONENTS += libraries/drivers/bluetooth/wiced_hci_bt \

                      libraries/protocols/wiced_hci

these two components will lead the wiced_bt_stack_init into wiced_hci_bt_dm.c , where we can check the firmware download flow.

in another word  other comb chip like 43438 ,43340 ,  they are using the default firmware in the chip , so my thinking is:

1.  Now we can't download the firmware successfully since the limitation of current sdk design architecture ,  but basic function should be working well since a lot of projects are based on the flow  .

I will continue focusing the download procedure to see if we will have some changes in the release later , thanks.

0 Likes

I know the comments you mentioned, however, I believe it's different things.

I use the standard firmware, i.e. I don't set USE_BT_EMBED_MODE.

The only thing I did is define ENABLE_BT_PROTOCOL_TRACES, then get the log.

0 Likes
Anonymous
Not applicable

Hi Axel,

Don't worry about the messages. The issue is with the protocol_print function. 0xfc4c is the Write_RAM opcode as you rightly guessed.

In the protocol_print function, when an event is received, it checks for the opcode and prints accordingly.

Previously, 0xff was used for Vendor specific commands. So the parser in the print function checks if the group opcode is 0xff instead of 0xfc.

That is why it wrongly prints " Unknown HCI command".

I believe the application will work as expected even if you receive these messages.

yssu wrote:

Hi Axel,

Previously, 0xff was used for Vendor specific commands. So the parser in the print function checks if the group opcode is 0xff instead of 0xfc.

That is why it wrongly prints " Unknown HCI command".

Too many "Unknown HCI command" might hide the real debug error messages.

It would be helpful if the protocol_print function can recognize the 0xfc2e/0xfc4c commands.

0 Likes