Driver/CLI open-source em Linux para o teclado Attack Shark X85 Pro (e parentes com a mesma telinha TFT): acertar o relógio da tela e enviar imagens/GIFs, sem depender do app oficial Windows/Mac.
Projeto hobby, distribuído como está (as-is). Funciona e resolve o que eu precisava, mas não há garantia de manutenção nem promessa de novos recursos. Use à vontade; PRs são bem-vindos, mas podem demorar ou não ser respondidos.
| Modelo | VID:PID | set-time |
|---|---|---|
| X85 Pro | 3151:5002 |
✅ set-time + set-gif (tela 138×180) |
| K86 | 3151:4015 |
↗ via AttackManatee (tela 240×135) |
| outros Attack Shark com tela | ? | reporte aqui |
✅
set-timeeset-giffuncionando no X85 Pro. O protocolo da tela (reversado pelo AttackManatee para o K86) é compatível com o X85 Pro. Vejadocs/PROTOCOL.md.
O app oficial ("ATTACK SHARK WEB") exige um helper nativo iot_manager_rs que só tem build
para Windows e Mac. No Linux a telinha fica órfã — inclusive com o relógio errado e sem
como sincronizar. Este projeto resolve isso no Linux puro.
| Item | Valor |
|---|---|
| Modelo | Attack Shark X85 Pro |
| USB VID:PID | 3151:5002 |
| Canal de controle | interface vendor, usage page 0xFFFF, Feature reports de 64 bytes |
| Parente conhecido | K86 (3151:4015) — protocolo reversado em Jinori/AttackManatee |
A ideia é capturar os bytes que o app oficial manda ao acertar a hora, usando o próprio
Chrome no Linux com um hook em HIDDevice.prototype.sendFeatureReport. Passo a passo em
tools/webhid-capture.js.
# dependência de sistema (lib C do hidapi)
sudo apt install libhidapi-hidraw0 # Debian/Ubuntu
# regra udev p/ acessar o dispositivo sem root
sudo cp tools/99-attackshark.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger
# ambiente Python
python3 -m venv .venv && source .venv/bin/activate
pip install -e .xshark probe # lista o dispositivo e lê um feature report
xshark set-time # ✅ sincroniza o relógio da tela com o do sistema
xshark set-gif a.png # ✅ envia imagem (PNG/JPG) para a tela
xshark set-gif a.gif # ✅ envia GIF animado (multi-frame, em loop)
xshark playlist ~/telinha --interval 30 [--shuffle] # rotaciona imagens/GIFs de uma pastaA telinha não guarda playlist — o
playlistfica reenviando cada imagem a cada--intervalsegundos (Ctrl+C para parar). Cada envio leva alguns segundos, então use intervalos folgados.
A tela do X85 Pro é 138×180, RGB565 big-endian, column-major (frame de 49680 bytes), mas
só 138×126 são visíveis (as linhas de baixo ficam off-screen). As imagens já respeitam
essa área; use --fit para preservar a proporção (letterbox). Geometria decifrada por
calibração visual — ver docs/PROTOCOL.md. Outros modelos: ajuste com
--width/--height/--xoff.
A tela mantém a hora sozinha, mas pode dessincronizar se a bateria interna zerar. Para corrigir no boot e a cada 6h:
mkdir -p ~/.config/systemd/user
cp systemd/xshark-synctime.* ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now xshark-synctime.timerIdeias e tarefas futuras estão em ROADMAP.md (bateria, brilho, PyPI, refino do GIF…).
pip install -e ".[dev]"
ruff check . # lint
pytest -q # testes das funções puras (protocolo + encoding, sem hardware)Os comandos que tocam o hardware (
set-time,set-gif) foram validados ao vivo no X85 Pro. Os testes cobrem a montagem de pacotes e o encoding RGB565, que é onde mora a lógica.
Protocolo da tela reversado pelo projeto AttackManatee (K86). Este repo confirma a compatibilidade com o X85 Pro e empacota como CLI/serviço Linux.
MIT.