Raspberry Pi Pico W gets Bluetooth support in SDK 1.5.0

The Raspberry Pi Pico W board was launched with a WiFi 4 and Bluetooth 5.2 module based on the Infineon CYW43439 wireless chip in June 2022, and I wrote a tutorial showing how to connect to WiFi a few days after the launch, but nothing about Bluetooth.

That’s because while the Raspberry Pi Pico W hardware supports Bluetooth, we were told that Bluetooth was not enabled at the time, but might be at a later stage. Alasdair Allan, who is responsible for the Raspberry Pi documentation, said Bluetooth support was scheduled very soon, and the SDK 1.5.0 release of the Pico C SDK is now available with Bluetooth implemented using BTstack low footprint dual-mode Bluetooth stack.

Raspberry Pi Pico W Bluetooth LE

Bluetooth support is still considered Beta and the SDK 1.5.0 implements the following key features and updates:

  • New libraries for
    • Bluetooth Low Energy (LE) support.
    • Bluetooth Classic support.
    • Bluetooth Sub Band Coding (SBC) encoder support.
    • Bluetooth Sub Band Coding (SBC) decoder support.
    • Bluetooth Network Encapsulation Protocol (BNEP) support using LwIP.
    • Bluetooth Network Encapsulation Protocol (BNEP) support using LwIP with FreeRTOS for NO_SYS=0.
  • Updated pico_cyw43_driver and cyw43_driver to support HCI communication for Bluetooth.
  • Updated cyw43_driver_picow to support Pico W-specific HCI communication for Bluetooth over SPI.
  • Updated cyw43_arch_init() and cyw43_arch_deinit() to additionally handle Bluetooth support if CYW43_ENABLE_BLUETOOTH is 1

Raspberry Pi Trading also release a range of Bluetooth code samples for Bluetooth audio, HID (keyboard/mouse), GATT client/server, Bluetooth LE, and more.

Some inquiring minds may have read the license of BTstack that reads in part:

Any redistribution, use, or modification is done solely for personal benefit and not for any commercial purpose or for monetary gain.

That would mean Bluetooth on Raspberry Pi RP2040 could only be used for personal projects, and not commercial products. But this was addressed in the related GitHub ticket  and user “kilograham” said BTstack is licensed by Raspberry Pi Trading for a more permissive use on RP2040 like they did for the cyw43-driver.

Note that Bluetooth has been supported on other Raspberry Pi RP2040 boards for a while, for example, Arduino provides documentation to connect two Nano RP2040 Connect boards over BLE using an Arduino sketch. That was possible because the ESP32-based Nina W102 uBlox module found in the board was already supported in the Arduino IDE, while the Infineon CYW43439 required some more work to be added to the Pico C SDK.

Update: This post was initially published on January 4, 2023, and updated following the released of the SDK 1.5.0 on February 11, 2023

Share this:

Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress

ROCK 5 ITX RK3588 mini-ITX motherboard
Notify of
The comment form collects your name, email and content to allow us keep track of the comments placed on the website. Please read and accept our website Terms and Privacy Policy to post a comment.
João Pedro
João Pedro
1 year ago

Why exactly the Bluetooth was not enabled by default on the Raspberry Pi Pico since the beginning then?

1 year ago

The Pico doesn’t have WiFi or Bluetooth. They added WiFi/BT with the Pico W variant, and did so by adding a third party WiFi/Bluetooth module. WiFi was the priority, and they didn’t promise Bluetooth at launch – but suggested they would add it if they were able to. They now have.

itchy n scratchy
itchy n scratchy
1 year ago

Wondering what all can be done with this chip. TI has a couple of nice BLE chips that can be abused for many other proprietary protocols, maybe the CYW too???

1 year ago

Sounds like it’s a closed source stack? Bleah, there is a FOSS BT stack for Linux, I thought. I’m glad BT classic is supported since Espressif seems to have abandoned it. There are still lots of HCI devices that need it.

Khadas VIM4 SBC