Skip to content

EVDx v1.5.2-pre — Fix "characteristics not found" on Vgate iCar Pro v3+

Pre-release
Pre-release

Choose a tag to compare

@waleedmandour waleedmandour released this 18 Jun 09:20

EVDx v1.5.2-pre

Fixes the "characteristics not found" error reported on Vgate iCar Pro OBDII adapters paired with Android 13+ phones (e.g. Google Pixel).

The Problem

Users reported that EVDx detected the Vgate iCar Pro during BLE scan, but the connection failed immediately with the raw error "characteristics not found" — with no recovery path.

Root Cause

Vgate has shipped several firmware variants of the iCar Pro over the years:

Firmware Service UUID Char UUIDs Era
v1.x, v2.x 0000ffe0-... 0000ffe1-... 2017-2022
v3.x (2023+) 0000fff0-... 0000fff1-... 2023+

The v1.5.1 code only had the FFE0/FFE1 profile. When detectProfile() couldn't find FFE0/FFE1 on a v3+ adapter, it silently fell back to that same profile — which then failed at startNotifications() with the raw error.

The silent fallback was the real bug: it masked the actual problem and gave users no way to recover.

What's Fixed

1. Three new BLE profiles

Profile Service Write Notify Use case
vGate iCar Pro v3+ (FFF0) 0000fff0-... 0000fff1-... 0000fff1-... Vgate iCar Pro 2023+, BOLUTEK clones
BOLUTEK / CSR Clone (FFF0/FFF2) 0000fff0-... 0000fff1-... 0000fff2-... Asymmetric write/notify clones
vGate iCar Pro (FFE0) 0000ffe0-... 0000ffe1-... 0000ffe1-... (existing, renamed for clarity)

2. detectProfile() no longer silently falls back

Throws NoMatchingProfileError instead. The UI catches this and shows a profile picker dialog so the user can manually try each profile.

3. Typed errors for better UI handling

Two new error classes:

  • CharacteristicsNotFoundError — includes device name + tried profile
  • NoMatchingProfileError — includes device name + address

4. Profile picker UI in ConnectOverlay

When either typed error is caught, the ConnectOverlay shows a new profile picker section:

  • Lists all 13 known BLE profiles
  • User taps a profile → connect() retries with that specific profile
  • User-friendly error messages explain what happened
  • Suggests trying FFF0 profile for Vgate iCar Pro v3+

5. Firmware Update Information section in DeviceView

EVDx itself cannot update adapter firmware — that requires each manufacturer's proprietary tool. The new section documents the official update path:

Brand Update path
Vgate iCar Pro No public tool. Use FFF0 profile instead.
OBDLink MX+/CX OBDLink app (Play Store)
vLinker MC+/FS/BM+ vLinker app (Play Store)
Veepeak No public tool — contact support
Carly Carly app (firmware updates free)
Generic ELM327 clones No update path (masked ROM)

6. Why no in-app firmware updater?

Vgate does not publish a firmware update tool. Their firmware is closed-source and can only be updated via the manufacturer's internal PC tool. Building an in-app updater would require reverse-engineering Vgate's proprietary format and protocol — not feasible for an open-source project.

The recommended fix for Vgate iCar Pro v3+ users is to use the FFF0 profile via the new profile picker, not to update firmware.

Verification

  • TypeScript: tsc --noEmit clean (0 errors).
  • Next.js production build: static export succeeds (5.6s compile).
  • Gradle assembleRelease: BUILD SUCCESSFUL.
  • aapt dump badging confirms versionName=1.5.2 versionCode=9 targetSdk=36.
  • All 34 protocol simulation tests pass.
  • APK size: 25.8 MB.

Install

  1. Download evdx-v1.5.2-pre-release.apk below.
  2. Install over existing EVDx (vehicle profiles + settings preserved).
  3. Open EVDx → Connect → Bluetooth OBD → tap your Vgate iCar Pro.
  4. If you still see "characteristics not found", the profile picker appears automatically. Tap "vGate iCar Pro v3+ (FFF0)" first.
  5. If FFF0 doesn't work, try the other profiles in order.

Security Reminder

The GitHub token used to push this release was shared in plain text. Revoke it immediately at https://github.com/settings/tokens.