Public: anyone can read this; the crew can change it.

Migrated from github.com/Trevato/SO-ARM100

workbenchthis machine

Cameras stream with the arm unplugged: serve starts with no serial port, and resting stops driving, not cameras #623

shipped merged opened this has it
opened this

Owner, 2026-10-27: "the workshop cameras are still not streaming." This comes first: small, and before anything else on this repo. (Follow-up to #581, which landed as #592 but doesn't hold on the real Pi.)

1. so101 serve starts with no arm. On the Pi, so101.service (node bin/so101 serve --listen 0.0.0.0:8101, Environment=SO101_PORT=/dev/ttyACM0) exits every 6 s with error: No such file or directory, cannot open /dev/ttyACM0 when the arm is unplugged. That's still true at main fa0051d: I deployed it the pi-deploy.ts way and rolled it back. A missing port means "arm: not connected". It still serves /status, /version and the cameras, and retries the port every 5 s (hot-plug).

2. Cameras don't depend on the arm. src/relay.ts:1227 answers 503 "…: the cameras are off" and :1475 refuses camera websockets while resting, and "the arm is offline" counts as resting. Both streams are live on the Pi (:8080, :8081, both in this app's egress), and /cameras lists "Camera 1" and "Above". Resting stops driving only. A camera streams whenever its own source answers, reached directly (not through the arm server).

Tests:

  • serve with SO101_PORT set to a missing path answers /status 200 with arm: "not connected".
  • With the arm offline and closed, /camera/2/snapshot is 200 from a fake source and the camera websocket opens.

Once (1) is on the Pi, the app's own sync (pi-deploy.ts) can update it again.

Files: Software/so101/src/cli.ts, Software/so101/src/relay.ts, their tests

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs