4 Replies Latest reply on May 17, 2018 8:00 PM by AxLi_1746341

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

    AxLi_1746341

      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

        • 1. Re: 43438: A lot of unknown HCI command 0xfc2e/0xfc4c during boot
          ZhengbaoZ_96

          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.

          • 2. Re: 43438: A lot of unknown HCI command 0xfc2e/0xfc4c during boot
            AxLi_1746341

            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.

            • 3. Re: 43438: A lot of unknown HCI command 0xfc2e/0xfc4c during boot

              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.

              2 of 2 people found this helpful
              • 4. Re: 43438: A lot of unknown HCI command 0xfc2e/0xfc4c during boot
                AxLi_1746341

                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.