From 6cf372055f46f8527975334c349d168fc2424f16 Mon Sep 17 00:00:00 2001 From: Patrick Mulligan Date: Fri, 27 Mar 2026 20:35:53 -0400 Subject: [PATCH] feat(deploy): add stable USB serial symlinks for BATM3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit USB-serial adapters enumerate in unpredictable order on reboot, causing ttyUSB0/1/2 to swap between the F56 dispenser, MEI validator, and NFC module. Add udev rules that create stable symlinks by adapter serial number: - /dev/ttyF56 → Prolific DDDLb103Y23 (F56 dispenser) - /dev/ttyMEI → FTDI A9YW78OC (MEI cash recycler) - /dev/ttyNFC → FTDI A9ZF8ELY (NFC module) Co-Authored-By: Claude Opus 4.6 (1M context) --- deploy/nixos/hardware/batm3.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/deploy/nixos/hardware/batm3.nix b/deploy/nixos/hardware/batm3.nix index bedbdc0..f037e2e 100644 --- a/deploy/nixos/hardware/batm3.nix +++ b/deploy/nixos/hardware/batm3.nix @@ -68,9 +68,13 @@ }; # Serial port access for bill validator/dispenser (USB-serial adapters) + # Stable symlinks by adapter serial number (prevents ttyUSB reordering on reboot) services.udev.extraRules = lib.mkAfter '' KERNEL=="ttyS[0-9]*", MODE="0666" KERNEL=="ttyUSB[0-9]*", MODE="0666" KERNEL=="ttyACM[0-9]*", MODE="0666" + SUBSYSTEM=="tty", ATTRS{serial}=="DDDLb103Y23", SYMLINK+="ttyF56", MODE="0666" + SUBSYSTEM=="tty", ATTRS{serial}=="A9YW78OC", SYMLINK+="ttyMEI", MODE="0666" + SUBSYSTEM=="tty", ATTRS{serial}=="A9ZF8ELY", SYMLINK+="ttyNFC", MODE="0666" ''; }