Hello. I’m trying to bring up Bluetooth of the AP6236 chip on the stm32mp157c-odyssey board on Debian 12 with Linux Core 6.6.48. With no luck so far…
Does anyone has any experience in this? Any guidance/advice would be really helpful ![]()
This is what I have:
dmesg | grep Bluetooth
[ 16.240645] Bluetooth: Core ver 2.22
[ 16.248188] Bluetooth: HCI device and connection manager initialized
[ 16.254550] Bluetooth: HCI socket layer initialized
[ 16.259415] Bluetooth: L2CAP socket layer initialized
[ 16.264432] Bluetooth: SCO socket layer initialized
[ 16.640794] Bluetooth: HCI UART driver ver 2.3
[ 16.658790] Bluetooth: HCI UART protocol H4 registered
[ 16.686664] Bluetooth: HCI UART protocol Broadcom registered
[ 17.044683] Bluetooth: hci0: BCM: chip id 94
[ 17.050674] Bluetooth: hci0: BCM: features 0x2e
[ 17.078064] Bluetooth: hci0: BCM43430A1
[ 17.080641] Bluetooth: hci0: BCM43430A1 (001.002.009) build 0000
[ 17.208308] Bluetooth: hci0: BCM43430A1 'brcm/BCM43430A1.hcd' Patch
[ 22.649202] Bluetooth: hci0: command 0x0c03 tx timeout
[ 22.653035] Bluetooth: hci0: BCM: Reset failed (-110)
hciconfig -a
hci0: Type: Primary Bus: UART
BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0
DOWN
RX bytes:1159 acl:0 sco:0 events:127 errors:0
TX bytes:30732 acl:0 sco:0 commands:128 errors:0
Features: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Packet type: DM1 DH1 HV1
Link policy:
Link mode: PERIPHERAL ACCEPT
stm32mp157c-odyssey.dts
&pinctrl {
// usart1 pin configure
usart1_pins_s: usart1-0 {
pins1 {
pinmux = <STM32_PINMUX('Z', 7, AF7)>, /* USART1_TX */
<STM32_PINMUX('Z', 5, AF7)>; /* USART1_RTS */
bias-disable;
drive-push-pull;
slew-rate = <0>;
};
pins2 {
pinmux = <STM32_PINMUX('Z', 6, AF7)>, /* USART1_RX */
<STM32_PINMUX('Z', 3, AF7)>; /* USART1_CTS_NSS */
bias-disable;
};
};
usart1_idle_pins_s: usart1-idle-0 {
pins1 {
pinmux = <STM32_PINMUX('Z', 7, ANALOG)>, /* USART1_TX */
<STM32_PINMUX('Z', 3, ANALOG)>; /* USART1_CTS_NSS */
};
pins2 {
pinmux = <STM32_PINMUX('Z', 5, AF7)>; /* USART1_RTS */
bias-disable;
drive-push-pull;
slew-rate = <0>;
};
pins3 {
pinmux = <STM32_PINMUX('Z', 6, AF7)>; /* USART1_RX */
bias-disable;
};
};
usart1_sleep_pins_s: usart1-sleep-0 {
pins {
pinmux = <STM32_PINMUX('Z', 7, ANALOG)>, /* USART1_TX */
<STM32_PINMUX('Z', 5, ANALOG)>, /* USART1_RTS */
<STM32_PINMUX('Z', 6, ANALOG)>, /* USART1_RX */
<STM32_PINMUX('Z', 3, ANALOG)>; /* USART1_CTS_NSS */
};
};
};
/* Bluetooth */
&usart1 {
pinctrl-names = "default", "sleep", "idle";
pinctrl-0 = <&usart1_pins_s>;
pinctrl-1 = <&usart1_sleep_pins_s>;
pinctrl-2 = <&usart1_idle_pins_s>;
uart-has-rtscts;
status = "okay";
bluetooth {
host-wakeup-gpios = <&gpioh 3 GPIO_ACTIVE_HIGH>;
device-wakeup-gpios = <&gpioh 8 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpioh 9 GPIO_ACTIVE_LOW>;
compatible = "brcm,bcm43438-bt";
max-speed = <3000000>;
vbat-supply = <&v3v3>;
vddio-supply = <&v3v3>;
};
};