Raspberry Pi Pico W as USB Wi-Fi Adapter

232 points109 comments15 hours ago
MomsAVoxell

In the retro-computing world (Oric-1/Atmos) we are using the PicoW as a way to get our old machines on the Internet, not by implementing USB-CDC drivers on the old machines, but by having the PicoW imitate an old-school modem interface, albeit one that 'dials in' to a web site address instead of another modem ..

It's pretty cool, I have to say - especially for us old Oric folks, who never did quite get a full BBS ecosystem for these machines, unlike others. Its on like donkey kong now though, thanks to wonderful PicoW projects like this!

MisterTea

I had the same idea for a Plan 9 USB WiFi using an ESP32. You serve the wifi device as a ether(3) device which negates the need for janky side band config as the config is done over the same 9P interface. Never got around to it.

polpo

Interesting that Gemini said it was infeasible. It should be aware that using a Pico W as a transparent ethernet bridge has been done several times over in open source projects, for example on BlueSCSI (emulating a Daynaport SCSI-Ethernet adapter) and PicoMEM and my own PicoGUS project (emulating an NE2000 Ethernet adapter).

show comments
alnwlsn

Buried the lede by calling this a "usb wifi adapter" and not "magic Ethernet adapter that you don't have to plug a cable into". This will come in handy for my systems that are normally air gapped or currently connected to something else, but sometimes I need to get another network connection on there for a few minutes. I don't always have a USB ethernet adapter on hand or enough cable, but I almost always have a Pico around.

Also I posted this comment using one. Speedtest says about 4 Mbps. Surprisingly usable for web browsing though. Very nice tool! I'll be keeping the .uf2 file around for sure.

1vuio0pswjnm7

No Javascript

Peruse README and source code

   x=pico-usb-wifi
   tnftp -4o"|unzip -p /dev/stdin $x-main/README.adoc $x-main/src/*.c" \
   https://gitlab.com/baiyibai/$x/-/archive/main/$x-main.zip \
   |tr -cd '[ -~\n]' \
   |less
xondono

I’ve been looking for a good solution for doing the exact opposite, being able to connect stuff through USB in my bench, and see them pop up in my office desktop as if they were usb devices.

The closest I’ve gotten is using a raspberry pi in the workbench, but for some weird devices that’s sometimes not good enough.

show comments
KJs6ZxELzQM37O

I recently bought Pico 2 W for DualSense (https://github.com/awalol/DS5Dongle).

byb

pico-usb-wifi is firmware for the Raspberry Pi Pico W that turns it into a driverless USB Wi-Fi adapter, enumerating as a USB CDC-NCM device.

show comments
asc91

I would like to ask the author, what do they mean when they say 'I spent 2 days and 1M claude code tokens' Did you completely vibe code this? or did you create a spec and asked claude to implement that? How many times did you need to course correct claude when it deviated if it did? How much of your own experience as working in WiFi industry was useful while building this project? And what would be different if you had worked on this project without that experience?

show comments
bhouston

Interesting project.

In a similar but opposite vein, I am going on a vacation and I wanted to share the stupidly expensive internet in my room at night with the family so I am likely bringing a raspberry pi to have as a travel router attached to my Mac. In this case, I can use the RaspAP project: https://raspap.com/

This is slightly different in that I do want a NAT.

show comments
WhyNotHugo

Would love a Bluetooth variant, so I can use Bluetooth HID devices on a host with no Bluetooth stack.

show comments
palata

> Average 4.75 Mbits/sec throughput

Isn't that slow for WiFi?

I mean it's an interesting learning experience, but isn't that strictly worse than pretty much any WiFi dongle?

show comments
drop-volley

Can you have the Pico operate as an access point? Would love to be able to use this to connect over wifi to a printer (printer in client mode), with the printer and macos talking directly over IP without needing to configure any other routing/forwarding on macos.

show comments
nicman23

close enough, welcome back 56(0)k

vardump

Thanks! Now I potentially have ~20 USB WiFi adapters I didn’t have yesterday.

Even better, no need to hassle with the WiFi settings on the target system.

In wrong hands, Pico W is actually a bit terrifying device, because it combines USB and wireless.

JSR_FDED

Love the way the author labels each of his diagrams as “AI Slop”!

show comments
hellweaver666

Oooooh, now I'm thinking... you could design a simple circuitboard that holds multiple picos (surface mounted) and uses the USB data pads on the back to pull all the USB ports out to an onboard USB hub basically allowing you to add a multitude of wifi adapters to a project in one USB cable. Would be great for War Driving!

andrewstuart

Google Gemini is that naysayer senior developer who confidently tells you it can’t be done.

Claude is that easy to get along with smart hard working guy who just gets on with it and builds it double quick.

ChatGPT is the eager senior developer who says it can be done but can’t actually work it out and fluffs it.

show comments
eeesdfsdfg

I need mesh too

amelius

How many Mbps?

show comments
diego_moita

I don't have any idea of what is the purpose of this.

Do you want to share an USB device across the WiFi?

If so, why not use the USB-IP protocol? It is already part of the Linux kernel, has implementation for Windows and doesn't require additional hardware.

raffael_de

what is this useful for?

throwwwll

AI Slop.

show comments
arcza

[flagged]

show comments
ranger_danger

> I spent two days of a long holiday weekend and about one million Claude Code tokens building this firmware.

GL26

one million Claude Tokens (assuming you are on opus) = 5 USD = the very dongle you tried to replace. Add the cost of the rasberry pico, you'll have an easier time buying the wifi dongle. The project is cool thought to learn about networks, NAT, Proxys, ect...

show comments
gavinsyancey

You can do this by installing OpenWRT on the Pi and controlling it from the web interface.

show comments