Aftermarket VXR8 Head Unit options - opinions sought! :)
Discussion
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
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.
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
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
Hehe, amused at how you "quoted" Arduino (as in edited the name)
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;
If this doesn't work, you can press button 2 to clear the filter and start again
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
- Before the main loop, add an integer array (empty) and a boolean integer (set to false)
- 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
- In your main loop, test to see if button 1 has been pressed. If it has, flip the state of the boolean int
- 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)
- In your main loop, test to see if button 2 has been pressed. If it has, clear out the integer array
If this doesn't work, you can press button 2 to clear the filter and start again
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.
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
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
z0m81e said:
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.
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
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
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.
See, thats exactly what I thought, reading packets is totally fine, sending them however just doesn't work! Edited by z0m81e on Sunday 16th December 12:41
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.
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.
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.
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 :/
edit - I seriously can't make the links work properly in this forum :/
Edited by z0m81e on Sunday 16th December 15:10
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 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
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
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
Gassing Station | HSV & Monaro | Top of Page | What's New | My Stuff