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.
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
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.