New hack on an old bus.. E&C.
I'd like to make an aux adapter for all of us with in dash CD UNO head units in our 90s era GM cars. As some of you know, the UNO single CD player can't control a changer and the aux adapters emulate a changer. So no go.
I hacked an adapter out of a remote cassette deck a few years ago and now I plan on hacking the E&C protocol that controls that... Emulate the cassette deck via AVR/arduino.
Anybody out there have anything on E&C?
So far this is what I have to go on: http://pangea.stanford.edu/~schmitt/e_and_c_bus/
Wednesday, January 19, 2011
Thursday, December 23, 2010
Untested clarification of the Pontiac G8 DIC text API
Had some spare time, did some digging into some of the DIC text control packets.
The following is just observation based. I have yet to code up something to test the observations.
Arbitration ID 0x183 : Arb_Text_Display_Status
Packet Size: 4 bytes
29bit CAN header
Frames DIC text packets.
Sent from ECU 0x060 at priority 4 (DIC?)
Need to experiment to see if DIC sends as response to a 0x185 packet.
CAN Header: 0x10306060
Header Framing Packet:
0x00 0x91 0x00 0x01
Tail Framing Packet:
0x00 0x91 0x00 0x07
Byte 2 composition:
1001 0xxx
xxx is the message sequence number. Maps to 0x185 Disp parameter sequence. Valid values from 001 to 111
Other packets observed:
0x01 0x00 0x00 0x00 <- Unknown function, seen near power down
0x00 0xC0 0x00 0x00 <- Unknown function
0x00 0x80 0x00 0x00 <- Unknown function
0x00 0x93 0x00 0x09 <- Seen early. Unknown 0x09 in byte 4.
Arbitration ID 0x185 : Arb_Text_Req_Set_Disp_Parameters
Packet Size: 6 bytes
29bit CAN header
Precedes DIC text packets to control display parameters.
Send from ECU 0x080 at priority 4 (Radio?)
Only scroll arrow control has been isolated at this time.
CAN Header: 0x1030A080
Packet formatting
0x00 0x04 0x49 0x40 0x00 0x03
Byte 3-4
0100 1001 0100 0000
Scroll Arrow Enable Bit - Mutually exclusive of No Scroll Arrow bit
No Scroll Arrow Bit - Mutually exclusive of Scroll Arrow Enable bit
Sequence Number. Sets sequence for 0x183 display status header and footer. Must match.
Byte 1: Unknown Function. Seen the following bytes (0x00, 0x02, 0x03, 0xC2, 0x28)
0x00 used in transmitting arrow parameter packets
Byte 2: Always observed as 0x00
Byte 3-4: As above.
Byte 5: Always observed as 0x00
Byte 6: Always observed as 0x03
Arbitration ID 0x186: Arb_Text_Req_Set_Display_Text
Packet Size: 8 bytes.
29bit CAN header
Sent from ECU 0x080 at priority 4 (RADIO?)
Transmits packets to DIC for display. Framed by 0x183 framing packets and format controlled with 0x185 packet.
Text is ASCII encoded. Text is terminated by 0x04. Remainder of packet is null filled. (0x00)
1-3 packets can form the DIC text update. Length of string will determine packet count. 14 bytes is practical limit.
CAN Header:
Format for Packet 1: 0x1030C080
0x45 0xYY 0xZZ Data Data Data Data Data
YY = Packet count. 0x01 for 1 text packet. 0x02 for 2 packet text. 0x03 for 3 packet text.
ZZ = Scroll arrow to display (0x01 is both up/down, others TBD) If control parameter No scroll arrow bit set, ZZ will be first ASCII encoded packet.
Data = ASCII encoded text string. Terminate by 0x04 and null pad packet to 8 bytes.
Format for Packet 2:
0x44 0x02 DATA DATA DATA DATA DATA
Data = ASCII encoded text string. Terminate by 0x04 and null pad packet to 8 bytes.
Format for Packet 3:
0x44 0x03 DATA DATA DATA DATA DATA
Data = ASCII encoded text string. Terminate by 0x04 and null pad packet to 8 bytes.
Example SequencesHEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 91 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 34 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 91 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | 00 04 48 80 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 92 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 34 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 92 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | C2 04 48 C0 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 93 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 35 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 93 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | C2 04 49 00 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 94 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 36 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 94 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | 28 04 49 40 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 95 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 37 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 95 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | C2 04 49 80 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 96 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 38 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 96 00 07
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 91 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 34 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 91 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | 00 04 48 80 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 92 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 34 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 92 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | C2 04 48 C0 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 93 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 35 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 93 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | C2 04 49 00 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 94 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 36 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 94 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | 28 04 49 40 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 95 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 37 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 95 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | C2 04 49 80 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 96 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 38 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 96 00 07
The following is just observation based. I have yet to code up something to test the observations.
Arbitration ID 0x183 : Arb_Text_Display_Status
Packet Size: 4 bytes
29bit CAN header
Frames DIC text packets.
Sent from ECU 0x060 at priority 4 (DIC?)
Need to experiment to see if DIC sends as response to a 0x185 packet.
CAN Header: 0x10306060
Header Framing Packet:
0x00 0x91 0x00 0x01
Tail Framing Packet:
0x00 0x91 0x00 0x07
Byte 2 composition:
1001 0xxx
xxx is the message sequence number. Maps to 0x185 Disp parameter sequence. Valid values from 001 to 111
Other packets observed:
0x01 0x00 0x00 0x00 <- Unknown function, seen near power down
0x00 0xC0 0x00 0x00 <- Unknown function
0x00 0x80 0x00 0x00 <- Unknown function
0x00 0x93 0x00 0x09 <- Seen early. Unknown 0x09 in byte 4.
Arbitration ID 0x185 : Arb_Text_Req_Set_Disp_Parameters
Packet Size: 6 bytes
29bit CAN header
Precedes DIC text packets to control display parameters.
Send from ECU 0x080 at priority 4 (Radio?)
Only scroll arrow control has been isolated at this time.
CAN Header: 0x1030A080
Packet formatting
0x00 0x04 0x49 0x40 0x00 0x03
Byte 3-4
0100 1001 0100 0000
Scroll Arrow Enable Bit - Mutually exclusive of No Scroll Arrow bit
No Scroll Arrow Bit - Mutually exclusive of Scroll Arrow Enable bit
Sequence Number. Sets sequence for 0x183 display status header and footer. Must match.
Byte 1: Unknown Function. Seen the following bytes (0x00, 0x02, 0x03, 0xC2, 0x28)
0x00 used in transmitting arrow parameter packets
Byte 2: Always observed as 0x00
Byte 3-4: As above.
Byte 5: Always observed as 0x00
Byte 6: Always observed as 0x03
Arbitration ID 0x186: Arb_Text_Req_Set_Display_Text
Packet Size: 8 bytes.
29bit CAN header
Sent from ECU 0x080 at priority 4 (RADIO?)
Transmits packets to DIC for display. Framed by 0x183 framing packets and format controlled with 0x185 packet.
Text is ASCII encoded. Text is terminated by 0x04. Remainder of packet is null filled. (0x00)
1-3 packets can form the DIC text update. Length of string will determine packet count. 14 bytes is practical limit.
CAN Header:
Format for Packet 1: 0x1030C080
0x45 0xYY 0xZZ Data Data Data Data Data
YY = Packet count. 0x01 for 1 text packet. 0x02 for 2 packet text. 0x03 for 3 packet text.
ZZ = Scroll arrow to display (0x01 is both up/down, others TBD) If control parameter No scroll arrow bit set, ZZ will be first ASCII encoded packet.
Data = ASCII encoded text string. Terminate by 0x04 and null pad packet to 8 bytes.
Format for Packet 2:
0x44 0x02 DATA DATA DATA DATA DATA
Data = ASCII encoded text string. Terminate by 0x04 and null pad packet to 8 bytes.
Format for Packet 3:
0x44 0x03 DATA DATA DATA DATA DATA
Data = ASCII encoded text string. Terminate by 0x04 and null pad packet to 8 bytes.
Example SequencesHEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 91 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 34 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 91 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | 00 04 48 80 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 92 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 34 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 92 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | C2 04 48 C0 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 93 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 35 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 93 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | C2 04 49 00 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 94 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 36 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 94 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | 28 04 49 40 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 95 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 37 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 95 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | C2 04 49 80 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 96 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 38 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 96 00 07
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 91 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 34 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 91 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | 00 04 48 80 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 92 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 34 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 92 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | C2 04 48 C0 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 93 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 35 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 93 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | C2 04 49 00 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 94 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 36 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 94 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | 28 04 49 40 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 95 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 37 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 95 00 07
HEADER:0x1030A080 Pri:4 Arb:185 Dest:80 | C2 04 49 80 00 03
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 96 00 01
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 45 02 00 4D 50 33 20 54
HEADER:0x1030C080 Pri:4 Arb:186 Dest:80 | 44 02 72 6B 38 04 00 00
HEADER:0x10306060 Pri:4 Arb:183 Dest:60 | 00 96 00 07
Monday, September 27, 2010
1997 F Body Manual Enhanced PIDs
If you are interested in them, I have em. Email me.
And I have the Arduino talking nicely to the Camaro. Project is going quicker then I thought.
And I have the Arduino talking nicely to the Camaro. Project is going quicker then I thought.
Thursday, September 23, 2010
VPW Progress
Got J1850 VPW running native on the arduino. And let's just say it wasn't easy, mostly self inflicted!
More to come soon.
More to come soon.
Friday, September 17, 2010
New (Old) Project..
Well.. Ipod stuff works 99% and I am going to shift gears a little.
Time to learn VPW and build a OBD interface for my 1997 Camaro!
Will post details and stuff when I figure out what I really want to do.
Time to learn VPW and build a OBD interface for my 1997 Camaro!
Will post details and stuff when I figure out what I really want to do.
Tuesday, July 6, 2010
V0.3 Software
Release Notes:
- uses eeprom to remember last track
- with iPod disconnected holding left button down for 10 seconds puts gmPod into GMLAN scantool mode. Use 115200 baud on the USB serial port to see stream.
- album repeat mode now set
- small bugfixes.
Bugs:
- Something is still causing the iPod to hang once in a while. Working on that..
- Didn't detect iPod this morning. Will try and duplicate
gmPod-100706a_V0.3.zip
- uses eeprom to remember last track
- with iPod disconnected holding left button down for 10 seconds puts gmPod into GMLAN scantool mode. Use 115200 baud on the USB serial port to see stream.
- album repeat mode now set
- small bugfixes.
Bugs:
- Something is still causing the iPod to hang once in a while. Working on that..
- Didn't detect iPod this morning. Will try and duplicate
gmPod-100706a_V0.3.zip
Monday, May 10, 2010
V0.2 Hardware and firmware
Finally got around to fixing the board.. Again, this isn't tested and won't run with the posted firmware (Added software mode control to the CAN transceiver, will need to add control of that to the sketch.)
Board:
CAN_Shield_V0.2.zip
Latest mostly working firmware:
gmPod-100510a.zip
There are still a few small bugs in the firmware I am working on but this is 95% working and working well.
Board:
CAN_Shield_V0.2.zip
Latest mostly working firmware:
gmPod-100510a.zip
There are still a few small bugs in the firmware I am working on but this is 95% working and working well.
Subscribe to:
Posts (Atom)