A word of caution: this has been done with other uControllers in the past; nothing wrong with it from a functional point of view, but be aware that the lack of transformers means the boards i/o pins aren't insulated from whatever it's connected to them; any wrong connection by mistake or static charges in case of a long cable could damage the chip forever. The best and safest use i can imagine of a transformerless arrangement would be a cluster of Pi Picos all mounted on a backplane containing a Ethernet switch chip; in that situation they would share the same power supply and ground so a simple level translation where necessary would be enough, and probably a total of two wires could be used for transmission and receive since balanced signals wouldn't be needed anymore.
Oh wow, this is was earlier in development than I was expecting. Literally just banging out the bits on the wire for a UDP packet without any underlying protocol support. No CSMA/CA. No ARP. No autonegotiation. Can't even receive. Just enough support to calculate the checksums and do the Manchester encoding before clocking the bits out on the wire.
cnlohr did something similar with an ATTiny85:<p><a href="https://www.youtube.com/watch?v=mwcvElQS-hM" rel="nofollow">https://www.youtube.com/watch?v=mwcvElQS-hM</a>
<a href="https://www.youtube.com/watch?v=m4f4OzEyueg&t=0s" rel="nofollow">https://www.youtube.com/watch?v=m4f4OzEyueg&t=0s</a><p>Pretty amazing!
A similar thing for the Forth chips produced by Chuck More and colleagues: <a href="https://www.greenarraychips.com/home/documents/greg/AN007-141112-10BASET.pdf" rel="nofollow">https://www.greenarraychips.com/home/documents/greg/AN007-14...</a>
Should be able to run CANbus also, here we go, someone did it:<p><a href="https://github.com/kentindell/canhack" rel="nofollow">https://github.com/kentindell/canhack</a>
This is also possible using GPIOs on an FPGA as well. Have a look over at FPGA4Fun: <a href="https://www.fpga4fun.com/10BASE-T.html" rel="nofollow">https://www.fpga4fun.com/10BASE-T.html</a> 10base-T is such a simple protocol, and implementing it is a good way to learn many of the physicaly layer fundamentals of Ethernet.
The funniest Ethernet system I've seen is that used in dataprobe's "iBoot" remote power switch. These used 8051 microcontroller (the classic 40-pin DIP) connected to an ISA-bus FIFO-based 10/100 Ethernet chip using GPIOs. The FIFO saves you since the 8051 doesn't have to keep up with the line rate (one whole packet has to fit in the FIFO).<p>But I know these devices fail when the network is chatty- like if you have spanning-tree enabled.<p>The iBoot has a simple web interface. Somebody wrote an entire network stack for 8051..
RP2040 is an amazing MCU, I'm unaware of any other similar MCU has a programmable PIO module.<p>Based on the Ethernet and previous HDMI work done to this chip, I'm to write my own I3C master/slave on it soon, should be doable.
The other repository seems more interesting (can someone translate?)
<a href="https://github.com/kingyoPiyo/RasPico_SHIBAKI_Board" rel="nofollow">https://github.com/kingyoPiyo/RasPico_SHIBAKI_Board</a><p>This seems to be SFP with Raspberry Pico.
The transformer-coupling of Ethernet isn't a trivial fact.<p>When building precision instrumentation, I was extremely happy to learn about this from one of our old-timers who had been working on systems since the days of the VAX.<p>You need not worry about DC ground-loops with Ethernet.<p>When I saw the post-title, I thought, "oh, no, what about the transformer-coupling?". Was very happy to see a simple technique outlined in the article.
LWIP [1] could be used for this. You'd just need to implement I/O.<p>[1]: <a href="https://www.nongnu.org/lwip/" rel="nofollow">https://www.nongnu.org/lwip/</a>