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.

If 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.
62 comments
Huw
Thanks to all involved for your efforts!
Stewart Watkiss
Excellent news – well done to all involved. Good timing as Bluetooth would be a great fit for a future project I’m planning.
Fondle
Is there going to be an updated release of the book “Get Started with MicroPython on Raspberry Pi Pico”, which will include WiFi and Bluetooth?
I’d love to get my hands on that!
Raspberry Pi Staff Liz Upton
There will – it’s being written and edited at the moment. I don’t have an eta for you, but it’ll be available before the end of the year.
Fondle
Fantastic <3
I'll eagerly await the release then. I'd also love to see more variety in the Raspberry swag, to support you in different ways! ;)
Thank you for the feedback and all your work!
Michael J Byron
Liz,
In the new book you are writing for the PICO, please provide as much as possible re using the BLE and WIFI client by the PICO W.
Thanks
David
C support?
Raspberry Pi Staff Alasdair Allan
Yes! As we said in the post, it is now supported as part of the 1.5.1 release of the C SDK.
Paul P
Absolutely awesome! The low cost and incredible value of the Raspberry Pi Pico W truly makes it a revolutionary product. I’ve purchased dozens of these boards and will continue to buy more…
Ron Tsang
That’s awesome. What is the current draw with bluetooth on?
Raspberry Pi Staff Liz Upton
I don’t think we’ve measured that yet – once we have it’ll be added to the documentation.
Emporer’s Clothes Missing
Let’s be real. Have you not tried to buy one? There are no Rasberry Pi’s to be had.
Raspberry Pi Staff Liz Upton
Really?
Anders
Talking of being real, this article is about Pico and they’ve been very available for the entire time of the shortages.
And the products that have been on shortage have started to appear in stock more often now.
Alan
This article is about the Pico W which has always been fully available. ‘Full fat’ RPi products are rapidly returning too.
Samuel Earshw
Will this code be open source? I mean for real, not that source available/personal use only/shared source/etc. license currently used?
Raspberry Pi Staff Alasdair Allan
What code are you talking about: the Pico C SDK, MicroPython, or BTStack? Or something else?
If it’s our own Pico C SDK, then this has been released under a BSD 3-Clause license. If you’re talking about MicroPython then that is released under an MIT license.
BlueKitchen’s BTStack is released under a non-commercial license, but we have negotiated a supplemental license which covers commercial use of BTstack with Raspberry Pi Pico W or Raspberry Pi Pico WH.
Andre Costa
Hey Allan, how many BLE devices can you connect to the Pico at the same time?
Andre Costa
Sorry, I meant Alasdair, not Allan.
Raspberry Pi Staff Alasdair Allan
The limits for BTstack and the hardware — the CYW4343 chip itself — are separate. It’ll be whatever the smaller of the two turns out to be.
For BTstack, it’s limited by
min(MAX_NR_HCI_CONNECTIONS, MAX_NR_GATT_CLIENTS)in code, and you should be able to increase those limit in your own code.For the chip there’s a physical scheduling limit that results from the set of current connection parameters and a hard limit in the controller (due to memory limitations). I cannot find any hard numbers in the CYW4343 datasheet for the limits on the chip itself. At this point our guess is that this number will be higher than the number of connections you’re going to get in practice.
My recollection is the BLE specification has a maximum limit of 7 (or 8) depending on how you interpret the standard. But it’s been a while since I waded through it.
In any case, it should not be much worse than other current Bluetooth controllers. The TL;DR is “some.”
Andre Costa
Awesome! Thanks for the info!
Samuel Earshaw
Does this include the entire code for the cyw43 driver? Or does it still have that non-free/non-osi license?
Lamarour
Good news
Bill Hensley
Brilliant! I love products that get better after you buy them. Especially ones that only cost $6. Y’all are awesome!
Chris Ainsley
I wonder if this will allow for Bluetooth keyboards to be used with Picos that are also driving a VGA or DVI display?
A Pico driving a BBC Emulator to a TV without an additional USB cable would be brilliant.
Raspberry Pi Staff Alasdair Allan
Should be possible I think!
ukscone
This is going to be really handy especially the micropython support (hope adafruit adds it to circuitpython too cuz HID) for some projects i’ve had to use non-rpi hardware for :( but now hopefully i can be pi’s all the way down and use the same webbluetooth, webserial & webhid based webapp frontend code
Raspberry Pi Staff Liz Upton
*Waves* Yoo hoo!
Ramji Patel
Awesome! Thanks for informing
Max
Congratulations on adding Bluetooth support! Really excited for integrating this in PiCockpit & also trying the audio playback through it :-)
JumpZero
Very good! Thank you to everybody, and special thanks for making it available in MicroPython. Is the Raspberry pi foundation a MicroPython sponsor?
Alan
This is an excellent addition. I note you’ve got for BTstack and handily provided a free licence – any thoughts on something similar for other Pis? I’ve been playing about with BT on the Pi0W and found it very finicky to try and get it working with not great documentation if trying to use for OBEX, etc – this looks like it might be a better route?
Dru Nelson
Can you use Bluetooth and wifi at the same time?
Kalle
I guess no… I had an interesting experience trying to run the sample micropython code (temp sensor). It didn’t work the first couple of attenpts, I just got an error that UUID didn’t exist…
But I am guessing that the reason is because I had a wifi app running as main.py and just hitting ‘stop’ in Thonny wasn’t enough…
So I tried flash nuke and loading the new firmware again. Then, the Bluetooth sample program worked without issue.
I am a newbie on Pico so I am probably wrong. Just my observation after half of days of fooling around.
Many thanks to be Raspberry PI team for releasing Bluetooth support, this should keep me entertained for quite some time now! ;)
Kalle
It’s possible to use WiFi and Bluetooth at the same time. I managed to merge the temp sensor sample with a similar wifi program and the pico is visible both over BT and Wifi.
So, It works! 🤗
Raspberry Pi Staff Ashley Whittaker
You did NOT hang around?!
Kalle
Sorry?
Raspberry Pi Staff Ashley Whittaker
Before playing with the new functionality!
Dru Nelson
Thanks Kalle ! This is good to find out.
daghankee
Brilliant!
Kim
The liked repo says: “In Development: LE Audio and more.”
Can the CYW43439 do proper BLE Audio?
Martin
I’m also interested in audio from an RP2040 (or a PiZero to be honest), and particularly if the LE Audio capability includes Auracast:
https://www.bluetooth.com/auracast/developers/
Tony Goodhew
Is there a web page where we can download the code? I’m interested in the MicroPython examples.
Raspberry Pi Staff Liz Upton
Head over to the documentation that’s linked in this blog post!
Martin Cockerell
It would perhaps be helpful if direct links to each example could be provided in the ‘Connecting to the Internet with Raspberry Pi Pico W’ in the same way as they are in the base Python SDK documentation – I was sure that the source code would be available somewhere, but it took me a while to find the correct github link.
Raspberry Pi Staff Alasdair Allan
Couldn’t do that until after the release as the pico-micrpython-examples repo is public so hadn’t been updated. There will be a link directly from the code in the documentation to the code in the examples repo next time I do a documentation refresh.
jesse
Hi there, i was wondering will blue dot work on the pico w, if not is there a similar alternative? I was trying to use the pico w to control a robot.
Andrew
Now can we get WPA3 support so we can connect these to modern wifi networks? WPA3 is recommended on wifi 6 and requires on wifi 6e and 7.
Ludovic
Hi Allan,
Thank you so much for examples.
I’ve been trying IRQ_SCAN_RESULT with a regular BLE device (not with 2 pico) but I can’t get the correct ADV_DATA (especially no device name…) ? Would you give me an advice ?
Bernd Albrecht
Good job, thanks to all involved.
I repeat jesse’s question which is not yet answered: Will Martin O’Hanlon’s APP BlueDot, a remote control for robot cars, be updated for MicroPython?
Raspberry Pi Staff Liz Upton
I don’t know; Martin doesn’t work at Raspberry Pi Ltd, he works over at the Foundation, which is a completely different organisation. If you’re wondering, why not open a GitHub issue?
Bernd Albrecht
Thanks. Done.
Peter
Excellent query. WHEN is bluedot going to be available for the Pico W ?? A GUI interface to control robots is needed – URGENTLY
Raspberry Pi Staff Liz Upton
That’s a question for the Blue Dot maintainers; have you left an issue on their GitHub?
Rhyl Cruz Kiio
Hi… I’m a beginner in using microcontrollers so this might be an obvious question. I was wondering whether it’s possible to use the Bluetooth and Wifi simultaneously on the pico W.
Conrad
Attempting to build the examples for micropython as shown in the “Connecting to the Internet with Raspberry Pi Pico W” book – however, there is no bluetooth library that can be found?? Any help? Are the examples 1:1 with the aioble library?
somebloke
Does this work as HID? ie. can I send keypresses to an Android device via bluetooth? Any libraries or examples yet?
Parshva Patel
Awesome News! However is there any example project by Raspberry pi that demonstrates to establish connection between Pico W and a Playstation controller PS3/PS4 via Bluetooth. Pico W is most likely to be used with robotic project and many of us prefer to use those gaming controller.
Raspberry Pi Staff Ashley Whittaker
Dive into these 3 pages of Pico W projects and see if inspiration hits you: https://www.raspberrypi.com/news/tag/raspberry-pi-pico-w/
The “Trekkie defects to build his first droid” post might be what you’re after.
Matthew Kitcat
“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.”
From what I have been able to establish so far, Bluetooth Classic is not supported in MicroPython so I believe it is BLE on the Pico only, unless you are using the C SDK. It would be great if someone could prove me wrong but I wonder if this page should be amended as it strongly suggests Classic is supported.
Sammy1983
I have built a working remote control together with the Pico W. And a working robot with the Raspberry Pi 4. But I don’t know how to connect the two via Bluetooth and get the data from the remote to the robot.
Raspberry Pi Staff Helen Lynn
Head to our forums to ask this sort of question – you’re unlikely to get a useful answer by commenting on a blog post from four and a half months ago!
Comments are closed