tl;dr MT300N-v2 and MT300A are both implemented

Last week:

Sorting these little niggles out took most of the rest of the week. Maybe next week I’ll get to Hardware Device Number Two.

This week I have the MT-300A running in what I am pleased to call “production”, providing Wifi access in the outbuilding I use as an office, and an MT-300N-V2 almost in production as my backup host, except that for reasons I haven’t yet been able to ascertain it won’t mount its USB disk at boot time (though it works fine if I ssh in and start that service after boot). It’s a big lump of spinning rust and it might just need more time to reach its target angular velocity.


  • added the “swconfig” package, and a “vlan” network interface type. This is for configuring the network switches that are built into these devices - the device has two RJ45 sockets but only one ethernet device visible to the kernel, so if you want to treat the LAN and WAN ports separately then you do this with VLAN tags.

  • worked a bit on reducing image size, mostly by configuring hostap and nftables with fewer options, and removing a copy of bash that had crept in by thoughtless use of writeShellScript.

  • created an examples folder and moved rotuer.nix into it, along with the configs for arhcive and extneder.

  • add hostname as a configuration option

  • add configuration options for Busybox, so we can start with a minimal-ish Busybox that has only the bare minimum applets, and then modules can specify the additional applets or features.

    • It would be absolutely lovely if packages could specify the applets they need from busybox just as they do for package-level dependencies. But I haven’t figured out a nice way to do that yet. I don’t want an image with ten different busybox packages that all have different config, I want one busybox with the union of all those config.
  • small amounts of tidying up so we have slightly less copy-paste code.

What’s next

I’m pretty happy with where we’ve got to: there are only a couple of gaps between where we are now and NixWRT feature parity

  • find whatever’s stopping arhcive from mounting its disk at boot

  • add NTP or some other way to get accurate time and date

That done, I need to turn my attention to the User Manual, which is currently completely silent on how to flash the image onto the device.