7 ms·
Raspberry Pi Pico W as USB Wi-Fi Adapter
- byb 3mo agopico-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.
- fragmede 3mo agoHah! That's neat! So much fun stuff to be had with that particular bit of kit.
- JSR_FDED 3mo agoLove the way the author labels each of his diagrams as “AI Slop”!
- byb 3mo agoIt's one of the neat features of the AsciiDoc language. The user is able to change captions mid document, in this case :figure-caption:. AsciiDoc and Antora are things I've invested a lot of my time into https://baiyibai-antora.gitlab.io https://baiyibai-antora.gitlab.io
- MgB2 3mo agoI'm kind of fascinated by the first diagram on the page. It sits so firmly in the uncanny valley for me and I can't put my finger on why. By itself every part looks ok and normal, but as a whole it just screams AI to me. I don't know if its the color choices or the composition or something else. It all just feels that little bit off. I mean, I know its AI, the page says so itself, no one is trying to hide it. But it also just gives me AI vibes on such a subliminal level that I can't figure out why.
- kalleboo 3mo agoTo me there's something about the "AI Slop Font" where it instantly triggers that uncanny valley. I guess since it's kind of an average of a bunch of fonts so it's somehow familiar but also unfamiliar at the same time.
- mhl47 3mo agoAbsolutely can relate. Thats why I would say: Do your own diagrams! At least the text and formatting. Where I do think it ads value is "AI slop 2". This is somehow even better comprehensible than an average photo.
- Tepix 3mo agoIt's the amount of little icons and bold text. And then phrases like "No NAT, No Port-forwards" Also details like the light blue boxes being swapped.
- Tepix 3mo agoThe pic "AI Slop 2. A Real World Situation" is great, the USB cable is connected to the wrong end of the Pico!
- drop-volley 3mo agoCan 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.
- bdcravens 3mo agoWifi printer, where both your machine and the printer are connected to the same AP? yes If you'd rather just expose a USB printer to the network, a Pi Zero is a better fit.
- drop-volley 3mo agoNo. The printer cannot connect to the wifi network that the macbook is connected to. I don't want to expose a USB printer to the network. I just want to allow the printer to connect to an AP created by the Macbook/PiZero/ESP32/insert_cheap_widget device and then allow the Macbook to connect to the printer's IP.
- bdcravens 3mo agoThat's what I meant by the Macbook and the printer connecting to the same AP. The Pico is the AP, and both your printer and the Macbook connect to it. (You could also use a cheap off the shelf travel router) What the Macbook can't do is have multiple wifi connections at the same time, so you'd have to disconnect from its primary network (which also rules out the Macbook serving as an AP that the printer connects to).
- drop-volley 3mo ago[dead]
- teaearlgraycold 3mo agoThe Pico W can host an AP.
- ranger_danger 3mo ago> I spent two days of a long holiday weekend and about one million Claude Code tokens building this firmware.
- andrewstuart 3mo agoGoogle 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.
- petesergeant 3mo agoChatGPT is very good at code-reviewing Claude’s work and finds the howlers in it fairly reliably
- crtified 3mo agoPlaying off different LLMs against one another in that kind of manner is a good way to expose some first order errors.
- puppymaster 3mo agoDeepSeek will just wing it and tell you it's done only for you to find 1 major + 3 edge case bugs.
- mechazawa 3mo agoGemini writes pretty shitty code in my experience. We tried it out for a grand total of half a day at work before deciding it wasn't worth our time and switched back to Opus. ChatGPT writes like it's life depends on it and refuses to correct its own mistakes. It'll figure out a way to write 4k lines for something that could've been done in 500
- lionkor 3mo agoActually, all of them are fallible, very incompetent machines that are good at writing text. They're not people, they don't have any qualities of people except the really bad ones, and they are absolutely miserable at reasoning. The only people I know who use Gemini are unemployed. The only people I know who use Claude vibe-code everything, often including their communication -- they probably let Claude kiss their kids goodnight. Everyone else uses ChatGPT, and the world is worse off for it. They are machines. "it" is the only acceptable pronoun, and personifying these machines adds emotion into the discussion and the use of the tool. They are not people. They do not behave like people. If you feel like they do, and you're e.g. autistic, that's entirely fair, so please take my word that they do not behave sufficiently like people in any way. Nothing they do mirrors the behavior of engineers. They instead mimic the language of engineers. I understand that this is all it takes in a lot of circles to gain respect, which is quite a sad state for those circles, but that doesn't mean its a universal experience.
- nicman23 3mo agoclose enough, welcome back 56(0)k
- polpo 3mo agoInteresting 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).
- byb 3mo agoExactly, bit banging an 8-bit bus isn't that different from pushing the data out of the USB port. It would be great to try an LLM trained on pre-1900 documents and ask it if powered flight is possible. Great work on PicoGUS.
- alexjurkiewicz 3mo agoIt was Gemini Flash, probably an even faster variant optimised for immediate response on search pages.
- gavinsyancey 3mo agoYou can do this by installing OpenWRT on the Pi and controlling it from the web interface.
- matthewmacleod 3mo agoBut this is a Pi Pico, which is a microcontroller and not a Linux system.
- hparadiz 3mo agoTwo arm cores at 133 MHz. That's already more powerful than my first computer. For $4. It qualifies as a computer on it's own. It runs Linux just a hacked version with an emulated MMU https://github.com/tvlad1234/pico-rv32ima https://github.com/tvlad1234/pico-rv32ima
- RossBencina 3mo ago> This project uses CNLohr's mini-rv32ima RISC-V emulator core I wonder why not use the Pico's RISC-V cores.
- Tepix 3mo agoFUZIX is a better fit. https://codeberg.org/EtchedPixels/FUZIX https://codeberg.org/EtchedPixels/FUZIX
- LargoLasskhyfv 3mo agoIn this case I'd say https://en.wikipedia.org/wiki/NuttX https://en.wikipedia.org/wiki/NuttX
- gavinsyancey 3mo agoOops; I misread the title as Pi Zero W.
- GL26 3mo agoone 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...
- lithiumii 3mo agoexcept now we don't need to spend that $5
- bdavbdav 3mo agoIt’s nice that it doesn’t need the WiFi stack or host side configuration though. This would be great for headless machines.
- byb 3mo agoNo, it's not really easier to buy a Wi-Fi dongle. My target device is the Spotify Car Thing and SuperBird doesn't have Wi-Fi components. My Claude Code Pro subscription was idle, so it cost me nothing. Also, according to an article from Tom's Hardware from two years ago, four million Picos have already shipped, so I've unlocked this ability for let's say 500,000 devices. Finally, my day job is in the Wi-Fi industry... this wasn't a learning exercise.
- farfatched 3mo agoThe author's tone when they discuss the cost of the project is self-deprecating. They know it would have been simpler to just buy one. But also, the author has given the community a great gift, both directly (the blog post and the project!) and indirectly (the idea: what else can be implemented in similar ways).
- byb 3mo agoAuthor here: Thank you, this is one of the nicest things anyone has ever said about my work. I achieved two goals today: a front page post on hackernews and for being recognized for my work; or more accurately, for being very good at using AI ;)
- 3mo ago
- vardump 3mo agoThanks! 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.
- byb 3mo agoAuthor here: You're welcome!
- deleted 3mo ago[deleted]
- hellweaver666 3mo agoOooooh, 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!
- amelius 3mo agoHow many Mbps?
- smilespray 3mo ago6
- tonyhart7 3mo agonot very a lot are they
- InsideOutSanta 3mo ago6 is all you need in all cases, depending on the unit.
- 0x457 3mo agoI think this is more of a "can you do this?" rather than something useful. Sure you can have Pico with this firmware around, but you can have much smaller and faster dongle instead. Pico is an amazing thing tho, so many weird firmwares that are useful in a pinch.
- tehlike 3mo agoYes, but why does it matter. People do all sorts of things for fun.
- seba_dos1 3mo agoMore than enough for quite a lot of use cases.
- throwwwll 3mo agoAI Slop.
- xd1936 3mo agoI like that the second image filename is slop_2.png. At least they're self-aware.
- palata 3mo ago> 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?
- teaearlgraycold 3mo agoThe Pico is USB 1.1, so the upper bound is 12 Mb/s.
- 15155 3mo agoTotally pedantic deep dive: the Pico has a USB FS PHY (the numbered versions don't directly correlate to line rate, and FS was defined in 1.0) - the signaling rate is 12Mb/s, but it's impossible to achieve sustained transfers at this data rate under any circumstance: - USB FS has a 1ms frame limit (HS is 125µs) - UBS FS Bulk is thusly limited to ~19 transactions x 64 bytes maximum (HS is 512) - USB FS Isochronous can do 1023 byte transfers, but you can only fit one of those in a 1ms frame (resulting in a giant quantization hole in the packet) - Focusing on bulk only: the token packet, ACK handshake, inter-packet bus turnaround time minimums, framing bits, CRC bits, and periodic FS SOF packets mean that the actual theoretical maximum data rate is ~81% of the signaling rate - Bit stuffing optimality issues (required for clock recovery) eat an additional several percent on most data, up to ~17% on pathological data Therefore: ~9.5Mb/s is the best theoretical data rate that can be obtained with optimal host and device IP and an ideal application layer. Realistically, ~8Mb/s is the most one can expect on real hardware with an ideal application (and this is optimistically high in my experience.)
- byb 3mo agoAuthor here: thank you for this deep dive. I saw peaks of 5.9 Mbps, it might be possible to increase throughput by allocating more memory. The link between the rp2040 and Infineon Wi-Fi device is 31.5 Mb/s. It might be possible to push that out over PIO to an external USB 2.0 PHY. Apparently the Wi-Fi device is capable of higher speeds. Who knows what will be the limiting factor. I'll leave it to someone else to experiment, my focus was the stock hardware without any modifications.
- arcza 3mo ago[flagged]
- nolok 3mo agoMeta comment to your meta comment : this is a very personal opinion but I cannot stop myself from thinking less about your message (even though I agree with it), just because of that edgy wannabe way to go about naming Microsoft. You want to say Microsoft say that, you want to say Github say that but if you say a vaguely insulting name only to have to specify what you actually mean... It doesn't bring anything to the conversation, except lower the level, and if a company has flaws as big as Microsoft you don't need to resort to childish name calling to expose them. This is my personal opinion.
- techbrovanguard 3mo agowon’t somebody please think of the billion dollar company?
- joejohnson 3mo agoI thought it brought something to the conversation
- LearnYouALisp 3mo agoIt means GH is now full of slop and pointing out it's owned by Microsoft, for those who may not have known or LMS who did not until recently
- KJs6ZxELzQM37O 3mo agoI recently bought Pico 2 W for DualSense (https://github.com/awalol/DS5Dongle https://github.com/awalol/DS5Dongle).
- bhouston 3mo agoInteresting 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/ https://raspap.com/ This is slightly different in that I do want a NAT.
- Tepix 3mo agoIt's also slightly different because this project is for the Pi Pico.
- bhouston 3mo agoYeah, given the through put on the Pico is just 4Mbps in this setup, it will not work as a travel router for the family.
- forinti 3mo agoI like this little thing: https://openwrt.org/toh/gl.inet/gl-usb150 https://openwrt.org/toh/gl.inet/gl-usb150 You can use it as a repeater, so the whole family can just use the same network/password we use at home. And it is so small, you can run it from a power bank for hours. Unfortunately, they are not sold anymore.
- raffael_de 3mo agowhat is this useful for?
- diego_moita 3mo agoI 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.
- MisterTea 3mo agoI 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.
- WhyNotHugo 3mo agoWould love a Bluetooth variant, so I can use Bluetooth HID devices on a host with no Bluetooth stack.
- bri3d 3mo agoThe default reference firmware for the nRF52840 Desktop Dongle does this. https://github.com/nrfconnect/sdk-nrf/blob/main/applications/nrf_desktop/doc/hid_forward.rst https://github.com/nrfconnect/sdk-nrf/blob/main/applications...
- xondono 3mo agoI’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.
- anotherpaulg 3mo agoIf you have CAT5/6 between the locations, USB-over-CAT5/6 adapters are inexpensive and work quite well. I've used OREI's successfully over >60m. But there are many options, with varying limits on cable length. https://www.orei.com/products/usb-over-ethernet-extender-upto-330-feet-extends-usb-2-0-signal-over-cat5e-6-lan-ethernet-cable-with-2-ports https://www.orei.com/products/usb-over-ethernet-extender-upt...
- marysol5 3mo agoI've used USB over Network in the past, worked well on Linux
- EvanAnderson 3mo agoIn a Windows world I've used the hell out of these devices for licensing dongles on Windows virtual machines: https://www.silextechnology.com/connectivity-solutions/device-connectivity/ds-600 https://www.silextechnology.com/connectivity-solutions/devic... They're much cheaper than the competing devices from Digi and they've been bulletproof for me. I've got some out there running >10 years. I've even done stupid stuff like hung a USB Ethernet adapter off of one and made it a NIC on my local PC to talk to another of the same unit hanging off that USB NIC (just to be cheeky-- not for actual use). Stacking things on top of other things is fun. My only complaint is I wish they did PoE. I use a cheap PoE splitter for that but it would be nice not to have to do that.
- ianburrell 3mo agoThere USB over IP. I think Linux supports it. It could be possible to have Pico implementation, use WiFi like this, and connect to computer or another dongle.
- asc91 3mo agoI 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?
- wpm 3mo agoI've often thought that if I ever did get around to publishing any of the stuff I work on that I would probably also publish any AI usage verbatim. Like, the full logs of all of the chats, at least as a sign of "here was my thought process" and "here's how I convinced the text machine to give me the right text". That somehow feels more honest than "I made this thing, but actually I vibe coded this thing."
- crtified 3mo agoInteresting point. The prompts are the source, in a way.
- byb 3mo agoAuthor here: I will consider writing a blog about ir, but it will require a lot of work on my part, because as I mentioned, this was a digression/side quest from the main task of hacking my Spotify Car Thing. It might work better as a YouTube video.
- byb 3mo agoAuthor here: this is actually a "side quest" which I alluded to in the README.adoc and another comment. I've had a few Spotify Car Things (SuperBird) sitting on my desk that I have not touched in a year because I was waiting for the community to come out with a non-tethered approach to reclaiming them. All of the existing continue to either require a host PC, phone, or RPI Zero. I want to deploy these throughout my home and have them usable without my PC or phone nearby - likely with just a Home Assistant dashboard. I spent the first few hours cloning repositories of existing firmware, and examining other approaches, such as Bluetooth low energy with ESPHome Bluetooth proxies, but they ended up being dead ends. I took a compromise that a small wireless dongle would be acceptable. I then began examining the Linux source tree to see if it was possible to flip the USB from client to host and spent a considerable amount of time recompiling BishopDynamics' SuperBird NixOS distribution and building a test dashboard to show the IP networking information, because I knew that once I flipped the device's USB mode, I would lose access to the device. SuperBird took almost four hours to compile on my low end CPU - I let it compile while I hit my five hour Claude Code quota. https://gitlab.com/baiyibai/superbird-host-mode https://gitlab.com/baiyibai/superbird-host-mode I also did not look forward to trying to build in wireless functionality in to NixOS, because it also took 30 minutes to flash the device - I had to lower the transfer block size and add more retries in the flash utility because it kept crashing. ultimately both the SuperBird work and the RPI pico firmware was about 300 prompts of investigation, research, creating potential approaches, architecting, designing, debugging, testing/validating, and documenting. Regarding your last two questions... I started out 25 years ago by studying for a CCNA in high school and joined the industry just as first generation 802.11ac devices began hitting the market. From my position, I've worked on every layer from the SoC, PCB, to software. I want to be very careful and say software estimation is very difficult. The main bug (issue #1) I encountered would have been very difficult to diagnose and resolve ten years ago using traditional development workflows.
- eeesdfsdfg 3mo agoI need mesh too
- alnwlsn 3mo agoBuried 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.
- byb 3mo agoAuthor here: Thank you! It's a nice thought that something I made will become a trusted tool for IT professionals. Now I need to make a nice 3D-printed case. I admit, I almost couldn't believe it when I turned off my regular blazing fast 802.11ax NIC in the KDE network manager and switched to the pico-usb-wifi and I watched the YouTube "stats for nerds" buffer fully fill up and playback was totally smooth.
- 1vuio0pswjnm7 3mo agoNo 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
- MomsAVoxell 3mo agoIn 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!
- dromio 3mo agoI've been using an ESP8266 as a wifi/modem adapter with my original Commodore 64. Works really well! You may be able to get away with something cheaper if you push. http://tech.guitarsite.de/c64_wifimodem.html http://tech.guitarsite.de/c64_wifimodem.html
- MomsAVoxell 3mo agoNice to hear of your success with the C64 .. I'll do that with mine too, one of these days. Since the Pico W is around 7 bucks in my neighborhood... its already pretty cheap.
- byb 3mo agoAuthor here: good point - I do hope the retro computing community enjoys this tool. It does remind me of the Espressif line if ESP8266 and ESP32 devices which have Wi-Fi devices which are available on UART and respond to AT modem commands. Pico-usb-wifi is a nice tool which some clever YouTubers will hopefully be able to use to get old internet appliances, or systems that didn't have Wi-Fi, online. Personally, I rescued a dozen PogoPlugs from the trash a decade ago and used one to practice self hosting a word press instance. Having a dongle like this would have allowed me to stick it in a corner and run something like librespot or snapcast. Instead, I eventually sent them to the recycler when I moved.