Skip to content

Latest commit

 

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dronecode USB ID Registry

The Dronecode Foundation owns USB vendor ID 0x3643 ("Dronecode Project, Inc.") and assigns product IDs (PIDs) to member companies building Pixhawk/PX4-compatible hardware. This repository is the single source of truth for those assignments: usb-ids.yaml.

PX4-Autopilot CI checks board definitions against this registry, so a board using VID 0x3643 cannot merge upstream unless its PID is registered here and mapped to that board's directory with px4_board.

PIDs are assigned in blocks of 16: your first request claims an aligned block (0xNNN0-0xNNNF) and every PID you are assigned comes from inside it. Claim a block when you have hardware to name, not in advance; when a block fills up, claim another.

Requesting a PID

  1. Open a pull request adding your entry to usb-ids.yaml under your manufacturer block (create one if it's your first request):

    - name: Acme Robotics
      px4_vendor: acme          # your directory under boards/ in PX4-Autopilot
      contact: usb@acme.example
      blocks: ["0x0070"]        # 16 PIDs, 0x0070-0x007F
      pids:
        - pid: "0x0070"
          board: Acme FC1
          px4_board: acme/fc1   # boards/acme/fc1 in PX4-Autopilot
          date: 2026-07-10
  2. CI validates the file (format, uniqueness). A maintainer confirms your Dronecode Foundation membership and merges. Assignments are at maintainer discretion.

  3. Once your entry is merged here, open your board pull request in PX4-Autopilot. Its USB ID check reads this registry and fails until your PID is mapped to your board's directory with px4_board; if you opened the PX4 pull request first, re-run the check after the registry pull request merges, no changes needed.

Pick the lowest free block unless you have a reason not to; any free aligned block is fine. One entry per PID. PID values are hexadecimal: after "0x0039" comes "0x003A", not "0x0040". If you can't open a PR, use the PID request issue form.

Field reference

Field Rules
pid "0x" + 4 uppercase hex digits, quoted, globally unique
board Board name
date Assignment date, YYYY-MM-DD
contact Email address for the manufacturer
px4_vendor Your vendor directory name in the PX4 boards/ tree. Optional until you upstream a board; needed for px4_board, which must sit inside it.
px4_board On a PID: the <vendor>/<board> directory under PX4's boards/ that uses it (e.g. siyi/n7). Required, and merged here, before you open the PX4-Autopilot board PR: PX4 CI rejects a board using VID 0x3643 whose PID is not mapped to its directory. Leave it off for boards not headed upstream.
blocks List of claimed block starts, "0x" + 4 uppercase hex digits ending in 0; each covers 16 PIDs (0xNNN0-0xNNNF), globally unique. Required before any non-legacy PID can be assigned.
legacy true on assignments that predate the block policy (before 2026-09). Maintainer-set, not for new requests.

Validation

pip install pyyaml
python3 validate.py usb-ids.yaml

Runs automatically on every PR and push to main.

check_px4.py checks the registry against a PX4-Autopilot checkout in both directions: every defconfig under a px4_board directory that sets CONFIG_CDCACM_VENDORID to 0x3643 must set CONFIG_CDCACM_PRODUCTID to that entry's PID, and every PX4 board using VID 0x3643 must be claimed by some px4_board. A px4_board whose directory is not in PX4 yet is only a notice. A PX4 path with no board using VID 0x3643 fails rather than passing with nothing checked. CI runs it against PX4 main on every PR, push, and weekly.

python3 check_px4.py path/to/PX4-Autopilot usb-ids.yaml

Note for maintainers: PX4 CI (including release branches carrying older copies of check_usb_ids.py) fetches this file from main at check time, so schema changes must stay backward compatible: adding fields is fine, renaming or removing them breaks deployed checkers.

About

Repo to manage the Dronecode USB Vendor ID and the Product ID reservations

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages