Skip to content

11. An appliance again

A driver that works on a bench is not yet an appliance. The stage the project is in now is making all of it install, configure, update and explain itself as if it were a part of OPNsense.

what it became since
one installer it reads the board's assembly number and installs only that board's pieces; any other board gets nothing -
the module follows the kernel rebuilt for every kernel update before the reboot, and stamped, because a module built for the wrong kernel loads without complaint 2026-10-01 (XGS 3300), 2026-10-14 (XGS 136)
the first boot assigns the ports a thirty-second countdown on the console, then WAN, a LAN bridge on 192.168.1.1 and the management port on 192.168.100.1, by the names on the chassis 2026-10-16; booted on both appliances 2026-10-17
one menu section XGS Coprocessor: Overview, Settings, Ports, IPsec, Updates, Log File - every setting the plugin has, and only the ones the appliance has 2026-10-17
every string in Arabic merged into OPNsense's own catalogue at install and at every boot, with the right-to-left layout beside it 2026-10-17
the appliance's own parts fans and temperatures, port and cable health, the front panel where there is one, scheduled reports - each a plugin in its own repository; the fans and the front panel were first built on the XG 330 -
an image with all of it inside xgs-image-builder: the official OPNsense image, verified, with the driver, the plugins and Arabic laid in 2026-10-16
problem reports what goes wrong on an appliance, cleaned of every address and serial, filed as an issue in the right repository 2026-10-17
releases the Updates page offers releases, not every merge; a fix is released at once, improvements are gathered 0.1.0-alpha.1, 2026-10-18

A changelog worth reading

The releases came last, and they came out of an old habit. I read the changelogs of the projects I rely on line by line - what changed, why, and what kind of change it was. So this project's changelog is written from its own commits and sorted the same way: fixes, improvements and additions, documentation. A fix is released as soon as it is checked on the appliance it was broken on; improvements wait and go out together.

Three appliances on one bench

By 2026-10-16 a second XGS 3300 had joined the bench, with a 4x10G expansion module whose four ports come up as interfaces after the panel's twelve. With three appliances there could finally be a hardware peer at both ends of every tunnel - so the next night everything was measured again, at eight MTUs from 576 to 9000, and every window was photographed as the run finished.

Three appliances on one bench, 2026-10-17

The XGS 136 at the top, the second XGS 3300 with its module in the middle, the first XGS 3300 at the bottom.

Where it stands

The main part of the work is done, and on 2026-10-18 the work-in-progress notice came off the top of the README. The number still says alpha. Some functions are being improved, and the XGS-specific integration is being completed where something is still missing, arriving as updates through the releases. What is left is engineering rather than discovery, and the rows still open are on docs/families/parity.md.

Close to two years

Written down, it reads short. It was not. It was close to two years of evenings, with more curves and crossroads than these pages can hold: patience, steady follow-up, calculations and measurements, and a good many roads that ended in a wall. The drivers and the documents are what it produced. This wiki is here because the road to them deserved to be told as well.


Previous: 10. From ports to offload · See also: Photographs · Measurements · Timeline

Discussion

The discussion of this page is held in the project's GitHub Discussions. Showing it here loads giscus from giscus.app and GitHub, and writing in it needs a GitHub account - what that means.