Bluetooth with CYW43340 over 3-wire UART HCI protocol on Linux

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

cross mob
KoRi_4205916
Level 1
Level 1
Welcome! First question asked First reply posted

Hello all,

I’m having a bit of an issue with the CYW43340 providing Bluetooth to an ARM-Linux host.

We're using the HCI "H5" protocol to communicate with the controller over UART.

We're using linux kernel version 4.14

We're using Bluez5 as my BT stack (perhaps this is the problem, do I need BSA?)

First, I had difficulty even getting the chip to communicate over HCI-H5 instead of HCI-H4. But, once I got past that,

things seemed ok. Nonetheless, I'm not using hciattach 43xx. I'm using hciattach 3wire to make this happen. This is another potential problem.

Perhaps the chip does do 3wire but also requires the proprietary HCI support from the bcm43xx mode.

Second, Once I do get past that problem, and get my hci controller up and running on my host, I'm able to scan, become discoverable, etc.

However, I don't see anything on my Google Pixel phone when I go to Bluetooth and I also don't see anything when I scan.

I made sure to install and run rfkill on my image to make sure all blocks are removed.

I have Wifi working - is it possible the wifi is not allowing access to the antenna for the Bluetooth? this seems odd to me since the chip supports advanced features like coexistence. It seems unlikely to me that I'd have to control antenna access from software.


If anyone has gotten Bluetooth working with the 43340 or something similar on Linux, my questions are:

Kernel version?

BT stack and version?

UART configuration? (do you have the CTS/RTS flow control?)

HCI configuration? (what hci commands are you using to connect?)

What other changes to the kernel/rootfs did you need to make - if any - to get things working?

Thanks for the help in advance!

0 Likes
1 Solution
Zhengbao_Zhang
Moderator
Moderator
Moderator
250 sign-ins First comment on KBA 10 questions asked

Hello:

I do remember flow control is needed for supporting 43xx.   and what is the reason of using 3wire mode instead of HCI_UART_H4 ?

{ "bcm43xx",    0x0000, 0x0000, HCI_UART_H4,   115200, 3000000,

FLOW_CTL, DISABLE_PM, NULL, NULL, bcm43xx,

NULL  },

View solution in original post

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

Hello:

I do remember flow control is needed for supporting 43xx.   and what is the reason of using 3wire mode instead of HCI_UART_H4 ?

{ "bcm43xx",    0x0000, 0x0000, HCI_UART_H4,   115200, 3000000,

FLOW_CTL, DISABLE_PM, NULL, NULL, bcm43xx,

NULL  },

There is not a strict requirement. our dev board didn't have the pins to run H4 but we just switched to a new dev board. Once I get this one up I will try H4 and I think things will work pretty straight forwardly from there on. Thanks!

0 Likes

thanks, and wait for your good news.

0 Likes