What this skill fixes

Failure modes that appear when building paired HMI + USB CDC firmware on Octolux. Cross off as the upstream platform / firmware ships a fix.

  • Web Serial picker shows "No compatible devices found"lsusb confirms the device. Cause: missing Chromium SerialAllowAllPortsForUrls policy or /dev/ttyACM* not world-readable.
  • requestPort() rejects with NotFoundError: No port selected by the user — every session. Cause: picker is wrong UX for a kiosk; use getPorts() + VID filter.
  • port.open() throws "Failed to execute 'open' on 'SerialPort'" — open ports[0] is a platform UART, not the USB CDC device. Always filter by VID.
  • getPorts().length === 0 — policy path wrong, Chromium not restarted, or /dev/ttyACM0 still root-only.
  • Tap on the HMI does nothing visible — Chromium permission dialogs don't render in the VNC stream. Use a visible debug strip on the page + CDP-via-SSH.
  • octolux deploy push times out — SCP + chromium-restart + screencast-bounce shell sequence is the workaround.
  • ps aux \| grep screencast returns nothing on the device — busybox ps truncates cmdlines. Use /proc/[0-9]*/cmdline matching.
  • DANGER: walking /proc/[0-9]*/net/tcp to find a port owner mass-kills system PIDs. Lost SSH and Chromium during this session. Use cmdline matching instead.
  • /tmp/screencast.js or /tmp/node_modules/ws/ missing after a bad kill — both in tmpfs. SCP-restore from ~/ntx-embedded/apps/octolux/.
  • Dashboard VNC tile frozen after Chromium restart — screencast's CDP binding died with the old target. Bounce the screencast.
  • error code: 502 no-body on the Adom proxy — strips 5xx bodies. Return HTTP 200 with {ok:false, error, hint} instead. (Cross-ref: octolux-app-server-debug.)

Install

adompkg install caleb/octolux-web-serial-hmi
# or the whole NTX bundle:
adompkg install caleb/ntx-octolux-toolkit

Lands at ~/.claude/skills/octolux-web-serial-hmi/ and becomes discoverable to Claude on the next run.

Full reference

Browse SKILL.md in the Files tab — Quick-start recipe for new HMI projects, Pico SDK firmware template, full Web Serial HMI template, Chromium policy install, udev rule, deploy sequence, CDP diagnostics, 12-row failure-mode table.