This week in Liminix: am happy to report that the rewritten PHRAM/tftpboot stuff almost worked first time, and the delta between first and second time was just a simple syntax error. The GL-AR750 boots :-)

Most of this week was spent on tooling and infra to make Actual Hardware Development simpler.

Trivial Fix, Transmits Packets

I mentioned last week that I’d written a TFTP server that plays nice with Nixpkgs conventions (doesn’t expose all of /, but does follow symlinks so I can serve files like result/uimage). (When I say “written” it’s really a thin wrapper around someone else’s library). After hooking up to a client, it turned out not to be 100% bug free, so spent some time fixing problems in the way it uses luasocket.

Border Network Gateway

(A tip: performing internet searches for the term “BRAS” - Broadband Remote Access Server - may not yield the intended results if you don’t add some qualifiers)

Here in the UK, the interface between your home router and the internet that comes into the house is probably PPPoE (PPP over Ethernet). Unless it’s DHCP …

  • If you have FTTP (fibre to the premises) there’s an Openreach ONT somewhere in your house that has an optical port for the incoming fibre connection and an ethernet port for, in their words, “an Ethernet cable that runs to your BT Hub”. A PPPoE server is running on this port.

  • If you have VDSL or ADSL, you have a “DSL modem” that performs a similar role except that the upstream is a RJ11 plug that attaches to the phone line. Sometimes your ISP send you a combined DSL modem/router in a single device: usually in this case you can set the router to “bridge” mode somehow and plug your own router in.

  • If you have a cable modem, as far as I can determine by searching the Internet, the previous does not apply to you. You can put a Virgin Media Hub into modem mode, but the effect is to turn off NAT and make the DHCP serve your external IP address - so not the same, really.

So the tl;dr is that PPPoE is an important use case for a home router - but if you have to order in a second fibre line to the property to try it, that rather reduces the opportunities for people to hack on it. So this is why I’ve been working on bordervm - a QEMU VM I can use with a passthru PCI ethernet card, that provides a PPPoE service and relays it to an L2TP (Layer 2 Tunneling Protocol) somewhere on the Internet. Mine is from Andrews & Arnold but presumably others also exist.

Writing Things Down

The Liminix README file was getting very long and quite unstructured - and it seemed unlikely that trend would reverse. So I’ve started on writing a manual.

Tangential developments

I also upgraded my self-hosted Pleroma service from 2.4.4. to 2.5 and it seems to be a lot faster and less timeout-y (here’s hoping it stays that way). This isn’t Liminix-related per se, but sort of relevant in that a lot of what I post about is Liminix.