My new CarPC Project - Honeycomb Here I Come
#51
Thread Starter
weeeeeeeeee
iTrader: (12)
Joined: Jun 2008
Posts: 4,200
Likes: 229
From: Outside Philadelphia
So tonight's exercise was to be some exploring of the high speed can bus looking for things like TPMS... I quickly learned that my cheapo chinese v1.2a elm327 reader can't reliably maintain a 500kbps connection so what am I to do now?
This puppy apparently is about as good as it gets... and will hopefully arrive in the next week or so.
in the meantime I've powered up my old xp x32 VM, installed my bluetooth drivers and am going to see if I can sniff the virtual serial port with portion and hope to pick off some of the well hidden Mazda PIDs.
This puppy apparently is about as good as it gets... and will hopefully arrive in the next week or so.
in the meantime I've powered up my old xp x32 VM, installed my bluetooth drivers and am going to see if I can sniff the virtual serial port with portion and hope to pick off some of the well hidden Mazda PIDs.
Last edited by ShellDude; 04-21-2012 at 12:08 AM.
#53
Thread Starter
weeeeeeeeee
iTrader: (12)
Joined: Jun 2008
Posts: 4,200
Likes: 229
From: Outside Philadelphia
More progress ...
This is a great sign! Have been analyzing the data I collected the other night and it looks like that I may have found tire pressure. I've been meaning to head back out to the car and scan the individual TPMS PIDs but haven't had a chance (it's been raining the past couple days).
Anyway, I'll be able to validate soon enough. The possibility of the data being there un-encoded is really exciting for me!
Code:
83659 0.00000000 ??? IRP_MJ_WRITE BtPort1 Length 7: 22D102. 83659 0.00004825 SUCCESS 83687 0.00000295 SUCCESS Length 1: 2 83688 0.00000095 SUCCESS Length 1: 2 83689 0.00000089 SUCCESS Length 1: D 83690 0.00000087 SUCCESS Length 1: 1 ---------- PID ECHOED BACK 83691 0.00000086 SUCCESS Length 1: 0 83692 0.00000087 SUCCESS Length 1: 2 83693 0.00000086 SUCCESS Length 1: . 83694 0.00000339 SUCCESS Length 1: 7 83695 0.00000095 SUCCESS Length 1: 5 ----------- HEADER FILTER 83696 0.00000089 SUCCESS Length 1: 9 83697 0.00000089 SUCCESS Length 1: 83698 0.00000088 SUCCESS Length 1: 0 ----------- NOT SURE BUT SEEMS TO BE HEADER 83699 0.00000088 SUCCESS Length 1: 4 83700 0.00000087 SUCCESS Length 1: 83701 0.00000084 SUCCESS Length 1: 6 ----------- NOT SURE BUT SEEMS TO BE HEADER 83702 0.00000088 SUCCESS Length 1: 2 83703 0.00000083 SUCCESS Length 1: 83704 0.00000085 SUCCESS Length 1: D --- 0xD1 HEX == 209 == WHEEL 4 TIRE PRESSURE IN kPA ??? 83705 0.00000085 SUCCESS Length 1: 1 83706 0.00000084 SUCCESS Length 1: 83707 0.00000084 SUCCESS Length 1: 0 ------------ MAYBE FOOTER / CHECK SUM 83708 0.00000083 SUCCESS Length 1: 2 83709 0.00000085 SUCCESS Length 1: 83710 0.00000085 SUCCESS Length 1: 8 ------------ MAYBE FOOTER / CHECK SUM 83711 0.00000084 SUCCESS Length 1: 9 83712 0.00000460 SUCCESS Length 1: 83713 0.00000091 SUCCESS Length 1: . 83714 0.00000094 SUCCESS Length 1: . 83715 0.00000094 SUCCESS Length 1: >
Anyway, I'll be able to validate soon enough. The possibility of the data being there un-encoded is really exciting for me!
Last edited by ShellDude; 04-22-2012 at 02:05 PM.
#54
Thread Starter
weeeeeeeeee
iTrader: (12)
Joined: Jun 2008
Posts: 4,200
Likes: 229
From: Outside Philadelphia
bah... looked a little deeper ... likely a fluke .. D1 02 appears to be the PID just echoing back... if anything 89 is the value for this pid... now what the hell do I make of 0x89/137 ???
#55
oops, that came out big.
Anyhow, 62 is the response code from the TPM and I think 759 is its identifier, D102 is the PID, and 89 is the value.
This is all hex though, so 0x89 = 137. Guessing that the scaling is X/10 so 13.7Volts?
I think tire pressure is in the C90x range, and scaling is X*1.373
#60
Thread Starter
weeeeeeeeee
iTrader: (12)
Joined: Jun 2008
Posts: 4,200
Likes: 229
From: Outside Philadelphia
So I recorded individual sessions tonight for:
Here's the full conversation (I dropped the unimportant responses) I recorded for requesting TPMS tire pressure for wheel #1:
97 hex to decimal == 151
151 * 1.373 = 207.323 kPa
We have a winner! I'll post up the others in the next day or two.
- TPMS tire pressure for each wheel
- TPMS tire temperature for each wheel
- ENGINE Brake pedal pressed (boolean)
- ENGINE In Gear (boolean)
Here's the full conversation (I dropped the unimportant responses) I recorded for requesting TPMS tire pressure for wheel #1:
Code:
ATE1 > ATL0 > ATI > STI > STCAFCP 7E0,7E8 >… OK STFAFC 07E9,FFFF >… OK STCAFCP 7E1,7E9 >… OK STFAFC 07EA,FFFF >… OK STCAFCP 7E2,7EA >… OK STFAFC 07EB,FFFF >… OK STCAFCP 7E3,7EB >… OK 0100 >... ATRV >... ATSH000751 >… 0100 >... 22C9011 >22C9011 >759 07 62 C9 01 93 88 93 97
151 * 1.373 = 207.323 kPa
We have a winner! I'll post up the others in the next day or two.
#61
Thread Starter
weeeeeeeeee
iTrader: (12)
Joined: Jun 2008
Posts: 4,200
Likes: 229
From: Outside Philadelphia
So it just dawned on me and I confirmed by briefly looking at my Tire #2 pressure log. All 4 come back for 22C9011
0x93 = 147 * 1.373 = 201.831 kPa
0x88 = 136 * 1.373 = 186.728 kPa (I really do need to get around to putting air in this tire)
0x93 = 147 * 1.373 = 201.831 kPa
0x97 = 151 * 1.373 = 207.323 kPa
0x93 = 147 * 1.373 = 201.831 kPa
0x88 = 136 * 1.373 = 186.728 kPa (I really do need to get around to putting air in this tire)
0x93 = 147 * 1.373 = 201.831 kPa
0x97 = 151 * 1.373 = 207.323 kPa
#63
Thread Starter
weeeeeeeeee
iTrader: (12)
Joined: Jun 2008
Posts: 4,200
Likes: 229
From: Outside Philadelphia
Here's the header and pid for TPMS Temperature:
ATSH0007DF
22C9021
last 4 bytes of the response are each tire's temperature in hex similar to how pressure comes back. Once converted to decimal subtract 40 and you then have the tire temperature in celsius.
ATSH0007DF
22C9021
last 4 bytes of the response are each tire's temperature in hex similar to how pressure comes back. Once converted to decimal subtract 40 and you then have the tire temperature in celsius.
#65
Thread Starter
weeeeeeeeee
iTrader: (12)
Joined: Jun 2008
Posts: 4,200
Likes: 229
From: Outside Philadelphia
Was having a hard time getting libVoyager to read alternate/multiple ECUs and came up with a hack of sorts to work around it.
I use its built in RoutineScan class with a refresh interval of 500ms to retrieve mode 1 PIDs --- a handful of which I added myself to its sqlite database:
And I pretty much bypass it to get at the mode 22 PIDs supplied by the TPMS ECU once every 5 seconds:
As best as I can tell the original author focused primarily on GM ECU. At this rate I'll likely end up just writing my own COMM API as talking ELM is very similar to the old Hayes modem command set.
I use its built in RoutineScan class with a refresh interval of 500ms to retrieve mode 1 PIDs --- a handful of which I added myself to its sqlite database:
Code:
hs.setRoutineScanDelay(500); hs.getRoutineScan().addDPN("VOLTS"); hs.getRoutineScan().addDPN("TEMP_INTAKE"); hs.getRoutineScan().addDPN("TEMP_COOLANT"); hs.getRoutineScan().addDPN("MAF_FLOW_RATE"); hs.getRoutineScan().addDPN("FUEL_LEVEL"); hs.getRoutineScan().addDPN("WIDEBAND_O2"); hs.getRoutineScan().addDPN("CATALYST_TEMP_B1S1");
And I pretty much bypass it to get at the mode 22 PIDs supplied by the TPMS ECU once every 5 seconds:
Code:
obd.getHs().getEBT().sendATCommand2("ATSH000751"); final String tpmsPresBuf = obd.getHs().getEBT().sendOBDCommand("22C9011"); final String tpmsTempBuf = obd.getHs().getEBT().sendOBDCommand("22C9021"); // reset our connection to clear the headers -- need to figure out a better way obd.getHs().getEBT().sendATCommand2("ATD"); final String[] tpmsPres = tpmsPresBuf.split(" "); final float tpmsPres4 = Integer.parseInt(tpmsPres[tpmsPres.length - 2], 16) * 1.373f * KPI_TO_PSI_MULTIPLIER; final float tpmsPres3 = Integer.parseInt(tpmsPres[tpmsPres.length - 3], 16) * 1.373f * KPI_TO_PSI_MULTIPLIER; final float tpmsPres2 = Integer.parseInt(tpmsPres[tpmsPres.length - 4], 16) * 1.373f * KPI_TO_PSI_MULTIPLIER; final float tpmsPres1 = Integer.parseInt(tpmsPres[tpmsPres.length - 5], 16) * 1.373f * KPI_TO_PSI_MULTIPLIER; final String[] tpmsTemp = tpmsTempBuf.split(" "); final float tpmsTemp4 = (float) (1.8 * (Integer.parseInt(tpmsTemp[tpmsTemp.length - 2], 16) - 40) + 32); final float tpmsTemp3 = (float) (1.8 * (Integer.parseInt(tpmsTemp[tpmsTemp.length - 3], 16) - 40) + 32); final float tpmsTemp2 = (float) (1.8 * (Integer.parseInt(tpmsTemp[tpmsTemp.length - 4], 16) - 40) + 32); final float tpmsTemp1 = (float) (1.8 * (Integer.parseInt(tpmsTemp[tpmsTemp.length - 5], 16) - 40) + 32);
#66
Thread Starter
weeeeeeeeee
iTrader: (12)
Joined: Jun 2008
Posts: 4,200
Likes: 229
From: Outside Philadelphia
Starting to run out of things to do (good sign -- means I'm getting closer to releasing the code)
For the Fuel Level PID I skinned a Warning Light for it and tied in a blink effect + notification sound for when the current level is < 15%
For the Fuel Level PID I skinned a Warning Light for it and tied in a blink effect + notification sound for when the current level is < 15%
Last edited by ShellDude; 05-06-2012 at 01:24 PM.
#67
Thread Starter
weeeeeeeeee
iTrader: (12)
Joined: Jun 2008
Posts: 4,200
Likes: 229
From: Outside Philadelphia
For anyone interested (I'm actually considering one as a backup) Buy.com has a refurbed 3G version of the Streak 7 up today for $189.99
http://www.buy.com/prod/dell-streak-...230985256.html
http://www.buy.com/prod/dell-streak-...230985256.html
#68
Thread Starter
weeeeeeeeee
iTrader: (12)
Joined: Jun 2008
Posts: 4,200
Likes: 229
From: Outside Philadelphia
Another decent tablet deal... looks like Polaroid rebranded one of the China MIDs.
Ice Cream Sandwich... $120 ... heard you can get it even cheaper elsewhere and I'm very confident it would fit just fine in the OEM nav hood.
http://www.buy.com/prod/polaroid-7-a...ngid=211101545
Ice Cream Sandwich... $120 ... heard you can get it even cheaper elsewhere and I'm very confident it would fit just fine in the OEM nav hood.
http://www.buy.com/prod/polaroid-7-a...ngid=211101545
#69
Another decent tablet deal... looks like Polaroid rebranded one of the China MIDs.
Ice Cream Sandwich... $120 ... heard you can get it even cheaper elsewhere and I'm very confident it would fit just fine in the OEM nav hood.
http://www.buy.com/prod/polaroid-7-a...ngid=211101545
Ice Cream Sandwich... $120 ... heard you can get it even cheaper elsewhere and I'm very confident it would fit just fine in the OEM nav hood.
http://www.buy.com/prod/polaroid-7-a...ngid=211101545
#71
Thread Starter
weeeeeeeeee
iTrader: (12)
Joined: Jun 2008
Posts: 4,200
Likes: 229
From: Outside Philadelphia
finally got around to adding tire temperature.
next I hope to track down the addresses for the cruise control buttons like what PS is doing with the rxduino.
next I hope to track down the addresses for the cruise control buttons like what PS is doing with the rxduino.
Last edited by ShellDude; 05-13-2012 at 12:37 AM.
#73
Thread Starter
weeeeeeeeee
iTrader: (12)
Joined: Jun 2008
Posts: 4,200
Likes: 229
From: Outside Philadelphia
I don't plan on selling anything listed here... It's much more so a build type thread for similar enthusiasts.
I also plan on open sourcing my front-end and bluetooth library at some point once I'm happy with them baseline code wise. I may release a commercial version of it on Google Play with a couple different skins, but that'll likely be the extent of it.
Some of the logic I implemented within the front-end may also be utilized to release some stealth tracking software too.
It's all really just one big proof of concept.
I also plan on open sourcing my front-end and bluetooth library at some point once I'm happy with them baseline code wise. I may release a commercial version of it on Google Play with a couple different skins, but that'll likely be the extent of it.
Some of the logic I implemented within the front-end may also be utilized to release some stealth tracking software too.
It's all really just one big proof of concept.