Linux control library and CLI for the LCD on Gigabyte AORUS GPUs.
This repository captures the working protocol recovered on a Gigabyte AORUS
GeForce RTX 5090 MASTER ICE. The tested LCD controller is on Linux I2C bus
/dev/i2c-3, 7-bit address 0x61, and reports firmware F1.4.
The package intentionally renders normal text and status screens into the static image slot. On the tested card, the vendor text slot can apply panel-side effects over the uploaded pixels. Static image mode is the reliable path for exact white text on a black background.
- Tested hardware: Gigabyte AORUS GeForce RTX 5090 MASTER ICE 32G.
- Protocol family: old GCC
GvLcdApi, not the newerGvLcdExApi. - Static image uploads: working.
- GIF/RLE animation uploads: working.
- Vendor metric overlay clearing: working.
- Vendor text slot: mapped, but not recommended for exact output.
- Published repository: https://github.com/Maheidem/gigabyte-gpu-lcd.
No Gigabyte binaries, assets, or firmware are included.
cd ~/gigabyte-gpu-lcd
python3 -m venv .venv
.venv/bin/python -m pip install -e '.[dev]'Most hardware writes need permission to open /dev/i2c-N. Use root, sudo, or an
appropriate local udev/i2c group rule.
sudo -E .venv/bin/gigabyte-lcd probeExpected on the tested RTX 5090:
target: /dev/i2c-3 addr 0x61
firmware: F1.4
This renders the text into a 320x170 bitmap, uploads it to the static image
slot at 0x01300000, clears the metric overlay, locks the carousel to image
mode, and forces display mode 3.
sudo -E .venv/bin/gigabyte-lcd send-text $'LOCAL LLM\nREADY' --writeUse this path for status screens and anything where exact pixels matter.
sudo -E .venv/bin/gigabyte-lcd send-status --writeThe status renderer checks local OpenAI-compatible model endpoints, process CPU,
and nvidia-smi:
- vLLM model endpoint:
127.0.0.1:8082/v1/models - llama.cpp model endpoint:
127.0.0.1:8081/v1/models - proxy fallback endpoint:
127.0.0.1:8080/v1/models - GPU VRAM and watts:
nvidia-smi
The panel text layout is:
<engine>
<model>
CPU <percent>% VRAM <GiB>G
PWR <watts>W
sudo -E .venv/bin/gigabyte-lcd send-rainbow-text "LOCAL LLM READY" --write
sudo -E .venv/bin/gigabyte-lcd send-status --animated --write
sudo -E .venv/bin/gigabyte-lcd send-gif /path/to/animation.gif --max-frames 60 --writeAnimated commands upload an RLE GIF payload and force display mode 5.
Every renderer writes a PNG preview and binary payload by default:
.venv/bin/gigabyte-lcd render-text $'LOCAL LLM\nREADY'
.venv/bin/gigabyte-lcd render-status
.venv/bin/gigabyte-lcd render-status --animated
.venv/bin/gigabyte-lcd render-image /path/to/image.png
.venv/bin/gigabyte-lcd render-gif /path/to/animation.gif --max-frames 12Use --preview and --payload-out to choose output paths.
- This talks directly to GPU-attached I2C. Use it only on hardware you control.
- The default target is the tested card:
--bus 3 --addr 0x61 --device-id 0x21. - Do not assume other Gigabyte GPU generations use the same bus, address, or upload addresses.
--writeis required before the CLI sends any LCD upload.send-text --vendor-text-slotexists only for protocol testing. It can show a rainbow/effect overlay on the tested card even after metric overlay flags are cleared.