bitspire/apps/machine
Patrick Mulligan ffbacafe39 fix(nfc): auto-recover a wedged CCID reader via USB power-cycle
The Feitian R502-CL (and cheap CCID readers generally) can wedge: it keeps
detecting a card but every APDU returns "card absent or mute", and ONLY a
USB power-cycle clears it — restarting pcscd or the app does not (confirmed
on-device). Until now that left cash-out/cash-in taps dead until a manual
replug.

- nfc-service.ts: count consecutive read failures; after 3 (gated by a 30s
  cooldown so a still-wedged reader can't reset-loop) trigger
  nfc-reader-reset.service. nfc-pcsc then re-detects the reader on USB
  hotplug with no app restart (verified live).
- batm3.nix: nfc-reader-reset.service (oneshot, root) re-binds the reader's
  USB device (a software replug); reader-agnostic via the CCID interface
  class (0x0B) so it also covers a future ACR1252U. A polkit rule lets the
  unprivileged `bitspire` app start just that one unit.

Hardware track (separate): the durable fix is a better reader (ACR1252U —
large antenna for behind-panel, firmware-upgradable). This change makes any
reader's wedge a ~2s self-heal in the meantime.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-06 19:51:39 +02:00
..
electron fix(nfc): auto-recover a wedged CCID reader via USB power-cycle 2026-08-06 19:51:39 +02:00
public feat(machine): add Ubuntu font and kiosk animations 2026-03-01 12:09:42 -05:00
src feat(machine): Bolt Card (NFC) tap-to-receive on cash-in 2026-08-06 00:30:13 +02:00
.env.example docs: relay + LNbits pubkey are seed-provided, not required (#70) 2026-07-02 21:53:51 +00:00
components.json feat(docker): add dev.sh with auto-funding and ATM app setup 2026-02-15 14:19:16 -05:00
index.html security(H1): add Content Security Policy 2026-03-07 09:36:59 -05:00
package.json feat(machine): NFC Bolt Card reader driver + IPC (main process) 2026-08-05 04:42:07 +02:00
tsconfig.json feat(docker): add dev.sh with auto-funding and ATM app setup 2026-02-15 14:19:16 -05:00
tsconfig.node.json feat(docker): add dev.sh with auto-funding and ATM app setup 2026-02-15 14:19:16 -05:00
vite.config.ts refactor(rename): @lamassu/* → @bitSpire/* package scopes 2026-06-01 19:08:03 +02:00
vitest.config.ts chore(machine): set up vitest for apps/machine 2026-06-01 19:12:11 +02:00