Join the discussion

Write your take first — we'll ask for email only when you're ready to publish.

  • Hacker News
  • 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
  • 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.

  • It's also slightly different because this project is for the Pi Pico.
  • I like this little thing: 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.

  • 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.
  • The Pico W can host an AP.
  • Wifi 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.

  • 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.

  • I've used USB over Network in the past, worked well on Linux
  • There 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.
  • If 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-upt...

  • In 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/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.

  • 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?
  • I'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."
    by wpm
  • Author 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

    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.

    by byb
  • 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.

  • Author 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.

    by byb
  • 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.

  • ChatGPT is very good at code-reviewing Claude’s work and finds the howlers in it fairly reliably
  • They're all actually a pile of numbers getting multiplied against each other to sometimes produce output that convinces some humans they're people.
  • DeepSeek will just wing it and tell you it's done only for you to find 1 major + 3 edge case bugs.
  • Gemini 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

  • Actually, 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.

  • I recently bought Pico 2 W for DualSense (https://github.com/awalol/DS5Dongle).
  • 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.
    by byb
  • Hah! That's neat! So much fun stuff to be had with that particular bit of kit.
  • 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.
  • 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!

  • I'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

  • Author 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.

    by byb