Record the verified install results and the /tmp hardware.ini trap

This commit is contained in:
pgdalmeida 2026-09-16 18:38:11 +02:00
parent 9b232c3f60
commit 649d0979cf
Signed by: pedro.almeida
GPG Key ID: D4A6C394DF13F1D7
1 changed files with 34 additions and 10 deletions

View File

@ -215,6 +215,19 @@ Check the result, especially the serial path:
ssh ggs@<tower-ip> 'cat /etc/fire_gimbal_control/hardware.ini' ssh ggs@<tower-ip> 'cat /etc/fire_gimbal_control/hardware.ini'
``` ```
Then prove the program finds it **with nothing in the environment** - no
`FGC_HARDWARE`, no `--hardware` - because that is how the tower starts itself:
```
[INFO ] hardware: /etc/fire_gimbal_control/hardware.ini board lattepanda-iota axes yaw
```
> **Do not leave it anywhere under `/tmp`.** That is tempting during bring-up
> because it needs no root, and it works right up until the first reboot, which
> clears `/tmp` and leaves the program with `Config error: Camera.rgb.id is
> required` - a message that points at the camera rather than at the file that
> disappeared. Verified on tower 121 by rebooting it.
> `[Serial] device` must be a `/dev/serial/by-id/` path, never `/dev/ttyACM0`. > `[Serial] device` must be a `/dev/serial/by-id/` path, never `/dev/ttyACM0`.
> Tower 121 has a 5G modem that claims three `ttyUSB` nodes, and enumeration > Tower 121 has a 5G modem that claims three `ttyUSB` nodes, and enumeration
> order is not stable across reboots. > order is not stable across reboots.
@ -492,6 +505,12 @@ Anything `hardware.ini` now owns - `[Serial] device`, `[IMU]`, `[Env]`, the
camera ids - should be **deleted** from `config.ini` rather than left to rot: camera ids - should be **deleted** from `config.ini` rather than left to rot:
the program warns at startup about every key set in both. the program warns at startup about every key set in both.
> **`[Camera.<name>] id` is required even when the camera is disabled.** Config
> validation runs before any of the feature flags are consulted, so a tower with
> no camera fitted yet cannot start without one - and the obvious dummy,
> `DEV_0000000000`, is what `deploy.sh`'s placeholder guard refuses. On a tower
> that has its camera, the id lives in `hardware.ini` and this never comes up.
`[Features] enable_imu` and `enable_env` matter more than they look. Declaring `[Features] enable_imu` and `enable_env` matter more than they look. Declaring
`imu = none` in `hardware.ini` does **not** yet switch them off - deriving them `imu = none` in `hardware.ini` does **not** yet switch them off - deriving them
is section 12 of the config plan and is not implemented. On tower 121 the first is section 12 of the config plan and is not implemented. On tower 121 the first
@ -656,13 +675,18 @@ gimbal pitch setup # needs an IMU; skip on a rig without one
## 11. Verification checklist ## 11. Verification checklist
| Check | How | | Check | How | Tower 121 |
|---|---| |---|---|---|
| Key-only ssh | `ssh ggs@<tower> hostname`, no prompt | | Key-only ssh | `ssh ggs@<tower> hostname`, no prompt | ✅ |
| Preconditions survive a reboot | reboot, then `install.sh --probe`: `usbfs_memory_mb 1000`, `lpm_permit 0` | | Preconditions survive a reboot | reboot, then `install.sh --probe`: `usbfs_memory_mb 1000`, `lpm_permit 0` | ✅ confirmed across a real reboot |
| Camera enumerates | `/opt/VimbaX/bin/ListCameras` reports the `DEV_` id in `hardware.ini` | | `hardware.ini` found unaided | run with no `FGC_HARDWARE`: startup names `/etc/fire_gimbal_control/hardware.ini` | ✅ |
| Declared hardware matches | startup logs no presence warnings | | Camera enumerates | `ListCameras_VmbC` reports the `DEV_` id in `hardware.ini` | ✅ `DEV_1AB22C0B7D4E` |
| Firmware identity | `gimbal dump` reports the `GIT_REV` you flashed | | Camera profile applies | startup logs `profile 'standard' applied ... (N settings)` | ✅ 17206 settings |
| Homing repeatable | `gimbal home` several times, endstop counts within `home_spread_max_counts` | | Firmware identity | `gimbal dump` reports the `GIT_REV` you flashed | ✅ `build=aab1925-dirty` |
| Images land | `.jxl` files appear under the configured output dir | | Driver answers over SPI | boot banner shows `IOIN Y=0x… version=0x30` | ✅ |
| Survives a disconnect | `scripts/fgc start`, close ssh, reconnect, `scripts/fgc status` | | Remote re-flash | `BOOTSEL`, then `./deploy.sh` - no hands on the board | ✅ |
| Declared hardware matches | startup logs no presence warnings | ✅ no shadowed-key warnings |
| Homing repeatable | `gimbal home` several times, endstop counts within `home_spread_max_counts` | ❌ **not attempted** - unknown drivetrain |
| Images land | `.jxl` files appear under the configured output dir | ❌ needs a capture run |
| Survives a disconnect | `scripts/fgc start`, close ssh, reconnect, `scripts/fgc status` | ❌ not attempted |
| Reports to a broker | topics arrive at the configured broker | ❌ no broker on this tower yet |