Maheidem/gigabyte-gpu-lcd

GitHub: Maheidem/gigabyte-gpu-lcd

Stars: 0 | Forks: 0

# gigabyte-gpu-lcd 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. ## Status - Tested hardware: Gigabyte AORUS GeForce RTX 5090 MASTER ICE 32G. - Protocol family: old GCC `GvLcdApi`, not the newer `GvLcdExApi`. - 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: . No Gigabyte binaries, assets, or firmware are included. ## Install locally 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. ## Probe the LCD sudo -E .venv/bin/gigabyte-lcd probe Expected on the tested RTX 5090: target: /dev/i2c-3 addr 0x61 firmware: F1.4 ## Send exact text sudo -E .venv/bin/gigabyte-lcd send-text $'LOCAL LLM\nREADY' --write Use this path for status screens and anything where exact pixels matter. ## Send local inference status sudo -E .venv/bin/gigabyte-lcd send-status --write The 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: CPU % VRAM G PWR W ## Send animation 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 --write Animated commands upload an RLE GIF payload and force display mode `5`. ## Render without touching hardware 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 12 Use `--preview` and `--payload-out` to choose output paths. ## Safety notes - 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. - `--write` is required before the CLI sends any LCD upload. - `send-text --vendor-text-slot` exists only for protocol testing. It can show a rainbow/effect overlay on the tested card even after metric overlay flags are cleared. ## Documentation - [Protocol](docs/protocol.md) - [Hardware notes](docs/hardware-notes.md) - [Lessons learned](docs/lessons-learned.md) - [Publishing checklist](docs/publish.md)