Hello dear readers, Patrick here.
A few days ago we held a little "ethernet jam" with the aim of getting some cabled internet working.
It turns out that UEFI has some nice facilities for the link layer protocol so we could get a little fancier than that. It allowed us to not only get some link layer ethernet frames through a cable, but to send some meaningful UDP packages to a listening Python server program.
We had to construct the packages ourselves and get into the details of the network and transport layer protocols, but with the help of wireshark we could check that all the fields were laid out correctly and that the checksum fields were correctly calculated.
A thing we managed to overlook at the beginning was that the UEFI simple network protocol overwrites the beginning of the buffer you provide for the packet with the header information, so you have to input your data a fixed number of bytes into the buffer. The size of the header depends on the link layer protocol, so it's nice that the simple network protocol can tell you how large it is.
We also got some solid infrastructure work done on the internals. The module system we had going before was much too primitive, and it still needs some thorough changes, but it is much closer to where we want it to be for a complete prototype.
This change is one that isn't all that visible externally, though it matters a great deal for our development flexibility.
Work on the module system is going to be a top priority going forward.
The video shows a test where we send a UDP packet from QuasiOS to a linux computer on a LAN, where you can see the commands being executed in QuasiOS, as well as the wireshark window and the receiving Python server program.