Main Content

New functionality: Bluetooth for Pico W

In June last year, we launched Raspberry Pi Pico W, a $6 wireless-enabled variant of our Pico platform, built around our RP2040 microcontroller. In the year since, we’ve sold over half a million of these tiny boards, and they’ve found their way into countless projects, from singing fish to web servers to communicative house plants.

But one thing has been missing: Bluetooth support. Now that’s been fixed – and you don’t even need to buy a new Pico W.

Pico W’s wireless functionality is provided by the Infineon CYW43439 device, which contains a 2.4 GHz radio providing both 802.11n Wi-Fi and Bluetooth 5.2, supporting Bluetooth Classic and Bluetooth Low Energy (BLE) functionality. At launch, our firmware and host-side software only enabled Wi-Fi, not Bluetooth.

Now, with the release of version 1.5.1 of the C SDK, and the latest MicroPython build, your existing Pico W has gained the ability to communicate with Bluetooth and Bluetooth LE devices. Specifically, we support Bluetooth Classic — with the temporary exception of ACL/SCO — along with both the BLE Central and Peripheral roles. Things are also configurable so you can enable Bluetooth Classic and BLE either individually, or have both of them available at the same time. Full details of supported Bluetooth protocols and profiles are available on GitHub.

f you want to get started with Bluetooth and your Pico W the best place to start is our documentation site, and the Connecting to the Internet with Raspberry Pi Pico W book, which walks you through getting started with Bluetooth LE using both the C SDK and with MicroPython.

Update: Bluetooth support merged upstream into the official MicroPython repo.

Credits
Routing both Wi-Fi and Bluetooth traffic over the single three-pin SPI bus between RP2040 and CYW43439 has been a substantial engineering challenge. We’d like to express our thanks to our friends at Infineon, and in particular Graham Smith, for their assistance in productionising this capability.

Bluetooth Classic and BLE support in the SDK is provided by the BTstack library from BlueKitchen. Matthias Ringwald provided extensive assistance with integration and verification. Raspberry Pi Pico W customers benefit from a pre-paid commercial license for BTstack, allowing you to use Pico W as a component in your own products.

Here at Raspberry Pi, Peter Harper was responsible for the Pico W host-side software; Graham Sanderson developed the SDK; and Alasdair Allan wrote the docs.

Last, but not least, Damien George is (of course) responsible for making MicroPython work.”

Link to article