Files
PX4-Autopilot/docs/en/dronecan/ark_gps.md
Jacob Dahl 0524a374d9 fix(drivers/uavcannode): make CANNODE_NODE_ID the sole node ID policy (#27644)
* fix(drivers/uavcannode): make CANNODE_NODE_ID the sole node ID policy

The startup bootloader_app_shared_write() never reached the bootloader:
it only accepts App-signed data and invalidates the shared region on
every boot. The only consumer was uavcannode itself on a restart
without a reset (nsh stop/start), where the persisted bus_speed=0 made
the CAN driver init fail and left the node off the bus. The bootloader
learns our node ID exclusively through the firmware update handoff in
cb_beginfirmware_update, which already carries the static ID.

CANNODE_NODE_ID now overrides the bootloader handoff only when nonzero,
so the default (0) reuses the ID the bootloader already allocated
instead of running allocation a second time. The handoff is ignored
unless it carries a valid bitrate, healing regions poisoned by firmware
that wrote bus_speed=0. Max is 125 because 126/127 are reserved for
debug tools by DroneCAN convention, matching UAVCAN_NODE_ID.

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>

* fix(drivers/uavcannode): harden bootloader handoff validation

Invalidate the shared region whenever it was read valid, not only when
the handoff is accepted, so stale data cannot linger on boards whose
bootloader never invalidates it. Require a plausible bitrate (the
CANNODE_BITRATE minimum) rather than nonzero: the canbootloader alt-app
update path can hand off bus_speed = CAN_UNDEFINED (999). Reword the
invalid-param error, which claimed dynamic allocation while keeping the
bootloader handoff.

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>

---------

Signed-off-by: Jacob Dahl <dahl.jakejacob@gmail.com>
2026-07-16 20:43:22 -06:00

5.7 KiB

ARK GPS (DroneCAN)

ARK GPS is an open source DroneCAN GNSS/GPS, magnetometer, IMU, barometer, buzzer, and safety switch module.

ARK GPS

Where to Buy

Order this module from:

Hardware Specifications

  • Open Source Schematic and BOM
  • Sensors
    • Ublox M9N GPS
      • Ultra-robust meter-level GNSS positioning
      • Maximum position availability with concurrent reception of 4 GNSS
      • Advanced spoofing and jamming detection
      • Excellent RF interference mitigation
    • Bosch BMM150 Magnetometer
    • Bosch BMP388 Barometer
    • Invensense ICM-42688-P 6-Axis IMU
  • STM32F412CEU6 MCU
  • Safety Button
  • Buzzer
  • Two Pixhawk Standard CAN Connectors (4 Pin JST GH)
  • Pixhawk Standard Debug Connector (6 Pin JST SH)
  • Small Form Factor
    • 5cm x 5cm x 1cm
  • LED Indicators
    • Safety LED
    • GPS Fix
    • RGB System Status
  • USA Built
  • Power Requirements
    • 5V
    • 110mA Average
    • 117mA Max

Hardware Setup

Wiring

The ARK GPS is connected to the CAN bus using a Pixhawk standard 4 pin JST GH cable. For more information, refer to the CAN Wiring instructions.

Mounting

The recommended mounting orientation is with the connectors on the board pointing towards the back of vehicle.

The sensor can be mounted anywhere on the frame, but you will need to specify its position, relative to vehicle centre of gravity, during PX4 configuration.

Firmware Setup

ARK GPS runs the PX4 DroneCAN Firmware. As such, it supports firmware update over the CAN bus and dynamic node allocation.

ARK GPS boards ship with recent firmware pre-installed, but if you want to build and flash the latest firmware yourself see PX4 DroneCAN Firmware > Building the Firmware.

  • Firmware target: ark_can-gps_default
  • Bootloader target: ark_can-gps_canbootloader

PX4 Configuration

You need to set necessary DroneCAN parameters and define offsets if the sensor is not centred within the vehicle. The required settings are outlined below.

::: info The ARK GPS will not boot if there is no SD card in the flight controller when powered on. :::

Enable DroneCAN

In order to use the ARK GPS board, connect it to the Pixhawk CAN bus and enable the DroneCAN driver by setting parameter UAVCAN_ENABLE to 2 for dynamic node allocation (or 3 if using DroneCAN ESCs).

The steps are:

Once enabled, the module will be detected on boot. GPS data should arrive at 10Hz.

DroneCAN configuration in PX4 is explained in more detail in DroneCAN > Enabling DroneCAN.

Sensor Position Configuration

If the sensor is not centred within the vehicle you will also need to define sensor offsets:

ARK GPS Configuration

You may need to configure the following parameters on the ARK GPS itself:

Parameter Description
CANNODE_NODE_ID CAN node ID (0 for dynamic allocation). If set to 0 (default), dynamic node allocation is used. Set to 1-125 to use a static node ID.
CANNODE_TERM CAN built-in bus termination. Set to 1 if this is the last node on the CAN bus.

LED Meanings

You will see green, blue and red LEDs on the ARK GPS when it is being flashed, and a blinking green LED if it is running properly.

If you see a red LED there is an error and you should check the following:

  • Make sure the flight controller has an SD card installed.
  • Make sure the ARK GPS has ark_can-gps_canbootloader installed prior to flashing ark_can-gps_default.
  • Remove binaries from the root and ufw directories of the SD card and try to build and flash again.

See Also