About protocol based on CAN bus, here a list:
Note that the ELM327 can handle communication
over multiple protocols, not just CAN:
Protocol - Description
0 - Automatic
1 - SAE J1850 PWM (41.6 kbaud)
2 - SAE J1850 PWM (10.4 kbaud)
4 - ISO 9141-2 (5 baud init)
5 - ISO 14230-4 KWP (5 baud init)
6 - ISO 14230-4 KWP (fast init)
7 - ISO 15765-4 CAN (11 bit ID, 500 kbaud)
8 - ISO 15765-4 CAN (29 bit ID, 500 kbaud)
9 - ISO 15765-4 CAN (11 bit ID, 250 kbaud)
A - ISO 15765-4 CAN (29 bit ID, 250 kbaud)
B - User1 CAN (11* bit ID, 125* kbaud)
C - User2 CAN (11* bit ID, 50* kbaud)
Comparing this list with the one shown in the dongle image, just the last two are missing.
About the KW903 is available in many different sub-codes:
J6D3 B2I7 T5X5 Q9E4 E3C6 J6D3
B2I7 T5X5 T7U6 F1Q1 F8V9 K6V5
B8T7 D0G4 J5Y6 R2I0 G0K0
Does this codes make a sense for you?
From the same Arduino forum, also this seems interesting:
ELM 327 and STN21X are good option for read the CAN data.
And the STN21X brings here:
and the most appealing product ($90) is a combination of dongle + software for “OBDLink LX Bluetooth Scan Tool” which a way better approach of buying a dongle and an app separately.
Moreover, they present a list of cars and car makers supported:
Finally:
A physical interface would this one:
The USER1 and USER2 CAN are just protocol on the same physical interface.
In this sense the dongle act like a modem with AT commands. If its set of AT command supports the activation of USER1 and USER2 CAN protocols, then it can communicate also with that two protocols. However, this does not means that the software connected to the dongle can interpretate the received messages.
Some interesting links
UPDATE
One of the most comprehensive ODB scanner that supports many protocols included the RAW CAN (ISO 11898) which is a great for those that wish to make their hands dirty at the lowest level is this one: