Llucs/ZodinLinux(opens in a new tab)
Language: Python
Flash tool for Samsung devices, with graphical interface for Linux
- stars
- 2
- watchers
- 0
- forks
- 0
- open issues
- 0
- Last updated
- 09/21/2025
Language: Python
Flash tool for Samsung devices, with graphical interface for Linux
The Ultimate Samsung Flash Tool for Linux
Uma ferramenta revolucionária que combina o conhecimento das melhores ferramentas de flash Samsung em uma experiência única e moderna
🚀 Instalação • 📖 Documentação • 🎯 Características • 🤝 Contribuição
O Zodin Flash Tool representa uma nova era nas ferramentas de flash Samsung para Linux. Diferente de outras soluções que dependem de binários externos ou adaptações de ferramentas Windows, o Zodin implementa seus próprios protocolos de comunicação Samsung, oferecendo uma experiência nativa, moderna e altamente otimizada.
A interface do Zodin foi projetada do zero com foco na experiência do usuário. Utilizando PyQt6 e animações fluidas, oferece uma experiência visual moderna que rivaliza com as melhores aplicações desktop atuais.
Com implementação própria dos protocolos Samsung, o Zodin oferece comunicação direta com dispositivos, eliminando dependências externas e proporcionando maior controle sobre o processo de flash.
Diferente de outras ferramentas que são wrappers ou adaptações, o Zodin implementa diretamente os protocolos Samsung:
O Zodin Flash Tool inclui um script de instalação automática que configura todas as dependências e permissões necessárias:
# Clone o repositório git clone https://github.com/Llucs/ZodinLinux.git cd ZodinLinux/zodin-flash-tool # Execute o instalador chmod +x install.sh ./install.sh
O script de instalação irá:
Para usuários avançados que preferem controle total sobre a instalação:
Ubuntu/Debian:
sudo apt update
sudo apt install python3 python3-pip python3-venv python3-dev \
libusb-1.0-0-dev libudev-dev pkg-config \
lz4 usbutils git curl wget build-essentialFedora/CentOS/RHEL:
sudo dnf install python3 python3-pip python3-devel \
libusb1-devel systemd-devel pkgconfig \
lz4 usbutils git curl wget gcc gcc-c++ makeArch Linux/Manjaro:
sudo pacman -S python python-pip python-virtualenv \
libusb systemd lz4 usbutils git curl wget base-devel# Clone o repositório git clone https://github.com/Llucs/ZodinLinux.git cd ZodinLinux/zodin-flash-tool # Crie ambiente virtual python3 -m venv zodin-env source zodin-env/bin/activate # Instale dependências Python pip install -r requirements.txt # Configure permissões USB (requer sudo) sudo tee /etc/udev/rules.d/99-samsung-zodin.rules > /dev/null << 'EOF' SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev" EOF # Adicione seu usuário ao grupo plugdev sudo usermod -a -G plugdev $USER # Recarregue regras udev sudo udevadm control --reload-rules sudo udevadm trigger
Para ambientes containerizados ou testes isolados:
# Build da imagem docker build -t zodin-flash-tool . # Execute com acesso USB docker run --privileged -v /dev/bus/usb:/dev/bus/usb \ -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix \ zodin-flash-tool
Após a instalação, verifique se tudo está funcionando:
# Teste a detecção de dispositivos zodin-flash-tool --check-devices # Verifique as dependências zodin-flash-tool --check-deps # Execute a interface gráfica zodin-flash-tool
Ative o Modo Desenvolvedor no seu dispositivo Samsung:
Configurações > Sobre o telefoneOpções do desenvolvedorDepuração USB e Desbloqueio OEMEntre no Modo Download:
Volume Down + Power + Home (ou Volume Down + Power em dispositivos mais novos)Volume Up para confirmarInicie o Zodin Flash Tool:
zodin-flash-tool
Verifique a Detecção do Dispositivo:
Selecione os Arquivos de Firmware:
Configure as Opções:
Inicie o Flash:
Para automação ou uso em scripts:
# Flash básico com arquivo TAR zodin-flash-tool --flash firmware.tar --auto-reboot # Flash de partições específicas zodin-flash-tool --flash-bl bootloader.bin --flash-ap system.tar # Backup antes do flash zodin-flash-tool --backup-all --flash firmware.tar # Verificação de integridade zodin-flash-tool --verify firmware.tar # Informações do dispositivo zodin-flash-tool --device-info # Dump da tabela PIT zodin-flash-tool --dump-pit device.pit
O Zodin Flash Tool é construído com uma arquitetura modular e extensível:
zodin-flash-tool/
├── zodin_flash_tool.py # Interface principal PyQt6
├── samsung_protocol.py # Implementação do protocolo Samsung
├── flash_engines.py # Engines de flash (removido - agora nativo)
├── install.sh # Script de instalação automática
├── requirements.txt # Dependências Python
└── docs/ # Documentação adicional
1. Interface Gráfica (zodin_flash_tool.py)
2. Protocolo Samsung (samsung_protocol.py)
3. Sistema de Flash
O Zodin cria um arquivo de configuração em ~/.config/zodin-flash-tool/config.json:
{
"interface": {
"theme": "auto",
"language": "pt_BR",
"animations": true,
"auto_detect_devices": true
},
"flash": {
"verify_integrity": true,
"auto_backup": false,
"chunk_size": 1048576,
"timeout": 30000
},
"advanced": {
"debug_mode": false,
"log_level": "INFO",
"usb_timeout": 5000
}
}# Ativa modo debug export ZODIN_DEBUG=1 # Define nível de log export ZODIN_LOG_LEVEL=DEBUG # Timeout personalizado para USB export ZODIN_USB_TIMEOUT=10000 # Diretório de configuração personalizado export ZODIN_CONFIG_DIR=/path/to/config
Para dispositivos com problemas de detecção, você pode ajustar as regras udev:
# Edite o arquivo de regras sudo nano /etc/udev/rules.d/99-samsung-zodin.rules # Adicione IDs específicos do seu dispositivo SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="XXXX", MODE="0666"
1. Dispositivo não detectado
# Verifique se o dispositivo está em modo download lsusb | grep Samsung # Verifique permissões groups $USER | grep plugdev # Recarregue regras udev sudo udevadm control --reload-rules
2. Erro de permissão USB
# Adicione usuário ao grupo plugdev sudo usermod -a -G plugdev $USER # Faça logout e login novamente # Ou execute: newgrp plugdev
3. Falha na verificação de integridade
# Verifique se existe arquivo .md5 ls -la firmware.tar.md5 # Calcule MD5 manualmente md5sum firmware.tar
4. Interface não inicia (erro Qt)
# Instale dependências Qt sudo apt install python3-pyqt6 # Ou use ambiente virtual pip install PyQt6
Para obter logs detalhados:
# Execute com debug ativado ZODIN_DEBUG=1 zodin-flash-tool # Ou salve logs em arquivo zodin-flash-tool --debug --log-file zodin.log
Se o dispositivo ficar em estado inconsistente:
# Tente entrar em modo download novamente # Volume Down + Power + Home # Use modo de recuperação zodin-flash-tool --recovery-mode # Em último caso, use modo emergency zodin-flash-tool --emergency-flash
# Clone o repositório git clone https://github.com/Llucs/ZodinLinux.git cd ZodinLinux/zodin-flash-tool # Crie ambiente virtual python3 -m venv dev-env source dev-env/bin/activate # Instale dependências de desenvolvimento pip install -r requirements.txt pip install pytest black flake8 mypy # Instale em modo desenvolvimento pip install -e .
# Testes unitários pytest tests/ # Testes de integração pytest tests/integration/ # Testes com dispositivo real (cuidado!) pytest tests/device/ --device-tests # Cobertura de código pytest --cov=zodin_flash_tool tests/
O projeto segue padrões rigorosos de qualidade:
# Formatação automática black zodin_flash_tool.py samsung_protocol.py # Verificação de estilo flake8 *.py # Verificação de tipos mypy *.py
git checkout -b feature/nova-funcionalidade)git commit -am 'Adiciona nova funcionalidade')git push origin feature/nova-funcionalidade)Para adicionar suporte a novos dispositivos Samsung:
# Em samsung_protocol.py, adicione o ID do dispositivo SAMSUNG_DEVICES = { 0x6601: "Download Mode", 0x685d: "Download Mode (Newer)", 0xNOVO: "Seu Novo Dispositivo", # Adicione aqui }
A interface é altamente customizável via CSS-like styling:
# Exemplo de novo tema def apply_dark_theme(self): self.setStyleSheet(""" QMainWindow { background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #2c3e50, stop:1 #34495e); } /* Seus estilos personalizados */ """)
O Zodin Flash Tool é um projeto open source e sua contribuição é muito bem-vinda! Existem várias formas de contribuir:
feature/nova-funcionalidade)Todos os contribuidores são reconhecidos no projeto:
MIT License
Copyright (c) 2024 Zodin Flash Tool Project
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
IMPORTANTE: O Zodin Flash Tool é uma ferramenta poderosa que modifica firmware de dispositivos. O uso inadequado pode resultar em:
Use por sua conta e risco. Os desenvolvedores não se responsabilizam por danos causados pelo uso desta ferramenta.
O Zodin Flash Tool foi inspirado e construído sobre o conhecimento de várias ferramentas e projetos da comunidade:
Desenvolvido com ❤️ para a comunidade Linux