ELM327 Bluetooth dongle
These bluetooth OBD-II dongles are available quite cheaply. The main functionality is generally provided by an ELM327 "OBD interpreter" ic. The dongles actually sell for much less than the chip with discounts would be. So, it's probably always a clone or a "factory special" and the circuitry may also vary.
The ELM327 is a programmed microcontroller produced by ELM Electronics for translating the on-board diagnostics (OBD) interface found in most modern cars. The ELM327 command protocol is one of the most popular PC-to-OBD interface standards and is also implemented by other vendors. -- ELM327@wp
The Bluetooth version is especially convenient and has a common USB UART board tacked on top.
It worked once and failed to work a lot.
For software I went with a certain manufactorer specific tool and Torque on Android. Both recognize the module and pair well.
While opening the module, I managed to knock the BT board off. I soldered it back and can communicate with the ELM, so I'm presuming the connections are ok.
I haven't managed to connect to ECU or other computers for a while now. I suspect there is a termination or impedance problem that could be solved somehow. The pcb sandwich inside the module has been soldered into a stack with pin headers and would be hard to take apart. I've been planning to cut the connectors and either solder them back or invent some other way to put it back together.
I could also poke around more effectively with a terminal or possibly pyserial.
I used blueman applet to attach rfcomm, so no better notes there. PIN 1234.
% picocom /dev/rfcomm0 -b 9600 -p n -d 8 --imap crcrlf picocom v1.7 port is : /dev/rfcomm0 flowcontrol : none baudrate is : 9600 parity is : none databits are : 8 escape is : C-a local echo is : no noinit is : no noreset is : no nolock is : no send_cmd is : sz -vv receive_cmd is : rz -vv imap is : crcrlf, omap is : emap is : crcrlf,delbs, Terminal ready ? >ati ELM327 v1.5 >AT/N ? >ATZ � ELM327 v1.5 >ATWS ELM327 v1.5 >ATD OK >0100 CAN ERROR >ATDP USER1 (CAN 29/500) >at@1 OBDII to RS232 Interpreter >at@2 ? >at@3 ? >atcs T:00 R:00 >atbd 07 18 DB 33 F1 02 01 00 00 00 00 00 00 >atign ON >atkw 1:-- 2:-- >atrv 12.2V >atrv 12.7V > 12.6V > 12.8V > 12.4V > 10.9V
So, that's how it behaves without a car attached :)