Skip to content

Releases

gp2040ce-hostlighting v1.0.0rc6

Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Nov 06:03
v1.0.0rc6
858eeb3

gp2040ce-hostlighting v1.0.0rc6

Released 6 November 2026. This is a release candidate of the Python library and tools for the GP2040-CE Host Lighting add-on, which lets host software drive a board's RGB LEDs live over a vendor HID interface. It speaks Host Lighting Protocol 2.0 as HLP v2.0-rc14 implements it.

Changes since v1.0.0rc5

HLP v2.0-rc14 describes every input mode and the board's boot holds. This release reads them:

  • Page 2 records gain the capabilities, USB host and authentication, and device type groups, and InputModeFlags.accepted for the modes SET_INPUT_MODE accepts. method_values and supported_values give the authentication and device type bitmaps as values.
  • Page 3's names cover every enum the pages carry (NAME_ENUMS 0 to 9).
  • Page 4 decodes to BootHoldRecord: the buttons or pins held at plug-in that boot an input mode, the web configurator or the UF2 bootloader.
  • Page 8's Summary.usb_host reads the new USB host flag.
  • hlp-caps prints page 2's new fields and page 4, and names input modes from page 2. In an analog D-pad mode the tools note that a hold's Up is the DIGITAL_DIRECTION_UP control.
  • set_input_mode() and hlp-input-mode refuse a mode the board does not accept. For a mode without the lighting interface, hlp-input-mode prints the boot holds back to one with it, or to the web configurator, before it switches with --force.
  • hlp-conformance checks the new pages and flags, a page 3 name for every value the pages carry, SET_INPUT_MODE's refusals (with a wrong magic, so a board never reboots) and page reads past the last record. A board passes 223 checks with --settings and 212 plain or exclusive when it allows keyboard mapping changes, and 214 and 206 when it does not.
  • A page from firmware that defines fewer of its groups, as before a later addition, reads with the groups it has.
  • The fake and model boards model the new pages, testing.summary_record() takes usb_host, and the test vectors were regenerated.

The specification copy in docs/ is HLP v2.0-rc14's.

Install

The hlp app needs no Python. Download the file for your system below:

File System
hlp-windows-x64.exe Windows 10 and 11, x64, and Windows 11 on ARM through its x64 emulation
hlp-macos-x64.zip macOS on Intel (x64), built on macOS 15
hlp-macos-arm64.zip macOS on Apple silicon (ARM64), built on macOS 15
hlp-linux-x64.tar.gz Linux x64, glibc 2.35 or later
hlp-linux-arm64.tar.gz Linux ARM64, glibc 2.35 or later

Opened from a file manager, the app picks the board and offers its commands from a menu; in a terminal, hlp COMMAND runs one directly. The apps are not signed: Windows SmartScreen may warn on the first run, and macOS asks you to allow the app in System Settings, Privacy & Security, the first time. On Linux, the README's udev rule gives the logged-in user access to the board.

The library and the hlp-* commands install with pip, on Python 3.14 or later:

pip install git+https://github.com/djGLiTCH/gp2040ce-hostlighting@v1.0.0rc6

Firmware

It needs a board running HLP v2.0-rc14, with the Host Lighting add-on enabled in the web configurator. HLP v2.0-rc13 and earlier have no page 4 and none of page 2's new fields, so this release shows their input modes as not accepted and set_input_mode() refuses them. Use v1.0.0rc5 with those builds.

The add-on is proposed to GP2040-CE in OpenStickCommunity/GP2040-CE#1691, where its review can be followed. Until it merges, test builds for every board are pre-releases on djGLiTCH/GP2040-CE.

What it contains

  • The library: the protocol, the device and board discovery, LightsClaim, frames for a streaming host, ConfigurationCache, Session (the specification's whole host flow), SessionRunner and AsyncSession for a GUI or asyncio program, BoardWatcher and SessionGroup for every board on the bus, the LED layout grid, and fake and model boards to test host software without a board.
  • The commands: hlp-ping, hlp-caps, hlp-settings, hlp-watch, hlp-fill, hlp-set-light, hlp-stream, hlp-show, hlp-buttons, hlp-input-mode, hlp-reboot, hlp-conformance, which checks a board against the protocol, and hlp-bench.
  • hlp, which runs each command as a subcommand, with its menu, and the hlp app built from it.
  • The test vectors (tests/vectors/): exact request and reply reports, for hosts that test against a board model of their own.
  • Issue forms for bug reports, enhancement requests and documentation.

Hosts

  • hlp-spice2x shows the cabinet lighting of games running under spice2x on a GP2040-CE controller's buttons, and is built on this library.
  • MESH (Modern Emulator State Hub, not public yet) drives controller lighting from emulator game state. It implements the protocol itself, with this library as the reference for host behaviour.

Testing

Where Result
The library Each commit passes its tests on Python 3.14 (501 at this release), mypy strict, REUSE, bandit and flake8
Haute42|COSMOX M Ultra Gen 2 on HLP v2.0-rc14, keyboard mapping changes allowed hlp-conformance --settings 223 of 223, --exclusive 212 of 212, the test vectors, page 2 and page 4 against the board's settings, a 90-second run with three applications sharing the board
Haute42|COSMOX on HLP v2.0-rc14, keyboard mapping changes off hlp-conformance --quick 206 of 206, --settings 214 of 214, the test vectors for that setting, hlp-settings --keyboard-code refused
The release's Windows app on HLP v2.0-rc14 On the M Ultra Gen 2, keyboard mapping changes allowed: ping, caps (and --page, with input-modes and boot-holds), settings, fill, set-light, buttons, watch, stream, show (600 of 600 frames on 46 lights), bench (round trip median 2.00 ms), conformance --quick (212 of 212) and conformance --settings (223 of 223), and input-mode 4 refused with the boot holds back shown. On the COSMOX, keyboard mapping changes off: ping, caps, conformance --quick (206 of 206) and --settings (214 of 214), settings --keyboard-code refused
macOS and Linux Built and started by the Release workflow (--version, --help, --licences); not run on a board

Licence

GPL-3.0-or-later. hlp --licences (or --licenses), or l in the app's menu, prints the licence and the notices of the libraries the app bundles; each archive also carries them as THIRD-PARTY-NOTICES.txt. The Linux apps take their libraries from Ubuntu 22.04's packages, and hlp-linux-x64-sources.tar.gz and hlp-linux-arm64-sources.tar.gz hold the exact source of those under a GPL-family licence.

gp2040ce-hostlighting v1.0.0rc5

Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Oct 21:27
v1.0.0rc5
607df6d

gp2040ce-hostlighting v1.0.0rc5

Released 30 October 2026. This is a release candidate of the Python library and tools for the GP2040-CE Host Lighting add-on, which lets host software drive a board's RGB LEDs live over a vendor HID interface. It speaks Host Lighting Protocol 2.0 as HLP v2.0-rc12 implements it.

Changes since v1.0.0rc4

HLP v2.0-rc12 adds a web configurator setting, Allow hosts to change the keyboard mapping, off by default. While it is off, the board's HELLO does not list SET_KEYBOARD_MAPPING (0x34) and the board answers it with status 1. This release works with boards either way:

  • hlp-conformance treats 0x34 as optional. Without it, a note says so, the checks that send it are skipped, and 0x34 must answer status 1, under another application's exclusive claim too. A board without it passes 183 checks quick or plain and 191 with --settings, and a board with it 189 and 200, as before.
  • hlp-settings --keyboard-code is refused, before anything is sent, on a board that does not allow it, and hlp-settings marks the codes read-only there.
  • The test vectors gain the setup codes keyboard_mapping_changes and no_keyboard_mapping_changes on the keyboard vectors, and a new vector, keyboard_mapping_not_allowed. A replay runs those vectors only on a board that matches, and compares HELLO's bit 0x34 only in them. tests/vectors/README.md gives the format.
  • The fake and model boards list 0x34 by default, as the firmware does with the setting on. Taking CMD_SET_KEYBOARD_MAPPING out of a fake's commands gives the firmware's default.

The specification copy in docs/ describes the setting, as HLP v2.0-rc12's does. The specification copy says a keyboard mapping change applies only to the input profile active when it is made.

Install

The hlp app needs no Python. Download the file for your system below:

File System
hlp-windows-x64.exe Windows 10 and 11, x64, and Windows 11 on ARM through its x64 emulation
hlp-macos-x64.zip macOS on Intel (x64), built on macOS 15
hlp-macos-arm64.zip macOS on Apple silicon (ARM64), built on macOS 15
hlp-linux-x64.tar.gz Linux x64, glibc 2.35 or later
hlp-linux-arm64.tar.gz Linux ARM64, glibc 2.35 or later

Opened from a file manager, the app picks the board and offers its commands from a menu; in a terminal, hlp COMMAND runs one directly. The apps are not signed: Windows SmartScreen may warn on the first run, and macOS asks you to allow the app in System Settings, Privacy & Security, the first time. On Linux, the README's udev rule gives the logged-in user access to the board.

The library and the hlp-* commands install with pip, on Python 3.14 or later:

pip install git+https://github.com/djGLiTCH/gp2040ce-hostlighting@v1.0.0rc5

Firmware

It needs a board running HLP v2.0-rc12, with the Host Lighting add-on enabled in the web configurator. HLP v2.0-rc11 and rc10 work too, as boards that list 0x34. Earlier HLP 2.0 release candidates use other page layouts, and the library refuses their pages.

The add-on is proposed to GP2040-CE in OpenStickCommunity/GP2040-CE#1691, where its review can be followed. Until it merges, test builds for every board are pre-releases on djGLiTCH/GP2040-CE.

What it contains

  • The library: the protocol, the device and board discovery, LightsClaim, frames for a streaming host, ConfigurationCache, Session (the specification's whole host flow), SessionRunner and AsyncSession for a GUI or asyncio program, BoardWatcher and SessionGroup for every board on the bus, the LED layout grid, and fake and model boards to test host software without a board.
  • The commands: hlp-ping, hlp-caps, hlp-settings, hlp-watch, hlp-fill, hlp-set-light, hlp-stream, hlp-show, hlp-buttons, hlp-input-mode, hlp-reboot, hlp-conformance, which checks a board against the protocol, and hlp-bench.
  • hlp, which runs each command as a subcommand, with its menu, and the hlp app built from it.
  • The test vectors (tests/vectors/): exact request and reply reports, for hosts that test against a board model of their own.
  • Issue forms for bug reports, enhancement requests and documentation.

Hosts

  • hlp-spice2x shows the cabinet lighting of games running under spice2x on a GP2040-CE controller's buttons, and is built on this library.
  • MESH (Modern Emulator State Hub, not public yet) drives controller lighting from emulator game state. It implements the protocol itself, with this library as the reference for host behaviour.

Testing

Where Result
The library Each commit passes its tests on Python 3.14 (494 at this release), mypy strict, REUSE, bandit and flake8
Haute42|COSMOX M Ultra Gen 2 on HLP v2.0-rc12, the setting on hlp-conformance --settings 200 of 200, --exclusive 189 of 189, the test vectors, a 90-second run with three applications sharing the board
Haute42|COSMOX on HLP v2.0-rc12, the setting off hlp-conformance --quick 183 of 183, the test vectors for that setting, hlp-settings --keyboard-code refused
The release's Windows app on HLP v2.0-rc12 On the M Ultra Gen 2, the setting on: ping, caps (and --page), settings, fill, set-light, buttons, watch, stream, show (600 of 600 frames on 46 lights), bench, conformance --quick (189 of 189) and conformance --settings (200 of 200). On the COSMOX, the setting off: ping, caps, conformance --quick (183 of 183), settings --keyboard-code refused
macOS and Linux Built and started by the Release workflow (--version, --help, --licences); not run on a board

Licence

GPL-3.0-or-later. hlp --licences (or --licenses), or l in the app's menu, prints the licence and the notices of the libraries the app bundles; each archive also carries them as THIRD-PARTY-NOTICES.txt. The Linux apps take their libraries from Ubuntu 22.04's packages, and hlp-linux-x64-sources.tar.gz and hlp-linux-arm64-sources.tar.gz hold the exact source of those under a GPL-family licence.

gp2040ce-hostlighting v1.0.0rc4

Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Oct 06:53
v1.0.0rc4
9a9921b

gp2040ce-hostlighting v1.0.0rc4

Released 29 October 2026. This is a release candidate of the Python library and tools for the GP2040-CE Host Lighting add-on, which lets host software drive a board's RGB LEDs live over a vendor HID interface. It speaks Host Lighting Protocol 2.0 as HLP v2.0-rc11 implements it.

Changes since v1.0.0rc3

Page 1's group 1 is named Holder, as the specification now names it. No report byte changes, but code that uses these names needs the new ones:

v1.0.0rc3 v1.0.0rc4
Controller Holder
StateRecord.controller StateRecord.holder
CONTROLLER_SIZE HOLDER_SIZE
decode_controller() decode_holder()
Page 1's controller key in hlp-caps --json holder
hlp-conformance's "Controller claim flags" check "Holder claim flags"

The specification copy in docs/ lists the input modes in the Web Configurator's order, as HLP v2.0-rc11's does.

Install

The hlp app needs no Python. Download the file for your system below:

File System
hlp-windows-x64.exe Windows 10 and 11, x64, and Windows 11 on ARM through its x64 emulation
hlp-macos-x64.zip macOS on Intel (x64), built on macOS 15
hlp-macos-arm64.zip macOS on Apple silicon (ARM64), built on macOS 15
hlp-linux-x64.tar.gz Linux x64, glibc 2.35 or later
hlp-linux-arm64.tar.gz Linux ARM64, glibc 2.35 or later

Opened from a file manager, the app picks the board and offers its commands from a menu; in a terminal, hlp COMMAND runs one directly. The apps are not signed: Windows SmartScreen may warn on the first run, and macOS asks you to allow the app in System Settings, Privacy & Security, the first time. On Linux, the README's udev rule gives the logged-in user access to the board.

The library and the hlp-* commands install with pip, on Python 3.14 or later:

pip install git+https://github.com/djGLiTCH/gp2040ce-hostlighting@v1.0.0rc4

Firmware

It needs a board running HLP v2.0-rc11, with the Host Lighting add-on enabled in the web configurator. HLP v2.0-rc10 works too, as no report byte changed. Earlier HLP 2.0 release candidates use other page layouts, and the library refuses their pages.

The add-on is proposed to GP2040-CE in OpenStickCommunity/GP2040-CE#1691, where its review can be followed. Until it merges, test builds for every board are pre-releases on djGLiTCH/GP2040-CE.

What it contains

  • The library: the protocol, the device and board discovery, LightsClaim, frames for a streaming host, ConfigurationCache, Session (the specification's whole host flow), SessionRunner and AsyncSession for a GUI or asyncio program, BoardWatcher and SessionGroup for every board on the bus, the LED layout grid, and fake and model boards to test host software without a board.
  • The commands: hlp-ping, hlp-caps, hlp-settings, hlp-watch, hlp-fill, hlp-set-light, hlp-stream, hlp-show, hlp-buttons, hlp-input-mode, hlp-reboot, hlp-conformance, which checks a board against the protocol, and hlp-bench.
  • hlp, which runs each command as a subcommand, with its menu, and the hlp app built from it.
  • hlp-show: a light show across the buttons, case, player and turbo lights, as a visual test.
  • hlp-caps --page: one or more pages alone, by name or number, such as the controls with their GPIO pins or Hall-effect triggers, the keyboard mapping or the lights.
  • Progress as each step starts: the commands say when they take the lights and when each timed step begins, and the menu shows the command line it runs.
  • The test vectors (tests/vectors/): exact request and reply reports, for hosts that test against a board model of their own.
  • Issue forms for bug reports, enhancement requests and documentation.

Hosts

  • hlp-spice2x shows the cabinet lighting of games running under spice2x on a GP2040-CE controller's buttons, and is built on this library.
  • MESH (Modern Emulator State Hub, not public yet) drives controller lighting from emulator game state. It implements the protocol itself, with this library as the reference for host behaviour.

Testing

Where Result
The library Each commit passes its tests on Python 3.14 (487 at this release), mypy strict, REUSE, bandit and flake8
Haute42|COSMOX M Ultra Gen 2 on HLP v2.0-rc11 Windows app: ping, caps (and --page), settings, fill, set-light, buttons, watch, stream, show (600 of 600 frames on 46 lights), bench, conformance --quick (189 of 189) and conformance --settings (200 of 200)
macOS and Linux Built and started by the Release workflow (--version, --help, --licences); not run on a board

Licence

GPL-3.0-or-later. hlp --licences (or --licenses), or l in the app's menu, prints the licence and the notices of the libraries the app bundles; each archive also carries them as THIRD-PARTY-NOTICES.txt. The Linux apps take their libraries from Ubuntu 22.04's packages, and hlp-linux-x64-sources.tar.gz and hlp-linux-arm64-sources.tar.gz hold the exact source of those under a GPL-family licence.

gp2040ce-hostlighting v1.0.0rc3

Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Oct 04:00
v1.0.0rc3
8755614

gp2040ce-hostlighting v1.0.0rc3

Released 29 October 2026. This is a release candidate of the Python library and tools for the GP2040-CE Host Lighting add-on, which lets host software drive a board's RGB LEDs live over a vendor HID interface. It speaks Host Lighting Protocol 2.0 as HLP v2.0-rc10 implements it.

Install

The hlp app needs no Python. Download the file for your system below:

File System
hlp-windows-x64.exe Windows 10 and 11, x64, and Windows 11 on ARM through its x64 emulation
hlp-macos-x64.zip macOS on Intel (x64), built on macOS 15
hlp-macos-arm64.zip macOS on Apple silicon (ARM64), built on macOS 15
hlp-linux-x64.tar.gz Linux x64, glibc 2.35 or later
hlp-linux-arm64.tar.gz Linux ARM64, glibc 2.35 or later

Opened from a file manager, the app picks the board and offers its commands from a menu; in a terminal, hlp COMMAND runs one directly. The apps are not signed: Windows SmartScreen may warn on the first run, and macOS asks you to allow the app in System Settings, Privacy & Security, the first time. On Linux, the README's udev rule gives the logged-in user access to the board.

The library and the hlp-* commands install with pip, on Python 3.14 or later:

pip install git+https://github.com/djGLiTCH/gp2040ce-hostlighting@v1.0.0rc3

Firmware

It needs a board running HLP v2.0-rc10, with the Host Lighting add-on enabled in the web configurator. Earlier HLP 2.0 release candidates use other page layouts, and the library refuses their pages.

The add-on is proposed to GP2040-CE in OpenStickCommunity/GP2040-CE#1691, where its review can be followed. Until it merges, test builds for every board are pre-releases on djGLiTCH/GP2040-CE.

What it contains

  • The library: the protocol, the device and board discovery, LightsClaim, frames for a streaming host, ConfigurationCache, Session (the specification's whole host flow), SessionRunner and AsyncSession for a GUI or asyncio program, BoardWatcher and SessionGroup for every board on the bus, the LED layout grid, and fake and model boards to test host software without a board.
  • The commands: hlp-ping, hlp-caps, hlp-settings, hlp-watch, hlp-fill, hlp-set-light, hlp-stream, hlp-show, hlp-buttons, hlp-input-mode, hlp-reboot, hlp-conformance, which checks a board against the protocol, and hlp-bench.
  • hlp, which runs each command as a subcommand, with its menu, and the hlp app built from it.
  • hlp-show: a light show across the buttons, case, player and turbo lights, as a visual test.
  • hlp-caps --page: one or more pages alone, by name or number, such as the controls with their GPIO pins or Hall-effect triggers, the keyboard mapping or the lights.
  • Progress as each step starts: the commands say when they take the lights and when each timed step begins, and the menu shows the command line it runs.
  • The test vectors (tests/vectors/): exact request and reply reports, for hosts that test against a board model of their own.
  • Issue forms for bug reports, enhancement requests and documentation.

Hosts

  • hlp-spice2x shows the cabinet lighting of games running under spice2x on a GP2040-CE controller's buttons, and is built on this library.
  • MESH (Modern Emulator State Hub, not public yet) drives controller lighting from emulator game state. It implements the protocol itself, with this library as the reference for host behaviour.

Testing

Where Result
The library Each commit passes its tests on Python 3.14 (487 at this release), mypy strict, REUSE, bandit and flake8
Haute42|COSMOX M Ultra Gen 2 on HLP v2.0-rc10 Windows app: ping, caps (and --page), settings, fill, set-light, buttons, watch, stream, show (600 of 600 frames on 46 lights), bench, conformance --quick (189 of 189) and conformance --settings (200 of 200)
macOS and Linux Built and started by the Release workflow (--version, --help, --licences); not run on a board

Licence

GPL-3.0-or-later. hlp --licences (or --licenses), or l in the app's menu, prints the licence and the notices of the libraries the app bundles; each archive also carries them as THIRD-PARTY-NOTICES.txt. The Linux apps take their libraries from Ubuntu 22.04's packages, and hlp-linux-x64-sources.tar.gz and hlp-linux-arm64-sources.tar.gz hold the exact source of those under a GPL-family licence.