2
« Last post by Tom34667 on Today at 04:07:33 am »
Hello ScanTool.net Support Team,
My name is Tom, and I am currently developing a custom iOS diagnostic application that communicates with OBD adapters over Bluetooth. I am specifically working to integrate support for the OBDLink MX+.
I am able to successfully detect the MX+ device using CoreBluetooth and initiate a connection. However, I am unable to discover usable services/characteristics or establish a stable communication channel for sending and receiving ELM327 commands. The connection typically times out or returns no usable UART interface.
From your documentation, I understand that the MX+ fully emulates the ELM327 command set over a UART-style interface once communication is established. My challenge appears to be at the BLE transport layer rather than the command layer.
To properly support the MX+ in my app, I would greatly appreciate any guidance you can provide on the following:
1. BLE Service and Characteristic Information
- Are there specific service UUIDs and characteristic UUIDs used for UART communication?
- Are these services hidden until a handshake or initialization occurs?
2. Connection / Initialization Requirements
- Is there a required handshake, authentication sequence, or wake-up command before services become available?
- Does the MX+ require bonding/pairing at the OS level prior to communication?
3. Protocol / MFi Requirements
- Does communication require the ExternalAccessory framework instead of CoreBluetooth?
- Are there specific protocol strings (e.g., com.obdlink.mx, com.obdlink.mxplus) that must be declared in Info.plist?
4. BLE Mode Clarification
- Does the MX+ expose a standard BLE UART (transparent serial) profile, or is a proprietary GATT implementation used?
5. Developer Resources
- Is there any available SDK, sample code, or developer documentation specifically for third-party app integration on iOS?
For reference, I am able to connect and communicate successfully with standard BLE ELM327 adapters using generic UART services (e.g., FFE0/FFE1), which suggests my implementation is functioning correctly for non-proprietary devices.
I would greatly appreciate any technical details or guidance that would allow proper integration with the MX+. My goal is to build a robust diagnostic app with a professional interface similar to existing scan tools, and full MX+ support would be a key feature.
Thank you for your time and support.
Best regards,
Tom