Skip to main content

ak820ctl

linux driver for the ajazz ak820 max plus (the tri-mode rgb one). it does lighting, per-key colors, key remaps, macros, sleep/response settings and battery status, over the usb cable or the 2.4g dongle.

per-key rgb tab

install

pipx install ak820ctl

then let your user talk to the keyboard without sudo:

sudo curl -o /etc/udev/rules.d/70-ajazz-ak820.rules \
  https://raw.githubusercontent.com/shrey715/ak820ctl/main/udev/70-ajazz-ak820.rules
sudo udevadm control --reload && sudo udevadm trigger

unplug and replug the dongle or cable after that.

usage

run ak820ctl with no arguments to get the tui.

  • lighting: pick an effect from the list, and the sliders it doesn't use grey out
  • per-key rgb: click or drag across the keyboard map to paint, fill patterns (rainbows, gradients, a wasd highlight), save your designs as presets, then upload
  • remap and macro: click the key you want on the map, remapped keys get tinted, and you can restore any of them one by one
  • settings: sleep timer, key response, fn switch, factory reset

the keyboard can't report its settings back, so the tui keeps track of what it last sent in ~/.config/ak820ctl and opens where you left off. 1-5 switch tabs, ctrl+s applies the current one, l shows the packet log and ? has the rest.

remap tab

everything is also available as plain commands if you want to script it:

ak820ctl status                  # battery + link state
ak820ctl modes                   # list lighting effects
ak820ctl light 7 -b 5            # static light, full brightness
ak820ctl light 8 -s 3            # breathing at speed 3
ak820ctl custom -a 101010 esc=red w=cyan a=cyan s=cyan d=cyan
ak820ctl sleep 30                # 5 | 15 | 30 | never
ak820ctl response 1              # key response gear, 1 is fastest
ak820ctl fn-switch fn            # normal | fn
ak820ctl remap capslock esc
ak820ctl remap --fn f1 playpause
ak820ctl remap --list-targets
ak820ctl macro f12 +lctrl c -lctrl   # ctrl+c on f12
ak820ctl reset-keys
ak820ctl menu                    # old-school prompt menu

macro events: +key presses, -key releases, a bare key taps it, and @ms sets the delay after an event (like a@200). flags like --fn or -r 3 go before the key name.

-n / --dry-run prints the packets and sends nothing, and -v shows every packet that goes out. both work with the tui too (ak820ctl -n).

what works and what doesn't

decoded from the driver: lighting effects with brightness/speed/direction, per-key colors (custom mode), sleep timer, key response time, the fn switch, remapping to keys or media functions, keyboard macros, and the battery/link query.

still open (see the issues tab): what the effect color index numbers mean, live streaming frames, one unidentified command (0x0A), firmware updates and mouse-button assignments.

if you own one of these, running ak820ctl -v status and posting what comes back helps a lot.

how it works

every command is a 64-byte hid output report that starts with aa 55 cc 33, sent to the vendor hid interface (usage page 0xff02). PROTOCOL.md has the full command table and the driver function each finding came from.

dev

git clone https://github.com/shrey715/ak820ctl && cd ak820ctl
python -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/pytest

releases are automatic: bump __version__ in ak820/__init__.py and push to main. the publish workflow runs the tests, uploads to pypi through trusted publishing (no tokens anywhere) and makes a github release. pushes that don't change the version just run the tests.

license

mit. "ajazz" and "ak820" are their owner's trademarks and only used here to say what hardware this is for.

Metadata

Release files for ak820ctl 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ak820ctl 0.2.0
File Size Uploaded Provenance
ak820ctl-0.2.0.tar.gz 30.7 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for ak820ctl 0.2.0
File Interpreter ABI Platform
ak820ctl-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 59.9 kB

Release files / ak820ctl-0.2.0.tar.gz

Download URL ak820ctl-0.2.0.tar.gz
Size 30.7 kB
Tags Source
SHA-256 checksum
How to use checksums
7f86f97edfe757f885e61dc5243fb6dc77368fcf91045de7cb2b2b91bd089912
BLAKE2b-256 checksum
How to use checksums
4c5d31458e1af829546e494c6d410684d85c58b8da5d40a69dfd15c2043fd1f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Release files / ak820ctl-0.2.0-py3-none-any.whl

Download URL ak820ctl-0.2.0-py3-none-any.whl
Size 29.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d9bb7ea223dfa51b8fea3793237bd826e3022393d91b3a331563e13daf58c7f9
BLAKE2b-256 checksum
How to use checksums
2d365d828866cde50cbb25a1aae4f15d43921eaa11a506d51203d3c03945f554
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

Security for ak820ctl 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for ak820ctl-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 18, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page