The Raspberry Pi Pico is a very capable board, but it’s still a surprise to see bit-banged 100 MBit/s Fast Ethernet implemented on one. [Steve]’s Pico-100BASE-TX library allows an RP2040 (or RP2350) microcontroller to stream data at roughly 11 Mbyte/s, enough to implement 100 MBit/s Fast Ethernet transmission.
We’ve seen 10BASE-T implemented on a Pico, but it takes a lot more than just shoveling bits faster to get 100BASE-T working. 10BASE-T uses two voltage levels and Manchester encoding, but 100BASE-T uses three voltage levels, which [Steve] cleverly implemented on the Pico with two GPIOs, and far more complex encoding. Check out the repository’s README for details as well as a couple example applications.
[Steve] tells us that to the best of his knowledge, this is the first bit-banged 100 MBit/s Ethernet implementation using a microcontroller. It’s transmit-only — reception being an entirely different beast — but it’s possible some enterprising soul might find a solution. If you do, be sure to let us know all about it!
Says “Bit-banged Ethernet Transmission” in the title, but “It’s transmit-only” in the article body. WTF?
That’s just a lame clickbait.
It says “transmission” in the title, but “transmit” in the body? Where’s the issue, exactly?
No, it’s not send/receive, but it’s still quite an accomplishment (worthy of HaD I’d say), and not being misrepresented here.
What do you think the noun “transmission” means? And its relationship to the verb “transmit”?
“at roughly 11 Mbyte/s” is not the same as “11 Mbits/s” as stated elsewhere.
MByte/s is correct, you indeed can hit full 100BASE-TX wirespeed by transmitting maximum-MTU Ethernet frames back to back with only the requireed 12 byte interframe gap in-between. (Okay, because the way the 4b5b symbols are packed in 32-bit words, the interframe gap is currently 3 bytes longer than it needs to be, but that doesn’t make much of a difference).