Documentation/FlyCore i225U WikiEnglish · V1
Browse documentation
Advanced User Guide

Remote ID Configuration (BSA-PX4 Custom Firmware Only)

This page applies only to FlyCore FC running FlyCore BSA PX4 v1.15.4 custom firmware and equipped with the corresponding broadcast module. This page does not apply to PX4 v1.18.…

3 min read · English documentation

This page applies only to FlyCore-FC running FlyCore BSA-PX4 v1.15.4 custom firmware and equipped with the corresponding broadcast module. This page does not apply to PX4 v1.18.0 open-source firmware.

Check Before Use:

First confirm that the current firmware is FlyCore BSA-PX4 v1.15.4 custom firmware. Then, on the QGC Parameters page, confirm that all UAVCAN_OD_* parameters listed on this page are present and that the broadcast module has been recognized by BSA-PX4. If PX4 v1.18.0 open-source firmware is in use or any parameter is missing, stop the operation and contact product technical support. Do not substitute an official PX4 parameter with the same or a similar name.

Identifier Format and Parameter Conversion

The unique product identifier consists of 20 characters. The permitted characters are the digits 0–9 and uppercase letters A–Z, excluding I and O.

Prerequisites

  • A 20-character identifier assigned to the current product has been obtained;
  • Python 3 is available on the computer;
  • The locking commit has not yet been performed;
  • The current BSA-PX4 parameters have been exported as a backup.

Conversion Script

Save the following script as id20_to_params.py:

#!/usr/bin/env python3

import sys

ALLOWED = set("0123456789ABCDEFGHJKLMNPQRSTUVWXYZ")


def to_u32_be_decimal(chunk: str) -> int:
    value = 0
    for ch in chunk.encode("ascii"):
        value = (value << 8) | ch
    return value


def main() -> int:
    if len(sys.argv) != 2:
        print("Usage: id20_to_params.py <20-char-id>")
        return 1

    value = sys.argv[1]
    if len(value) != 20:
        print(f"Error: expected exactly 20 characters, got {len(value)}")
        return 1

    invalid = [(idx, ch) for idx, ch in enumerate(value) if ch not in ALLOWED]
    if invalid:
        print("Error: invalid characters detected")
        for idx, ch in invalid:
            print(f"  index {idx}: {ch!r}")
        print("Allowed characters: 0-9, A-Z excluding I and O")
        return 1

    chunks = [value[i:i + 4] for i in range(0, 20, 4)]
    names = [
        "UAVCAN_OD_MFC",
        "UAVCAN_OD_PMC",
        "UAVCAN_OD_SN0",
        "UAVCAN_OD_SN1",
        "UAVCAN_OD_SN2",
    ]

    for name, chunk in zip(names, chunks):
        print(f"{name}\t{to_u32_be_decimal(chunk)}    # {chunk}")
    return 0


if __name__ == "__main__":
    raise SystemExit(main())

Run:

python id20_to_params.py <20-character-identifier>

Record the following five decimal values output by the script:

UAVCAN_OD_MFC
UAVCAN_OD_PMC
UAVCAN_OD_SN0
UAVCAN_OD_SN1
UAVCAN_OD_SN2

The script should reject input that is not 20 characters long, as well as input containing I, O, or any character outside the permitted range.

Entering and Committing the Parameters in QGC

Parameter Availability Check

On the QGC Parameters page, search for each of the following:

UAVCAN_PUB_ODID
UAVCAN_OD_MFC
UAVCAN_OD_PMC
UAVCAN_OD_SN0
UAVCAN_OD_SN1
UAVCAN_OD_SN2
UAVCAN_OD_STAGE
UAVCAN_OD_STGDN
UAVCAN_OD_COMMIT
UAVCAN_OD_LOCK
UAVCAN_PILOT_ID

Proceed with the commit only when all required parameters are present and the broadcast module status is normal.

Staging and Committing

  1. Set UAVCAN_PUB_ODID to Enabled.
  2. Enter the converted values into the five UAVCAN_OD_* identifier parameters in sequence.
  3. Set UAVCAN_OD_STAGE to Enabled, and then refresh the parameter page.

image.png

  1. UAVCAN_OD_STGDN should automatically change to Enabled only when the identifier meets the requirements. Otherwise, return to the previous step and verify the entries again. Do not commit.
  2. Set UAVCAN_OD_COMMIT to Enabled, commit and save the current configuration, and then refresh the parameters again.
  3. Check whether the UAVCAN_OD_C_* parameters have automatically changed to the committed information, and confirm that UAVCAN_OD_LOCK has automatically changed to Enabled.
  4. Restart FlyCore-FC, reconnect QGC, and read back the parameters listed above.
  5. Use the corresponding verification method to confirm that the broadcast module is continuously transmitting the current product identification information.

Locking and Backup Risks

  • Once UAVCAN_OD_LOCK = Enabled, further changes are no longer accepted. Before committing, you must verify that the identifier belongs to the correct product and that the conversion result is correct.
  • Importing a complete parameter file may overwrite the UAVCAN_OD_C_* parameters used by Remote ID. Before importing parameters, you must create a backup and confirm the import scope.

Pilot ID

For UAVCAN_PILOT_ID, enter the last 8 digits of the real-name registration number in accordance with product and local regulatory requirements. The parameter interface may omit leading zeros. After committing, verify the complete 8-digit number using the actual broadcast result.

Acceptance Records

After completing the Remote ID configuration, record at least the following: the BSA-PX4 build identifier, the exported parameter file, the 20-character identifier, the commit time, the readback result after restart, and the actual broadcast verification result.