Is it possible to connect a Raspberry Pi Pico (without the ‘W’) to Ethernet without any external logic? Kyoto, Japan-based kingoPiyo says yes! With just 3 resistors, he’s found a software-only method of bit-banging a 10BASE-T connection out of the Pico.
Basic Raspberry Pi Pico bit-banging circuit for Ethernet. Source: kingyoPiyo on GitHub
Yes, it’s as simple as it looks: A Pi Pico, 2 × 47 Ω resistors, 1 × 470 Ω resistor, an RJ45 connector, and the Pico itself. The magic, of course, happens in the source code, and, to get close to the RP2040’s built-in hardware, at speed, kingyo has opted to use C for the task. Naturally, he has provided the complete source over on his GitHub repo, and he also has a dozen images in the doc directory to show you the way, including what a decoded Ethernet packet looks like, and several screenshots from his trusty Rigol scope:
kingyoPiyo’s oscilloscope screenshots clarify the inner workings of Ethernet
Source: kingyoPiyo on GitHub
A couple of the limitations of this early-stage experiment are the fact that it’s transmit-only (although kingyo is working on a receive option), and you need to keep it away from PoE (power-over-Ethernet) connections. Check out his repository – maybe you’ll find something useful you can do with this quick-and-easy connection to the wired world of Ethernet!
If you do come up with a great way to enhance kingyo’s project, or even build something completely new using a software hack like this, be sure to share it on Elektor Labs, our maker community, where we keep a close eye on community projects. Who knows, your idea might end up as an article in Elektor Magazine!