
هندسة عكسية لوحدة رأس BYD Dolphin — ناقل CAN، وAVAS، ومفاتيح NFC، وOTA، والمزيد. DiLink 3 / Android 10.
الهندسة العكسية والتوثيق والأدوات لنظام الترفيه والمعلومات BYD Dolphin 25/26 (DiLink 3، Android 10).
كل ما هو موجود هنا تم اكتشافه من خلال استكشاف ADB، وتفكيك APK، وفحص ناقل CAN — لم يتم استخدام أي وثائق خاصة.
⚠️ إخلاء المسؤولية: مشروع غير رسمي مدفوع من المجتمع — لا يوجد أي ارتباط بـ BYD. الهندسة العكسية لخدمات Android الداخلية الخاصة بـ BYD لأغراض تعليمية وقابلية التشغيل البيني فقط. استخدمه على مسؤوليتك الخاصة — قد يؤدي تعديل برامج السيارة إلى إبطال الضمان أو انتهاك شروط خدمة BYD. لا يتحمل المؤلفون أي مسؤولية عن أي ضرر يلحق بسيارتك أو برامجك أو بياناتك.
| الخاصية | القيمة |
|---|---|
| المنصة | DiLink 3.0 |
| Android | 10 (API 29) |
| SoC | Qualcomm QCM6125 (SM6125 Trinket) |
| البنية | ARM64، 8 أنوية |
| RAM | ~3.5 GB |
| Kernel | 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 |
| Bootloader | مفتوح (ro.boot.flash.locked=0) |
| Verified boot | برتقالي (مفتوح) |
| لوحة العدادات | نظام Qt/QML منفصل (Qt 5.15.10 / 6.5.5) |
تم الاختبار على البرنامج الثابت
13.1.32.2507250.1. الإصدارات الأقدم من المحتمل أن تعمل. قد تؤدي تحديثات البرامج الثابتة الأحدث من BYD إلى تغيير أو إفساد الأمور — لا توجد ضمانات.
جديد هنا؟ ابدأ بـ دليل التحميل الجانبي لتثبيت التطبيقات على سيارتك BYD — دون الحاجة إلى root.
للتطبيقات المخصصة المبنية على هذا البحث، راجع byd-apps.
adb connect 192.168.10.10:5555
Third Party Apps XX (مع لاحقة رمز الدولة)، ثم وصّلها بالسيارةBYD6125F (عامة عبر DiLink 3)targetSdk ≤ 33، minSdk ≤ 29حقن إطارات CAN من ADB — بدون root، بدون دونجل 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
راجع Driver Display للحصول على بروتوكول التشخيص UDS الكامل، وتنسيق إطار CAN، وطوبولوجيا شبكة ECU.
| الميزة | التفاصيل |
|---|---|
| قراءة درجة حرارة التكييف | getTemprature(zone) — zone 1/2 = درجة الحرارة المحددة، zone 4 = الخارجية/المحيطة |
| التحكم الكامل في التكييف | أكثر من 40 طريقة getter + SET (تشغيل/إيقاف، درجة الحرارة، المروحة، وضع الرياح) عبر تجاوز الأذونات |
| التحكم عن بُعد في التكييف | hasFeature("ACRemoteControl") = 1، يدعم مؤقتًا من 10 إلى 30 دقيقة |
| تجاوز الأذونات | BydPermissionContext (ContextWrapper) يمنح تلقائيًا أذونات BYDAUTO_* من جانب العميل |
| قراءة/كتابة ناقل CAN | عبر ADB باستخدام app_process + reflection |
| أكثر من 75 حزمة BYD | مع الوصول إلى ناقل CAN، وأكثر من 100 إذن مخصص BYDAUTO_* |
| صوت محاكي المحرك | المحاكي موجود وقابل للتبديل (HAS_SIMULATOR=2)، ويتم اختيار الإعداد المسبق عبر 0x3E300038. تقوم MCU بتخزين وإرجاع أي نوع مصدر — تم التحقق حتى 200؛ فقط 0 مرفوض — لذا فإن القبول لا يعني وجود صوت مميز ولا يمكن اكتشاف عدد الإعدادات المسبقة الحقيقية عبر هذه الواجهة. 0x48F00013 يُرجع 1 بمعنى "يوجد مصدر"، وليس عددًا. — تطبيق صوت المحرك |
| اختيار الإعداد المسبق AVAS | قابل للكتابة عبر CAN — تعرض الواجهة 2 لكن MCU يقبل 0–5+ |
| بث PCM عبر setBuffer | إطارات PCM بحجم 128 بايت مقبولة من MCU (ret=0) لأكثر من 8 معرّفات ميزات. الحد الأقصى للمخزن المؤقت: 128 بايت. لم يتم التأكد مما إذا كانت MCU تفسرها كصوت. |
| نغمات اختبار AVAH | تُشغَّل على مكبر الصوت الخارجي AVAS باستخدام إشارات التشخيص المصنعية (0x6E970010) |
| أنماط لحن AVAS | 8 أنماط عاملة (جرس الباب، رنين المتجر، الإنذار، الفانفير، إلخ) عبر التحكم في النغمة TEST_AUDIO_AVAS_SET — تطبيق صوت الباب |
| حقن ناقل CAN | ترميز الميزات بأسلوب VCDS ممكن — حقن إطارات CAN عبر بث com.byd.cluster.spi، دون الحاجة إلى root |
| لقطة شاشة العنقود | التقاط شاشة السائق عبر fission_screencap -d 1 -p <file> |
| قراءات لوحة العدادات | PowerUnit، TempUnit، BacklightCtlType، InsThemeValue عبر BYDAutoManager |
| تبديل DRL | setInt(1004, 0x43100046, 1/2) — وضع DRL التلقائي تشغيل/إيقاف، مؤكد بإعادة القراءة |
| جهاز YUN (1034) | جميع معرّفات الميزات 0xAA مقبولة من MCU — setBuffer(1034, fid, data) و setInt(1034, fid, val) يُرجعان 0 (OK). قناة MCU الخاصة بـ cloudmanager. تحتاج إلى تشفير AES للتفعيل. |
| موفرو المحتوى | يكشفون بيانات المركبة (البطارية، ضغط الإطارات، الصيانة، استهلاك الرحلة) |
| التثبيت الجانبي | محرك USB أو ADB — راجع الدليل |
| إطارات كاميرا 360 | بث مباشر 1280×960 من جميع كاميرات المحيط الأربع، بدون root. ملف bmmcamera.jar قابل للقراءة عالميًا — حمّله بنفسك وقُد JNIBMMCamera مباشرة من app_process بمعرّف shell. لا يمكن لتطبيق مثبّت فعل ذلك أبدًا (SELinux يمنع untrusted_app_* من الوصول إلى binder الخاص بـ bmmcameraserver)؛ لكن عملية تُطلق عبر ADB يمكنها ذلك — التفاصيل |
| الميزة | الحالة |
|---|---|
| حالة قفل الأبواب | الأبواب الرئيسية تُرجع INVALID (0)، قفل الأطفال قابل للقراءة. لا يوجد setDoorLockStatus() مخصص — يحتاج إلى set() العام مع معرّفات ميزات غير معروفة |
| التحكم في عرض كاميرا 360 | BYDAutoPanoramaDevice (الوضع، الدوران، الشفافية) مفروض من جانب الخادم وتفشل تجاوز BydPermissionContext. التقاط الإطارات يعمل — راجع أعلاه |