Checklists
Each checklist is a numbered section of a card or a guide. The steps on this page come from that section, so a change to the card is a change to the checklist. A checklist is current when its last run passed and no later commit changed its card, its parameter files or its scripts. The runs, their values and their notes are private. This page shows only the state of each checklist.
- Hard
- The aircraft does not arm without the checklist's code (
TH_CLR_1toTH_CLR_4,th_prearm.lua). - Soft
- The sessions do not sign off the stage while the checklist is stale or not run.
- Show
- Status only. Nothing stops.
Arming gates
- TH_CLR_1Before power-up…
- TH_CLR_2Bench checks, propellers off…
- TH_CLR_3Failsafe checks…
- TH_CLR_4The night build…
Status unavailable. The status service does not answer, so this page shows the checklists without their state.
Fly the first flights
Before power-up
HardTH_CLR_1- Steps
- 1 to 5
- Signers
- Ryan
- Owner
- th-testpilot
…
Show the 5 steps
- Prepare the microSD card, then load the parameter files. Do these in this order: - Fit a microSD card before you flash the board.
- Run tools/check_params.py. Make sure that it reports 0 findings.
- Fit the flight pack. Measure the CG. Write it in the header of params/airframe.parm.
- If the CG is aft of 270 mm, do not fly. The band is 267 to 270 mm, aim 268 mm: its forward edge is the CG that the stall test flies (Ryan, 2026-10-19; cg.md).
- CAN is off on the LUX for first flights (CAN_P1_DRIVER 0): no bus to terminate, no DroneCAN airspeed, charge, rangefinder or servo node, and no dock charging.
Bench checks, propellers off
HardTH_CLR_2- Steps
- 6 to 31
- Signers
- Ryan
- Owner
- th-testpilot
…
Show the 26 steps
- Switch the transmitter on. An RC source must be on to arm (THR_FAILSAFE 1).
- Calibrate the sticks. Make sure that roll, pitch and yaw read 1500 at centre (RC1_TRIM, RC2_TRIM, RC4_TRIM 1500).
- Move channel 5 through its six positions. Make sure that the GCS shows QSTABILIZE, QHOVER, QLOITER, AUTO, RTL and FBWA.
- Set AHRS_ORIENTATION: no source shows the board's arrow, so the bench sets it.
- Put the aircraft level. Set AHRS_TRIM.
- Calibrate the compass. Do these in this order: - Know the compass.
- With the TFmini-S cover fitted, make sure that the GCS rangefinder reading tracks a hand moved under the lens, about 0.1 to 7 m.
- Do a check of the 4-in-1 telemetry at rest. All four channels must report voltage and temperature on SERIAL5 (USART2, the ESC #1 port's telemetry pin…
- Before the motor test, look at the Lucid's silkscreen. M1 and M3 must be on the starboard end, which is the battery tabs' end.
- Make sure that all four rpm values arrive over bidirectional DShot (outputs 1 to 4) during the test.
- Program the Lucid 4-in-1 in the AM32 configurator, all four channels, and read every value back (th-avionics, 88bddd5): brake on stop ON, because the lift…
- Set FBWA. Move the roll stick to the right. Make sure that the right elevon rises.
- Tilt the aircraft. Make sure that the elevons move against the tilt.
- Do a check of the elevon endpoints and the trim against params/airframe.parm.
- Before the first pusher run, program the pusher ESC, the DYS Aria 70A AM32 (Ryan, 2026-10-04; th-avionics 58a861d), in the AM32 configurator…
- Airspeed plumbing. The first build has flush side static ports in the nose ring (Ryan, 2026-10-06; th-blender W77 e5c82146): a 1.7 mm hole each side at Y…
- Measure the pack voltage with a meter. Make sure that the GCS agrees to within 0.1 V.
- Make sure that the current is plausible at motor-test throttle. - First, at the first power-up with the PM02 and the pack, propellers off and nothing…
- Video on at boot: power up with no GCS action. The goggles must show the picture (RELAY2_DEFAULT 1 on the S3 pad, GPIO 60).
- Cargo door: not on the first build (th-main; the bay is closed by the Payload Cover, the door is a later build), so the gripper is off (SERVO9_FUNCTION 0…
- Strobe: not on the first build. The Survey3W is not fitted, so output 8 is empty (SERVO8_FUNCTION 0, CAM1_TYPE 0, SERVO10_FUNCTION 0; th-avionics 9a6bcec4).
- Wait for a 3D GPS fix. Record the RTK state. Make sure that GPS1_POS matches the Q43's position as fitted.
- Check the LoRa telemetry radios (th-telemetry). The settings are the radios' own, not ArduPilot parameters, so check_params.py cannot see them.
- Measure the compass interference from the motor currents. ArduPlane has no compassmot, so the compensation is fitted from a log (th-avionics 248e150 and…
- First, the supply input spikes: on the thrust stand with a full pack (25.2 V) and the propellers fitted, connect an oscilloscope on single-shot trigger…
- ESC heat, the pusher: the Aria has no temperature telemetry.
Failsafe checks
HardTH_CLR_3- Steps
- 32 to 36
- Signers
- Ryan; th-testpilot reviews 32, 33, 34
- Owner
- th-testpilot
…
Show the 5 steps
- Switch the transmitter off. After 1 s (RC_FS_TIMEOUT), the mode must change to QRTL (Q_OPTIONS bit 5). (review: th-testpilot)
- Make sure that the GCS has sent at least one heartbeat (system id 255, MAV_GCS_SYSID). (review: th-testpilot)
- Set BATT_LOW_VOLT above the pack voltage. Arm. Wait more than 10 s (BATT_LOW_TIMER). (review: th-testpilot)
- If the battery failsafe warns in FBWA, keep the throttle where it is, or select RTL at once.
- Do not test RC loss in fixed-wing flight on this card. That test waits for the combined flight script (far_return and spdweight_band), on a later card.
The first hover
Soft- Steps
- 37 to 44
- Signers
- Ryan; th-testpilot reviews 41, 42, 44
- Owner
- th-testpilot
…
Show the 8 steps
- Fit the propellers. Fold each lift propeller. Make sure that the brake holds it.
- Wind: 5 m/s or less, along and across.
- Do the manual's maiden hop: arm in QSTABILIZE, lift to 1 m, hover for 30 s, land.
- Take off in QLOITER to 5 to 10 m over home. Hover for 60 s. Land.
- Read the hover log. The learned hover throttle (Q_M_HOVER_LEARN 2) must be in the expected range. (review: th-testpilot)
- Make sure that the airspeed reads 2 m/s or less in the hover in calm air (wind less than 1 m/s). (review: th-testpilot)
- Do a check of the position hold with the new position gains (Q_P_NE_POS_P 1.0, Q_P_NE_VEL_P 1.4, Q_P_NE_VEL_I 0.7, th-avionics 42b97fe).
- Take off in QLOITER to 5 to 10 m over home. Switch the transmitter off. (review: th-testpilot)
- Steps
- 45 to 51
- Signers
- Ryan; th-testpilot reviews 50
- Owner
- th-testpilot
…
Show the 7 steps
- Make sure that the assist parameters are Q_ASSIST_SPEED 18, Q_ASSIST_ANGLE 30 and Q_ASSIST_ALT 30. - Make sure that AIRSPEED_MIN is 20 and TECS_LAND_ARSPD…
- Make sure that AIRSPEED_STALL is 20.0 (th-avionics, 0634db5, 2026-10-01: a margin setting until the stall test; it was 19.2).
- Take off in QHOVER. Climb to 50 m or more. Turn into the wind.
- Select FBWA (channel 5, position 6). Set full throttle as you select FBWA.
- If the aircraft sinks or the airspeed does not rise, select QHOVER.
- Fly straight and level for 30 s at the trim speed. Record the airspeed and the up-elevon. (review: th-testpilot)
- Select QHOVER. Land.
The doublets
Soft- Steps
- 52 to 56
- Signers
- Ryan
- Owner
- th-testpilot
…
Show the 5 steps
- Climb to 100 m or more in FBWA. Set the speed to 21 m/s. Fly wings level, into the wind.
- Pitch doublet. Pull the stick a small amount for a quarter of a second.
- Roll doublet. Move the stick a small amount to the right for half a second.
- Do each doublet three times.
- Select QHOVER. Land.
- Steps
- 57 to 63
- Signers
- Ryan; th-testpilot reviews 58, 59, 60
- Owner
- th-testpilot
…
Show the 7 steps
- Download the flight log.
- For each doublet, read the peak elevon deflection from trim, in µs. (review: th-testpilot)
- Compare the ratios with the table. Use the median of the three. (review: th-testpilot)
- Set RLL_RATE_FF to 0.311 multiplied by (0.87 divided by the measured roll ratio). (review: th-testpilot)
- Send the new values and the log to th-avionics. th-avionics writes them into params/terrahawk-common.parm.
- Do not fly a banked survey turn before th-avionics has written the new values. - In the log of the first survey with banked turns, read ARSP.TR (the…
- Check the telemetry radio's cradle after the first flights, and after any long hot day (th-blender, 1d6c32c).
The night build
HardTH_CLR_4- Steps
- 64 to 68
- Signers
- Ryan
- Owner
- th-testpilot
…
Show the 5 steps
- Load params/payload-lights.parm after the airframe file, then reboot the board with CAN on.
- Copy sim/scripts/lights.lua to APM/scripts on the board's card.
- For a night flight set LGT_NIGHT 1. At boot, make sure that both load messages appear: "lights ... loaded" from the flight controller and "lights node…
- Make sure that the GCS shows the lighting battery as BATT3 at 8.2 V or more (about 95 %): with LGT_NIGHT 1 the script sets the night arming floor, LGT_ARM_V…
- Arm. Make sure that the top strobe and the keel strobes flash alternately (two strobe channels: the top dome on one, all the keel LEDs on the other…
Electronics notes
- Steps
- 1 to 8
- Signers
- Ryan, th-avionics
- Owner
- th-avionics
…
Show the 8 steps
- Remove the USB cable. Put a microSD card in the slot. Use FAT32.
- Flash ArduPlane, one time only. In the Betaflight CLI, send bl: the board starts the STM32 DFU bootloader.
- Copy the files to the card, as first-flight card step 1 tells: the eight scripts to APM/scripts, and th-clr-list.txt and message-intervals-chan1.txt to the…
- Read the boot messages on the GCS. All eight load texts must show (first-flight card step 32).
- Read MEMINFO freemem (Mission Planner: the Status tab). This is the board memory that stays after the script memory.
- Add 2 to SCR_DEBUG_OPTS (bit 1, runtime messages). Reboot. Set the GCS to show debug messages.
- Subtract 2 from SCR_DEBUG_OPTS. Set LOG_DISARMED to 0 (no parameter file sets it).
- Send the results to th-avionics: the date, the firmware git_identity, freemem, the highest Mem total, any message from step 4, and the log from step 6.
Fly the stall test
- Steps
- 1 to 10
- Signers
- Ryan
- Owner
- th-testpilot
…
Show the 10 steps
- Complete the first transition flights. The stall test is the next item after them.
- Make sure that the flush side static ports are fitted and teed to the MS4525's static nipple (the first build's nose ring, th-blender W77 e5c82146; Ryan…
- Do a check of the CG. The CG must be in the envelope in cg.md.
- Set a transmitter switch position to QHOVER. QHOVER is the recovery in this card.
- Practise the entry and the recovery in SITL. Fly the level deceleration in FBWA, then QHOVER at the break (sim/battery, flights XT1-decel).
- Measure the lift motor start time on the thrust stand. Step one lift motor from braked stop to hover throttle.
- Find the break floor for the start time in the table below. Use it in procedure step 9.
- If the start time is more than 1.1 s, do not fly the test.
- If the start time is more than 1.0 s, send it to th-avionics and th-eda.
- Load sim/scripts/stall_cue.lua (th-avionics, 0546151) for the test flight only.
- Steps
- 1 to 18
- Signers
- Ryan; th-testpilot reviews 13, 14
- Owner
- th-testpilot
…
Show the 18 steps
- Take off in QHOVER. Transition to CRUISE and climb to 120 m.
- Make sure that the GCS shows 0 rpm for the four lift motors.
- If a lift motor turns in the cruise, stop the test and land.
- Fly into the wind. Set FBWA.
- Set the wings level. Let the speed become stable at the cruise speed.
- Reduce the throttle in small steps. Hold the height with the elevon.
- At 3 m/s EAS above the expected break, close the throttle: on Fuselage C that is about 16.8 m/s indicated (19.8 m/s EAS, wings level).
- Monitor the airspeed, the height, the attitude and the elevon cue.
- If the height decreases below the break floor before the break, select QHOVER and stop the point.
- At the break, select QHOVER at once. The break is a nose drop, a wing drop or a fast sink.
- Hold QHOVER until the aircraft is stable in a hover.
- Record the airspeed, the throttle and the height lost at the break.
- Read the log of the break before the next point. Find the first 1 s after the elevons return to neutral. (review: th-testpilot)
- Read the wings-level break before the banked points. If a wing dropped more than 20 degrees, or the recovery took more than 2 s, land and stop the test. (review: th-testpilot)
- Climb to 120 m in QHOVER. Transition to CRUISE.
- Do steps 2 to 15 again with 20 degrees of bank. Keep the stall limiter on.
- Do steps 2 to 15 again with 30 degrees of bank. For this point set ROLL_LIMIT_DEG to 30 and do not save it.
- Land in QHOVER.
- Steps
- 1 to 11
- Signers
- Ryan; th-testpilot reviews 2, 11
- Owner
- th-testpilot
…
Show the 11 steps
- Set LCK_ENABLE back to 1 at once after landing, before any other flight.
- Read the stall airspeed from the log. Use the airspeed 1 s before the break. (review: th-testpilot)
- Record the measured CG, the flight mass from the scale, the configuration (no Survey3), the throttle, the bank and the elevon position at the break.
- For a banked point, refer the speed to wings level. Multiply it by the square root of (1 divided by the load factor at the break).
- If the throttle was not closed at the break, refer the speed to power off.
- Refer the stall speed to a CG of 265 mm, forward of anything flown.
- Refer the result to the heaviest flight mass. Multiply it by the square root of (heaviest mass divided by the test mass).
- Set AIRSPEED_STALL to the referred wings-level stall multiplied by 1.08.
- Load params/terrahawk-common.parm again: it sets Q_ASSIST_SPEED back to 18.
- Unload sim/scripts/stall_cue.lua.
- Send the log and the three stall airspeeds to th-testpilot and th-aeronautics. (review: th-testpilot)
Make the keel antennas
- Steps
- 1 to 8
- Signers
- Ryan
- Owner
- th-telemetry
…
Show the 8 steps
- Calibrate the NanoVNA-F V3 at its own SMA port, with its calibration standards.
- Install the MMCX to SMA adapter (row 16f). A short adapter moves the phase, not the frequency of the lowest S11.
- Connect the adapter to the MMCX jack under the keel root exit.
- Tune the ELRS dipole. Cut the same length from the tip of each arm, with the 1 mm marks of the gauge.
- Make sure that the S11 of the dipole is -10 dB or lower across 2400 to 2480 MHz.
- Tune the LoRa coil. Unwind one tick (a quarter turn) at the anchor end of each arm, the same on both arms.
- Make sure that the S11 of the coil is -10 dB or lower across 915 to 928 MHz.
- Record the results for each element in the table below.
Print on a Core One+
- Steps
- 1 to 5
- Signers
- Ryan
- Owner
- th-main
- Valid for
- 30 days
- Prusa Core One+…
- Prusa Core One+ (Gen 2), second unit…
- Anycubic Kobra Max…
- Original Prusa i3 MK2…
Show the 5 steps
- Print the first-layer test. Pass: all nine squares are 0.40 mm ± 0.05 mm thick.
- Run the extruder test. Pass: 20 mm ± 2 mm remains to the mark on the Core One+, 20 mm ± 1 mm on the Kobra Max and the i3 MK2.
- Print the skew gauge. Pass: the diagonals AC and BD are within 0.25 mm of each other, and the sides AB and AD are 100.00 mm ± 0.10 mm.
- Print the Z tower. Pass: the ledges are within 0.2 mm of 50, 100 and 150 mm, and the top is within 0.2 mm of 200 mm.
- Record each value with the printer's name and the date.
Definitions at commit 6833ce65c0c8 (number 4229 on main), fromchecklists/checklists.yaml.
Comments
Comment on the whole page here, or on one section or step with the button beside it.