ข่าวประชาสัมพันธ์

มาร่วมเป็นกำลังใจให้เว็บด้วยการสมัครสมาชิกวีไอพี ~~ เลือกปีที่ท่านต้องการได้โดยไม่ต้องเรียงปี ~~ ปีละ 350 บาท สมัคร 2 ปีลดเหลือ 600 บาท ~~ มีไลน์กลุ่ม VIP จำนวนหลายร้อยท่าน เอาไว้ปรึกษางานซ่อม ~~ เข้าถึงข้อมูลด้านเทคนิค ข้อมูลเชิงลึกมากมาย.....

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

ผู้เขียน หัวข้อ: เล่าสู่กันฟัง Software สแกนรถ  (อ่าน 19 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ Auto Man

  • Administrator
  • หัวหน้าศูนย์ซ่อมสร้าง
  • *****
  • เจ้าของกระทู้
  • Joined: ก.ย. 2558
  • กระทู้: 45578
  • สมาชิกลำดับที่ : 1
  • เพศ: ชาย
  • มือผู้ให้ย่อมสูงกว่ามือผู้รับ
    • เว็บชุมชนคนรักช่างยนต์
    • อีเมล์
เล่าสู่กันฟัง Software สแกนรถ
« เมื่อ: 15 กรกฎาคม 2569, 10:39:42 »
  • ขึ้นบน
  • ลงล่าง
  • อ้างถึง
    กลุ่มซื้อขายเครื่องสแกนรถยนต์ OBD2 มือ 1 มือ 2
    Sadayu Parakul
    14กค69
       ขออนุญาติ Admin และ ผู้ดูแลท่านอื่น ขอแชร์ให้สมาชิกในกลุ่มอ่านกันนะครับ
    วันนี้ผมมีข้อมูลที่ต้องการนำเสนอในแบบของผลและมันเป็นผลจากงาน RE(Reverse Engineering) ทั้งในงาน Application
    บน Windows OS,Non Windows Linux or Android  และ บนระบบฝังตัว Embedded systems ซึ่งเกี่ยวข้องโดยตรง
    หลายครั้งผมเห็นความคลาดเคลื่อนและความไม่เข้าใจผู้ซื้อ โดยส่วนใหญ่ ผู้ขายด้วยหรือเปล่าผมไม่อาจทราบได้
    จากการสร้าง tools สำหรับ ทำ RE กับพวก Software OEM และ Handheld ต่างๆผมพบว่า Android App ที่ใช้กับ VCI Interface
    Bluetooth ต่างๆ เช่น Thinkcar,Edig Pro,MUCAR, หรืออื่นๆ ที่ใช้ VCI เป็น Interface  ล้วนใช้ทรัพย์ยากรณ์ร่วมกันจากแหล่งเดียว
    มันจึงไม่มีความแตกต่าง และที่สำคัญต้องมี Internet ไว้เชื่อมต่อให้ Application พวกนี้
       ตัวอย่าง Software ที่ฝังใน Handheld แบบมีหน้าจอผมขอยกตัวอย่างเจ้าใหญ่ที่ค่อนข้างมีเครื่องมือหรือ tools ทำงานได้ครบใน Application
    แบบเกือบจบ แต่ไม่จบเพราะอาจจะต้องซื้อ Application Utility เพิ่มเติมในตัวเอง เช่น Launch x431 ชื่อนี้คงคุ้นตาใครหลายคน เค้าแตก Brand
    มาขาย และหลังๆ เมื่อนานมากแล้ว ก็เลยแตกแขนง App Android  มาเป็น XPRO , PRODIAG , DIAGZONE , XDIAG หรือแบบอื่นๆ
    สังเกตุได้ว่าหน้าตา UI ใน Application เหมือนกันหมดราวกับ Copy มาทั้งยวง ไม่ใช่แค่หน้าตา แต่ไส้ใน หรือวิธีการเรียก API Endpoint เหมือนกันหมด
    ต่างกันตรงที่วาง Server สำรองไว้คนละที่อยู่คนละกลุ่ม WAN Server
       ดังนั้นผมจะบอกว่า Application พวกนี้มาจากแหล่ง Download เดียวกัน เวลามี Update Package แต่ละแบรนด์รถไม่ต้องตื่นเต้นในแต่ละแบรนด์
    ว่าแต่ละแบรนด์จะทำโน้นทำนี่ได้แตกต่าง คำตอบคือไม่หนีกันเลยในสิ่งที่ XDIAG/DIAGZONE/PRODIAG/PRO5 ความสามารถในการ Detect Battery
    Pack มีอยู่ใน Launch x431 มีอยู่แล้ว ที่เขียนมาถึงตรงนี้ อยากจะให้ผู้อ่านเข้าใจไว้ว่า หากอยากได้ตัวที่ทำครบ ก็ซื้อเจ้า Launch X431 ที่เป็น handheld
    มีหน้าจอใช้งานได้เลยเพราะ Hardware Interface เค้า Binding ออกแบบรองรับ CANFD และ DoIP อยู่แล้ว
       เท่าที่ผมเห็นในงานขาย อ่านผ่านๆ ตาไม่รู้หรอกว่าของใครทำอะไรได้ลึกขนาดไหน แน่นอนว่าไม่มีผู้ขายคนไหนบอกว่าฉันทำอันนี้ไม่ได้นะ
    ส่วนใหญ่ล้วนบอกว่าได้ทั้งนั้น  แต่ถึงผู้อ่านจะซื้อ Brand ตัวที่ผมเขียนถึงและผมก็ใช้อยู่ก็ยังทำได้ไม่สุดบางงานทำไม่ได้  ต้องเป็น Software OE เ
    ฉพาะทางของแต่ละ Brand เท่านั้น ส่วนใหญ่ผมจะใช้แต่ Software OE เพราะมันทำงานได้จริงในราคาที่เบาหวิว เห็นขายกันแพง ถึง แพงมาก
    Bluetooth VCI Interface และ Android APK ที่คิดว่าติดตั้งหลายๆ ตัวในเครื่องจะได้เปรียบ เปล่าเลยครับ
    ผมไม่บอกที่ติดตั้งบน Android นอกจาก X431 APK และมีที่แตกออกมา เครื่องมือค่อนข้างครบ แต่ผมไม่ชอบ Tools พวกนี้ด้วยเรื่องหนึ่งคือปัญหา
    ที่ต้องใช้ API End-point ที่ต้องเรียกข้อมูลที่เป็นความลับไปที่ Server ต้องใช้ Internet นี่แหละ เวลาคับขันต้องใช้ internet ไม่มี ไม่ได้เติม
    เวลาจะใช้ Function ที่มีการทำ Access Security กับ ECU 27 02 บาง Seed Key Algorithm ต้อง Online
    หากไม่มี internet หมดปัญญาแน่นอน แต่ส่วนใหญ่ Software OE จะฝังเรื่องพวกนี้ไว้ใน Library แต่ไม่ต้องหวังแกะนะ งัดแงะเรื่องพวกนี้ไม่มี
    Tools Software บรรดา Ai เทพก็ทำไม่ได้และละเมิดสิทธิ์ AI เบรคหัวทิ่ม
    ลองดูตารางที่ผมทำ RE ไว้
    ตารางเทียบ Native Library (.so) — XPRO5 vs DiagZone vs XDiag
    > ข้อมูลจาก APK/decompiled จริง:
    > - **XPRO5** = `xpro5-apkv211.apk` (unzip lib list ตรงจาก APK)
    > - **DiagZone** = `diagzone_patch/apktool_out/lib/armeabi-v7a/`
    > - **XDiag** = `xdiag_patch/apktool_out/lib/armeabi/`
    >
    > `✅` = มี · `—` = ไม่มี · `↳rename` = มีแต่ถูกเปลี่ยนชื่อ
    ## A. แกน Launch X431 SDK (ตัวพิสูจน์ common origin)
    | .so | หน้าที่ | XPRO5 | DiagZone | XDiag |
    |-----|---------|:-----:|:--------:|:-----:|
    | **libStdBusiness.so** | เอนจิน UDS/KWP2000/CAN diagnostic — business logic แกน | ✅ | ✅ | ✅ |
    | **libLICENSE.so** | ตรวจ license ฝั่งเครื่อง (serial ↔ vehicle file) | ✅ | ✅ | ✅ |
    | **libSEARCHID.so** | ค้นหา/ผูก device ID | ✅ | ✅ | ✅ |
    | **libSocket.so** | สื่อสาร VCI / cloud socket | ✅ | ✅ | ✅ |
    | **libOnLineCfg.so** | online config (ดึง config จาก cloud) | ✅ | — | ✅ |
    | **libgpio_jni.so** | ควบคุม GPIO handheld | ✅ | ✅ | ✅ |
    | **libgpio_new_jni.so** | GPIO (รุ่นใหม่) | ✅ | ✅ | ✅ |
    | **libserial_port.so** | UART → VCI | ✅ | ✅ | ✅ |
    | **libentryexpro.so** | entry/expro loader | ✅ | — | ✅ |
    | **libcardioDecider.so** | ตัวช่วยตัดสิน (card.io / OCR?) | ✅ | — | ✅ |
    | **libconceal.so** | เข้ารหัสเก็บข้อมูล (Facebook Conceal) | ✅ | — | ✅ |
    | **libJNICrashHandler.so** | จับ crash | ✅ | ✅ | ↳ `libxcrash.so` |
    ## B. รูปแบบไฟล์รถ `.x431` (proprietary Launch format)
    | .so | XPRO5 | DiagZone | XDiag |
    |-----|:-----:|:--------:|:-----:|
    | **libx431file.so** | ✅ | ✅ | ↳ `libxdigfile.so` (rename) |
    | JNI class | (dex) | `JniX431File` | `JnixdigFile` |
    | struct family | — | `LSX_BASEINFO` | `LSX_AUTOINFO/BASEINFO/SPINFO/USERINFO/STRING`, `RANGE_STRING`, `xdigInteger` |
    → struct `LSX_*` ชุดเดียวกัน = format เดียวกัน แค่ XDiag เปลี่ยนชื่อ `x431`→`xdig`
    ## C. ชั้น PDF / เอกสารคู่มือ (ชุดเดียวกันเป๊ะทั้ง 3)
    | .so | XPRO5 | DiagZone | XDiag |
    |-----|:-----:|:--------:|:-----:|
    | libmupdf.so | ✅ | ✅ | ✅ |
    | libmodpdfium.so | ✅ | ✅ | ✅ |
    | libjniPdfium.so | ✅ | ✅ | ✅ |
    | libmodft2.so (FreeType) | ✅ | ✅ | ✅ |
    | libmodpng.so | ✅ | ✅ | ✅ |
    | libpl_droidsonroids_gif.so | ✅ | ✅ | ✅ |
    | libvudroid.so (DjVu) | ✅ | — | ✅ |
    ## D. ชั้น 3rd-party ที่ใช้ร่วม
    | .so | หน้าที่ | XPRO5 | DiagZone | XDiag |
    |-----|---------|:-----:|:--------:|:-----:|
    | Baidu Map SDK | แผนที่/ตำแหน่ง | ✅ v7.6.1 | — | ✅ v5.2.1 |
    | liblocSDK (Baidu loc) | GPS | ✅ v8b | — | ✅ v7b |
    | libindoor.so | Baidu indoor | ✅ | — | ✅ |
    | libiconv.so | แปลง encoding | ✅ | — | ✅ |
    | libzbarjni.so | สแกน QR/บาร์โค้ด | ✅ | ↳ `libscannative.so` | ✅ |
    ## E. เฉพาะแบรนด์ (ส่วนที่ต่าง = feature เสริมของแต่ละ fork)
    **XPRO5 (fork ฟีเจอร์เยอะสุด — มี remote diagnosis + voice):**
    libagora-rtc-sdk.so + libagora-* (16 ตัว)   → วิดีโอคอล remote diagnosis (Agora RTC)
    libmsc.so                                     → iFlytek voice (สั่งงานเสียง)
    libudrm3.so, libxgVipSecurity.so             → DRM / security เพิ่ม
    libtiny_magic.so, libuptsmaddon.so           → เสริม
    libc++_shared.so                             → STL runtime
    assets/libjiagu.so (+x64/x86)                → 360 Jiagu packer (ป้องกัน DEX)
    assets/ONLINECERT/libONLINECERT.so           → online certificate (golo online security)
    **XDiag:**
    libXDiag.so          → wrapper เฉพาะแบรนด์
    libCURL.so           → HTTP client
    libxcrash.so + libxcrash_dumper.so → crash reporter (แทน JNICrashHandler)
    darwin/ (x86_64)     → build cross-platform
    **DiagZone:**
    libdzlib.so          → wrapper เฉพาะแบรนด์ ("dz" = DiagZone)
    libVM.so + libVM.so.i64  → license/protection VM (+ .i64 = IDA database, เคยถูก reverse)
    libscannative.so     → สแกน (แทน zbar)
    ## สรุปเชิงตัวเลข
    - **Share library 3 แบรนด์:** `libStdBusiness`, `libLICENSE`, `libSEARCHID`, `libSocket`,
      `libgpio_jni`, `libgpio_new_jni`, `libserial_port`, ชุด `libmupdf/pdfium/ft2/png`,
      `libpl_droidsonroids_gif`, + ไฟล์รถ `libx431file`(↳xdig) = **แกน ≈ 11–12 lib เหมือนกัน**
    - **ส่วนต่าง = feature เสริม** (Agora/voice ใน XPRO5, wrapper `libdzlib`/`libXDiag`, packer/crash reporter)
      ไม่ใช่แกน diagnostic
    **นัยสำคัญ:** สิ่งที่ทำให้รถวินิจฉัยได้จริง (`libStdBusiness` + ไฟล์ `.x431` + license + cloud) เป็น
    **ของ Launch ชุดเดียว** ทั้งหมด ส่วนที่ต่างเป็นเปลือกแบรนด์เท่านั้น
    อันนี้เป็นตาราง Bluetooth ที่ผมทำ RE ไว้มีเขียน Firmware ที่แปลงแล้วด้วยบน C Compiler
    # VCI Hardware — โปรเซสเซอร์/วงจรร่วมกันหรือไม่ (หลักฐานเฟิร์มแวร์)
    > คำถาม: ถ้า software ฐานเดียวกัน แล้ว hardware ของ VCI ก็ต้องใช้ processor + วงจรคล้ายกันไหม?
    > **คำตอบสั้น: ใช่ — และแรงกว่าที่คิด สำหรับตระกูล DBSCar ของ Launch มันคือ "ฮาร์ดแวร์ตัวเดียวกัน re-brand"
    > ไม่ใช่แค่คล้าย** แต่มีข้อยกเว้นตามรุ่น/tier ดูหลักฐานด้านล่าง
    >
    > ที่มา: boot/flash `.bin` จริงใน `E:\MEGA_Download\APK AND BOOT FILES\` และ `...\XPRO5 FLASH FILES\`
    ## หลักฐาน 1 — เฟิร์มแวร์ตัวเดียวกันถูก flash ข้ามแบรนด์
    โฟลเดอร์ flash ของแต่ละแอปมี boot ตระกูล **DBSCar** เลขเวอร์ชันเดียวกัน:
    | แอป | ไฟล์ boot |
    |-----|-----------|
    | XPRO5 | `DBScar 5(985xxxxx) _1.22.001_DBSCarIII.bin` |
    | XDiag | `XDiag_boot_1.22.001_DBSCarIII.bin` |
    | ProDiag | `ProDiag_boot_1.22.001_DBSCarV.bin`, `..._1.23.006_DBSCarII_III_IV_3.0.bin` |
    VCI family เดียวกันทั้งหมด: **DBSCar I → VII** (+ HD box, Smart Box, Thinkdiag, Mucar mini)
    → ทุกแบรนด์ flash เข้า connector ตัวเดียวกันด้วย boot ชุดเดียวกัน = ฮาร์ดแวร์ platform เดียว
    ## หลักฐาน 2 — Vector table เหมือนกันเป๊ะ = MCU ตัวเดียวกัน
    อ่าน 16 ไบต์แรก (ARM Cortex-M vector table) ของ boot 3 แบรนด์:
    XDiag_boot_1.22.001_DBSCarIII :  8883 0120  b1e0 0008  dddf 0008  e5df 0008
    ProDiag 1.23.006 DBSCarII/III/IV: 8883 0120  b1e0 0008  dddf 0008  e5df 0008
    XPRO5   DBScar5 1.22.001 DBSCarIII:8883 0120  b1e0 0008  dddf 0008  e5df 0008
    ถอดค่า (little-endian):
    - **Initial SP = `0x20018388`** → SRAM top ~99 KB (chip ต้องมี RAM > 96 KB)
    - **Reset handler = `0x0800E0B1`** → Flash ฐาน `0x08000000`, SRAM ฐาน `0x20000000`
      = **memory map มาตรฐาน STM32 / GD32 (ARM Cortex-M) เป๊ะ**
    - ขนาด image = **1,048,576 ไบต์ (1 MB flash)** เท่ากันทั้ง 3
    SP + reset vector + memory map + ขนาด flash **ตรงกันทุกไบต์** = ใช้ **MCU รุ่นเดียวกัน**
    (1 MB flash, ~128 KB RAM, Cortex-M3/M4 คลาส STM32F2/F4 หรือ GD32F30x/F4 ที่ register-compatible)
    ## หลักฐาน 3 — เนื้อเฟิร์มแวร์ ~80% เหมือนกัน
    - XDiag(1.22.001) vs XPRO5(1.22.001) DBSCarIII: ต่างกัน 215,589 / 1,048,576 ไบต์ → **เหมือน ≈ 79.5%**
    - XDiag(1.22.001) vs ProDiag(1.23.006): ต่างกัน 209,975 ไบต์ → **เหมือน ≈ 80%** (ทั้งที่คนละเวอร์ชัน)
    ส่วนที่ต่าง = block แบรนด์/serial/คีย์ ไม่ใช่ตัวโค้ดหลัก → ยืนยัน codebase เฟิร์มแวร์เดียวกัน
    ## ข้อยกเว้น (อย่าเหมารวมทุกตัว)
    **Mucar / Thinkdiag Mini** ใช้ MCU **เล็กกว่า** (sibling ในตระกูลเดียวกัน):
    mucar_1111_12_mucar.bin :  d022 0120  3deb 0008  ...   (size = 393,216 = 384 KB)
    → SP = 0x200122D0 (~74 KB RAM) , Reset = 0x0800EB3D
    - ยังเป็น memory map STM32/GD32 เดิม (Flash@0x08000000 / SRAM@0x20000000)
    - แต่ flash 384 KB + RAM ~74 KB → **ชิปรุ่นเล็กกว่า** (คุมต้นทุน) — ตรงกับที่เคย RE ไว้ว่า
      MUCAR BT200 = **GD32F30x-class Cortex-M4, dual bxCAN classic (ไม่มี CAN FD)** ดู [[mucar-bt200-hw-analysis]]
    **สรุป tier ฮาร์ดแวร์:**
    | VCI | Flash | RAM | MCU class | หมายเหตุ |
    |-----|-------|-----|-----------|----------|
    | DBSCar I–VII (dongle เต็ม) | 1 MB | ~128 KB | STM32F2/F4 หรือ GD32 register-compat | เฟิร์มแวร์ cross-flash ได้ |
    | Mucar / Thinkdiag Mini | 384 KB | ~74 KB | GD32F30x (M4) | ชิปเล็ก ตระกูลเดียวกัน |
    | HD Box / Smart Box (รถใหญ่) | — | — | น่าจะรุ่นใหญ่กว่า | แยก boot ต่างหาก (ยังไม่ dump) |
    ## ตอบคำถามให้ชัด
    1. **Processor คล้ายกันไหม?** — ไม่ใช่แค่คล้าย: DBSCar dongle ทุกแบรนด์ = **MCU ตัวเดียวกัน**
       (Cortex-M คลาส STM32/GD32, 1 MB flash, memory map เดียว) พิสูจน์ด้วย vector table ตรงกันทุกไบต์
       + เฟิร์มแวร์ cross-flash ข้ามแบรนด์ได้จริง รุ่น Mini ใช้ชิปเล็กกว่าแต่ **ตระกูล ARM เดียวกัน**
    2. **วงจรการทำงานเหมือนกันไหม?** — ต้องเหมือน เพราะเฟิร์มแวร์ตัวเดียวกันรันได้ก็ต่อเมื่อ
       **peripheral map ตรงกัน**: CAN controller (bxCAN), UART→BT module, K-line/level-shift, power
       → ทั้งหมดคือ **DBSCar reference design** ชุดเดียว (transceiver + CAN PHY + BT SPP/BLE)
       *หมายเหตุ: ยังไม่ได้เปิดฝา trace วงจรจริงในงานนี้ — ข้อสรุปนี้อนุมานจาก "เฟิร์มแวร์ binary เดียวรันได้"
       ซึ่งบังคับให้ pin/peripheral ต้อง compatible; ถ้าต้องการ 100% ต้องถ่าย PCB/วัดขา*
    3. **ตรรกะที่ต้องระวัง:** "แอปฐานเดียว" ตัวเดียวไม่ได้ *บังคับ* ว่าฮาร์ดแวร์ต้องเหมือน
       (แอปคุยผ่าน *โปรโตคอล* — ตัวเดียวกันคุย ELM327/J2534 คนละยี่ห้อก็ได้)
       แต่ในเคสนี้เรามี **หลักฐานเฟิร์มแวร์ตรงๆ** ว่าฮาร์ดแวร์ *เป็นตัวเดียวกันจริง* → แข็งกว่าการอนุมานจากแอป
    4. **ข้อยกเว้นระดับ ecosystem:** VCI ที่ไม่ใช่ตระกูล Launch/DBSCar (เช่น **SM2/Scanmatik = STM32F2 M3
       คนละ vendor**, ELM327 clone, J2534 passthru อื่น) แอปพวกนี้ก็รองรับผ่านโปรโตคอล แต่ **ไม่ใช่ชิป/วงจรเดียวกัน**
       ดู [[sm2-fw-rlink-vci]]
    และยังมี HTML Diagram ในส่วนเรื่องที่ผมทำเฉพาะเรื่องนี้ Click ใน link จะเห็น Diagram สวยๆ แสดงผ่านหน้า web browser
    ให้เข้าใจง่ายๆ เลย หรือยาก
    สรุปทั้งหมด ใครจะจ่ายแพงหรือจะซื้ออะไรก็ลองพิจารณาตามเงินที่ท่านมี แต่อย่าคิดว่าซื้อเครื่องมือแพงแล้วจะจบ ไม่มีจริงนะครับ
    สำหรับผมไม่ติดอะไรเพราะถ้าทำได้ขนาดนี้ ผมต้องรู้มากกว่านี้ในงาน ซึ่ง Software ที่ผมพัฒนาอยู่ผมแค่ซื้อ VCI Interface J2534
    ที่รองรับ CAN FD และ DoIP ในราคาไม่ถึง 9,000
    ก็นำมาใช้กับ Software ที่ผมพัฒนาสำหรับงานทั้งระบบของรถ EV ได้เลย สบายกระเป๋า สำหรับผู้ที่ไม่มีความรู้แน่นอน ต้องใช้เงินเท่านั้นซื้อของ
    ที่ใช้ได้ บางอย่างราคาแพงมากแต่ใช้ไม่คุ้มค่างานเลย สำหรับผมถ้าต้องเสียเงินซื้อต้องทำได้มากที่สุด หรือถ้ามันมีข้อจำกัด ก็หาทางก้าวข้ามมัน
    โดยใช้ความรู้ที่มี + Ai ในยุคที่งานบางอย่างซับซ้อนแต่ Ai ช่วยได้ แต่ต้องสร้างเครื่องมือให้ผู้ช่วยที่ฉลาดพวกนี้ใช้นะ

    ตรงนี้มีภาพ! แต่ท่านจะมองไม่เห็น , ท่านต้อง  สมัครสมาชิก หรือ ลงชื่อเข้าระบบ


    ตรงนี้มีภาพ! แต่ท่านจะมองไม่เห็น , ท่านต้อง  สมัครสมาชิก หรือ ลงชื่อเข้าระบบ


       
     

    Sadayu Parakul

     
    สวัสดีคุณ...ผู้เยี่ยมชม  กด ❤ ถูกใจโพสท์นี้ หรือยัง...
    ต้องการสมัครสมาชิก VIP สมัครได้ที่นี่...   หรือทาง Line ID: k.sonchai

    เล่าสู่กันฟัง Software สแกนรถ
    « เมื่อ: 15 กรกฎาคม 2569, 10:39:42 »