
liberte todo o poder dos seus soundcores! :)
um kit de ferramentas de código aberto para aplicar patches, modificar e aprimorar o firmware dos fones de ouvido soundcore da série q, com suporte futuro planejado para outros modelos.
nota: este projeto é minha jornada pessoal no mundo de engenharia reversa de hardware e sistemas embarcados. foi criado por um adolescente e estou aprendendo conforme avanço. espere bugs, erros e muita diversão. todas as contribuições e conselhos são bem-vindos!
este projeto está dividido em duas partes:
também criei um projeto de demonstração - um port de DOOM baseado no projeto DOOMBuds. confira também! =)
📚 leia a documentação completa 📚
este projeto foi iniciado com o soundcore life q35. se você quiser ajudar a testar ou adicionar suporte para um novo modelo, abra uma issue!
suporte para outros modelos é uma meta futura!
nota: dispositivos baseados nos chipsets
bes2300*, bes1502*, bes1600são os candidatos mais prováveis para suporte futuro.
openqore está apenas começando. aqui está um plano aproximado do que vem a seguir:
este guia pressupõe que você tenha python e git instalados no seu sistema.
1. baixe e extraia o arquivo zip dos releases
2. instale as dependências
o patcher requer ffmpeg para conversão de áudio e pybluez:
windows:
pip install git+https://github.com/pybluez/pybluez.git
winget install ffmpeg
macos:
pip install git+https://github.com/pybluez/pybluez.git
brew install ffmpeg
ubuntu/debian:
pip install git+https://github.com/pybluez/pybluez.git
sudo apt install ffmpeg
3. obtenha o arquivo de firmware
você pode baixar a imagem OTA aqui ou ler a flash com UART:
➡️ guia de hardware: conectando via UART
ler a flash via ota (over-the-air) está planejado para uma atualização futura. (se for possível :D)
4. parabéns!
você pode encontrar instruções de uso aqui
se você baixou a imagem de atualização ota dos servidores oficiais de atualização, selecione a opção "sem ota boot"
nota: se você aplicou o patch no firmware sem ota boot, você precisa adicioná-lo no cabeçalho do firmware com patch antes de fazer o flashing via UART. você NÃO precisa disso se estiver usando o script besota!
esta seção contém algumas das descobertas iniciais da engenharia reversa do firmware do q35.
os fones têm vários modos de teste ocultos. alguns deles podem ser úteis para atualizações futuras ou depuração.
modo de engenharia: para entrar neste modo, segure o botão de energia, conecte os fones a um pc via usb-c antes de ligá-los, e aguarde eles ligarem.
rfcomm: os fones têm duas portas de comunicação serial. uma delas é gravável. até agora, a única função que consegui acionar através desta porta é um UFR (explicação abaixo). isso parece ser uma medida de segurança, pois foi acionado por força bruta em vários códigos hex em vez de um comando específico. curiosamente, este não é o reset padrão (power + vol+) mas algo diferente.
modo de teste: este modo é acessado de forma semelhante ao modo de engenharia, mas você precisa soltar o botão de energia imediatamente após o led branco piscar pela primeira vez, antes da luz azul. os fones aparecerão então no pc como um dispositivo com erro de "solicitação de descritor de dispositivo falhou". você pode confirmar que está neste modo pelo led branco, que pisca mais rápido que o normal. seu propósito provavelmente está relacionado ao flashing de firmware. além disso, neste modo, os fones podem ser ligados enquanto carregam!
reset de fábrica não documentado (UFR): um reset de fábrica oculto pode ser acionado pressionando rapidamente o botão de energia várias vezes enquanto os fones estão ligados ou enviando algo na porta serial virtual (acima). isso fará o firmware travar e então forçar uma reinicialização após cerca de 30 segundos. observe que esta ação apagará todos os dados do usuário, incluindo configurações de equalizador, pareamentos bluetooth e outras configurações.
o firmware parece ser um binário monolítico dividido em várias seções. cada seção crítica é protegida por uma soma de verificação crc32. patchers futuros recalcularão automaticamente essas somas de verificação após qualquer modificação para evitar falhas de inicialização.
contribuições são o que tornam a comunidade de código aberto um lugar incrível para aprender, inspirar e criar. qualquer contribuição que você fizer é muito apreciada.
se você tiver uma sugestão que possa melhorar isso, por favor, faça um fork do repositório e crie um pull request. você também pode simplesmente abrir uma issue com a tag "enhancement". não se esqueça de dar uma estrela ao projeto! obrigado novamente!
git checkout -b feature/amazing-feature).git commit -m 'feat: add some amazing feature').git push origin feature/amazing-feature).se você acha este projeto útil e quer apoiar seu desenvolvimento futuro, você pode me pagar um café ou alguns lanches via boosty! toda contribuição é muito apreciada e me ajuda a dedicar mais tempo ao openqore.
este projeto foi trazido à vida com o uso extensivo de assistentes de codificação com ia (como claude e chatgpt). enquanto a engenharia reversa principal, a pesquisa e as decisões arquiteturais foram feitas pelo autor, a ia desempenhou um papel crucial em acelerar o processo de desenvolvimento, escrever código boilerplate e depurar.
este é um projeto moderno construído com ferramentas modernas.
este projeto é licenciado sob a licença mit. você pode encontrar o texto completo da licença no arquivo license.
| modelo | chipset | status |
|---|
| soundcore life q35 | bes2300p | ✅ suportado |
| soundcore life q30 | bes2300p | ❔ deve funcionar, mas precisa de testes |
| soundcore life tune pro | bes2300p | ❔ deve funcionar, mas precisa de testes |
| soundcore life tune | bes2300p | ❔ deve funcionar, mas precisa de testes |
| soundcore life q20i | bes2300p | ❔ deve funcionar, mas precisa de testes |
| soundcore space one | bes1502x | ❌ em andamento |
16khz, mono, SBC.48khz, estéreo. isso melhora significativamente a qualidade dos sons personalizados.bes2300p da bestechnic (bes, best). uma folha de dados pode ser encontrada pesquisando.uart está disponível na pcb, que foi usada para depuração inicial e é o método principal para desbricar um dispositivo após um flash ruim. o chip bes2300p em si tem duas portas uart, mas apenas uma delas é exposta como pads facilmente acessíveis na pcb.