ArduPilot settings — progress (UL8 / Pixhawk 6X Mini)

Living checklist: what’s already on the FC, what we still need to set
QGroundControl showed 1085 parameters. I searched for SERIAL2 and thought: this isn’t a setup wizard — it’s a spreadsheet with wings. Frame, CAN, and GPS are already in. ELRS isn’t. Someone has to keep that list honest — that’s us.
This is the central progress post for ArduPilot parameters on our Pixhawk 6X Mini. Per-sensor detail stays in the part posts. Here: what the FC already knows versus what the build still lacks.
How ArduPilot configs work (and why that’s our problem)
ArduPilot on the Pixhawk is not “an app with menus only”. The core is a big list of settings — parameters. Each setting has a name and a value. Example: SERIAL2_PROTOCOL = 23 means TELEM2 speaks CRSF (ELRS).
Without understanding that list, things “half work” — GPS sats, but no sticks. Or sticks, but battery failsafe still on 3S defaults. That’s exactly where we are now.
How we use that:
- Fetch — QGroundControl (MacBook) connects to the FC (USB or radio). It then reads every parameter from the board.
- Browse / search — Vehicle Setup → Parameters. Search by name (
BATT_,GPS1_,SERIAL2_, …). - Change — edit the value → Save. Sometimes you must reboot (new baud, protocol, CAN).
- Save — Parameters → Tools → Save to file →
.paramfile. That’s our backup indocs/firmware/param-backups/. - Restore — Tools → Load from file → Save. Useful after a flash or when something goes wrong.
Short version: one big config list on the FC. We fetch it, set what we need, and keep a dump. This documentation is the checklist on top of that list — not all 1085 lines.
Wiki: Parameters · tool: QGroundControl on the MacBook (ArduPilot wiki often shows Mission Planner screens — same params).
Latest backup: 2026-09-11, ArduCopter 4.7.1, 1085 params (docs/firmware/param-backups/pixhawk6x-mini-latest.param). Status legend: done · review · todo · later.
Where we are — in plain language
Good news: the quad-X / DShot baseline is in. CAN1 + F9P + M9N + H-Flow are in the dump. The digital power module is recognized.
Less good: TELEM2 still speaks MAVLink2 instead of CRSF. Battery capacity is still a 3300 mAh-ish default while we fly Tattu 1480 mAh 6S. LD-06 and O4 OSD are waiting.
Next action: set ELRS on TELEM2 and calibrate the radio (props off). Then 6S capacity/failsafes and LD-06. See ELRS setup and step 7 — config.
Overview
| Block | Status |
|---|---|
| Frame / motors (quad X, DShot) | done |
| Battery monitor (PM02D type) | done (capacity/failsafes todo) |
| CAN1 + DroneCAN driver | done |
| GPS1 F9P (DroneCAN) + GPS2 M9N | done |
| H-Flow (flow + ToF) | done (offsets/max range review) |
| ExpressLRS / CRSF (TELEM2) | todo |
| LD-06 proximity (TELEM1) | todo |
| Flight modes / radio calibration | todo |
| Battery 6S (1480 mAh) failsafes | todo |
| O4 MSP DisplayPort OSD | later |
| MAVLink-over-ELRS + QGC (backpack) | later (checklist) |
| Object avoidance fine-tune | later |
Frame & motors — done
The quad-X / DShot baseline is in place. ESC is the Pacer 60A. We still verify motor order on the bench with props off — that stays exciting until you see it spin. Nothing surprising in the dump. This block is ready for first flight.
| Parameter | Backup | Goal / note |
|---|---|---|
FRAME_CLASS |
1 | Copter / multicopter |
FRAME_TYPE |
1 | Quad X |
MOT_PWM_TYPE |
6 | DShot |
BRD_IO_DSHOT |
1 | DShot via I/O |
SERVO1…4_FUNCTION |
33–36 | Motors 1–4 |
Battery (PM02D) — partial
The digital power module is recognized (BATT_MONITOR=21). The dump still carries a 3S/3300-ish default. We fly Tattu R-Line V6 1480 mAh 6S through the PM02D. Capacity, low/critical/arm voltages, and failsafe actions still need setting — otherwise the FC thinks we have a different pack. Current calibration later against a wattmeter.
| Parameter | Backup | Goal | Status |
|---|---|---|---|
BATT_MONITOR |
21 | Digital power module | done |
BATT_I2C_BUS |
1 | PM02D bus | done |
BATT_CAPACITY |
3300 | → 1480 | todo |
BATT_LOW_VOLT |
10.5 | → ~21.0 (6S low, tune) | todo |
BATT_CRT_VOLT |
0 | → ~19.8–20.4 (6S critical) | todo |
BATT_ARM_VOLT |
0 | → ~22.0 (arming minimum) | todo |
BATT_FS_LOW_ACT / CRT_ACT |
0 | Set failsafe actions | todo |
CAN / DroneCAN — done
CAN1 runs as a DroneCAN driver at 1 Mbit. That’s the Holybro stack we need for F9P and H-Flow. Hub + power: CAN Hub (XT30 Power-In). No further changes needed for first flights unless we add nodes.
| Parameter | Backup | Note |
|---|---|---|
CAN_P1_DRIVER |
1 | First driver on CAN1 |
CAN_P1_BITRATE |
1000000 | Holybro stack 1 Mbit |
CAN_D1_PROTOCOL |
1 | DroneCAN |
CAN_D1_UC_NODE |
10 | FC node ID |
GPS — done
Primary is the F9P Helical via DroneCAN. Secondary is the Micro M9N on GPS2. Physically the GPS1 connector stays empty — F9P hangs on CAN. See ports. Still to do once mounting is final: compass calibration in the frame and GPS*_POS_* offsets. Offsets “later” always feel harmless until Loiter gets weird.
| Parameter | Backup | Meaning |
|---|---|---|
GPS1_TYPE |
9 | DroneCAN → F9P Helical |
GPS1_CAN_NODEID |
125 | F9P node |
GPS2_TYPE |
1 | uBlox → Micro M9N on GPS2 |
GPS_AUTO_SWITCH |
1 | Auto switch |
GPS_PRIMARY |
0 | GPS1 primary |
H-Flow (optical flow + ToF) — done / review
Flow + rangefinder are on via DroneCAN. EKF sources combine outdoor GPS + flow + ToF. Setup: H-Flow. POSXY=0 (flow-only) is not our default outdoor mode. Still open: review max range / node address and set FLOW_POS_* after mounting — we only know that once it’s bolted down.
| Parameter | Backup | Goal / note | Status |
|---|---|---|---|
FLOW_TYPE |
6 | DroneCAN H-Flow | done |
RNGFND1_TYPE |
24 | DroneCAN rangefinder | done |
RNGFND1_ORIENT |
25 | Downward | done |
RNGFND1_MAX |
7 | Holybro cites ~30 m → maybe raise | review |
RNGFND1_ADDR |
0 | Check node address vs DNA | review |
FLOW_POS_* |
0 | Offsets vs CG after mounting | todo |
EK3_SRC1_POSXY |
3 | GPS (outdoor / our default) | done |
EK3_SRC1_VELXY |
5 | Optical flow | done |
EK3_SRC1_POSZ |
2 | Rangefinder height | done |
EK3_FLOW_USE |
1 | Flow fusion on | done |
ExpressLRS / CRSF — todo
TELEM2 (SERIAL2) is still MAVLink2. We want CRSF to the XR4 + TX16S. Without this block, no sticks the FC understands. Full procedure: ELRS setup. Then radio calibrate and failsafe test — props off.
| Parameter | Backup now | Goal |
|---|---|---|
SERIAL2_PROTOCOL |
2 (MAVLink2) | 23 (RCIN / CRSF) |
SERIAL2_BAUD |
57 | often irrelevant with CRSF; ELRS 420k via options |
RSSI_TYPE |
0 | 3 (ReceiverProtocol) |
RC_OPTIONS |
32 | bits for ELRS 420kBaud (bit 13), Yaapu (bit 8), suppress rate (bit 9) — see ELRS post |
FLTMODE_CH |
5 | often 12 with ELRS hybrid |
LD-06 proximity — todo
TELEM1 stays reserved for the LD-06. In the backup SERIAL1 is still MAVLink2. We set protocol 11 + PRX1_TYPE 16 once the LiDAR is mounted. Object avoidance: backup already has AVOID_ENABLE=3 — review before first flights (don’t leave it on blind). Fine-tune = later.
| Parameter | Backup now | Goal |
|---|---|---|
SERIAL1_PROTOCOL |
2 | 11 (Lidar360) |
SERIAL1_BAUD |
57 | 230 (230400) |
BRD_SER1_RTSCTS |
2 | 0 (flow control off) |
PRX1_TYPE |
0 | 16 (LD06) |
PRX1_ORIENT |
— | 0 (top) or 1 (bottom) |
| Ignore sectors | — | after mounting (PRX1_IGN_ANG* / WID*) |
Flight modes & arming — todo
All FLTMODE slots are still Stabilize (0). Mode assignment, radio and compass/accel calibration, and throttle failsafe after ELRS bind belong in step 7 — config & first flights. Without modes it’s “one switch, one feel” — not how we want to start safely.
| Parameter | Backup | Action |
|---|---|---|
FLTMODE1…6 |
all 0 (Stabilize) | Assign modes (Stabilize / AltHold / Loiter / …) |
FLTMODE_CH |
5 | Match TX (often CH12) |
| Radio calibration | — | QGroundControl → Vehicle Setup → Radio |
| Compass / Accel | — | Setup → Calibrate |
FS_THR_* |
partly default | Test failsafe after ELRS bind |
O4 OSD (MSP DisplayPort) — later
No UART reserved yet (OSD_TYPE=0). Once video is stable we follow the native path in fpv.wtf & native OSD and O4 install. O4 S.Bus stays open. RC = ELRS. OSD is nice-to-have; sticks first.
| Parameter | Goal |
|---|---|
SERIALn_PROTOCOL |
42 |
SERIALn_BAUD |
115 |
OSD_TYPE / OSD_TYPE2 |
5 |
MSP_OPTIONS |
often 4 (BF font, Goggles 3) |
Serial map (current vs plan)
Handy reference beside ports & wiring: what the backup says now versus what we want.
| Port | Now (backup) | Plan |
|---|---|---|
| SERIAL0 USB | MAVLink2 | GCS |
| SERIAL1 TELEM1 | MAVLink2 | LD-06 (11) |
| SERIAL2 TELEM2 | MAVLink2 | ELRS CRSF (23) |
| SERIAL3 GPS1 | GPS | empty / unused (F9P=CAN) |
| SERIAL4 GPS2 | GPS | Micro M9N |
| Other | disabled / default | optional O4 DisplayPort |
How we keep progress
- After any serious param change: new backup in
docs/firmware/param-backups/+ copy topixhawk6x-mini-latest.param. - Update this post (NL + EN): status column + tables.
- Detail stays in part posts. This page is the checklist only.
- Cursor workflow: Cursor + ArduPilot.
Read next
- Cursor + ArduPilot — look up, document, use as input
- Firmware & tools
- ELRS setup
- Ports & wiring
- Project intro / ArduPilot features
- Step 7 — config
Choice log
| What | Progress documentation for all ArduPilot settings we’ve set or still need to set |
| Why | One place to see what’s already in the FC dump versus what the build still lacks |
| Our pick | Status from the 2026-09-11 backup (Copter 4.7.1). Updates via new dumps + this post. |
Photos
