Tem Orange Pi ou PC na portaria? Use o outro guia: https://gist.github.com/denoww/704d4edc52fb84212317c632a0aa27e5
Funciona em qualquer Android 7+ (SDK 24+) — testado em Pro Eletronic PROSB-3000 e modelos similares de TV Box. Quando o condomínio já tem TV de signage (corpflix), ela pode acumular o papel do turbgate sem hardware adicional.
Tempo total: ~5 min por TV.
# 1. baixa o script (mantenedor faz isso 1 vez)
curl -fsSL https://turbgate.botbox.info/turbgate-android-setup.sh -o ~/turbgate-android-setup.sh
chmod +x ~/turbgate-android-setup.sh
# 2. provisiona a TV (1 comando por TV)
bash ~/turbgate-android-setup.sh <ip-da-tv> <token>O script faz tudo: emite o certificado mTLS no ERP, baixa o APK mais recente, instala via ADB, injeta as credenciais via Intent e sobe o serviço. Em ~10s aparece no modal Tunnels Ativos do ERP.
⚠️ Pré-condição na TV: ADB sobre rede habilitado (porta 5555). Veja passo 3 se ainda não tiver ativado.
No laptop do mantenedor (Linux ou macOS):
adbinstalado — Android SDK Platform Tools (descompacta o.zipe adiciona noPATH, ou rode com path completo)curl,jq,bash(vêm padrão)- Acesso à rede do cliente (cabo ou WiFi na mesma LAN da TV)
Na TV:
- Android 7+ (qualquer marca: Pro Eletronic, Xiaomi Mi Box, Chromecast Google TV, etc)
- Cabo de rede ou WiFi configurado
- ADB sobre rede ativado (passos abaixo) — só precisa fazer 1x
Do gestor:
- O
<token>gerado no ERP (32 caracteres, ver "Onde achar o token")
- Logado no ERP, vai em Equipamentos do cliente
- Menu ⋮ → "Ver Tunnels Ativos"
- Modal abre com seção "Token de instalação"
- Clica em Copiar — token de 32 caracteres tipo
cc2d85d7a1... - Manda esse token pro mantenedor via WhatsApp/email
O token é único por cliente e automaticamente reutilizável (1 token serve pra TODOS os equipamentos daquele cliente, independente da plataforma). Nunca expira sozinho — só se você clicar "Regenerar" no modal (que invalida instalações antigas).
⚠️ Cuidado: regenerar token derruba todos os turbgates existentes do cliente. Eles param de comunicar com o ERP em ~1min e precisam ser reinstalados com o token novo. Só regenere em caso de vazamento confirmado.
1. Habilita Modo Desenvolvedor na TV (1x — pula se já fez):
- Settings (Configurações) → Sobre / Sobre o dispositivo
- Procura Número da versão / Build number e toca 7 vezes seguidas
- Aparece toast "Você é agora um desenvolvedor"
2. Habilita ADB sobre rede:
- Volta em Settings → procura Opções do desenvolvedor (apareceu agora)
- Ativa o switch "Depuração por USB" (ou "USB debugging")
- Ativa o switch "Depuração por rede" ou "ADB sobre rede / Wireless debugging" (o nome muda por modelo)
- Anota o IP da TV que aparece nessa tela (ex:
192.168.1.50). Se não aparecer, veja como achar o IP abaixo.
Em algumas TVs Pro Eletronic / Allwinner, a opção pode estar em Settings → Sistema → Sobre → Build ou Settings → Aplicativos → Sistema → Opções de rede ADB. Se não encontrar pelo D-pad, peça print da tela de Settings ao zelador via WhatsApp.
3. No laptop do mantenedor, baixa o script (só na 1ª vez):
curl -fsSL https://turbgate.botbox.info/turbgate-android-setup.sh -o ~/turbgate-android-setup.sh
chmod +x ~/turbgate-android-setup.sh4. Roda o setup passando o IP da TV e o token:
bash ~/turbgate-android-setup.sh <ip-da-tv> <token>Exemplo real:
bash ~/turbgate-android-setup.sh 192.168.1.50 cc2d85d7a1b9...O script vai:
- Conectar via ADB na TV (porta
5555) - Emitir certificado mTLS no ERP usando seu token
- Instalar o APK
turbgate.apk(baixa dehttps://turbgate.botbox.info/turbgate.apk) - Passar as credenciais via Intent (sem mexer em
/sdcard— usa Binder do Android) - Iniciar o
TurbgateService(ForegroundService permanente)
Output esperado nas últimas linhas:
✓ pronto. APK instalado e provisionado.
cliente_id: 6353 server: turbgate.botbox.info:7000
5. Na 1ª execução, a TV pode mostrar popup "Permitir Depuração USB?" com o fingerprint do seu laptop:
- Marca "Sempre permitir deste computador"
- Clica OK no controle da TV
Se o popup não aparecer, é porque a TV já tinha autorizado seu laptop em sessão anterior — segue direto.
6. Confirma que o tunnel subiu (no laptop, monitor o logcat):
adb -s <ip-da-tv>:5555 logcat -d | grep -E "TurbgateService|welcome|self-tunnel"Deve aparecer:
TurbgateService: spawn .../libturbgate.so run --config .../turbgate.yaml
TurbgateService: welcome session_id=c<cliente_id>-...
TurbgateService: self-tunnel up — adb connect turbgate1.botbox.info:<PORTA>
Em ~10s a TV aparece no modal Tunnels Ativos do ERP com o ID do tunnel = MAC da interface ativa.
7. Confirma o acesso remoto à TV (a partir do seu laptop, fora da rede do cliente):
adb connect turbgate1.botbox.info:<porta-do-self-tunnel>
adb -s turbgate1.botbox.info:<porta> shell logcat | grep turbgateA porta exata aparece na coluna "SSH no equipamento" do modal Tunnels Ativos no ERP (em Android, o comando exibido é adb connect ..., não ssh -p ...).
Se conectar, pronto — entrega pro cliente.
Se a tela de ADB não mostrou o IP, ou se você está descobrindo as TVs do cliente:
Linux / macOS:
nmap -p 5555 --open -T4 -n 192.168.1.0/24Lista hosts com porta 5555 aberta (= ADB sobre rede ativo).
Painel do roteador: procura por hostname com android, tv, box, ou o modelo (prosb, mibox).
Direto na TV: Settings → Rede → Wi-Fi/Ethernet → Endereço IP (mostra na própria UI).
Sim, suporta. Cada TV vira um device tunelado dentro do mesmo cliente_id. Repita os passos 1-5 em cada TV usando o mesmo token. Cada uma vai ter um MAC diferente e aparecer separadamente no modal Tunnels Ativos.
Importante: 1 só
cliente_idpor máquina turbgate. Se você instalar com o mesmo token em 2 TVs do mesmo cliente, a segunda derruba a primeira (registerSession 1-por-cliente_id). Use o token só pra rodar o setup — pra ter 2 TVs ativas simultâneas, cada uma precisa de um cliente real cadastrado no ERP.
A TV consulta https://turbgate.botbox.info/manifest.json a cada 30 min e se aplica via PackageInstaller quando há versão nova. Mesma estratégia do Linux/Windows.
⚠️ Em devices sem Device Owner (Pro Eletronic PROSB-3000, etc), o install do APK exige tap "Instalar" no controle da TV. Não é totalmente silencioso. Em Mi Box / Chromecast Google TV com conta Google, o update é silencioso.
| Sintoma | O que checar |
|---|---|
failed to connect to '<ip>:5555' |
ADB sobre rede não tá ativo na TV (passo 2) ou IP errado. Confirma na própria TV em Settings → Sobre. |
unauthorized no adb devices |
Popup de autorização na TV — clica Permitir no controle |
install: Failure [INSTALL_FAILED_*] |
Versão antiga do APK instalada com assinatura diferente. Rode adb -s <ip>:5555 uninstall info.botbox.turbgate e tente de novo |
cliente desconectado em loop nos logs |
Outro turbgate (Orange Pi, PC) tem o mesmo cliente_id brigando pela sessão. Pare o outro ou use outro cliente_id |
ADB connection refused mas TV liga |
Algumas TVs perdem ADB sobre rede após reboot. Habilite de novo no passo 2. Em produção, considere se TV é o equipamento certo pro turbgate desse cliente |
| TV não aparece no modal Tunnels Ativos | Internet do cliente bloqueando porta 7000? Testa de outro lugar: nc -zv turbgate.botbox.info 7000 |
Manda print do erro no grupo do suporte que a gente resolve junto.
Android Box/TV não vem com servidor SSH. O equivalente nativo de "shell remoto" no Android é o ADB — protocolo Google que já gerencia auth (chave RSA), push/pull de arquivos, shell, logcat, am start, pm install, tudo. O self-tunnel do turbgate aponta pra porta ADB local (5555) do device, e o mantenedor remoto se conecta via:
adb connect turbgate1.botbox.info:<porta-pública>
adb shell logcat | grep turbgate
adb shell pm dump info.botbox.turbgateRisco: se a chave RSA do seu laptop vazar, qualquer um pode conectar nessa porta pública. Mantenha ~/.android/adbkey com permissão 600 e nunca commite num repo.