docs: confirm Pico W BLE unsupported in Zephyr mainline too
Checked Zephyr main: dts/bindings/bluetooth has only UART-based Infineon BT-HCI bindings (infineon,bt-hci-uart / cyw208xx-hci / bless-hci) and no CYW43-BT-over-gSPI HCI driver; rpi_pico_rp2040_w.dts only adds infineon,cyw43-gpio. So Pico W BLE needs a custom out-of-tree HCI driver. Working BLE remains available on a controller board (e.g. ESP32 hci_esp32). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
8cb641da5a
commit
b7b6475ee9
@ -140,12 +140,15 @@ All application sources compile cleanly (no warnings) once the overlays use `gpi
|
||||
`gpio-keys` wrappers (bare `gpios`-only nodes don't get the GPIO cell macros) and the ADC node
|
||||
is named exactly `zephyr,user`.
|
||||
|
||||
**Pico W BLE caveat (verified):** the `rpi_pico/rp2040/w` image links with the BLE stack, but
|
||||
mainline Zephyr v3.7 exposes **no Bluetooth HCI transport for the Pico W** — its CYW43 BT
|
||||
shares the Wi-Fi gSPI bus (no BT UART) and the in-tree AIROC driver (`h4_ifx_cyw43xxx`) is
|
||||
UART/H4 only. So `bt_enable()` returns `-ENODEV` at runtime and BLE does not advertise; the
|
||||
rest of the firmware runs normally (handled gracefully in `ble_nus_init`). The identical
|
||||
`ble_nus.c` builds and links against a real controller on `nrf52840dk`, confirming the BLE
|
||||
code is correct — only the Pico W transport is missing from Zephyr. It will work unchanged
|
||||
once Zephyr provides a CYW43 BT-over-gSPI HCI driver + a `chosen { zephyr,bt-hci }` for the
|
||||
board (or on any radio board such as ESP32).
|
||||
**Pico W BLE caveat (verified against v3.7.0 *and* mainline):** the `rpi_pico/rp2040/w` image
|
||||
links with the BLE stack, but Zephyr exposes **no Bluetooth HCI transport for the Pico W**. Its
|
||||
CYW43439 BT is tunneled over the shared Wi-Fi gSPI bus (there is no BT UART), and Zephyr has no
|
||||
CYW43-BT-over-gSPI HCI driver — the in-tree Infineon BT bindings are all UART-based
|
||||
(`infineon,bt-hci-uart`, `infineon,cyw208xx-hci`, `infineon,bless-hci`); `main`'s
|
||||
`rpi_pico_rp2040_w.dts` only adds an `infineon,cyw43-gpio` node (Wi-Fi/GPIO), no `bt-hci`. So
|
||||
`bt_enable()` returns `-ENODEV` at runtime and BLE does not advertise; the rest of the firmware
|
||||
runs normally (handled gracefully in `ble_nus_init`). The identical `ble_nus.c` builds and
|
||||
links against a real controller on `nrf52840dk`, confirming the BLE code is correct — only the
|
||||
Pico W transport is missing from Zephyr. Getting it would require a custom out-of-tree HCI
|
||||
driver tunneling HCI over the cyw43 gSPI (what the Pico SDK + BTstack do). It will otherwise
|
||||
work unchanged on any radio board with a controller, e.g. ESP32 (`hci_esp32`).
|
||||
|
||||
Loading…
Reference in New Issue
Block a user