
scatena tutto il potere dei tuoi soundcores! :)
un toolkit open-source per patchare, modificare e migliorare il firmware delle cuffie soundcore della serie q, con il supporto futuro per altri modelli in programma.
nota: questo progetto è il mio viaggio personale nel mondo del reverse-engineering hardware e dei sistemi embedded. è stato creato da un adolescente e sto imparando strada facendo. aspettatevi bug, errori e tanto divertimento. tutti i contributi e i consigli sono benvenuti!
questo progetto è diviso in due parti:
ho creato anche un progetto demo - un porting di DOOM basato sul progetto DOOMBuds. dai un'occhiata anche a quello! =)
📚 leggi la documentazione completa 📚
questo progetto è iniziato con le soundcore life q35. se vuoi aiutare a testare o ad aggiungere il supporto per un nuovo modello, apri una issue!
il supporto per altri modelli è un obiettivo futuro!
nota: i dispositivi basati sui chipset
bes2300*, bes1502*, bes1600sono i candidati più probabili per il supporto futuro.
openqore è appena all'inizio. ecco un piano approssimativo di ciò che verrà dopo:
questa guida presuppone che tu abbia python e git installati sul tuo sistema.
1. scarica ed estrai l'archivio zip dalle releases
2. installa le dipendenze
il patcher richiede ffmpeg per la conversione audio 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. procurati il file del firmware
puoi scaricare l'immagine OTA qui o leggere la flash tramite UART:
➡️ guida hardware: connessione via UART
la lettura della flash via ota (over-the-air) è prevista per un aggiornamento futuro. (se possibile :D)
4. congratulazioni!
puoi trovare le istruzioni d'uso qui
se hai scaricato l'immagine di aggiornamento ota dai server di aggiornamento ufficiali, seleziona l'opzione "without ota boot" (senza ota boot)
nota: se hai patchato il firmware senza ota boot, devi aggiungerlo nell'header del firmware patchato prima di fare il flashing via UART. NON ti serve se usi lo script besota!
questa sezione contiene alcuni dei primi risultati del reverse-engineering del firmware delle q35.
le cuffie hanno diverse modalità di test nascoste. alcune di esse potrebbero essere utili per futuri aggiornamenti o per il debug.
engineering mode (modalità di ingegneria): per entrare in questa modalità, tieni premuto il pulsante di accensione, collega le cuffie a un pc tramite usb-c prima che si accendano e attendi che si avviino.
rfcomm: le cuffie hanno due porte com seriali. una di queste è scrivibile. finora, l'unica funzione che sono riuscito a innescare tramite questa porta è una UFR (spiegazione sotto). sembra essere una misura di sicurezza, dato che è stata innescata forzando vari codici hex piuttosto che con un comando specifico. curiosamente, non si tratta del reset standard (power + vol+) ma di qualcosa di diverso.
testing mode (modalità di test): si entra in questa modalità in modo simile all'engineering mode, ma devi rilasciare il pulsante di accensione immediatamente dopo il primo lampeggio del led bianco, prima della luce blu. le cuffie appariranno quindi sul pc come un dispositivo con un errore "device descriptor request failed". puoi confermare di essere in questa modalità osservando il led bianco, che lampeggia più velocemente del solito. il suo scopo è probabilmente legato al flashing del firmware. inoltre, in questa modalità, le cuffie possono essere accese durante la ricarica!
undocumented factory reset (UFR): un reset di fabbrica nascosto può essere innescato premendo rapidamente più volte il pulsante di accensione mentre le cuffie sono accese o inviando qualcosa sulla porta com virtuale (sopra). questo causerà il blocco del firmware e poi un riavvio forzato dopo circa 30 secondi. nota che questa azione cancellerà tutti i dati utente, incluse le impostazioni dell'equalizzatore, gli abbinamenti bluetooth e altre configurazioni.
il firmware sembra essere un binario monolitico diviso in più sezioni. ogni sezione critica è protetta da un checksum . i futuri patcher ricalcoleranno automaticamente questi checksum dopo ogni modifica per prevenire errori di avvio.
i contributi sono ciò che rende la community open source un posto così incredibile per imparare, ispirare e creare. qualsiasi contributo è molto apprezzato.
se hai un suggerimento per migliorare questo progetto, fai un fork del repo e crea una pull request. puoi anche semplicemente aprire una issue con il tag "enhancement". non dimenticare di lasciare una stella al progetto! grazie ancora!
git checkout -b feature/amazing-feature).git commit -m 'feat: add some amazing feature').git push origin feature/amazing-feature).se trovi utile questo progetto e vuoi sostenere il suo sviluppo futuro, puoi offrirmi un caffè o qualche snack tramite boosty! ogni contributo è molto apprezzato e mi aiuta a dedicare più tempo a openqore.
questo progetto è stato realizzato con l'uso intensivo di assistenti di codifica basati sull'ia (come claude e chatgpt). mentre il reverse-engineering principale, la ricerca e le decisioni architetturali sono state prese dall'autore, l'ia ha svolto un ruolo cruciale nell'accelerare il processo di sviluppo, nello scrivere codice boilerplate e nel fare debug.
questo è un progetto moderno costruito con strumenti moderni.
questo progetto è concesso in licenza mit. puoi trovare il testo completo della licenza nel file license.
| modello | chipset | stato |
|---|
| soundcore life q35 | bes2300p | ✅ supportato |
| soundcore life q30 | bes2300p | ❔ dovrebbe funzionare ma necessita di test |
| soundcore life tune pro | bes2300p | ❔ dovrebbe funzionare ma necessita di test |
| soundcore life tune | bes2300p | ❔ dovrebbe funzionare ma necessita di test |
| soundcore life q20i | bes2300p | ❔ dovrebbe funzionare ma necessita di test |
| soundcore space one | bes1502x | ❌ in lavorazione |
crc3216khz, mono, SBC.48khz, stereo. questo migliora significativamente la qualità dei suoni personalizzati.bes2300p di bestechnic (bes, best). un datasheet si può trovare cercando online.uart è disponibile sul pcb, utilizzata per il debug iniziale ed è il metodo principale per riportare in vita un dispositivo dopo un flashing fallito. il chip bes2300p stesso ha due porte uart, ma solo una di esse è esposta come pad facilmente accessibili sul pcb.