Board detection
Detection lives inados.hal.detect. It tries each source in order and stops at the first match:
/etc/ados/board_override, if present. It holds a board profile’s YAML file name without the extension (for examplerock-5c-lite). Use it as the manual correction when detection picks the wrong board. An unknown value is logged and ignored.- The first token of
/proc/device-tree/compatible, which uniquely identifies a board even when several boards share a model string. /proc/device-tree/model, matched against each profile’smodel_patterns.- The
Hardwareormodelline of/proc/cpuinfo, matched the same way. - The generic profile for the architecture:
generic-arm64, orgeneric-x86_64on x86.
variants, which are resolved by CPU core count.
RAM and core count come from psutil. The result is persisted as a hardware snapshot; print it with:
Default tier
Each board profile declares adefault_tier (1-4) describing compute class. It is reported in status and used to refuse plugins whose compatibility.min_tier the board cannot meet. Which services run is decided by the node profile (drone/ground_station/workstation/compute), not the tier.
The generic profiles are tiered from detected RAM:
See Node profiles for what each profile runs, and Manifest for
compatibility.min_tier.
Board profile schema
Each profile is a YAML file atsrc/ados/hal/boards/<name>.yaml, validated by the BoardProfile Pydantic model in src/ados/hal/detect.py. Keys the model does not define are ignored. The file name (without .yaml) is the board id used by board_override and by extension supported_boards lists.
A short real profile,
cm4.yaml:
src/ados/hal/boards/rock-5c-lite.yaml or rk3576.yaml in the ADOSDroneAgent repository.
HAL modules
Adding a new board
1
Read the board identity
SSH into the board and read the strings detection matches against:
2
Create the YAML file
Create
src/ados/hal/boards/<your-board>.yaml. The file name becomes the board id. At minimum:3
Describe the hardware
Add the sections from the schema that apply:
video, compute, cameras, radios, flight_controller, displays, GPIO and buttons.4
Pick the default tier
Choose the tier from the board’s RAM and accelerator, using the RAM bands above as a guide. The tier only gates extensions that set
compatibility.min_tier.5
Test
Install the agent on the board and check what it detected:The board name and tier should match your YAML file. If detection picked another profile, check
model_patterns, or write the file name to /etc/ados/board_override to confirm the profile loads.6
Submit a pull request
Add the YAML file and open a pull request against
altnautica/ADOSDroneAgent. Include the board model, where to buy it, and any quirks you found while testing.Next steps
Supported hardware
The shipped board profiles.
Systemd services
Which units each profile runs.