Aftermarket VXR8 Head Unit options - opinions sought! :)

Aftermarket VXR8 Head Unit options - opinions sought! :)

Author
Discussion

z0m81e

249 posts

142 months

Friday 7th December 2012
quotequote all
FoxdieUK said:


Heya,

Yep I've got that bible bookmarked amongst other things

I feel I've got enough to start working out how I can replace the HVAC unit, biggest hurdle is being able to successfully send a packet into the network. I'm gonna try sending another type of packet before I go home


I've got arduino code that worked on 11bit and an untested 29bit function that someone else wrote so if it doesn't work let me know I will dust mine off and have a look.

Edited by z0m81e on Friday 7th December 16:35

FoxdieUK

Original Poster:

441 posts

140 months

Friday 7th December 2012
quotequote all
z0m81e said:
I've got arduino code that worked on 11bit and an untested 29bit function that someone else wrote so if it doesn't work let me know I will dust mine off and have a look.
Do it! The more hackers, the better biggrin

z0m81e

249 posts

142 months

Friday 7th December 2012
quotequote all
FoxdieUK said:

Do it! The more hackers, the better


Yeah but my car is on the driveway and I don't know if you noticed but its a bit cold outside

z0m81e

249 posts

142 months

Saturday 8th December 2012
quotequote all
OK well I popped out and the old sniffer code from my Vec seems to work on the VXR8 it isn't bothered about the 11bit/29bit thing so that is fine. I'll see if I can isolate a code to try sending back right now its just a massive list of messages.

EDIT: Hmm this may require more thought that previously i'm struggling to isolate the messages I want for some reason. My usual method is just dump a file out where I spam the button a lot then dump one out where I don't any look for the code that only appears in one of them. Right now not so much working Don't know if you have any tips.

arduino said:

829 : 10028040 | 6 | 3F 9 40 0 0 4
848 : 1004A040 | 7 | 0 0 0 1 0 0 0
866 : 1004A040 | 7 | 0 0 0 1 0 0 0
887 : 10028040 | 6 | 3F 9 40 0 0 4
918 : 1004A040 | 7 | 0 0 0 1 0 0 0
952 : FFFE058 | 0 |
984 : FFFE080 | 0 |
1000 : FFFE0C0 | 0 |
1016 : FFFE0B0 | 0 |
1033 : 1004A040 | 7 | 0 0 0 1 0 0 0
1048 : C030040 | 4 | 0 5C FF 0
1087 : 10028040 | 6 | 3F 9 40 0 0 4
1118 : 1004A040 | 7 | 0 0 0 1 0 0 0
1155 : FFFE0BB | 0 |
1187 : 10028040 | 6 | 3F 9 40 0 0 4
1218 : 1004A040 | 7 | 0 0 0 1 0 0 0
1288 : 10028040 | 6 | 3F 9 40 0 0 4
1317 : 1004A040 | 7 | 0 0 0 1 0 0 0
1387 : 10028040 | 6 | 3F 9 40 0 0 4
1418 : 1004A040 | 7 | 0 0 0 1 0 0 0
1487 : 10028040 | 6 | 3F 9 40 0 0 4
1516 : C030040 | 4 | 0 5C FF 0
1533 : 1004A040 | 7 | 0 0 0 1 0 0 0
1550 : 621 | 8 | 0 13 0 0 0 0 0 0
1587 : 10028040 | 6 | 3F 9 40 0 0 4
1687 : 10028040 | 6 | 3F 9 40 0 0 4
1716 : 100180C0 | 3 | 0 0 0
1786 : 10028040 | 6 | 3F 9 40 0 0 4
1887 : 10028040 | 6 | 3F 9 40 0 0 4
1986 : 10028040 | 6 | 3F 9 40 0 0 4
2086 : 10028040 | 6 | 3F 9 40 0 0 4
2149 : FFFE058 | 0 |
2181 : FFFE080 | 0 |
2197 : FFFE060 | 0 |
2213 : FFFE099 | 0 |
2230 : FFFE0B0 | 0 |
2286 : 10028040 | 6 | 3F 9 40 0 0 4
2381 : FFFE0BB | 0 |
2397 : 10028040 | 6 | 3F 9 40 0 0 4
2486 : 10028040 | 6 | 3F 9 40 0 0 4
2545 : 621 | 8 | 0 13 0 0 0 0 0 0
2585 : 10002040 | 4 | 8 0 88 56
2601 : 10004060 | 1 | 0
2618 : 10028040 | 6 | 3F 9 40 0 0 4
2685 : 10028040 | 6 | 3F 9 40 0 0 4
2785 : 10028040 | 6 | 3F 9 40 0 0 4
2885 : 10028040 | 6 | 3F 9 40 0 0 4
2914 : 100180C0 | 3 | 0 0 0
2984 : 10028040 | 6 | 3F 9 40 0 0 4
3085 : 10028040 | 6 | 3F 9 40 0 0 4
3185 : 10028040 | 6 | 3F 9 40 0 0 4
3284 : 10028040 | 6 | 3F 9 40 0 0 4


Edited by z0m81e on Saturday 8th December 12:11


Edited by z0m81e on Saturday 8th December 13:47

FoxdieUK

Original Poster:

441 posts

140 months

Saturday 8th December 2012
quotequote all
Hehe, amused at how you "quoted" Arduino (as in edited the name) wink

Filtering packets isn't easy but I have an idea on how to approach that. I'm gonna do this to my mbed but the process is the same for you;

Add an LED, plus two switches to the board, these will control the filtering;
  • Button 1 = Start / Stop recording
  • Button 2 = Clear filter
Then you add the following logic to the code (YMMV);
  1. Before the main loop, add an integer array (empty) and a boolean integer (set to false)
  2. In your main loop, add a test to see if the header packet is in the integer array. If it is, skip printing that packet
  3. In your main loop, test to see if button 1 has been pressed. If it has, flip the state of the boolean int
  4. In your main loop, check the value of the boolean int, if it's set to true, turn the LED on and add every received packet header to the integer array (checking for duplicates naturally otherwise you'll run out of memory)
  5. In your main loop, test to see if button 2 has been pressed. If it has, clear out the integer array
Then, run the program and start logging, press button 1 to start recording packets to the filter, wait a few seconds, eventually the printed output will stop, at this point press button 1 again and then start trying to test for what you actually need.

If this doesn't work, you can press button 2 to clear the filter and start again wink

EssexVXR8

1,790 posts

187 months

Sunday 9th December 2012
quotequote all
??????????????????? You've just given me a headache reading that !!!!

z0m81e

249 posts

142 months

Sunday 9th December 2012
quotequote all
So I had another quick play with this while the missus was out. I managed to isolate the codes for the volume up/down jog wheel which match what is in the gmlan bible which is I suppose no great shock. I was also able to play them back and set the volume on the radio up/down using the lil 'joystick' on the can shield. Following on from that I know you said you had problems with chimes so I just injected the chime code from the gmlan bible and did get what sounded a lot like the 'you dont have your seatbelt on' chimes so that was good also. I'm using code I pulled off another forum to do the SPI and MCP2515 stuff modified slightly but not in a way that would affect its functionality. I can give you a link to download it if you want to look.

Gary H 2008

3,507 posts

189 months

Sunday 9th December 2012
quotequote all
"So I had another quick play with this while the missus was out"

So many possible jokes

FoxdieUK

Original Poster:

441 posts

140 months

Monday 10th December 2012
quotequote all
If anyone wants to start on this rocky road, I've published working code on mbed.org;

GMLAN Sniffer

On a personal note, I'm feeling quite accomplished. 1 week ago I hadn't programmed in C++, now I'm knocking stuff out that reads CAN-Bus smile

z0m81e

249 posts

142 months

Saturday 15th December 2012
quotequote all
It's going well then Do you happen to know if the 6 buttons along the bottom of the screen and the source selections send on the GMLAN? I'm trying to find them now but not having much success I have a suspicion they aren't sent.

FoxdieUK

Original Poster:

441 posts

140 months

Sunday 16th December 2012
quotequote all
z0m81e said:
It's going well then smile Do you happen to know if the 6 buttons along the bottom of the screen and the source selections send on the GMLAN? I'm trying to find them now but not having much success I have a suspicion they aren't sent.
Funnily enough, I had that same idea, however I didn't spot any packets relating to them whilst mashing them :/

I've never used the Sat Nav but I imagine it uses these, they must be sent across a signal on the same port on the nav RGBS video input (which I'm also idly looking into allowing VGA input to via a converter).

I've also hit a brick wall with my work, my CAN transceiver doesn't seem capable of sending packets into the network, so I've asked Proto Pic to look into single wire CAN transceivers, they're ordering the parts in now to test the water smile

z0m81e

249 posts

142 months

Sunday 16th December 2012
quotequote all
FoxdieUK said:

I've also hit a brick wall with my work, my CAN transceiver doesn't seem capable of sending packets into the network, so I've asked Proto Pic to look into single wire CAN transceivers, they're ordering the parts in now to test the water


Strange, I have the canbus shield from sparkfun which I got through proto pic http://proto-pic.co.uk/can-bus-shield which works for me. Its an MCP2515/2551 controller/transceiver and definitely sends/receives ok on the single wire. I guess you must have an appropriate cable with grounded CAN-L line otherwise you would not be able to receive either. Let me know if I can help at all.

Edited by z0m81e on Sunday 16th December 12:41

FoxdieUK

Original Poster:

441 posts

140 months

Sunday 16th December 2012
quotequote all
z0m81e said:
Strange, I have the canbus shield from sparkfun which I got through proto pic http://proto-pic.co.uk/can-bus-shield/ which works for me. Its an MCP2515/2551 controller/transceiver and definitely sends/receives ok on the single wire. I guess you must have an appropriate cable with grounded CAN-L line otherwise you would not be able to receive either. Let me know if I can help at all.

Edited by z0m81e on Sunday 16th December 12:41
See, thats exactly what I thought, reading packets is totally fine, sending them however just doesn't work!

I'm using the SKPang CAN-Bus Breakout Board with my mbed, reading packets totally fine, sending them just has no response. It also has the MCP2551 CAN Transceiver but tying CAN_L to GND just hasn't worked for me. I've tried connecting it straight to the OBD-II port and manually tying into the SW-CAN network by splicing into the green wire going into the head unit.

There's a big discussion thread on this over at Carmodders.com, Jezzab (one of the most prominent members) also had good fortune with the Arduino CANBUS Shield by connecting both CAN_H and CAN_L together. I'm gonna try that shortly to see if that works, but I feel it's a bust.

Either my breakout board isn't wired up the same way, or the CAN Controller on the mbed just isn't up to the task.

z0m81e

249 posts

142 months

Sunday 16th December 2012
quotequote all
I use mine connected to the socket in the drivers footwell. I bought a cable and connector from sk pang I think and wired it up as normal except that I connected the CAN-H line to pin 1 and left the CAN-L line disconnected. On the arduino shield there is a space for a header that exposes 5V, GND, CAN-L, CAN-H and I used that to link the CAN-L to GND. I assume in theory you could connect it to the ground pin in the connector on the cable as well. I would assume the purpose of this is to tie the CAN-L side of the transceiver to ground and stop the input floating and upsetting the controller.

FoxdieUK

Original Poster:

441 posts

140 months

Sunday 16th December 2012
quotequote all
z0m81e said:
I use mine connected to the socket in the drivers footwell. I bought a cable and connector from sk pang I think and wired it up as normal except that I connected the CAN-H line to pin 1 and left the CAN-L line disconnected. On the arduino shield there is a space for a header that exposes 5V, GND, CAN-L, CAN-H and I used that to link the CAN-L to GND. I assume in theory you could connect it to the ground pin in the connector on the cable as well. I would assume the purpose of this is to tie the CAN-L side of the transceiver to ground and stop the input floating and upsetting the controller.
I've just been out to the car to test the theory of tying CAN_H to CAN_L, it was a no-go and (understandably) made things worse (no packets logged because the transceiver cannot differentiate between input signals that match each other.

I've tried leaving CAN_L floating, connected to signal GND on the board, and connected to chassis GND on the OBD-II connector. Neither permitted me the ability to transmit.

z0m81e

249 posts

142 months

Sunday 16th December 2012
quotequote all
Are you sure your sending code is correct? I've uploaded my code https://github.com/Afterglow/arduino-gmlan for reference. I use the 29bit send function for the VXR8.

edit - I seriously can't make the links work properly in this forum :/

Edited by z0m81e on Sunday 16th December 15:10

z0m81e

249 posts

142 months

Tuesday 18th December 2012
quotequote all
OK it has come to my attention I need to enabled the Video in Motion on my car to make this worthwhile, can anyone recommend a reliable source for this?

Gary H 2008

3,507 posts

189 months

Tuesday 18th December 2012
quotequote all
lol, I think Jason can think of someone...

FoxdieUK

Original Poster:

441 posts

140 months

Tuesday 18th December 2012
quotequote all
z0m81e said:
Are you sure your sending code is correct? I've uploaded my code https://github.com/Afterglow/arduino-gmlan for reference. I use the 29bit send function for the VXR8.
Had a look at your code, bit complex, I'm wondering if my mbed is attempting to transmit 11-bit CAN after reading your code. Something to investigate. That and I talked Proto-Pic into stocking both single wire and dual wire CAN controllers biggrin

z0m81e said:
edit - I seriously can't make the links work properly in this forum :/
Don't fret, you literally just surround them with URL tags, here are two examples, one of what your link should have been, and a copy / paste of the named link I posted earlier for the single wire CAN controller;

Example of a simple link: [URL]https://github.com/Afterglow/arduino-gmlan[/URL]
Example of a named link: [URL=http://proto-pic.co.uk/can-bus-ic-txrx-single-wire-8-soic/]single wire[/URL]

Simple!

z0m81e said:
OK it has come to my attention I need to enabled the Video in Motion on my car to make this worthwhile, can anyone recommend a reliable source for this?
Gary H 2008 said:
lol, I think Jason can think of someone...
This is a service that myself and winmiller are about to start offering, however it requires dash disassembly and clipping on an EEPROM programmer. We can also change the start up logos to the animated HSV one and change the text colour to blue if you desire.

I'll discuss with winmiller a strategy for how to offer this and post up a new thread smile

z0m81e

249 posts

142 months

Tuesday 18th December 2012
quotequote all
FoxdieUK said:
Had a look at your code, bit complex, I'm wondering if my mbed is attempting to transmit 11-bit CAN after reading your code. Something to investigate.


Yeah I can't take credit for that if you check the comment in the header it lists the original author My alterations are fairly trivial.

FoxdieUK said:
This is a service that myself and winmiller are about to start offering, however it requires dash disassembly and clipping on an EEPROM programmer. We can also change the start up logos to the animated HSV one and change the text colour to blue if you desire.

I'll discuss with winmiller a strategy for how to offer this and post up a new thread


That sounds cool i'm not in any particular rush so let me know once you work out how you are going to handle doing it and i'll be your first customer