Sunday, April 23, 2017

Github for the gateway: tmkdev - github - gmlan_gw

Logged data out of a new 2017 GMC truck. It's totally different then the older 29bit as per the GMLAN bible. Log in the repo.


Friday, April 21, 2017

Life again..

Been a while since I was last active here. I am back playing with GMLAN. This time on a 2009 CTS-V and a raspberry pi with a SWCAN interface board.

Stay tuned - I'll start a github shortly with some logs and some code.

Current project plan is to use the Pi as a gateway. Push drive logs from the pi to the web via a bluetooth tethered phone and push notifications from the phone to the car. I want to be able to see SMS messages on the DIC. Maybe other things.

Good news is the Caddy and the G8 messaging are pretty much the same..

Thursday, February 23, 2012

Shell script for ELM327 logging

Next latest project.. A bash script to do ELM327 logging.

Plan is to set up a bluetooth ELM327 and have my embedded linux box log what's going on in my car. I have it working on a few PIDs and obdsim. I need to test it on the real thing..

Monday, September 26, 2011

WT-32 Bluegiga..

Hooked up the WT-32 Bluegiga breakout from Sparkfun and got it working sorta. Paired it with my phone and got A2DP with autoconnect working. Verified analog audio comes out.

Sadly it only has iWrap 3.0 on it which is missing some of the features I need (AVRCP). Will try and update the firmware to 4.0 this weekend and hopefully get it interfaced to a AVR/Arduino for prototyping.. Or make a small brick...

Wednesday, September 21, 2011

The next project..

I liked my iPod. But my Android phone with bluetooth and a subsonic backend media server kinda made it irrelevant.

So it's time to bring the iPod adapter into the new world.

I have two ideas:

Integrated Bluetooth A2DP and AVRCP control with the Pontiac G8. Use wheel controls to play/ff/rev a Bluetooth device. Display playing track info on the DIC. I have all the parts, just need to spend some time putting them all together.

Cemublue - Yep. Take the E&C bus cassette emulator and bring it into the bluetooth world. Should be almost easier then the G8/GMLan solution!

Have decided on using a bluegiga WL-32 module as the bluetooth core. Will update with progress (I hope there is progress!)

Tuesday, August 2, 2011

Monday, March 21, 2011

Cassette Emulation Board - Work in progress

Folks,

The Cemu board as published needs a code revision and 2 mod wires to work. Took quite a bit of head scratching to figure out the issues. Mode wire #1 - the 5V regulator is not grounded. Mod wire #2 - one of the audio paths is not connected to the 3.5mm plug. Code change - the ec_tx and ec_rx are swapped.

Will post new code and board/eagle files this week. With that said, it is working like a charm now.

Thursday, March 17, 2011

Been a month..

And that's about the time it takes batchPCB to turn around a board. I got my 4 prototype PCBs last night, stuffed one of them and made up a wiring harness with a factory Delphi connector ordered from Mouser.

Tonight I plug it in and test it I hope. Good thing the Camaro headunit is about the easiest headunit in the world to remove!

I'll take some pictures tonight.

Thursday, February 17, 2011

CEMU AUX V0.1 Files

I have a breadboarded version of my GM E and C cassette emulator running in my Camaro. Here are all my design files. Consider them free as in beer open source, NOT FOR COMMERCIAL USE without my expressed written permission.

Grab the eagle file to see how I was interfacing with the E&C and the AVRs.

Use them at your own risk as always. Your mileage may vary.

Arduino Casette emulator and E&C Scanner
Cemu Attiny 85 Source code (GCC Compatible)
Eagle Files for Beta Aux in board - Eagle and Schematic
Collection of E&C Logs and messages

I will have a spare board or two if your interested in trying this in you older GM automobile. Drop me a line.

Thursday, January 27, 2011

E and C Cassette Deck emulation

I got it working, I'll post some arduino sketches this weekend.

Have one that emulates and one I have been using as an E&C scanner.

Next step is PCB design. Might port the design from Atmega328/Arduino to Attiny85 or something.

Not bad, 4 days from getting the cassette deck to working emulation!

Friday, January 21, 2011

E&C Head Unit logs

So far, everything I have seen from a 97 CD UNO Chevy Camaro head unit on the E&C Bus. Protocol looks pretty easy to replicate and I think I should have no issues emulating a cassette deck.


Radio On:
1100001011111110010101
Radio Off:
1100001011111110000100

User keypress or sync or something. Happens after most user key presses:
111001101111                                                                

Cassette Deck Poll?:
1110011100000100                       

CD Transition:
111001101110001101
1100001011111110010101 (Confirm this?)
111001101110001101

Cold Start. 12V applied
1101010100                                                                  
111001101111                                                                 
111001101111                                                                
1100001011111111                                                            
1110011100000100                       
1110011100000100                       
1110011100000100                       
11100111000100                         
1100001011111110000100                 
1110011100000100                       
111001101111

Powering Radio on
111001101111
1100001011111110010101
111001101111

Powering Radio Off
111001101111
1100001011111110000100

Most key press events
111001101111


Aux with no CD (Think this is the look for tape deck command. Will confirm when I get one)
1110011100000100

Inserting a CD
111001101110001101
1100001011111110010101
111001101110001101

Ejecting CD
111001101111

Remove Ignition
111001101111
11000010111111100100

Power on by Ignition
1110011100000100
111001101111
1100001011111110010101
111001101111

Thursday, January 20, 2011

E and C bus decoding progress

So far so good. I have the arduino reading E&C. I have observed about 5 or 6 messages. Simple stuff so far. Waiting for the cassette deck so I can progress further.

My data seems to match the link below, at least for radio on and off events.

I will document my progress once I get some ambition. I have a proof of concept and some working arduino code to show for my efforts tonight and that's more than I expected.

Wednesday, January 19, 2011

E&C Bus... Anybody?

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/

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   

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.

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.

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.

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

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.

Wednesday, April 28, 2010

Proof!

Got the display glitches working. Needed a 30ms delay between packets in multi packet DIC messages.

Here is gmPOD hardware that I have working:



And some videos.. Taken with my phone. So the quality is nasty bad..

Video 1  Video 2 Video 3


It really works!