
BYD Dolphin हेड यूनिट की रिवर्स इंजीनियरिंग — CAN bus, AVAS, NFC keys, OTA, और बहुत कुछ। DiLink 3 / Android 10।
BYD डॉल्फिन 25/26 इन्फोटेनमेंट सिस्टम (DiLink 3, Android 10) के लिए रिवर्स इंजीनियरिंग, डॉक्यूमेंटेशन और टूलिंग।
यहाँ सब कुछ ADB एक्सप्लोरेशन, APK डीकंपाइलेशन और CAN बस प्रोबिंग के माध्यम से खोजा गया था — कोई प्रोप्राइटरी डॉक्यूमेंटेशन उपयोग नहीं किया गया।
⚠️ अस्वीकरण: अनौपचारिक, समुदाय-संचालित प्रोजेक्ट — BYD से कोई संबद्धता नहीं। BYD की आंतरिक Android सेवाओं की रिवर्स इंजीनियरिंग केवल शैक्षिक और इंटरऑपरेबिलिटी उद्देश्यों के लिए। अपने जोखिम पर उपयोग करें — वाहन सॉफ़्टवेयर को संशोधित करने से आपकी वारंटी रद्द हो सकती है या BYD की सेवा शर्तों का उल्लंघन हो सकता है। लेखक आपके वाहन, सॉफ़्टवेयर या डेटा को किसी भी नुकसान के लिए कोई दायित्व नहीं मानते हैं।
| प्रॉपर्टी | मान |
|---|---|
| प्लेटफ़ॉर्म | DiLink 3.0 |
| Android | 10 (API 29) |
| SoC | Qualcomm QCM6125 (SM6125 Trinket) |
| आर्किटेक्चर | ARM64, 8 कोर |
| RAM | ~3.5 GB |
| कर्नेल | 4.14.117-perf |
| ADB | WiFi, पोर्ट 5555 |
| हेड यूनिट IP | 192.168.10.10 (कार WiFi) |
| फर्मवेयर | 13.1.32.2507250.1 (25 जुलाई 2025) |
| MCU | 13.5.2.2312260.1 |
| DSP | 13.5.5.2505300.2 |
| बूटलोडर | अनलॉक्ड (ro.boot.flash.locked=0) |
| वेरिफाइड बूट | ऑरेंज (अनलॉक्ड) |
| इंस्ट्रूमेंट क्लस्टर | अलग Qt/QML सिस्टम (Qt 5.15.10 / 6.5.5) |
फर्मवेयर
13.1.32.2507250.1पर परीक्षण किया गया। पुराने वर्शन संभवतः काम करेंगे। BYD से नए फर्मवेयर अपडेट चीज़ों को बदल या तोड़ सकते हैं — कोई गारंटी नहीं।
यहाँ नए हैं? अपने BYD पर ऐप्स इंस्टॉल करने के लिए साइडलोडिंग गाइड से शुरू करें — रूट की आवश्यकता नहीं।
इस रिसर्च पर बने कस्टम ऐप्स के लिए, byd-apps देखें।
adb connect 192.168.10.10:5555
Third Party Apps XX फ़ोल्डर में डालें (देश कोड प्रत्यय), कार में प्लग करेंBYD6125F (DiLink 3 में सार्वभौमिक)targetSdk ≤ 33, minSdk ≤ 29ADB से CAN फ़्रेम इंजेक्ट करें — न रूट, न OBD2 डोंगल:
# 1. Start the ClusterDebug app + service (acts as privileged proxy)
adb shell "am start -n com.byd.clusterdebug/.MainActivity"
adb shell "am startservice -n com.byd.clusterdebug/.ClusterDebugService"
# 2. Inject CAN frames
adb shell "am broadcast -a com.byd.cluster.spi --es normal 'FF,FF,FF,FF,FF,FF,FF,FF'"
# 3. Capture cluster screenshot
adb shell "fission_screencap -d 1 -p /data/local/tmp/cluster.png"
adb pull /data/local/tmp/cluster.png
पूर्ण UDS डायग्नोस्टिक प्रोटोकॉल, CAN फ्रेम फॉर्मेट और ECU नेटवर्क टोपोलॉजी के लिए Driver Display देखें।
| विशेषता | विवरण |
|---|---|
| AC तापमान रीडिंग | getTemprature(zone) — zone 1/2 = सेट तापमान, zone 4 = बाहरी/परिवेशीय |
| पूर्ण AC नियंत्रण | 40+ getter + SET मेथड्स (start/stop, temp, fan, wind mode) अनुमति बायपास के माध्यम से |
| AC रिमोट कंट्रोल | hasFeature("ACRemoteControl") = 1, 10–30min टाइमर का समर्थन करता है |
| अनुमति बायपास | BydPermissionContext (ContextWrapper) क्लाइंट-साइड पर BYDAUTO_* अनुमतियाँ स्वतः प्रदान करता है |
| CAN बस रीड/राइट | ADB के माध्यम से app_process + reflection का उपयोग करके |
| 75+ BYD पैकेज | CAN बस एक्सेस के साथ, 100+ कस्टम BYDAUTO_* अनुमतियाँ |
| इंजन सिम्युलेटर ध्वनि | सिम्युलेटर मौजूद और स्विच करने योग्य (HAS_SIMULATOR=2), प्रीसेट 0x3E300038 के माध्यम से चयनित। MCU किसी भी स्रोत प्रकार को संग्रहीत और वापस प्रतिध्वनित करता है — 200 तक सत्यापित; केवल 0 अस्वीकार किया जाता है — इसलिए स्वीकृति का अर्थ एक अलग ध्वनि नहीं है और इस API के माध्यम से वास्तविक प्रीसेट की संख्या का पता नहीं लगाया जा सकता। 0x48F00013 1 लौटाता है जिसका अर्थ है "एक स्रोत मौजूद है", न कि एक गणना। — Engine Sound app |
| AVAS प्रीसेट चयन | CAN-राइटेबल — UI 2 दिखाता है लेकिन MCU 0–5+ स्वीकार करता है |
| setBuffer PCM स्ट्रीमिंग | 128-बाइट PCM फ्रेम 8+ फीचर IDs के लिए MCU द्वारा स्वीकृत (ret=0)। अधिकतम बफर: 128 बाइट्स। MCU इसे ऑडियो के रूप में व्याख्यायित करता है या नहीं, यह अपुष्ट है। |
| AVAH टेस्ट टोन | फैक्ट्री डायग्नोस्टिक सिग्नल (0x6E970010) का उपयोग करके AVAS बाहरी स्पीकर पर चलाएँ |
| AVAS मेलोडी पैटर्न | TEST_AUDIO_AVAS_SET पिच नियंत्रण के माध्यम से 8 कार्यशील पैटर्न (doorbell, shop chime, alarm, fanfare, आदि) — Door Sound app |
| CAN बस इंजेक्शन | VCDS-शैली फीचर कोडिंग संभव — com.byd.cluster.spi ब्रॉडकास्ट के माध्यम से CAN फ्रेम इंजेक्ट करें, रूट की आवश्यकता नहीं |
| क्लस्टर स्क्रीनशॉट | fission_screencap -d 1 -p <file> के माध्यम से ड्राइवर डिस्प्ले कैप्चर करें |
| इंस्ट्रूमेंट क्लस्टर रीड्स | BYDAutoManager के माध्यम से PowerUnit, TempUnit, BacklightCtlType, InsThemeValue |
| DRL टॉगल | setInt(1004, 0x43100046, 1/2) — DRL ऑटो मोड ON/OFF, रीडबैक द्वारा पुष्टि की गई |
| YUN डिवाइस (1034) | MCU द्वारा सभी 0xAA फीचर IDs स्वीकृत — setBuffer(1034, fid, data) और setInt(1034, fid, val) 0 (OK) लौटाते हैं। Cloudmanager का निजी MCU चैनल। सक्रियण के लिए AES एन्क्रिप्शन की आवश्यकता है। |
| कंटेंट प्रोवाइडर | वाहन डेटा (बैटरी, टायर प्रेशर, रखरखाव, ट्रिप खपत) उजागर करते हैं |
| साइडलोडिंग | USB ड्राइव या ADB — गाइड देखें |
| 360 कैमरा फ्रेम | सभी चार सराउंड कैमरों से लाइव 1280×960, रूट के बिना। bmmcamera.jar विश्व-पठनीय है — इसे स्वयं लोड करें और shell-uid app_process से सीधे JNIBMMCamera को ड्राइव करें। एक इंस्टॉल किया गया ऐप यह कभी नहीं कर सकता (SELinux untrusted_app_* को bmmcameraserver बाइंडर से वंचित करता है); ADB के माध्यम से लॉन्च किया गया प्रोसेस कर सकता है — विवरण |
| विशेषता | स्थिति |
|---|---|
| डोर लॉक स्थिति | मुख्य दरवाजे INVALID (0) लौटाते हैं, चाइल्ड लॉक पठनीय है। कोई समर्पित setDoorLockStatus() नहीं — अज्ञात फीचर IDs के साथ सामान्य set() की आवश्यकता है |
| 360 कैमरा डिस्प्ले नियंत्रण | BYDAutoPanoramaDevice (mode, rotation, transparency) सर्वर-साइड पर लागू है और BydPermissionContext बायपास विफल हो जाता है। फ्रेम कैप्चर काम करता है — ऊपर देखें |