Skip to content

EricOFreitas/attackshark-x85pro-linux

Repository files navigation

xshark

CI status python license

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.

Modelos

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-time e set-gif funcionando no X85 Pro. O protocolo da tela (reversado pelo AttackManatee para o K86) é compatível com o X85 Pro. Veja docs/PROTOCOL.md.

Por que existe

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.

Hardware alvo

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

Como ajudar a reversar (você não precisa de Windows)

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.

Instalação (dev)

# 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 .

Uso

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 pasta

A telinha não guarda playlist — o playlist fica reenviando cada imagem a cada --interval segundos (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.

Sincronizar a hora automaticamente (systemd user)

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.timer

Próximos passos

Ideias e tarefas futuras estão em ROADMAP.md (bateria, brilho, PyPI, refino do GIF…).

Desenvolvimento e testes

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.

Créditos

Protocolo da tela reversado pelo projeto AttackManatee (K86). Este repo confirma a compatibilidade com o X85 Pro e empacota como CLI/serviço Linux.

Licença

MIT.

About

Driver/CLI Linux para a tela TFT do teclado Attack Shark X85 Pro — acerta o relogio sem app Windows

Topics

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors