Skip to main content

RT82 Display CLI

Upload GIFs to your Epomaker RT82 keyboard's LCD screen from the command line.

Installation

Install from PyPI

pip install rt82display

This installs the CLI tool and all Python dependencies. You can immediately use rt82display list, rt82display info, and upload pre-encoded .qgif files.

Linux: udev rules (required for non-root access)

# Download the rules file from the repo
sudo curl -o /etc/udev/rules.d/99-rt82.rules \
  https://raw.githubusercontent.com/guysoft/rt82display/main/udev/99-rt82.rules
sudo udevadm control --reload-rules
sudo udevadm trigger

Then unplug and replug the keyboard.

macOS: No extra setup required.

Optional: Build the native QGIF encoder

The native encoder is needed to upload .gif files directly (auto-converts GIF to QGIF). Without it you can still upload pre-encoded .qgif files.

git clone https://github.com/guysoft/rt82display.git
cd rt82display/wasm2c_runtime
./build.sh

Requirements: A C compiler (gcc/clang). The WABT runtime headers are included in the repository.

Development install

To install from a local checkout instead of PyPI:

git clone https://github.com/guysoft/rt82display.git
cd rt82display
pip install -e .

Usage

Upload a GIF (auto-encodes to QGIF)

rt82display upload my_animation.gif

Upload a pre-encoded QGIF file

rt82display upload my_animation.qgif

Encode a GIF without uploading

rt82display encode input.gif output.qgif

List connected devices

rt82display list

Show device/protocol info

rt82display info

Example

A test GIF is included in the repository to verify your setup works:

rt82display upload capture_test.gif

Example GIF

Limitations

  • 64KB file size limit: The RT82 firmware has a ~64KB buffer. Complex GIFs with many color transitions may exceed this limit and cause display artifacts.
  • Best results: Use simple GIFs with solid colors and minimal patterns.
  • If your GIF exceeds the limit, you'll see a warning but can still attempt the upload.

Alternative: Web Tool Encoding

If the native encoder doesn't work for your GIF, you can capture QGIF from the official web tool:

  1. Open https://image.rdmctmzt.com/ in Chrome
  2. Paste this in DevTools Console (F12):
window._p=[];const _s=HIDDevice.prototype.sendReport;HIDDevice.prototype.sendReport=function(i,d){window._p.push(Array.from(new Uint8Array(d)));return _s.call(this,i,d)};window.dl=()=>{const c=[];window._p.filter(x=>x[1]===0x19).forEach(x=>c.push(...x.slice(8)));if(!c.length){console.log('No data!');return}const a=document.createElement('a');a.href=URL.createObjectURL(new Blob([new Uint8Array(c)]));a.download='animation.qgif';a.click();console.log('Saved',c.length,'bytes')};console.log('Ready! Upload GIF, Download to Device, then run: dl()');
  1. Upload your GIF and click "Download to Device"
  2. Run dl() in console to save the QGIF file
  3. Upload via CLI: rt82display upload animation.qgif

Technical Details

  • Display: 240×135 RGB565
  • Format: Proprietary QGIF (RLE compressed)
  • Protocol: USB HID with two-stage device activation
  • Encoder: wasm2c-compiled from official qgif.wasm

See PROTOCOL.md and QGIF.md for technical documentation.

Troubleshooting

See AGENTS.md for detailed troubleshooting steps.

Quick fixes:

  • Device not found: Unplug and replug keyboard
  • Permission denied (Linux): Install the udev rules (see Prerequisites above) and replug
  • Screen stuck on "Downloading": Unplug and replug
  • Garbled display: GIF likely exceeds 64KB limit, try simpler patterns

Release files for rt82display 0.6.1

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

Source distribution (sdist)

Source distribution for rt82display 0.6.1
File Size Uploaded
rt82display-0.6.1.tar.gz 147.0 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for rt82display 0.6.1
File
rt82display-0.6.1-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
rt82display-0.6.1-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
rt82display-0.6.1-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details
rt82display-0.6.1-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details
rt82display-0.6.1-py3-none-manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64 Details
rt82display-0.6.1-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
rt82display-0.6.1-py3-none-macosx_10_9_x86_64.whl Python 3 none macOS 10.9+ x86-64 Details

Total release size: 1.3 MB

Release files / rt82display-0.6.1.tar.gz

Download URL rt82display-0.6.1.tar.gz
Size 147.0 kB
Tags Source
SHA-256 checksum
How to use checksums
aacf1388b3a3ffef689a6bb72ef763abdc7822434a2b2525a17655af58e746a5
BLAKE2b-256 checksum
How to use checksums
e2a658f23db4a5e4b43e87f7a2a8bceeb4f646cd14e53ee750b7b6117b61cdb9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Feb 24, 2026.

Transparency log

Release files / rt82display-0.6.1-py3-none-win_amd64.whl

Download URL rt82display-0.6.1-py3-none-win_amd64.whl
Size 212.5 kB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
11c14f9279df3c38c3a301ad54be5e7eb1e17092442cec16414a7befdd34c18c
BLAKE2b-256 checksum
How to use checksums
d1fbe40f3ee608fb0847ce58ca48c83d9b513706c5afd8a8ef2dbc1688050b63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Feb 24, 2026.

Transparency log

Release files / rt82display-0.6.1-py3-none-musllinux_1_2_x86_64.whl

Download URL rt82display-0.6.1-py3-none-musllinux_1_2_x86_64.whl
Size 153.7 kB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
a3f01df4664113a082c2a70478f2db388512cbc7d9675e8c2aa75b0477633716
BLAKE2b-256 checksum
How to use checksums
04331fca244ba83a229c0f099d19bdf4427f8fd6f146396009306713745a5764
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Feb 24, 2026.

Transparency log

Release files / rt82display-0.6.1-py3-none-musllinux_1_2_aarch64.whl

Download URL rt82display-0.6.1-py3-none-musllinux_1_2_aarch64.whl
Size 159.1 kB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
746ef07b29bba1b7d71b5af8d7519d9e66bea0bc969f622f759cecf86d6a1c24
BLAKE2b-256 checksum
How to use checksums
a46ca838e057bbaf1152738f9a8c7b285cd524cba386d2e1a112787512656aa4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Feb 24, 2026.

Transparency log

Release files / rt82display-0.6.1-py3-none-manylinux_2_28_x86_64.whl

Download URL rt82display-0.6.1-py3-none-manylinux_2_28_x86_64.whl
Size 152.7 kB
Tags Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
e47ec11d2db4ecdc7eedbe3e8dbc86fe68aff6d45c151477154164d5af8e8f70
BLAKE2b-256 checksum
How to use checksums
b87eb95c99ca3da245fd9de70780ddc3d82628d56456f97d6b09e340985cc338
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Feb 24, 2026.

Transparency log

Release files / rt82display-0.6.1-py3-none-manylinux_2_28_aarch64.whl

Download URL rt82display-0.6.1-py3-none-manylinux_2_28_aarch64.whl
Size 158.4 kB
Tags Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
688d085965564b57805e749b4b033f481a777830bcfd70299a135b667f0634a0
BLAKE2b-256 checksum
How to use checksums
ee222a2b67703f60e5b7b700d7e6691107d58997d999bdfcfbfde49d28c10aec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Feb 24, 2026.

Transparency log

Release files / rt82display-0.6.1-py3-none-macosx_11_0_arm64.whl

Download URL rt82display-0.6.1-py3-none-macosx_11_0_arm64.whl
Size 175.0 kB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e8f819be2f254b3982585e29540daac1e51ae0d84be8ee7a0032fe0e9e07f4b6
BLAKE2b-256 checksum
How to use checksums
66f7b5cdabe4a709846209dfe46276318bff6f86012486e2dea2e25f5fc0c736
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Feb 24, 2026.

Transparency log

Release files / rt82display-0.6.1-py3-none-macosx_10_9_x86_64.whl

Download URL rt82display-0.6.1-py3-none-macosx_10_9_x86_64.whl
Size 173.1 kB
Tags Python 3 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
9907de7e0b6fbdca1fe408f02c2bc0510b6330e90d4bde6e7a99c4e77764016a
BLAKE2b-256 checksum
How to use checksums
bb30741462745822d173a916d9ce2a8a6a8288784c22c6bae4eb4fe1c0dbfad9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Feb 24, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.1 This release

8 release files

0.6.0

8 release files

0.5.2

2 release files

0.1.0

2 release files

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