# BLADE-SWARM Node Assembly Guide

**Platform**: AUTHREX-SWARM single-node build (one of N=10 physical testbed)
**Companion documents**: ICD-SWARM-001 v1.0, WP-2026-08, AUTHREX_SWARM.tla
**Author**: Burak Oktenli, AUTHREX Systems, Washington, DC (ORCID 0009-0001-8573-1667)
**Version**: 1.0
**License**: CC BY 4.0
**Distribution Statement A**: Approved for public release; distribution is unlimited.
**Maturity**: TRL 2 (physical testbed, design only). Fundamental research; COTS components; no munitions-list items. The platform governs decision authority and audit, not weapons.

---

## Tools

- 3D printer (PETG, PLA, and ABS capable), enclosure recommended for ABS
- Soldering station with fine tip and 60/40 or lead-free solder
- Wire strippers, flush cutters, and crimping tool
- M2, M2.5, and M3 hex key set
- Small Phillips screwdriver set
- Digital multimeter with continuity and DC voltage modes
- Heat gun for shrink tubing
- Tweezers and fine pliers
- Deburring tool or hobby knife
- Zip ties, adhesive cable clips, double-sided foam tape
- Blue (medium-strength) threadlocker
- Isopropyl alcohol and lint-free wipes
- LiPo-safe charging bag and a Class-D rated extinguisher within reach

## Assumptions

- Basic soldering and electronics-assembly experience
- Familiarity with PX4 or ArduPilot firmware stacks
- A workstation with QGroundControl or Mission Planner installed
- MicroSD cards prepared for the Raspberry Pi 5 (Ubuntu 24.04 Server) and Pixhawk 6X
- All custom mount STL files on hand and sliced
- The per-node bill of materials staged and inventoried before starting

---

## 1. Fabrication

### 1.1 Print structural mounts in PETG for heat resistance

**Print the load-bearing and motor-region mounts in PETG.**
1. Slice the four Holybro 2216 motor mounts, the four BLHeli_S ESC mounts, the GPS module mast, and the Raspberry Pi 5 active-cooler mount at 0.2 mm layer height, 30 percent infill, and 4 perimeters.
2. Print in PETG at the filament vendor's recommended nozzle and bed temperatures; PETG is chosen for its higher glass-transition temperature near the motors and ESCs.
3. Use supports only where overhangs exceed 50 degrees; the motor mounts and mast are the main support candidates.
4. Confirm first-layer adhesion on each part before leaving the printer unattended.
   > Tip: Run a single motor mount as a test print first and verify the M3 bolt-pattern holes match the motor base before committing to all four.

### 1.2 Print auxiliary housings and trays in PLA/ABS

**Print the remaining mounts; use ABS for the Pixhawk tray.**
1. Print the LoRa antenna mount, Wi-Fi 6 adapter mount, ATECC608B carrier mount, camera mount, status-LED-ring mount, and Raspberry Pi 5 mount in PLA at 0.2 mm layer height and 20 to 25 percent infill.
2. Print the Pixhawk 6X tray in ABS at 0.2 mm layer height and 30 percent infill for dimensional stability under vibration and warmth; use an enclosure to prevent layer splitting.
3. Print the M2.5 standoff carrier plate (for the level shifter) in PLA at 25 percent infill if a printed carrier is used in place of the standoff kit's hardware.
4. Let ABS parts cool fully on the bed before removal to limit warping.
   > Tip: Keep the ABS Pixhawk tray away from drafts during printing. A warped flight-controller tray transmits vibration into the IMU and degrades attitude estimation.

### 1.3 Clean printed parts and verify fit for Pixhawk and Pi 5

**Deburr, clean, and test-fit the electronics into their mounts.**
1. Remove all support material from every printed part with a deburring tool or hobby knife.
2. Lightly sand mating surfaces and clean each part with isopropyl alcohol to remove dust and release residue.
3. Test-fit the Pixhawk 6X into its ABS tray and the Raspberry Pi 5 with active cooler into its mount; the fit should be snug without forcing.
4. Test-fit the GPS module on the mast, the LoRa and Wi-Fi modules in their mounts, the ATECC608B on its carrier, and the LED ring in its mount.
   > Tip: If a fit is too tight, sand rather than force. Cracking a mount during assembly is harder to recover from than a 2 minute sanding pass.

### 1.4 Deburr X500 V2 carbon-fiber edges and test plate alignment

**Prepare the frame kit and dry-fit the plates and arms.**
1. Inspect all carbon-fiber edges on the Holybro X500 V2 plates and arms; lightly deburr any sharp edges that could chafe wiring. Wear a dust mask and work over a damp wipe to capture carbon dust.
2. Dry-fit the top and bottom center plates to the four arms in the X configuration without threadlocker to confirm hole alignment.
3. Verify the arm-to-plate hardware seats fully and the assembly sits flat on a level surface.
4. Disassemble after the dry fit; final assembly happens in Phase 4.
   > Tip: Carbon-fiber dust is a skin and lung irritant. Capture it with a damp wipe and clean the work area before handling electronics.

---

## 2. Wiring

### 2.1 Solder ESC power leads and buck converter to PDB

**Connect the battery input, four ESC power feeds, and the dedicated LED buck to the PDB.**
1. Tin the XT60 pigtail leads and solder the positive to the PDB Battery-input + pad and the negative to the - pad. This rail carries up to 60 A at 14.8 V; use the heavy-gauge wire supplied with the kit.
2. Tin and solder each of the four BLHeli_S ESC power-lead pairs to their PDB output pads at the correct polarity. Each ESC feed is rated 20 A at 14.8 V.
3. Solder the dedicated 5 V buck converter input to a spare 14.8 V output pad on the PDB; this isolates the status LED ring from the flight-electronics 5 V rail.
4. Inspect every joint for cold solder and bridges before powering anything.
   > Tip: Double-check polarity on all four ESC feeds and the buck input before first power-up. Reversed polarity destroys ESCs and the buck instantly.

### 2.2 Connect 3-phase motor wires to ESC outputs

**Solder each motor's three phase wires to its ESC.**
1. Strip and tin the three phase wires on each Holybro 2216 motor.
2. Tin the three motor pads on each BLHeli_S ESC.
3. Solder the front-left motor to the front-left ESC, then repeat for front-right, rear-left, and rear-right.
4. Slip heat-shrink over each joint and shrink it for insulation and strain relief.
   > Tip: Phase-wire order does not matter at this stage; spin direction is set later in firmware. Prioritize clean, high-current joints.

### 2.3 Assemble Governance Bus level shifter circuit

**Wire the TXB0108 bidirectional level shifter between the Pixhawk 6X and the Raspberry Pi 5 UART.**
1. Mount the TXB0108 on its M2.5 nylon standoffs on the Pixhawk tray so it sits between the flight controller and the companion computer.
2. Connect VCCA on the shifter to the Pixhawk 3.3 V rail and VCCB to the Raspberry Pi 5 GPIO 5 V rail; tie both grounds to a common ground. The A side runs at 3.3 V (Pixhawk Telemetry 2 UART), the B side at 5 V (Pi 5 UART).
3. Wire Pixhawk Telemetry 2 UART TX to shifter A1 and Telemetry 2 UART RX to shifter A2.
4. Wire shifter B1 to the Pi 5 UART RX (GPIO 15) and shifter B2 to the Pi 5 UART TX (GPIO 14), observing the TX-to-RX crossover.
5. Recheck VCCA and VCCB are on the correct sides before power; the A and B domains are not interchangeable.
   > Tip: This UART is the governance bus that carries the AUTHREX decision and audit traffic between the flight controller and the companion computer. A level mismatch here is the most common cause of a silent link, so verify VCCA at 3.3 V and VCCB at 5 V with a meter before trusting the link.

### 2.4 Wire ATECC608B and LoRa module to Pi 5 GPIO/SPI

**Connect the secure element on I2C and the LoRa radio on SPI.**
1. Connect the ATECC608B SDA and SCL to the Raspberry Pi 5 I2C pins (SDA on GPIO 2, SCL on GPIO 3) and provide 3.3 V and ground to the carrier.
2. Connect the LoRa SX1276 to the Pi 5 SPI bus: MOSI, MISO, SCLK, and chip-select on GPIO 25, plus 3.3 V and ground. Add the DIO and reset lines per the module's pinout.
3. Route the 915 MHz whip antenna lead to the LoRa antenna mount, keeping it clear of the carbon plates and other electronics.
4. Confirm the secure element and radio share a clean common ground with the Pi 5.
   > Tip: The ATECC608B holds this node's ECDSA P-256 keypair; the key is generated on-chip and never leaves it. Handle the carrier with care and avoid static discharge during wiring.

### 2.5 Terminate Status LED ring power from buck converter

**Power the addressable LED ring from the dedicated buck, with data from the Pixhawk.**
1. Connect the buck converter OUT+ (5 V) and OUT- (ground) to the status LED ring power input. Do not feed the ring from the shared 5 V BEC.
2. Connect the LED ring data-in line to the designated Pixhawk GPIO output, with a common ground back to the flight controller.
3. Secure the buck converter to the PDB with high-bond adhesive foam.
4. Verify the ring's ground is common with the Pixhawk signal ground so the data line has a clean reference.
   > Tip: A separate LED rail prevents the ring's inrush current from browning out the flight controller. The ring doubles as the per-node authority-tier indicator, so a clean supply matters for readability in the field.

### 2.6 Conduct continuity check and verify 5V/14.8V rails

**Verify every rail and bus before first power-up.**
1. With the battery disconnected, use the multimeter in continuity mode to confirm there are no shorts between 14.8 V and ground on the PDB, and none between 5 V and ground on either BEC or the buck output.
2. Confirm continuity of each ESC power feed and each motor phase set.
3. Verify the level shifter VCCA and VCCB connect to the correct rails and that A-side and B-side UART lines map as wired in step 2.3.
4. Only after all checks pass, connect the battery briefly and measure 14.8 V at the PDB, 5 V at each BEC, and 5 V at the buck output. Disconnect before proceeding.
   > Tip: Power down and recheck immediately if any rail reads outside tolerance. Never start firmware bring-up on a board with a suspect rail.

---

## 3. Bring-up

### 3.1 Flash PX4 firmware and calibrate Pixhawk IMU/Compass

**Flash the autopilot and run the sensor calibrations.**
1. Connect the Pixhawk 6X to the workstation over USB-C and flash PX4 with QGroundControl.
2. Select the X500 V2 quadrotor airframe in the airframe setup.
3. Run the accelerometer, gyroscope, and compass calibrations following the on-screen orientation prompts.
4. Confirm the triple-redundant IMUs report healthy and the magnetometer in the GPS module is detected.
   > Tip: Calibrate the compass away from metal benches, motors, and large electronics. A poor compass calibration is a leading cause of position-hold drift.

### 3.2 Configure Pi 5 I2C/SPI and verify Secure Element detection

**Bring up the companion computer and confirm the secure element and radio buses.**
1. Boot the Raspberry Pi 5 from the prepared microSD, confirm SSH access and network connectivity.
2. Enable I2C and SPI in the OS configuration.
3. Run an I2C scan and confirm the ATECC608B answers at its expected address.
4. Confirm the SPI device for the LoRa module enumerates on the chip-select assigned in step 2.4.
   > Tip: If the ATECC608B does not appear on the I2C scan, recheck the SDA and SCL wiring and the 3.3 V supply before assuming a faulty chip; the most common cause is a swapped SDA/SCL pair.

### 3.3 Test LoRa and Wi-Fi 6 mesh connectivity

**Verify both communication planes.**
1. With a second node or a bench LoRa peer, confirm the SX1276 sends and receives on the 915 MHz control plane.
2. Bring up the Wi-Fi 6 adapter and confirm it joins the telemetry-plane mesh.
3. Measure round-trip latency on both planes at the bench distance and record the baseline.
4. Confirm the antennas are oriented as installed and not detuned by nearby carbon or metal.
   > Tip: The LoRa link is the low-rate control plane that carries consensus votes and tier directives; the Wi-Fi 6 link is the higher-rate telemetry plane. Keep the two antennas physically separated to limit interference.

### 3.4 Verify MAVLink communication across TXB0108 shifter

**Confirm the governance bus carries MAVLink cleanly through the level shifter.**
1. Start the MAVLink endpoint on the Pi 5 against the UART that connects through the shifter.
2. Confirm a steady heartbeat from the Pixhawk and that telemetry values update.
3. Send a test parameter read and confirm a correct response, validating bidirectional traffic through the A and B domains.
4. Watch for dropped or garbled frames, which indicate a level or baud mismatch.
   > Tip: If the heartbeat is intermittent, verify the A-side baud matches the Pixhawk Telemetry 2 setting and that VCCA and VCCB are correct. A shifter wired backwards will pass some frames and corrupt others, which looks like noise rather than a hard failure.

### 3.5 Perform motor direction test and ESC calibration

**Calibrate the ESCs and confirm spin directions with no propellers installed.**
1. With propellers removed, run the ESC calibration procedure from the autopilot.
2. Command a low-throttle test and confirm each motor spins in the direction required for the X configuration (front-left and rear-right one way, front-right and rear-left the other).
3. If any motor spins the wrong way, swap any two of its three phase wires.
4. Confirm motor numbering maps to the correct arm positions in the firmware.
   > Tip: Never run this step with propellers attached. Confirm spin direction by airflow or a small paper tab, not by touch.

---

## 4. Assembly

### 4.1 Mount PDB and ESCs to X500 V2 frame arms

**Assemble the frame and mount the power components.**
1. Assemble the X500 V2 plates and arms in the X configuration using the kit hardware and apply blue threadlocker to the structural screws.
2. Secure the PDB to the bottom center plate on M3 standoffs.
3. Mount each ESC to its printed mount and zip-tie it to the corresponding arm, keeping leads clear of the propeller arc.
4. Route the ESC power feeds back to the PDB with service loops.
   > Tip: Tidy ESC lead routing now prevents propeller strikes later. Leave a small service loop at each ESC so a future swap does not require resoldering.

### 4.2 Install Pixhawk tray with vibration dampers

**Mount the flight controller on its isolated tray.**
1. Fit the vibration dampers between the ABS Pixhawk tray and the top center plate.
2. Secure the Pixhawk 6X to the tray with the arrow pointing forward and the board centered over the frame's center of gravity.
3. Confirm the tray floats on the dampers and does not contact the plate directly.
4. Verify the TXB0108 level shifter on its M2.5 standoffs remains accessible on the tray.
   > Tip: The damper isolation is what keeps motor vibration out of the IMUs. If the tray bottoms out against the plate, the isolation is defeated and attitude estimates will be noisy.

### 4.3 Secure Pi 5 and Active Cooler to top plate

**Mount the companion computer.**
1. Fit the Raspberry Pi 5 into its mount with the active cooler attached.
2. Secure the assembly to the top plate, positioned to keep the governance-bus UART run to the shifter short.
3. Confirm the active cooler fan has clearance and unobstructed airflow.
4. Verify the microSD card is seated and accessible.
   > Tip: A short governance-bus run reduces susceptibility to noise on the UART. Keep that link away from the ESC power leads.

### 4.4 Attach GPS mast, LoRa antenna, and Wi-Fi adapter

**Install the navigation and communication peripherals.**
1. Mount the GPS module on the 250 mm mast and attach the mast to the top plate for a clear sky view.
2. Mount the LoRa module and route its 915 MHz whip vertically on the rear antenna mount.
3. Mount the Wi-Fi 6 adapter on its side bracket with the antenna outboard.
4. Mount the ATECC608B carrier beside the Pi 5.
   > Tip: Keep the GPS module clear of the LoRa and Wi-Fi antennas and the carbon plates. Co-locating antennas degrades both the position fix and the link budget.

### 4.5 Install Status LED ring and peripheral mounts

**Fit the tier-indicator ring and the optional camera.**
1. Mount the status LED ring around the center-plate perimeter so it is visible from the operator position.
2. Confirm the ring is powered from the dedicated buck and its data line runs to the Pixhawk as wired in step 2.5.
3. If used, mount the camera forward-facing in its mount and connect the CSI-2 ribbon to the Pi 5 with the contacts oriented correctly.
4. Verify no peripheral mount intrudes into the propeller arc.
   > Tip: Set the LED ring so the tier color is readable at the operating distance. The ring is the at-a-glance authority-tier indicator for the node.

### 4.6 Apply battery strap and perform final cable routing

**Secure the battery and dress all wiring.**
1. Place the 4S 5000 mAh LiPo on the bottom plate for balanced weight and secure it with the hook-and-loop strap.
2. Bundle and clip all power and signal runs along the arms and plates, keeping power and signal separated where possible.
3. Apply strain relief at each connector with a small service loop secured to the frame.
4. Confirm nothing can shift into the propeller arc in flight.
   > Tip: Separate power and signal routing reduces interference on the governance bus and the radio links. Confirm the battery cannot slide on hard maneuvers.

### 4.7 Attach propellers and conduct pre-flight safety check

**Install propellers and run the final checks.**
1. Confirm spin directions from step 3.5, then install the matching 1045 propellers and torque the prop nuts.
2. Run the autopilot pre-flight checks and confirm GPS lock, healthy sensors, and a steady MAVLink heartbeat across the shifter.
3. Confirm the LED ring shows the expected default authority tier on power-up.
4. Conduct the first powered test in a netted area with the operator clear of the propeller arc and a charged extinguisher within reach.
   > Tip: Treat every armed propeller as live. Keep clear of the arc, brief everyone present before arming, and abort on any anomaly in the pre-flight checks.

---

*End of guide. This procedure builds one node of the N=10 AUTHREX-SWARM testbed. Repeat for each node; node-specific cryptographic provisioning of the ATECC608B is covered in ICD-SWARM-001 Section 4.5.*
