
openqore v0.1.0-beta.1
अपने BES-आधारित हेडफ़ोन की पूरी शक्ति को उजागर करें! :)
openqore
soundcore q-सीरीज़ हेडफ़ोन के फ़र्मवेयर को पैच, संशोधित और बेहतर बनाने के लिए एक ओपन-सोर्स टूलकिट, जिसमें भविष्य में अन्य मॉडलों के लिए समर्थन की योजना है।
नोट: यह प्रोजेक्ट हार्डवेयर रिवर्स-इंजीनियरिंग और एम्बेडेड सिस्टम की दुनिया में मेरी व्यक्तिगत यात्रा है। इसे एक किशोर द्वारा बनाया गया था और मैं चलते-चलते सीख रहा हूँ। बग, गलतियाँ और बहुत सारा मज़ा अपेक्षित है। सभी योगदान और सलाह का स्वागत है!
महत्वपूर्ण जानकारी!
यह प्रोजेक्ट दो भागों में विभाजित है:
- openqore SDK - bes2300p SoC पर आधारित soundcore हेडफ़ोन के लिए फ़र्मवेयर SDK
- qorepatcher - हेडफ़ोन के स्टॉक फ़र्मवेयर के लिए एक पैचर (यह रिपॉजिटरी)
मैंने एक डेमो प्रोजेक्ट भी बनाया है - एक DOOM पोर्ट जो DOOMBuds प्रोजेक्ट पर आधारित है। उसे भी देखें! =)
qorepatcher
समर्थित डिवाइस
यह प्रोजेक्ट soundcore life q35 के साथ शुरू किया गया था। यदि आप किसी नए मॉडल का परीक्षण करने या समर्थन जोड़ने में मदद करना चाहते हैं, तो कृपया एक issue खोलें!
| मॉडल | चिपसेट | स्थिति |
|---|---|---|
| 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 | ❌ कार्य प्रगति पर |
अन्य मॉडलों के लिए समर्थन एक भविष्य का लक्ष्य है!
नोट:
bes2300*, bes1502*, bes1600चिपसेट पर आधारित डिवाइस भविष्य के समर्थन के लिए सबसे संभावित उम्मीदवार हैं।
रोडमैप
openqore अभी शुरू हुआ है। यहाँ आगे क्या आने वाला है इसकी एक मोटी योजना है:
- ध्वनि प्रतिस्थापन के लिए प्रारंभिक फ़र्मवेयर पैचर।
- सिस्टम ध्वनियों के लिए 48khz ऑडियो समर्थन अनलॉक करें।
- सिस्टम ध्वनियों के लिए स्टीरियो समर्थन की जाँच करें और अनलॉक करें।
- पैचर को सभी bes2300 चिपसेट के साथ काम करने योग्य बनाएं (चेतावनी! परीक्षण की आवश्यकता है)
- पैचर को सभी (या अधिकांश) bes चिपसेट के साथ काम करने योग्य बनाएं
- हेडफ़ोन नाम और MAC पता संशोधन के लिए पैच लागू करें।
- कुछ मॉडलों पर aux इनपुट (जैक कनेक्शन) पर कम वॉल्यूम लिमिटर/गेट हटाएं।
- पैचर के लिए उपयोगकर्ता-अनुकूल GUI बनाएं।
- वायरलेस फ्लैशिंग के लिए ota (over-the-air) अपडेट प्रोटोकॉल को रिवर्स-इंजीनियर करें।
- फ़र्मवेयर संरचना और प्रमुख कार्यों का दस्तावेज़ीकरण करें।
- समुदाय-निर्मित ध्वनि पैक की एक लाइब्रेरी विकसित करें।
त्वरित आरंभ
यह गाइड मानता है कि आपके सिस्टम पर python और git स्थापित हैं।
1. releases से 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 के साथ फ्लैश पढ़ सकते हैं:
➡️ हार्डवेयर गाइड: UART के माध्यम से कनेक्ट करना
ota (over-the-air) के माध्यम से फ्लैश पढ़ना भविष्य के अपडेट के लिए योजनाबद्ध है। (यदि यह संभव है :D)
4. बधाई!
आप उपयोग निर्देश यहाँ पा सकते हैं
सामान्य प्रश्न
1. qorepatcher में फ़र्मवेयर का कौन सा विकल्प (w/o ota boot या इसके साथ) मुझे चुनना चाहिए?
यदि आप हेडफ़ोन के फ्लैश डंप को पैच कर रहे हैं, तो "with ota boot" विकल्प चुनें।
यदि आपने आधिकारिक अपडेट सर्वर से ota अपडेट इमेज डाउनलोड की है, तो "without ota boot" विकल्प चुनें
नोट: यदि आपने ota boot के बिना फ़र्मवेयर पैच किया है, तो आपको UART के माध्यम से फ्लैश करने से पहले पैच किए गए फ़र्मवेयर के हेडर पर इसे जोड़ना होगा। यदि आप besota स्क्रिप्ट का उपयोग कर रहे हैं तो आपको इसकी आवश्यकता नहीं है!
तकनीकी गहन विश्लेषण
तकनीकी बातें आगे: विस्तार करने के लिए क्लिक करें...
इस अनुभाग में q35 फ़र्मवेयर के रिवर्स-इंजीनियरिंग से कुछ प्रारंभिक निष्कर्ष शामिल हैं।
इंजीनियरिंग मोड और सुविधाओं के साथ मज़ा
हेडफ़ोन में कई छिपे हुए परीक्षण मोड हैं। उनमें से कुछ भविष्य के अपडेट या डिबगिंग के लिए उपयोगी हो सकते हैं।
-
इंजीनियरिंग मोड: इस मोड में प्रवेश करने के लिए, पावर बटन दबाए रखें, हेडफ़ोन को चालू होने से पहले USB-C के माध्यम से पीसी से कनेक्ट करें, और उनके चालू होने की प्रतीक्षा करें।
-
rfcomm: हेडफ़ोन में दो सीरियल COM पोर्ट हैं। उनमें से एक लिखने योग्य है। अब तक, मैं इस पोर्ट के माध्यम से ट्रिगर करने में सक्षम एकमात्र फ़ंक्शन एक UFR (नीचे स्पष्टीकरण) है। यह एक सुरक्षा उपाय प्रतीत होता है, क्योंकि यह एक विशिष्ट कमांड के बजाय विभिन्न हेक्स कोड को ब्रूट-फोर्स करके ट्रिगर किया गया था। दिलचस्प बात यह है कि यह मानक रीसेट (पावर + vol+) नहीं है बल्कि कुछ अलग है।
-
परीक्षण मोड: यह मोड इंजीनियरिंग मोड के समान दर्ज किया जाता है, लेकिन आपको सफेद LED के पहली बार चमकने के तुरंत बाद, नीली रोशनी से पहले, पावर बटन छोड़ना होगा। हेडफ़ोन तब पीसी पर "device descriptor request failed" त्रुटि वाले डिवाइस के रूप में दिखाई देंगे। आप सफेद LED द्वारा इस मोड में होने की पुष्टि कर सकते हैं, जो सामान्य से तेज़ चमकती है। इसका उद्देश्य संभवतः फ़र्मवेयर फ्लैशिंग से संबंधित है। साथ ही, इस मोड में, हेडफ़ोन चार्जिंग के दौरान चालू किए जा सकते हैं!
-
अप्रलेखित फ़ैक्टरी रीसेट (UFR): एक छिपा हुआ फ़ैक्टरी रीसेट हेडफ़ोन के चालू होने पर पावर बटन को कई बार तेज़ी से दबाकर या वर्चुअल COM पोर्ट (ऊपर) पर कुछ भेजकर ट्रिगर किया जा सकता है। इससे फ़र्मवेयर हैंग हो जाएगा और फिर लगभग 30 सेकंड के बाद रीबूट करने के लिए मजबूर हो जाएगा। ध्यान दें कि यह क्रिया सभी उपयोगकर्ता डेटा मिटा देगी, जिसमें इक्वलाइज़र सेटिंग्स, ब्लूटूथ पेयरिंग और अन्य कॉन्फ़िगरेशन शामिल हैं।
फ़र्मवेयर संरचना
फ़र्मवेयर एक मोनोलिथिक बाइनरी प्रतीत होता है जो कई अनुभागों में विभाजित है। प्रत्येक महत्वपूर्ण अनुभाग crc32 चेकसम द्वारा सुरक्षित है। भविष्य के पैचर बूट विफलताओं को रोकने के लिए किसी भी संशोधन के बाद इन चेकसम की स्वचालित रूप से पुनर्गणना करेंगे।
ऑडियो सिस्टम
- स्टॉक: मूल सिस्टम ध्वनियाँ
16khz, mono, SBCऑडियो स्ट्रीम के रूप में संग्रहीत हैं। - मॉडेड: ऑडियो DAC को आरंभ करने के लिए जिम्मेदार कार्यों को पैच करके, सिस्टम को
48khz, stereoपर ऑडियो चलाने के लिए मजबूर करना संभव है। यह कस्टम ध्वनियों की गुणवत्ता में काफी सुधार करता है।
प्रमुख घटक और इंटरफेस
- चिपसेट: q35 का दिल एक bestechnic (bes, best)
bes2300pSoC है। एक डेटाशीट खोजकर पाई जा सकती है। - डिबग पोर्ट: PCB पर एक
uartसीरियल पोर्ट उपलब्ध है, जिसका उपयोग प्रारंभिक डिबगिंग के लिए किया गया था और यह खराब फ्लैश के बाद डिवाइस को अनब्रिक करने का प्राथमिक तरीका है।bes2300pचिप में स्वयं दो uart पोर्ट हैं, लेकिन उनमें से केवल एक ही PCB पर आसानी से सुलभ पैड के रूप में उजागर होता है।
योगदान
योगदान ही ओपन सोर्स समुदाय को सीखने, प्रेरित करने और बनाने के लिए इतनी अद्भुत जगह बनाते हैं। आपके द्वारा किए गए किसी भी योगदान की बहुत सराहना की जाती है।
यदि आपके पास कोई सुझाव है जो इसे बेहतर बनाएगा, तो कृपया रेपो को फोर्क करें और एक पुल रिक्वेस्ट बनाएं। आप "enhancement" टैग के साथ एक issue भी खोल सकते हैं। प्रोजेक्ट को स्टार देना न भूलें! फिर से धन्यवाद!
- प्रोजेक्ट को फोर्क करें।
- अपनी फीचर ब्रांच बनाएं (
git checkout -b feature/amazing-feature)। - अपने परिवर्तन कमिट करें (
git commit -m 'feat: add some amazing feature')। - ब्रांच पर पुश करें (
git push origin feature/amazing-feature)। - एक पुल रिक्वेस्ट खोलें।
संपर्क और समुदाय
❤️ प्रोजेक्ट का समर्थन करें
यदि आपको यह प्रोजेक्ट उपयोगी लगता है और इसके भविष्य के विकास का समर्थन करना चाहते हैं, तो आप boosty के माध्यम से मुझे कॉफी या कुछ स्नैक्स खिला सकते हैं! हर योगदान की बहुत सराहना की जाती है और यह मुझे openqore के लिए अधिक समय समर्पित करने में मदद करता है।
आभार
यह प्रोजेक्ट एआई-संचालित कोडिंग सहायकों (जैसे claude और chatgpt) के व्यापक उपयोग के साथ जीवन में लाया गया था। जबकि मुख्य रिवर्स-इंजीनियरिंग, शोध और वास्तुकला संबंधी निर्णय लेखक द्वारा किए गए थे, एआई ने विकास प्रक्रिया को तेज करने, बॉयलरप्लेट कोड लिखने और डिबगिंग में महत्वपूर्ण भूमिका निभाई।
यह आधुनिक उपकरणों के साथ बनाया गया एक आधुनिक प्रोजेक्ट है।
लाइसेंस
यह प्रोजेक्ट mit लाइसेंस के तहत लाइसेंस प्राप्त है। आप लाइसेंस फ़ाइल में पूरा लाइसेंस टेक्स्ट पा सकते हैं।