EVDx v1.5.2-pre — Fix "characteristics not found" on Vgate iCar Pro v3+
Pre-releaseEVDx 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 profileNoMatchingProfileError— 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 --noEmitclean (0 errors). - Next.js production build: static export succeeds (5.6s compile).
- Gradle
assembleRelease: BUILD SUCCESSFUL. aapt dump badgingconfirmsversionName=1.5.2 versionCode=9 targetSdk=36.- All 34 protocol simulation tests pass.
- APK size: 25.8 MB.
Install
- Download
evdx-v1.5.2-pre-release.apkbelow. - Install over existing EVDx (vehicle profiles + settings preserved).
- Open EVDx → Connect → Bluetooth OBD → tap your Vgate iCar Pro.
- If you still see "characteristics not found", the profile picker appears automatically. Tap "vGate iCar Pro v3+ (FFF0)" first.
- 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.