feat(deploy): add batm3 ISO build target

Add batm3 to flake.nix NixOS configs, live.nix (CDC ACM kernel modules,
MEI udev rules), and build-iso.sh. Default fiat: USD.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Patrick Mulligan 2026-03-20 18:11:00 -04:00
commit dc5f4f8aa6
3 changed files with 19 additions and 2 deletions

View file

@ -9,6 +9,7 @@
# bash build-iso.sh douro # Bay Trail, kernel 5.15, GTQ
# bash build-iso.sh tejo # UP4000, kernel 6.6, GTQ
# bash build-iso.sh sintra # UPBoard, kernel 6.6, EUR
# bash build-iso.sh batm3 # General Bytes BATM3, EBDS validator, USD
set -euo pipefail
MODEL="${1:-}"
@ -17,13 +18,14 @@ if [ -z "$MODEL" ]; then
echo " douro - Bay Trail Atom, kernel 5.15, eDP panel, GTQ"
echo " tejo - UP4000/UPBoard, kernel 6.6, GTQ"
echo " sintra - UPBoard, kernel 6.6, EUR"
echo " batm3 - General Bytes BATM3, EBDS validator, USD"
exit 1
fi
case "$MODEL" in
douro|tejo|sintra) ;;
douro|tejo|sintra|batm3) ;;
*)
echo "ERROR: Unknown model '$MODEL'. Use 'douro', 'tejo', or 'sintra'."
echo "ERROR: Unknown model '$MODEL'. Use 'douro', 'tejo', 'sintra', or 'batm3'."
exit 1
;;
esac

View file

@ -18,6 +18,7 @@ let
douro = "GTQ";
tejo = "GTQ";
sintra = "EUR";
batm3 = "USD";
}.${machineModel} or "USD";
# .env template — runtime secrets are provisioned later via provision-atm.sh.
@ -86,6 +87,11 @@ in
"usbserial" # USB-to-serial adapters (ttyUSB0/1 for validator/printer)
"ftdi_sio" # FTDI USB serial (common in ATM peripherals)
"cp210x" # CP210x USB serial (alternative adapter)
] ++ lib.optionals (machineModel == "batm3") [
"cdc_acm" # USB CDC ACM for MEI BNR Advance validator
"usbserial" # USB-to-serial for F56 dispenser adapter
"ftdi_sio" # FTDI USB serial (common RS232 adapter)
"cp210x" # CP210x USB serial (alternative adapter)
];
kernelParams = [
@ -207,6 +213,11 @@ in
KERNEL=="ttyS[0-9]*", MODE="0666"
KERNEL=="ttyUSB[0-9]*", MODE="0666"
KERNEL=="ttyACM[0-9]*", MODE="0666"
'' + lib.optionalString (machineModel == "batm3") ''
# ── BATM3 MEI BNR Advance USB CDC ACM ──────────────────────────────
# Stable symlink for the bill validator (vendor 0x0bed = MEI)
SUBSYSTEM=="tty", ATTRS{idVendor}=="0bed", SYMLINK+="ttyValidator"
'' + lib.optionalString (machineModel == "tejo") ''
# ── Tejo serial port symlinks ──────────────────────────────────────