|
STAR
Cal STAR — firmware, DAQ server, and engine design
|
The DAQ GUI's Video view shows every camera and the HiDes link live, records them, and feeds OBS. This folder is the gateway side: mediamtx.yml (MediaMTX's config) and agent.mjs (the video agent that keeps recordings). The DAQ backend's half is diablo_server/backend/src/video/, the page is diablo_server/frontend/app/video/.
| DAQ backend | Gateway (+ agent) | Recordings | |
|---|---|---|---|
| Workspace | star-rfs | star-rfs, sensor-video (starts with the stack) | star-rfs:daq-server/video/recordings/ |
| Desert | someone's laptop | the media Mac: scripts/media-laptop.sh | the media Mac |
On the DAQ laptop in the desert: Video > Edit > Gateway = the media Mac's .local name (the script prints it) and the gateway password. That setting is per machine and never committed.
Camera audio never reaches the Video view (it asks for video only) or recordings (the agent drops it). OBS does get it: mute it there, or turn audio off on the cameras.
LIVE (green) while frames arrive, STALE (amber) when the picture has frozen, and otherwise NO SIGNAL with one code:
| Code | Means |
|---|---|
| UNREACH | no answer from the camera's address (unplugged, wrong IP, other network) |
| REFUSED | the camera answered but nothing listens on that port |
| AUTH | username/password rejected, or the camera wants one and none is set |
| PATH | the camera has no stream at that URL path |
| NO DATA | nothing arriving on the HiDes UDP port |
| NET | no media path to this browser (off the stand network) |
| GW | the camera answers, but the gateway has no video from it |
| ERR | anything else |
Each stream can also be set to Zoom to fill (Edit): its tiles fill the slot and crop what overhangs, for cameras whose shape wastes the slot. Off by default: letterboxing never crops.
| File | Tracked | What |
|---|---|---|
| config/video.json | yes | streams, labels, URLs, layout, disk guard (recording.refuseBelowGB 20, stopBelowGB 5) |
| config/video.secrets.json | no | camera credentials; this machine's gateway host and password |
| video/gateway.password | no | set with scripts/video-gateway.sh --set-password; lets a remote DAQ backend in |
| video/obs.password | no | set with --set-obs-password; read-only RTSP for OBS |
The DAQ Run Viewer shows these clips above a run's plot, at their time (tools/postprocessing/webviewer, VIDEO_RECORDINGS_HOST_DIR). After a desert trip, copy the media Mac's recordings into that folder on star-rfs (names carry their time, so a second copy changes nothing):
<Recordings> is the folder scripts/media-laptop.sh prints at start-up.
Storage: about 37.5 MB per Mbit/s per 5 minutes per stream. Four 1080p cameras at 4 Mbit/s: ~650 MB of buffer, ~7 GB per hour of recording. The Recording controls panel shows disk left at the current rate.
One Media Source per stream: Edit shows each URL (rtsp://<gateway>:8554/raw/<id>, user obs). For low latency: network buffering 0, hardware decoding on, RTSP over TCP. A VLC source needs its network caching lowered from 1000 ms to about 200.
| Port | What | Open to the LAN |
|---|---|---|
| 8189/udp | WebRTC media to browsers | yes |
| 8554/tcp | RTSP (OBS, user obs) | yes |
| 5600-5609/udp | pushed MPEG-TS (HiDes) | yes |
| 8887/tcp | MediaMTX API (user daq) | only for a remote DAQ backend |
| 8886/tcp | video agent (user daq) | only for a remote DAQ backend |
| 8889/tcp | WHEP (the backend proxies it) | only for a remote DAQ backend |
Not yet checked on hardware: real cameras, the UT-130 end to end through the gateway, OBS, and latency (live-video's hides-latency can measure it). Do a bench check before the first desert trip.