
Soundcoreのフルパワーを解き放て! :)
soundcore q シリーズヘッドホンのファームウェアをパッチ、変更、強化するためのオープンソースツールキット。将来は他のモデルにも対応予定です。
注記: このプロジェクトは、ハードウェアリバースエンジニアリングと組み込みシステムの世界への私個人の旅です。10代の若者によって作られ、私自身も学びながら進めています。バグや間違い、そしてたくさんの楽しみが待っています。貢献やアドバイスは大歓迎です!
このプロジェクトは2つの部分に分かれています:
また、DOOMBuds プロジェクトをベースにしたデモプロジェクト、DOOM 移植版 も作成しました。そちらもチェックしてみてください!=)
このプロジェクトは soundcore life q35 から始まりました。新しいモデルのテストや対応追加を手伝っていただける場合は、issue を開いてください!
他のモデルの対応は将来の目標です!
注記:
bes2300*、bes1502*、bes1600チップセットを搭載したデバイスが、今後の対応候補として最も有力です。
openqore は始まったばかりです。今後の大まかな計画は次のとおりです:
このガイドでは、システムに python と git がインストールされていることを前提としています。
1. リリース から ZIP アーカイブをダウンロードして解凍します
2. 依存関係をインストールします
パッチャーには、オーディオ変換用の ffmpeg と 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. ファームウェアファイルを入手します
OTA イメージは こちら からダウンロードするか、UART でフラッシュを読み出すことができます:
OTA(無線)によるフラッシュ読み出しは、将来のアップデートで計画されています。(可能ならですが :D)
4. おめでとうございます!
使用方法の説明は こちら にあります。
公式アップデートサーバーから OTA アップデートイメージをダウンロードした場合は、「OTA ブートなし」オプションを選択してください。
注記: OTA ブートなしでファームウェアをパッチした場合は、UART での書き込み の前に、パッチ済みファームウェアのヘッダーにそれを追加 する必要があります。besota スクリプトを使用する場合は、これは不要です!
このセクションには、q35 ファームウェアのリバースエンジニアリングから得られた初期調査結果の一部が含まれています。
ヘッドホンにはいくつかの隠しテストモードがあります。その一部は、将来のアップデートやデバッグに役立つ可能性があります。
エンジニアリングモード: このモードに入るには、電源ボタンを押したまま、ヘッドホンが起動する前に USB-C で PC に接続し、起動するまで待ちます。
rfcomm: ヘッドホンには2つのシリアル COM ポートがあります。そのうちの1つは書き込み可能です。これまでのところ、このポートを通じてトリガーできた唯一の機能はUFR(後述)です。これは特定のコマンドではなく、さまざまな hex コードをブルートフォースすることでトリガーされたため、セキュリティ対策と思われます。興味深いことに、これは標準的なリセット(電源 + 音量+)とは異なるものです。
テストモード: このモードはエンジニアリングモードと同様に入りますが、白い LED が最初に点滅した直後、青いライトの前に電源ボタンを離す必要があります。すると、ヘッドホンは PC に「デバイス記述子の要求に失敗しました」というエラーを持つデバイスとして表示されます。このモードに入ったことは、通常より速く点滅する白い LED で確認できます。その目的はおそらくファームウェアの書き込みに関連しています。また、このモードでは、充電中にヘッドホンの電源を入れることができます!
非公開ファクトリーリセット(UFR): ヘッドホンの電源が入っている状態で電源ボタンを複数回素早く押すか、仮想 COM ポート(上記)に何かを送信することで、隠しファクトリーリセットをトリガーできます。これにより、ファームウェアがハングし、約30秒後に強制再起動します。この操作は、イコライザー設定、Bluetooth ペアリング、その他の設定を含むすべてのユーザーデータを消去することに注意してください。
ファームウェアは、複数のセクションに分割されたモノリシックバイナリのように見えます。各重要なセクションは crc32 チェックサムで保護されています。将来のパッチャーは、ブート失敗を防ぐために、変更後にこれらのチェックサムを自動的に再計算します。
16khz、モノラル、SBC オーディオストリームとして保存されています。48khz、ステレオ でオーディオを再生させることが可能です。これにより、カスタムサウンドの品質が大幅に向上します。貢献こそが、オープンソースコミュニティを学び、刺激を与え、創造するための素晴らしい場所にしているものです。皆さんからの貢献は大変感謝しています。
これをより良くする提案がある場合は、リポジトリをフォークしてプルリクエストを作成してください。単に「enhancement」タグを付けて issue を開くこともできます。 プロジェクトにスターを付けるのをお忘れなく! 改めて感謝します!
git checkout -b feature/amazing-feature)。git commit -m 'feat: add some amazing feature')。git push origin feature/amazing-feature)。このプロジェクトが役立つと感じ、今後の開発を支援したい場合は、boosty でコーヒーやお菓子をごちそうしていただけます! すべての貢献は大変感謝しており、openqore により多くの時間を割くのに役立ちます。
このプロジェクトは、AI を活用したコーディングアシスタント(Claude や ChatGPT など)を多用して実現しました。中核となるリバースエンジニアリング、調査、アーキテクチャ上の決定は作者によって行われましたが、AI は開発プロセスの加速、ボイラープレートコードの作成、デバッグにおいて重要な役割を果たしました。
これは現代のツールで構築された現代的なプロジェクトです。
このプロジェクトは MIT ライセンスの下でライセンスされています。完全なライセンス文は ライセンス ファイルにあります。
| モデル | チップセット | 状態 |
|---|
| soundcore life q35 | bes2300p | ✅ 対応済み |
| soundcore life q30 | bes2300p | ❔ 動作するはずだがテストが必要 |
| soundcore life tune pro | bes2300p | ❔ 動作するはずだがテストが必要 |
| soundcore life tune | bes2300p | ❔ 動作するはずだがテストが必要 |
| soundcore life q20i | bes2300p | ❔ 動作するはずだがテストが必要 |
| soundcore space one | bes1502x | ❌ 作業中 |
bes2300p soc です。データシートは検索すれば見つかります。uart シリアルポートが利用可能で、初期デバッグに使用され、書き込み失敗後のデバイスの復旧(unbrick)の主要な方法です。bes2300p チップ自体には2つの uart ポートがありますが、そのうちの1つだけが pcb 上で簡単にアクセスできるパッドとして露出しています。