Files
RuiFPBandClaude Bot 097074a4a6 Uploading files
Co-authored-by: Claude <noreply@anthropic.com>
2026-10-05 00:46:26 +01:00

5.5 KiB

AGENTS.md: Epifah

Contexto do projeto para qualquer LLM/agente (Claude, ChatGPT, Cursor, etc.) ou pessoa nova. Lê isto primeiro. Plano completo em docs/PROJECT.md.

Resumo em 3 linhas

Epifah é o nome do projeto (slug epifah, package id pt.ruifpb.epifah, domínio ruifpb.pt).

Projeto de reverse engineering de interoperabilidade: perceber como a app Aha Radio (Harman, serviço cloud morto) comunica com o MediaNav Evolution de um Renault Clio IV e escrever uma app Android moderna que fale o mesmo protocolo, para mostrar e controlar conteúdo atual (rádios web, podcasts, biblioteca local, etc.) no ecrã do carro.

Ambiente do dono (preencher/atualizar)

  • Carro: Renault Clio IV, MediaNav Evolution, sem Android Auto/CarPlay na unidade
  • Versão hardware/software do MediaNav: TODO
  • Telemóvel / versão Android: TODO
  • Versão do APK Aha Radio (instalado à força): TODO
  • Ligação testada: Bluetooth. USB: nunca testado
  • Sistema de trabalho (SO, ferramentas instaladas): TODO
  • Gitea self-hosted: TODO url (domínio do dono: ruifpb.pt)

Estado atual

Fase 0 (ver docs/PROJECT.md). Atualizar esta secção no fim de cada sessão de trabalho.

  • Descobertas confirmadas: nenhuma ainda
  • Em curso: TODO
  • Próximo passo: análise do manifest e strings do APK (UUIDs RFCOMM, classes de comunicação)

Hipóteses de trabalho (NÃO são factos)

  1. Controlo via Bluetooth RFCOMM/SPP com UUID próprio; áudio via A2DP separado. (Baseado em manuais Kenwood e Kia da plataforma Aha, não no MediaNav em si.)
  2. O carro mostra um template fixo (estações, now playing, presets).
  3. Protocolo binário com framing; autenticação desconhecida.

Regras para o agente

  1. Não inventes detalhes de protocolo. Se não há evidência (captura, hook, código lido), diz "não sei" e propõe como descobrir. Distingue sempre confirmado, hipótese e desconhecido.
  2. Toda a afirmação sobre o protocolo deve apontar para evidência: ficheiro de captura + offset/frame, ou classe/método do APK. Sem evidência, entra como hipótese.
  3. Legal: nunca pedir nem produzir cópias do APK/código da Harman nem texto descompilado extenso. Escrever implementação de raiz e documentação nas nossas palavras. Não ajudar a contornar DRM de conteúdo nem a aceder a serviços de terceiros sem autorização.
  4. Privacidade: capturas e logs têm de ser sanitizados (MAC, tokens, credenciais, localização) antes de commit.
  5. Âmbito: só equipamento do próprio dono, só interoperabilidade. Sem alterar firmware/ECUs do carro.
  6. Prefere o caminho mais simples que dê resultado (ex.: confirmar se AVRCP browsing resolve parte do problema antes de investir em reimplementar o protocolo).
  7. Não dar passos destrutivos sem avisar (flash, adb com root, alterações ao carro).
  8. Se uma informação for sobre versões, preços ou estado atual de serviços/SDKs, verificar online em vez de confiar na memória.

Marca e nomes

  • Nome: Epifah. Descrição oficial: "Reimplementação independente do protocolo da app legada Aha Radio. Não afiliada à Harman nem à Renault."
  • Nunca usar Aha, Harman, Renault, Clio, MediaNav, R-Link em nomes de pacotes, classes públicas, app, ícone ou repo. Só em documentação, de forma descritiva.
  • Sem logótipos nem cores que lembrem essas marcas.

Convenções

  • Idioma: português de Portugal em docs, issues e commits. Código e identificadores em inglês.
  • Commits: Conventional Commits (feat:, fix:, docs:, chore:).
  • Descobertas: uma nota por tema em docs/findings/ (modelo em docs/PROJECT.md, secção 9).
  • Decisões importantes: ADR curto em docs/decisions/.
  • Android: Kotlin, minSdk a definir com base no telemóvel do dono.
  • Protótipos de protocolo em Python (prototype/), com testes sobre capturas reais.

Estrutura do repo

docs/PROJECT.md      plano, riscos, fases
docs/findings/       notas de descobertas
docs/protocol/       especificação do protocolo (SPEC.md, handshake.md)
docs/captures/       capturas SANITIZADAS + README de cenários
docs/decisions/      ADRs
tools/               scripts Frida e helpers de análise
prototype/           PoC Python
app/                 app Android

Nunca commitar: *.apk, jadx-out/, apktool-out/, capturas não sanitizadas.

Contexto técnico útil

  • Ferramentas previstas: jadx, apktool, Wireshark (RFCOMM/SDP), Frida (hook de BluetoothSocket input/output streams), mitmproxy (dependências de rede), adb.
  • Captura BT em Android: ativar Bluetooth HCI snoop log nas opções de programador e extrair btsnoop_hci.log.
  • Fonte de conteúdo gratuita para testes: radio-browser.info (rádios web).
  • Projetos relacionados (inspiração, não resolvem este problema): ddt4all, projetos Hackaday sobre o protocolo CAN do display Renault. Não existe, até à data da pesquisa, nenhum projeto público que documente o protocolo Aha.

Perguntas em aberto

  • O carro inicia a ligação RFCOMM ou é o telemóvel?
  • Há autenticação/assinatura no handshake?
  • Há código nativo (.so) no caminho do protocolo?
  • O MediaNav suporta AVRCP 1.4 com browsing?
  • Existe atualização de firmware oficial que ative Android Auto nesta unidade?
  • A app Aha precisa da cloud para o carro funcionar (login, listas de estações)?

Como retomar uma sessão

Ao começar uma nova conversa: lê este ficheiro e docs/PROJECT.md, resume o estado em 5 linhas, confirma o próximo passo comigo e pede-me só o que falta (ficheiros, outputs de comandos, capturas).