3rd Party App Support on iOS? (s300 v3)

Post Reply
WestonP22
Posts: 2
Joined: Sun Jul 19, 2020 6:52 pm
Location: Colorado

3rd Party App Support on iOS? (s300 v3)

Post by WestonP22 »

Are there any 3rd party iOS apps that currently work with the s300 v3? I saw DashCommand on the list, but it didn't work for me on iOS, and only the Hondata Mobile app has been successful for me on iOS.

The Bluetooth 4 Low Energy (BLE) connection used for iOS looks like it's providing data in a proprietary binary format... Is there any way to instead access an ELM327 interface over that BLE connection (like it provides via classic Bluetooth for Android apps), so that it could be supported easily by existing ELM327-compatible apps on iOS?

I'm the developer of one such app, and while my s300 works easily on the Android side, I have several of my track friends with s300's asking for support on iOS.
User avatar
Hondata
Site Admin
Posts: 10434
Joined: Thu Aug 15, 2002 12:13 pm
Location: Torrance, CA
Contact:

Re: 3rd Party App Support on iOS? (s300 v3)

Post by Hondata »

The protocol is public

https://www.hondata.com/downloads/Bluetooth.pdf

It also emulates ELM327 but I would not recommend using that.
Hondata
WestonP22
Posts: 2
Joined: Sun Jul 19, 2020 6:52 pm
Location: Colorado

Re: 3rd Party App Support on iOS? (s300 v3)

Post by WestonP22 »

Hondata wrote: Fri Jul 24, 2020 8:12 am The protocol is public

https://www.hondata.com/downloads/Bluetooth.pdf

It also emulates ELM327 but I would not recommend using that.
Thanks! Yeah, ELM327 mode is a quick solution for existing apps, but your binary protocol looks much nicer if development time allows.

For any other developers looking to support the s300's BLE connection on iOS, here's what I needed to do to get it to work:

1) Main UUID's:

Service: "14839AC4-7D7E-415C-9A42-167340CF2339". This device doesn't "advertise" like some others do, so you might need to tweak things a little if you count on that to discover service UUID's.

Rx Characteristic: "8B00ACE7-EB0B-49B0-BBE9-9AEE0A26E1A3". Send data to this, using "without response" mode (CBCharacteristicWriteWithoutResponse in iOS Obj-C).

Tx Characteristic: "0734594A-A8E7-4B1A-A6B1-CD5243059A57". Subscribe to notifications on this to receive data.

2) Whenever you want to receive data from the device via the Tx char notification, a single byte apparently needs to first be sent to the "BA04C4B2-892B-43BE-B69C-5D13F2195392" characteristic UUID. I didn't find any docs on this, but it would seem to be the maximum length of data that you want to accept from the Tx char notification. Simply using 0xFF every time appears to be working for me. This was the missing link in my case, as I wasn't getting responses / notifications until I did that.

3) The doc says, "Elm327 style text commands are also supported by means of using the first packet byte as the protocol designator with a value below that of any ASCII character.", which confused me at first, but what this really means is just send your ELM327 text as normal.



Also, I tried several Android devices and they didn't seem to want to talk to it over BLE, nor could BLE scanning apps even see the s300 from those devices, but of course classic Bluetooth / SPP is the easy option on Android anyway.
Post Reply