From e8293f736dd856658c1234cd33bdc34da90809c1 Mon Sep 17 00:00:00 2001 From: pgdalmeida Date: Thu, 24 Sep 2026 15:06:10 +0200 Subject: [PATCH] Record that tower 111 comes back by itself after a reboot --- docs/deployment.md | 2 +- docs/known-issues.md | 2 +- docs/tower-installation.md | 10 +++++----- hardware/lattepanda-3-delta/NOTES.md | 6 ++++++ 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/docs/deployment.md b/docs/deployment.md index 6fa062f..febfdd0 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -215,7 +215,7 @@ choice, and the installer asks for the arguments. | Tower | Service | Starts with | |---|---|---| -| 111 | enabled 2026-09-24 | `--init --start`: homes and captures at boot. Not yet exercised by a reboot | +| 111 | enabled 2026-09-24 | `--init --start`: homes and captures at boot - `[verified]` by a reboot 2026-09-24 | | 121 | enabled 2026-09-23 | no arguments: starts idle, neither homes nor captures (the development tower) | `[verified]` on tower 121, 2026-09-23: the service came up by itself after a diff --git a/docs/known-issues.md b/docs/known-issues.md index afaeec7..6615439 100644 --- a/docs/known-issues.md +++ b/docs/known-issues.md @@ -31,7 +31,7 @@ doctest unit-test suite (`ctest`). | 14 | Capture sweep on hardware | **Mechanically verified on the rig (2026-08-07).** A full `--init --start` run homed both axes and completed `MOVE → settle → trigger` for 15/15 waypoints with 0 dropped frames, 0 stalls and 0 acquisition failures. `kSettleTolCounts` (600) and the per-interval timing in [CaptureScheduler.cpp](../src/core/CaptureScheduler.cpp) have **not** been tuned against observed `ST` behaviour yet, and the settle tolerance has not been checked against a sharp image (see #16). | | 15 | **Camera profiles unverified on a lit scene** | The `standard`/`night` profiles must be exported from the VimbaX Viewer (see `config/camera_profiles/rgb/README.md`) and have not been measured against real light. Confirm on the rig that `LoadSettings` succeeds, that `standard` sustains 10 fps with `frames_dropped` at 0, and that the auto-exposure lands on a sensible `ExposureTime` outdoors. The only previous rig test ran with the lens covered. | | 16 | **`settle_wait_ms` untuned** | `standard` waits 1 s and `night` 2.5 s after standstill before keeping a frame. Both are reasoned (≫ one frame period; long enough for the auto-exposure to see the new scene) but not measured. Check on a lit scene that the kept frame shows no slew blur and that its exposure has actually converged for that heading, and shorten the wait if it has. | -| 19 | **USB preconditions do not survive a reboot** | `usbcore.usbfs_memory_mb` reverts to 16 (needs 1000) and USB3 LPM re-enables on the camera's port. **Both were wrong on the LattePanda when tested on 2026-08-07**, and frame delivery stalls without them regardless of application code. **Solved on tower 121 by the setup kit** (`hardware/lattepanda-iota/preconditions/`): a systemd-tmpfiles drop-in for usbfs and two udev rules, all installed by `install.sh --preconditions`. Verified 2026-09-23 — `usbfs_memory_mb` reads 1000 after **6 days of uptime**, so it survived the boot, and both rules are in `/etc/udev/rules.d/`; and again across a deliberate reboot the same day, when `install-tower --verify` read `usbfs_memory_mb` 1000 and the camera port's `usb3_lpm_permit` 0 (a check `test hardware camera` now makes too, once `[Test] usb3_lpm_path` is set - the installer sets it). Note it is **tmpfiles, not the kernel cmdline** the original entry proposed. **On the Delta fleet**: tower 111 read 16 and `u1_u2` on 2026-09-23, and the Delta kit (`hardware/lattepanda-3-delta/`, the same two files) was applied the same day - 1000 and `0` afterwards, confirmed by `test hardware camera`. **Not yet confirmed across a reboot on a Delta.** | +| 19 | **USB preconditions do not survive a reboot** | `usbcore.usbfs_memory_mb` reverts to 16 (needs 1000) and USB3 LPM re-enables on the camera's port. **Both were wrong on the LattePanda when tested on 2026-08-07**, and frame delivery stalls without them regardless of application code. **Solved on tower 121 by the setup kit** (`hardware/lattepanda-iota/preconditions/`): a systemd-tmpfiles drop-in for usbfs and two udev rules, all installed by `install.sh --preconditions`. Verified 2026-09-23 — `usbfs_memory_mb` reads 1000 after **6 days of uptime**, so it survived the boot, and both rules are in `/etc/udev/rules.d/`; and again across a deliberate reboot the same day, when `install-tower --verify` read `usbfs_memory_mb` 1000 and the camera port's `usb3_lpm_permit` 0 (a check `test hardware camera` now makes too, once `[Test] usb3_lpm_path` is set - the installer sets it). Note it is **tmpfiles, not the kernel cmdline** the original entry proposed. **On the Delta fleet**: tower 111 read 16 and `u1_u2` on 2026-09-23, and the Delta kit (`hardware/lattepanda-3-delta/`, the same two files) was applied the same day - 1000 and `0` afterwards, confirmed by `test hardware camera`. Confirmed across a reboot on 2026-09-24 (`install-tower --verify`). **Solved on both boards**; open only for Delta towers the kit has not reached. | ## Camera acquisition (USB3) — root cause + approach diff --git a/docs/tower-installation.md b/docs/tower-installation.md index 6ca0bf3..5c17300 100644 --- a/docs/tower-installation.md +++ b/docs/tower-installation.md @@ -193,8 +193,8 @@ first reboot, since surviving one is the entire point. > **The Delta kit carries the same two files** (`hardware/lattepanda-3-delta/`, > as symlinks to these). Tower 111 had neither - `usbfs_memory_mb` 16, camera > LPM `u1_u2`, checked 2026-09-15 and again 2026-09-23 - and got both on -> 2026-09-23, reading 1000 and `0` afterwards. Not yet confirmed across a reboot -> on a Delta. +> 2026-09-23, reading 1000 and `0` afterwards - and still after a reboot on +> 2026-09-24. ## 4. Vimba X SDK `[verified]` @@ -1065,7 +1065,7 @@ freshly flashed board is not failed for values the host had not sent yet. |---|---|---|---| | Key-only ssh | `ssh ggs@ hostname`, no prompt | ✅ | ✅ | | Preconditions applied | `--verify`: `usbfs_memory_mb 1000`, camera LPM `0` | ✅ | ✅ 2026-09-23 (were 16 and `u1_u2`) | -| Preconditions survive a reboot | reboot, then `--verify` | ✅ confirmed across a real reboot | ❓ not rebooted yet | +| Preconditions survive a reboot | reboot, then `--verify` | ✅ confirmed across a real reboot | ✅ 2026-09-24 | | `hardware.ini` found unaided | startup names `/etc/fire_gimbal_control/hardware.ini` | ✅ | ✅ | | Declared hardware matches | startup logs `declared assembly confirmed`; `test hardware axes` | ✅ yaw | ✅ yaw, pitch | | IMU / ambient sensor | `test hardware imu` / `env` | none declared | ✅ MTi streaming, SHT41 CRC-valid on a real I2C bus | @@ -1079,5 +1079,5 @@ freshly flashed board is not failed for values the host had not sent yet. | Endstop survives homing | the axis must stall against the stop, not push through | ✅ at 189 mA, after failing at full torque | not inspected; full current, as for its whole service life | | Degree scale derived | startup logs `counts_per_deg` agreeing with the homed travel | ✅ 3552.87 | ✅ agrees, calibration left alone | | Images land | `.jxl` files appear under the configured output dir | ❌ needs a capture run | ✅ | -| Starts at boot | reboot with nobody logged in; `scripts/fgc status` from a later ssh | ✅ lock under `/run/user/1000` | ❓ service enabled (`--init --start`), not rebooted yet | -| Reports to a broker | topics arrive at the configured broker | ❌ no broker on this tower yet | ❓ not checked | +| Starts at boot | reboot with nobody logged in; `scripts/fgc status` from a later ssh | ✅ lock under `/run/user/1000` | ✅ 2026-09-24: homed and captured by itself within ~35 s. The Delta logs a desktop session in at boot, so lingering was not what put the lock in `/run/user` here | +| Reports to a broker | topics arrive at the configured broker | ❌ no broker on this tower yet | ✅ connects to its own RabbitMQ (retrying until Docker has it up at boot); forwarding to the ground station not checked | diff --git a/hardware/lattepanda-3-delta/NOTES.md b/hardware/lattepanda-3-delta/NOTES.md index c35580e..9702cc9 100644 --- a/hardware/lattepanda-3-delta/NOTES.md +++ b/hardware/lattepanda-3-delta/NOTES.md @@ -35,6 +35,12 @@ both boards. `tools/flash.sh` flashed it through the Leonardo's 1200-baud touch unchanged. The new firmware asked, the host answered, `test hardware` passed every leaf, and it homed to within 0.03 % of the old firmware's travel. +Rebooted 2026-09-24 over ssh: the boot service started it with `--init --start`, +it homed and resumed capturing within ~35 s, and `install-tower --verify` passed +every check, the USB preconditions included. The Leonardo was **not** reset by +that warm reboot - USB power stayed up, its uptime carried on - so the boot-time +config request was not exercised there; the host's re-send on connect covered it. + ## What this kit has NOT done yet In particular: