secubox-deb/remote-ui/common
CyberMind-FR d58460ebaf fix(round): modprobe dwc2 in secubox-otg-gadget chain (rpiz UDC was implicit on eye-gadget)
The previous build had two gadget services enabled at boot:
  - secubox-eye-gadget.service: ExecStartPre=modprobe dwc2 + libcomposite
  - secubox-otg-gadget.service: ExecStartPre=modprobe libcomposite + usb_f_*
                                (NO dwc2 — relied on eye-gadget loading it first)

When PR #175 disabled secubox-eye-gadget at boot (to stop the UDC conflict),
nobody loaded dwc2 anymore. systemd-modules-load reads /etc/modules but the
order of dwc2 load vs the otg-gadget service start window was tight — and
on the rpiz the journal showed no successful gadget enumeration after the
PR #175 image deployed.

Defensive fix in two places:

1. secubox-otg-gadget.service: prepend ExecStartPre=/sbin/modprobe dwc2.
   Drop the ConditionPathIsDirectory=/sys/class/udc gate so the service
   actually runs and can load dwc2 if it isn't loaded yet (the path is a
   sysfs dir that exists when its parent /sys/class is mounted — it was
   harmless, but removing it makes the chain self-bootstrapping).

2. secubox-otg-gadget.sh check_prerequisites(): also modprobe dwc2 (in
   case the service is invoked manually by an operator), then poll
   /sys/class/udc for up to 5s waiting for the BCM USB controller to
   bind asynchronously. Diagnostic message updated to point at the two
   places to check (dtoverlay + /etc/modules) if no UDC ever shows up.
2026-05-17 12:00:03 +02:00
..
assets/icons feat(remote-ui): Phase 1 — extract common/ shared core (ref #127) 2026-05-14 05:59:40 +02:00
css feat(remote-ui): Phase 1 — extract common/ shared core (ref #127) 2026-05-14 05:59:40 +02:00
js feat(remote-ui): Phase 1 — extract common/ shared core (ref #127) 2026-05-14 05:59:40 +02:00
python feat(common): radar_concentric painter + phase-aware dashboards (ref #138) (#142) 2026-05-15 13:29:06 +02:00
shell fix(round): modprobe dwc2 in secubox-otg-gadget chain (rpiz UDC was implicit on eye-gadget) 2026-05-17 12:00:03 +02:00
README.md feat(remote-ui): Phase 1 — extract common/ shared core (ref #127) 2026-05-14 05:59:40 +02:00

remote-ui/common — Shared Core

Files consumed by both remote-ui/round/ (Pi Zero W + HyperPixel 2.1 Round) and remote-ui/square/ (Pi 4B / Pi 400 + 7" 800×480).

Layout:

  • js/ vanilla globals (no ES modules)
  • css/ palette variables + base layout
  • assets/icons/ the six SecuBox module PNG icons (22/48/96/128 px)
  • shell/ variant-aware USB gadget scripts (set $VARIANT before sourcing)

Round/ and square/ reference these via relative <link> / <script> tags or cp -r ../common/ from their image build / deploy scripts.

License: LicenseRef-CMSD-1.0