docs: document usb mavlink and configurator startup
Host SITL smoke / Deterministic Gazebo command path (push) Canceled after 0s
Host SITL smoke / Deterministic Gazebo command path (push) Canceled after 0s
This commit is contained in:
1 parent
1f74983d61
commit
3ae1a8efb1
8 files changed
+90
-49
No files matched your search
@@ -61,11 +61,12 @@ erase sectors, retaining only the old and replacement records across the commit
|
|||||||
boundary. Neither format is exposed as the public KCFG file.
|
boundary. Neither format is exposed as the public KCFG file.
|
||||||
Motor allocation/mixer topology is immutable compiled vehicle capability data,
|
Motor allocation/mixer topology is immutable compiled vehicle capability data,
|
||||||
never a scalar field or persistence member. F722 recovers operational settings
|
never a scalar field or persistence member. F722 recovers operational settings
|
||||||
before constructing consumers. Its directly wired local UART accepts only
|
before constructing consumers. Its local USB CDC-ACM and directly wired UART
|
||||||
exact-target, CRC-valid Kaptan file requests while physical outputs remain
|
accept only exact-target, CRC-valid Kaptan file requests while physical outputs
|
||||||
inhibited. CRC is integrity-only; a shared or remote GCS still needs production
|
remain inhibited. CRC is integrity-only; a shared or remote GCS still needs
|
||||||
authentication, source binding, and persistent anti-replay state. Disarmed
|
production authentication, source binding, and persistent anti-replay state.
|
||||||
activation and flight-consumer reconstruction remain separate reviewed work.
|
Disarmed activation and flight-consumer reconstruction remain separate reviewed
|
||||||
|
work.
|
||||||
|
|
||||||
The MAVLink dialect root directly includes one-message XML leaves under
|
The MAVLink dialect root directly includes one-message XML leaves under
|
||||||
`publish/` and `transfer/`. The `exchange/` contract remains empty until a
|
`publish/` and `transfer/`. The `exchange/` contract remains empty until a
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# GEPRC GEP-F722-HD V2
|
# GEPRC GEP-F722-HD V2
|
||||||
|
|
||||||
The GEPRC GEP-F722-HD V2 board declaration uses the ICM-42688-P on SPI3 and
|
The GEPRC GEP-F722-HD V2 board declaration uses the ICM-42688-P on SPI3 and
|
||||||
MAVLink telemetry on USART2. It declares no vertical sensor stream. The
|
MAVLink telemetry on USB CDC-ACM and USART2. It declares no vertical sensor stream. The
|
||||||
manufacturer's [GEP-F722-HD V2 manual](https://geprc.com/wp-content/uploads/2025/05/GEP-F722-HD-v2%E9%A3%9E%E6%8E%A7_%E4%BA%A7%E5%93%81%E8%AF%B4%E6%98%8E%E4%B9%A6-.pdf)
|
manufacturer's [GEP-F722-HD V2 manual](https://geprc.com/wp-content/uploads/2025/05/GEP-F722-HD-v2%E9%A3%9E%E6%8E%A7_%E4%BA%A7%E5%93%81%E8%AF%B4%E6%98%8E%E4%B9%A6-.pdf)
|
||||||
labels the external UART2 pads `T2` and `R2`.
|
labels the external UART2 pads `T2` and `R2`.
|
||||||
|
|
||||||
@@ -40,7 +40,20 @@ dfu-util --list
|
|||||||
make firmware/boards/geprc-f722-v2 flash
|
make firmware/boards/geprc-f722-v2 flash
|
||||||
```
|
```
|
||||||
|
|
||||||
## Telemetry wiring
|
## MAVLink over USB
|
||||||
|
|
||||||
|
After flashing, leave ROM DFU mode and reconnect USB. The running application
|
||||||
|
enumerates as `Kaptan / GEPRC TAKER F722 V2 (ICM-42688-P)`, normally
|
||||||
|
`/dev/ttyACM*` on Linux. Run:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make firmware/tools/configurator
|
||||||
|
```
|
||||||
|
|
||||||
|
Open `http://127.0.0.1:4861` and connect `/dev/serial/by-id/<kaptan-device>` or
|
||||||
|
the discovered `/dev/ttyACM*` path from the Connection section.
|
||||||
|
|
||||||
|
## UART fallback
|
||||||
|
|
||||||
Connect a 3.3 V USB-UART adapter with crossed data lines and common ground:
|
Connect a 3.3 V USB-UART adapter with crossed data lines and common ground:
|
||||||
|
|
||||||
@@ -50,12 +63,7 @@ Connect a 3.3 V USB-UART adapter with crossed data lines and common ground:
|
|||||||
| `TX` | `R2` |
|
| `TX` | `R2` |
|
||||||
| `GND` | `GND` |
|
| `GND` | `GND` |
|
||||||
|
|
||||||
Then run:
|
Enter `/dev/serial/by-id/<adapter>` in the same configurator's Connection section.
|
||||||
|
|
||||||
```sh
|
|
||||||
make firmware/tools/configurator -- \
|
|
||||||
--source-system 255 --serial /dev/serial/by-id/<adapter> --baud 115200
|
|
||||||
```
|
|
||||||
|
|
||||||
Open `http://127.0.0.1:4861`, Save the discovered fields, and manually
|
Open `http://127.0.0.1:4861`, Save the discovered fields, and manually
|
||||||
power-cycle the controller after Save completes. The flash journal is outside
|
power-cycle the controller after Save completes. The flash journal is outside
|
||||||
@@ -63,5 +71,5 @@ the application image, so the exact range-limited DFU command above preserves
|
|||||||
it. A mass erase or full-chip erase removes committed settings and restores
|
it. A mass erase or full-chip erase removes committed settings and restores
|
||||||
board factory defaults at the next boot. The image remains telemetry-only and
|
board factory defaults at the next boot. The image remains telemetry-only and
|
||||||
applies startup motor-pin inhibition. The unsigned local configuration path
|
applies startup motor-pin inhibition. The unsigned local configuration path
|
||||||
assumes this direct wiring; disconnect every other transmitter from `R2` while
|
assumes one directly connected client; disconnect every other transmitter from
|
||||||
configuring.
|
`R2` while configuring over UART.
|
||||||
@@ -3,10 +3,10 @@
|
|||||||
Board pages describe supported hardware topology, build products, and safe
|
Board pages describe supported hardware topology, build products, and safe
|
||||||
verification. They do not declare a board flight-ready.
|
verification. They do not declare a board flight-ready.
|
||||||
|
|
||||||
| Board | MCU family | Primary IMU | MAVLink UART |
|
| Board | MCU family | Primary IMU | MAVLink links |
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| [Kakute F7 Mini V3](kakute-f7-mini-v3.md) | STM32F722 | MPU-6000 | USART1 |
|
| [Kakute F7 Mini V3](kakute-f7-mini-v3.md) | STM32F722 | MPU-6000 | USB CDC-ACM, USART1 |
|
||||||
| [GEPRC GEP-F722-HD V2](geprc-f722-v2.md) | STM32F722 | ICM-42688-P | USART2 |
|
| [GEPRC GEP-F722-HD V2](geprc-f722-v2.md) | STM32F722 | ICM-42688-P | USB CDC-ACM, USART2 |
|
||||||
|
|
||||||
All board images share the motor-pin inhibit boundary described in
|
All board images share the motor-pin inhibit boundary described in
|
||||||
[Safety boundary](../safety-boundary.md).
|
[Safety boundary](../safety-boundary.md).
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
# Kakute F7 Mini V3
|
# Kakute F7 Mini V3
|
||||||
|
|
||||||
The Holybro Kakute F7 Mini V3 board declaration uses the MPU-6000 on SPI1,
|
The Holybro Kakute F7 Mini V3 board declaration uses the MPU-6000 on SPI1,
|
||||||
MAVLink telemetry on USART1, and the MTF01 range/optical-flow route on UART4.
|
MAVLink telemetry on USB CDC-ACM and USART1, and the MTF01 range/optical-flow
|
||||||
|
route on UART4.
|
||||||
The checked-in manufacturer datasheet is
|
The checked-in manufacturer datasheet is
|
||||||
`firmware/boards/kakute-f7-mini-v3/datasheet.pdf`.
|
`firmware/boards/kakute-f7-mini-v3/datasheet.pdf`.
|
||||||
|
|
||||||
@@ -45,7 +46,20 @@ dfu-util --list
|
|||||||
make firmware/boards/kakute-f7-mini-v3 flash
|
make firmware/boards/kakute-f7-mini-v3 flash
|
||||||
```
|
```
|
||||||
|
|
||||||
## Telemetry wiring
|
## MAVLink over USB
|
||||||
|
|
||||||
|
After flashing, release `Boot` and reconnect USB so the application starts and
|
||||||
|
enumerates as `Kaptan / Kakute F7 Mini V3`, normally `/dev/ttyACM*` on Linux.
|
||||||
|
Then launch the target-described web UI:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make firmware/tools/configurator
|
||||||
|
```
|
||||||
|
|
||||||
|
Open `http://127.0.0.1:4861` and connect `/dev/serial/by-id/<kaptan-device>` or
|
||||||
|
the discovered `/dev/ttyACM*` path from the Connection section.
|
||||||
|
|
||||||
|
## UART fallback
|
||||||
|
|
||||||
Use a 3.3 V USB-to-UART adapter with crossed data lines and common ground:
|
Use a 3.3 V USB-to-UART adapter with crossed data lines and common ground:
|
||||||
|
|
||||||
@@ -55,12 +69,7 @@ Use a 3.3 V USB-to-UART adapter with crossed data lines and common ground:
|
|||||||
| `TX` | `R1` |
|
| `TX` | `R1` |
|
||||||
| `GND` | `G` |
|
| `GND` | `G` |
|
||||||
|
|
||||||
Launch the target-described web UI:
|
Enter `/dev/serial/by-id/<adapter>` in the same configurator's Connection section.
|
||||||
|
|
||||||
```sh
|
|
||||||
make firmware/tools/configurator -- \
|
|
||||||
--source-system 255 --serial /dev/serial/by-id/<adapter> --baud 115200
|
|
||||||
```
|
|
||||||
|
|
||||||
Open `http://127.0.0.1:4861`, edit the discovered fields, press Save, and
|
Open `http://127.0.0.1:4861`, edit the discovered fields, press Save, and
|
||||||
manually power-cycle the controller after Save completes. The flash journal is
|
manually power-cycle the controller after Save completes. The flash journal is
|
||||||
@@ -68,5 +77,5 @@ outside the application image, so the exact range-limited DFU command above
|
|||||||
preserves it. A mass erase or full-chip erase removes committed settings and
|
preserves it. A mass erase or full-chip erase removes committed settings and
|
||||||
restores board factory defaults at the next boot. The image remains
|
restores board factory defaults at the next boot. The image remains
|
||||||
telemetry-only and does not enable motor control. The unsigned local
|
telemetry-only and does not enable motor control. The unsigned local
|
||||||
configuration path assumes this direct wiring; disconnect every other
|
configuration path assumes one directly connected client; disconnect every
|
||||||
transmitter from `R1` while configuring.
|
other transmitter from `R1` while configuring over UART.
|
||||||
+18
-10
@@ -12,19 +12,25 @@ parameter catalog.
|
|||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| `kaptan-sitl serve --config FILE.cbor` | One validated Quad-X configuration at process construction. | No live file endpoint is attached yet. |
|
| `kaptan-sitl serve --config FILE.cbor` | One validated Quad-X configuration at process construction. | No live file endpoint is attached yet. |
|
||||||
| `kaptan-sitl serve` | The validated factory Quad-X configuration. | No persistent store. |
|
| `kaptan-sitl serve` | The validated factory Quad-X configuration. | No persistent store. |
|
||||||
| STM32F722 image | Board factory settings, or the newest valid flash-journal snapshot. | `/config/user.kcfg` on the directly wired local UART while motor pins remain inhibited. |
|
| STM32F722 image | Board factory settings, or the newest valid flash-journal snapshot. | `/config/user.kcfg` over local USB CDC-ACM or the directly wired UART while motor pins remain inhibited. |
|
||||||
|
|
||||||
## Web configurator
|
## Web configurator
|
||||||
|
|
||||||
Build and flash the board image, connect its MAVLink UART directly to a 3.3 V
|
Build and flash the board image, boot normally, connect the board's USB port,
|
||||||
USB-UART adapter, then run from the repository root:
|
and run from the repository root:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make firmware/tools/configurator -- \
|
make firmware/tools/configurator
|
||||||
--source-system 255 --serial /dev/serial/by-id/<adapter> --baud 115200
|
|
||||||
```
|
```
|
||||||
|
|
||||||
`--source-system` is the configurator's exact MAVLink source identity. Every
|
Open `http://127.0.0.1:4861`, enter the device path in the Connection section,
|
||||||
|
and select **Connect serial**. On Linux the application device normally appears
|
||||||
|
as `/dev/serial/by-id/<kaptan-device>` or `/dev/ttyACM0`. For UART, connect a
|
||||||
|
3.3 V USB-UART adapter to the board-specific RX/TX pads and enter its device
|
||||||
|
path instead.
|
||||||
|
|
||||||
|
The web tool defaults to MAVLink source system `255` and baud `115200`.
|
||||||
|
`--source-system` and `--baud` remain optional command-line overrides. Every
|
||||||
simultaneously connected GCS must use a different nonzero system ID so transfer
|
simultaneously connected GCS must use a different nonzero system ID so transfer
|
||||||
ownership and retries cannot alias another client.
|
ownership and retries cannot alias another client.
|
||||||
|
|
||||||
@@ -71,7 +77,8 @@ cannot safely be edited as scalar configuration:
|
|||||||
|
|
||||||
- output-inhibit and status-LED routes;
|
- output-inhibit and status-LED routes;
|
||||||
- IMU model, bus, interrupt route, mount, and driver setup;
|
- IMU model, bus, interrupt route, mount, and driver setup;
|
||||||
- MAVLink and optional vertical-sensor routes and bootstrap baud rates;
|
- MAVLink UART and optional vertical-sensor routes and bootstrap baud rates;
|
||||||
|
- the fixed F722 USB CDC-ACM transport;
|
||||||
- service-timer frequency; and
|
- service-timer frequency; and
|
||||||
- compiled image role.
|
- compiled image role.
|
||||||
|
|
||||||
@@ -155,9 +162,10 @@ UTF-8 detail. The configurator rejects a successful close with a missing,
|
|||||||
malformed, or failure-bearing prefix. The file layer passes these bytes through
|
malformed, or failure-bearing prefix. The file layer passes these bytes through
|
||||||
without interpreting them.
|
without interpreting them.
|
||||||
|
|
||||||
The directly wired local UART is the initial transport. CRC validates framing
|
Local USB CDC-ACM and the directly wired UART are the F722 transports. CRC
|
||||||
integrity, not peer authenticity. Disconnect other transmitters from the board
|
validates framing integrity, not peer authenticity. Use one directly connected
|
||||||
RX line. A shared or remote GCS still requires signing, source/key binding,
|
client and disconnect other transmitters from the board RX line while using the
|
||||||
|
UART. A shared or remote GCS still requires signing, source/key binding,
|
||||||
persistent anti-replay state, and provisioning before this inbound service can
|
persistent anti-replay state, and provisioning before this inbound service can
|
||||||
be exposed safely.
|
be exposed safely.
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -83,6 +83,6 @@ The log ingress is transport-neutral and unfiltered. The tested
|
|||||||
fanning an event into that sink and proves `kaptan_log::info!` reaches a
|
fanning an event into that sink and proves `kaptan_log::info!` reaches a
|
||||||
generated `LOG` payload.
|
generated `LOG` payload.
|
||||||
`kaptan-sitl serve` does not yet attach a file/diagnostic MAVLink link. F722
|
`kaptan-sitl serve` does not yet attach a file/diagnostic MAVLink link. F722
|
||||||
images accept only the unsigned Kaptan file service on their directly wired
|
images accept the unsigned Kaptan file service on local USB CDC-ACM and their
|
||||||
local UART; that direct-wire assumption does not extend to a shared or remote
|
directly wired UART; that physical-link assumption does not extend to a shared
|
||||||
MAVLink network.
|
or remote MAVLink network.
|
||||||
+22
-7
@@ -17,10 +17,21 @@ requires verified MAVLink 2 signing, configured source/target binding,
|
|||||||
persistent anti-replay state, and a provisioning/key-rotation policy as one
|
persistent anti-replay state, and a provisioning/key-rotation policy as one
|
||||||
reviewed feature.
|
reviewed feature.
|
||||||
|
|
||||||
The local UART is Kaptan's initial operational file transport, not an
|
Each F722 image exposes MAVLink on its board-selected UART and as a USB CDC-ACM
|
||||||
authenticated remote-control channel. Any transmitter electrically connected
|
serial device. Linux normally names the application USB link `/dev/ttyACM*`;
|
||||||
to that RX line can issue file requests, so connect the USB-UART
|
this is distinct from the STM32 ROM DFU device used while the Boot pin is
|
||||||
adapter directly and disconnect other transmitters. The platform retains its
|
asserted. UART and USB have independent receive framers. A host that opens the
|
||||||
|
CDC port and asserts DTR becomes the publication and diagnostic link; UART is
|
||||||
|
used while USB is closed. A file response is always returned on the link that
|
||||||
|
carried its request, so connecting USB cannot redirect a UART transaction.
|
||||||
|
The current descriptor uses the pid.codes shared development identity
|
||||||
|
`1209:0001` plus the STM32 factory device ID as its serial number. Obtain and
|
||||||
|
substitute a project-specific PID before distributing hardware as a product.
|
||||||
|
|
||||||
|
These local links are operational file transports, not authenticated
|
||||||
|
remote-control channels. Any transmitter physically connected to either link
|
||||||
|
can issue file requests, so use a direct USB cable or USB-UART adapter and
|
||||||
|
disconnect other transmitters while configuring. The platform retains its
|
||||||
startup-configured low motor-output state throughout this workflow; no marker
|
startup-configured low motor-output state throughout this workflow; no marker
|
||||||
type is treated as GPIO ownership or command authority. A networked GCS must
|
type is treated as GPIO ownership or command authority. A networked GCS must
|
||||||
add verified signing, source binding, and durable replay protection before it
|
add verified signing, source binding, and durable replay protection before it
|
||||||
@@ -33,9 +44,13 @@ close response does not repeat a flash operation. This serialization does not
|
|||||||
authenticate its peer.
|
authenticate its peer.
|
||||||
|
|
||||||
Telemetry transmission uses bounded frame classes. A critical frame may
|
Telemetry transmission uses bounded frame classes. A critical frame may
|
||||||
replace pending best-effort traffic, but never the DMA-owned active buffer.
|
replace pending best-effort traffic, but never a UART-DMA-owned or active USB
|
||||||
Completion retries preserve ordering and retain a transiently busy frame for a
|
frame. UART completion retries preserve ordering, while USB advances a retained
|
||||||
later service turn.
|
frame across bounded CDC endpoint writes. DTR close, suspend, and
|
||||||
|
deconfiguration pause USB transmission and return publications to UART. Only a
|
||||||
|
bus reset discards USB transmission state. Closing DTR also discards partial
|
||||||
|
input. File-transfer and response-replay state expire under the protocol lease,
|
||||||
|
not on transport disconnect.
|
||||||
|
|
||||||
The local web configurator exposes a bounded live view of CRC-valid inbound
|
The local web configurator exposes a bounded live view of CRC-valid inbound
|
||||||
frames. It groups packets by source and message ID and measures receive
|
frames. It groups packets by source and message ID and measures receive
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ This page collects stable limits and points to the detailed contracts.
|
|||||||
| File transfer | Custom `FILE_CONTROL` (51025) and `FILE_DATA` (51026), one owner-bound stop-and-wait transfer, 246-byte data chunks, CRC-32C. |
|
| File transfer | Custom `FILE_CONTROL` (51025) and `FILE_DATA` (51026), one owner-bound stop-and-wait transfer, 246-byte data chunks, CRC-32C. |
|
||||||
| Diagnostics | `LOG` (51020) for macro-produced level/text; `ERROR` (51021) for a bounded reportable `{ error_id, raised_at[96] }` firmware error. |
|
| Diagnostics | `LOG` (51020) for macro-produced level/text; `ERROR` (51021) for a bounded reportable `{ error_id, raised_at[96] }` firmware error. |
|
||||||
| Publications | Kaptan-native `HEARTBEAT` (51027), `IMU` (51028), `RANGE` (51029), and `OPTICAL_FLOW` (51030); exact integer units and monotonic `u64` microseconds. |
|
| Publications | Kaptan-native `HEARTBEAT` (51027), `IMU` (51028), `RANGE` (51029), and `OPTICAL_FLOW` (51030); exact integer units and monotonic `u64` microseconds. |
|
||||||
| F722 configuration | `/config/user.kcfg`; target-described fields and board factory values over a directly wired unsigned UART with motor outputs physically inhibited. |
|
| F722 configuration | `/config/user.kcfg`; target-described fields and board factory values over local USB CDC-ACM or a directly wired unsigned UART with motor outputs physically inhibited. |
|
||||||
|
|
||||||
Read [Configuration](configuration.md) for configuration ownership, artifact,
|
Read [Configuration](configuration.md) for configuration ownership, artifact,
|
||||||
and file contracts, [Logs](logs.md) for receiver decoding and filtering, and
|
and file contracts, [Logs](logs.md) for receiver decoding and filtering, and
|
||||||
|
|||||||
Reference in new issue
Block a user