The Holy Grail, the Ark of the Covenant, the Crystal Skull, Bluetooth on a Raspberry Pi Pico W. The last of these highly sought after things is finally available, at least to developers. When it launched last June, the $6 Pico W microcontroller impressed everyone with its built-in Wi-Fi 4 , but developers were disappointed that the Bluetooth radio that was built into the board's Infineon CYW43439 wireless chip could not be used.
We've been hearing hints that Bluetooth support was coming for a while now and, as of Friday, the official Raspberry Pi Pico SDK supports it. Available on Raspberry PI's Github repository, SDK 1.5.0 (opens in new tab) adds a new Bluetooth API from BTstack (opens in new tab).
With Bluetooth support, the Pico W can be used to create a wireless mouse, wireless keyboard or other peripheral (Bluetooth audio does not appear to be supported). So you can just imagine creating your own DIY mouse jiggler, but operating over Bluetooth instead of USB.
According to the SDK release notes (opens in new tab), it supports the following libraries:
- Bluetooth LE
- Bluetooth Classic
- Bluetooth Sub Band Coding (SBC) encoder and decoder
- Bluetooth Network Encapsulation Protocol (BNEP)
- Bluetooth Network Encapsulation Protocol (BNEP) using LwIP with FreeRTOS
Note that the SDK is made for programming in C or C++ so, if you want to program your Pico W with it, you'll need to use that language. The Github page has instructions (opens in new tab) on how to set up your environment and get started.
We'd prefer to program our Pico W with CircuitPython or MIcroPython, which are much easier to work with. CircuitPython, in particular, has built-in support for turning a Pico or other RP2040-powered microcontroller into an HID device such as a mouse or keyboard. Perhaps now that the official SDK has added Bluetooth support, these other languages will get it also.