
Entfessle die volle Kraft deiner Soundcores! :)
Ein Open-Source-Toolkit zum Patchen, Modifizieren und Verbessern der Firmware von soundcore-Q-Series-Kopfhörern, mit geplanter Unterstützung für weitere Modelle.
Hinweis: Dieses Projekt ist meine persönliche Reise in die Welt des Hardware-Reverse-Engineering und der eingebetteten Systeme. Es wurde von einem Teenager erstellt und ich lerne, während ich vorankomme. Erwarte Bugs, Fehler und jede Menge Spaß. Alle Beiträge und Ratschläge sind willkommen!
Dieses Projekt ist in zwei Teile gegliedert:
Ich habe außerdem ein Demo-Projekt erstellt – einen DOOM-Port auf Basis des DOOMBuds-Projekts. Schau es dir auch an! =)
📚 Lies die vollständige Dokumentation 📚
Dieses Projekt wurde mit dem soundcore life q35 gestartet. Wenn du beim Testen helfen oder ein neues Modell unterstützen möchtest, eröffne bitte ein Issue!
Die Unterstützung für weitere Modelle ist ein zukünftiges Ziel!
Hinweis: Geräte, die auf den Chipsätzen
bes2300*, bes1502*, bes1600basieren, sind die wahrscheinlichsten Kandidaten für zukünftige Unterstützung.
Das Projekt openqore steht gerade am Anfang. Hier ist ein grober Plan, was als Nächstes ansteht:
Diese Anleitung setzt voraus, dass du python und git auf deinem System installiert hast.
1. Lade das ZIP-Archiv von den Releases herunter und entpacke es
2. Abhängigkeiten installieren
Der Patcher benötigt ffmpeg für die Audiokonvertierung und 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. Hol dir deine Firmware-Datei
Du kannst das OTA-Image hier herunterladen oder den Flash per UART auslesen:
➡️ Hardware-Anleitung: Verbindung per UART
Das Auslesen des Flashs per OTA (Over-the-Air) ist für ein zukünftiges Update geplant. (falls es möglich ist :D)
4. Glückwunsch!
Du findest die Nutzungshinweise hier.
Wenn du das OTA-Update-Image von den offiziellen Update-Servern heruntergeladen hast, wähle die Option „ohne OTA-Boot“.
Hinweis: Wenn du die Firmware ohne OTA-Boot gepatcht hast, musst du sie im Header der gepatchten Firmware hinzufügen, bevor du per UART flashst. Das benötigst du NICHT, wenn du das besota-Skript verwendest!
Dieser Abschnitt enthält einige der ersten Erkenntnisse aus dem Reverse-Engineering der q35-Firmware.
Die Kopfhörer haben mehrere versteckte Testmodi. Einige davon könnten für zukünftige Updates oder das Debugging nützlich sein.
Engineering-Modus: Um diesen Modus zu aktivieren, halte die Ein-/Aus-Taste gedrückt, verbinde die Kopfhörer per USB-C mit einem PC, bevor sie sich einschalten, und warte, bis sie hochfahren.
RFCOMM: Die Kopfhörer besitzen zwei serielle COM-Ports. Einer davon ist beschreibbar. Bisher ist die einzige Funktion, die ich über diesen Port auslösen konnte, eine UFR (Erklärung weiter unten). Das scheint eine Sicherheitsmaßnahme zu sein, da sie durch Brute-Force verschiedener Hex-Codes ausgelöst wurde und nicht durch einen bestimmten Befehl. Interessanterweise ist dies nicht der Standard-Reset (Power + Vol+), sondern etwas anderes.
Testmodus: Dieser Modus wird ähnlich wie der Engineering-Modus aufgerufen, aber du musst die Ein-/Aus-Taste sofort loslassen, nachdem die weiße LED zum ersten Mal aufblitzt, bevor das blaue Licht erscheint. Die Kopfhörer erscheinen dann am PC als Gerät mit dem Fehler „device descriptor request failed“. Du kannst bestätigen, dass du dich in diesem Modus befindest, wenn die weiße LED schneller als gewöhnlich blinkt. Sein Zweck hängt wahrscheinlich mit dem Flashen der Firmware zusammen. Außerdem können die Kopfhörer in diesem Modus während des Ladevorgangs eingeschaltet werden!
Undokumentierter Werksreset (UFR): Ein versteckter Werksreset kann ausgelöst werden, indem man bei eingeschalteten Kopfhörern mehrfach schnell die Ein-/Aus-Taste drückt oder etwas über den virtuellen COM-Port (oben) sendet. Dies führt dazu, dass die Firmware hängt und nach etwa 30 Sekunden ein Neustart erzwungen wird. Beachte, dass diese Aktion alle Benutzerdaten löscht, einschließlich Equalizer-Einstellungen, Bluetooth-Kopplungen und anderer Konfigurationen.
Die Firmware scheint eine monolithische Binärdatei zu sein, die in mehrere Abschnitte unterteilt ist. Jeder kritische Abschnitt ist durch eine crc32-Prüfsumme geschützt. Zukünftige Patcher werden diese Prüfsummen nach jeder Änderung automatisch neu berechnen, um Startfehler zu verhindern.
Beiträge machen die Open-Source-Community zu einem so unglaublichen Ort, um zu lernen, zu inspirieren und zu erschaffen. Jeder Beitrag, den du leistest, wird sehr geschätzt.
Wenn du einen Vorschlag hast, der dieses Projekt verbessern würde, forke das Repository und erstelle einen Pull-Request. Du kannst auch einfach ein Issue mit dem Tag „enhancement“ eröffnen. Vergiss nicht, dem Projekt einen Stern zu geben! Nochmals danke!
git checkout -b feature/amazing-feature).git commit -m 'feat: add some amazing feature').git push origin feature/amazing-feature).Wenn du dieses Projekt nützlich findest und seine zukünftige Entwicklung unterstützen möchtest, kannst du mir über Boosty einen Kaffee oder ein paar Snacks spendieren! Jeder Beitrag wird sehr geschätzt und hilft mir, mehr Zeit in openqore zu investieren.
Dieses Projekt wurde durch den umfangreichen Einsatz KI-gestützter Programmierassistenten (wie Claude und ChatGPT) zum Leben erweckt. Während das eigentliche Reverse-Engineering, die Recherche und die Architekturentscheidungen vom Autor stammen, spielte KI eine entscheidende Rolle bei der Beschleunigung des Entwicklungsprozesses, beim Schreiben von Boilerplate-Code und beim Debugging.
Dies ist ein modernes Projekt, das mit modernen Werkzeugen entwickelt wurde.
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Den vollständigen Lizenztext findest du in der Lizenz-Datei.
| Modell | Chipsatz | Status |
|---|
| soundcore life q35 | bes2300p | ✅ unterstützt |
| soundcore life q30 | bes2300p | ❔ sollte funktionieren, muss aber getestet werden |
| soundcore life tune pro | bes2300p | ❔ sollte funktionieren, muss aber getestet werden |
| soundcore life tune | bes2300p | ❔ sollte funktionieren, muss aber getestet werden |
| soundcore life q20i | bes2300p | ❔ sollte funktionieren, muss aber getestet werden |
| soundcore space one | bes1502x | ❌ in Arbeit |
16khz, mono, SBC-Audiostreams gespeichert.48khz, stereo wiederzugeben. Das verbessert die Qualität von benutzerdefinierten Sounds erheblich.bes2300p-SoC. Ein Datenblatt lässt sich per Suche finden.uart-Schnittstelle verfügbar, die für das anfängliche Debugging verwendet wurde und die primäre Methode ist, um ein Gerät nach einem fehlgeschlagenen Flash zu retten. Der bes2300p-Chip selbst verfügt über zwei UART-Ports, aber nur einer davon ist als leicht zugängliche Pads auf der Platine herausgeführt.