LS1GTO Forums banner

VZClusterMod - Public beta

194231 Views 990 Replies 185 Participants Last post by  Sturdy
3


So I've been working on a program to update the cluster with all the fun new information we've discovered over in the original cluster-hacking thread. After some hours of R&D on what's in the memory we can now:

  • Turn on the shift light, change shift RPMs
  • Set custom shutdown text with the HSV logo
  • Change logos
  • Turn off the DRL light, and/or the DRLs
  • Dim the MPH light on 04 clusters
  • Fix the speedometer error on 04 clusters
  • Enable the current gear indicator
  • Recalibrate the temperature gauge
And a whole bunch of other stuff, and in the car too.
This is still beta software, but I've had a few beta testers try it out and had some success in-car. I'd like some feedback from 05-06 people to make sure nothing's different with the heartbeat stuff, so please post in this thread about your results.

I'm releasing vzclustermod under GPLv3, which means that everyone can look at and modify the source should they feel so inclined.

To get the software/documentation, go here:
http://1337vending.com/vzclustermod/

A word on cables:


I've tried this cable here on the bench and in the car: http://www.aldlcable.com/sc/details.asp?item=aldlobd2u
I've also tried the FTDI FT232RL usb to serial adapter for Arduino (found on ebay) on the bench and had good results. I haven't tried it in the car, because I have the good cable. People have reported success using FTDI FT232RL usb-serial adapters in-car, but I know some people have had problems with communication.
Update: If the cable does not explicitly specify ALDL or OBD1 it will not work! R&D at your own risk!

Build your own cable here! Thanks to Shane.

A word on 160°F thermostats:
If you are running a 160°F thermostat, you will need to set the cold shift RPM to whatever shift point you want for all gears! Since the cold shift light is active below 185°F (85°C), it will never look at the other settings. As of this post, no one has located where the temperature is stored in the cluster memory (pretty sure it's not in the eeprom), so we have no way to update it. :smurf:


A word on drivers:
If windows doesn't automatically detect your cable, you may need to go here to get the drivers for your FTDI FT232 cable:
http://www.ftdichip.com/Drivers/VCP.htm

There's a getting started doc on the site, but I'll post it here as well:

Getting Started

If you're using the windows binary, double click the vzclustermod-xxxbeta.exe, which should open a command window like so:


Since the program is all command line, the rest of the getting started will be text rather than screenshots.

To find out what COM ports are available, type listports Example:
Code:
[incar-cluster]$ listports
COM1
COM5
COM4
If you're not sure which COM port is your ALDL Cable, unplug it from the computer, run listports, and plug it back in and run listports again. Whichever one disappeared and reappeared is your cable.

Now open the port:

Code:
[incar-cluster]$ open com4
serial port opened successfully
[incar-cluster-com4]#

Note that the prompt changed from [incar-cluster]$ to [incar-cluster-com4]#

Turn the key on, but leave the engine off.

Now you're ready to work! If you're in the car, no need to change modes, if you're on the bench type bench. This will keep the program from listening for vehicle heartbeats.

To verify your cable is working, run listen and you should see something like this repeated over and over:
Code:
[incar-cluster-com4]# listen
==Heartbeat==
  Module:b8 Mode:A2 Data:B8
  Module:b9 Mode:02 Data:00,00
  Module:40 Mode:C6 Data:39,02
  Module:BCM-data Mode:12 Data:00,00,00,3D,19,00,00,70,F2,1E,00,00,10,00,00,00,94,00
  Module:a8 Mode:03 Data:
  Module:20 Mode:8B Data:
  Module:21 Mode:09 Data:38,2C,00,00,00,00,00,94,94
  Module:90 Mode:1B Data:
  Module:91 Mode:03 Data:18,00,00
  Module:a0 Mode:0B Data:
  Module:Airbag-data Mode:02 Data:08,00
  Module:Transmission-data Mode:07 Data:FF,10,40,05,00,00,00
  Module:b8 Mode:A2 Data:B8
  Module:b9 Mode:02 Data:00,00
  Module:40 Mode:C6 Data:39,02
  Module:BCM-data Mode:12 Data:00,00,00,3D,19,00,00,70,F2,1E,00,00,10,00,00,00,94,00
  Module:20 Mode:8B Data:
  Module:21 Mode:09 Data:38,2C,00,00,00,00,00,94,94
Press Ctrl+C to stop listening, it scrolls quite quickly.

To read table 9, run read 9. This is a stock 2004 table.
Code:
[incar-cluster-com4]# read 9
Waiting for heartbeat...
Send: ['F2', '57', '01', '09', 'AD']
['01', '09', '05', '00', '00', '00', '00', '00', '50', '79', '7C', '7E', '7E', '7E',
 '60', '80', '00', '00', '00', '00', '00', '00', '00', '00', '00', '00', '00']
ALDL Mode: 0x1 (read configuration table) Table: 0x9
Startup Logo: Pontiac
HSV Serial: 0
HSV Model: XU6
Cold shiftlight 4000 RPM
1st gear shiftlight 6000 RPM
2nd gear shiftlight 6200 RPM
3rd gear shiftlight 6300 RPM
4th gear shiftlight 6300 RPM
5th gear shiftlight 6300 RPM
Shift light on: False
Custom text:>            <
Note that the shift light is off, but the RPM values are set. 2005-2006 GTOs have the RPM values set to 9000.

I want my shiftlight on!!!1 ... Ok, now send preset shiftlight-on
Code:
[incar-cluster-com4]# preset shiftlight-on
===Current Config===
Send: ['F2', '57', '01', '09', 'AD']
['01', '09', '05', '00', '00', '00', '00', '00', '50', '79', '7C', '7E', '7E', '7E',
 '60', '80', '00', '00', '00', '00', '00', '00', '00', '00', '00', '00', '00']
Startup Logo: Pontiac
HSV Serial: 0
HSV Model: XU6
Cold shiftlight 4000 RPM
1st gear shiftlight 6000 RPM
2nd gear shiftlight 6200 RPM
3rd gear shiftlight 6300 RPM
4th gear shiftlight 6300 RPM
5th gear shiftlight 6300 RPM
Shift light on: False
Custom text:>            <
===New Config===
['01', '09', '05', '00', '00', '00', '00', '00', '50', '79', '7C', '7E', '7E', '7E',
 '60', '90', '00', '00', '00', '00', '00', '00', '00', '00', '00', '0 '00']
Startup Logo: Pontiac
HSV Serial: 0
HSV Model: XU6
Cold shiftlight 4000 RPM
1st gear shiftlight 6000 RPM
2nd gear shiftlight 6200 RPM
3rd gear shiftlight 6300 RPM
4th gear shiftlight 6300 RPM
5th gear shiftlight 6300 RPM
Shift light on: True
Custom text:>            <
===Write config===
Send: ['F2', '70', '28', '09', '05', '00', '00', '00', '00', '00', '50', '79', '7C', '7E', '7E', '7E',
'60', '90', '00', '00', '00', '00', '00', '00', '00', '00', '00', '00', '00', 'B9']
['28', '09', '01']
Easy.

Other useful presets are under the Presets documentation. For those averse to RTFM, here are some good presets:
mph-dim
drl-fulloff
custom-text=RTFM

I also want to thank the following people, because I certainly didn't figure this out all by myself:
DSMinVA for the original POC here on LS1GTO
Beerman and 06phantom for figuring out the security algorithm
Tazzi for explaining ALDL stuff and original cluster R&D
Stoopalini for the spreadsheet
Slow for eeprom dumps and the Tech 2 ALDL dumps
Chris White for showing that this is possible :)
And everyone who beta-tested stuff.:burnout:

Cheers. :gears:

Attachments

See less See more
961 - 980 of 991 Posts
There's always the secret menu for a digital temp reading. Not practical for everyday but if you're doing something that will push temps to 215 and above you could set it up.
  • Like
Reactions: 1
Just a helpful tip for those that can listen and get heartbeat readings, but were unable to get any response after using the "read 9" code and then not getting any results. Please make sure that after you attach the cable to the laptop and to the obd port, when the instructions say to turn the key to the on position, this means that all the lights on the dash need to be lit up. So not the first key position which just turns on the radio, the key needs to be in the position where the next turn would actually start the vehicle.

Hopefully this helps someone since I was stuck on it for a few minutes after trying out the other codes and still not getting a reading from table 9.
Is anyone having luck using this on Windows 11?
Is anyone having luck using this on Windows 11?
I just tested it on a Windows 11 machine, and I was able to connect and read just fine. Didn't try writing anything though. Laptop was not on wifi at the time, and Windows said it could not connect to SmartScreen, but I just chose to run anyways.

Did not need to install any additional drivers or anything, just plugged it into the car, then to the computer, then fired up vzclustermod.

What problem are you having?
What problem are you having?
I can connect to the com port but not much after that. I can post errors when I get home.
Just now getting back to this. Below is what I'm getting. I am using the purchased cable from the original post. It worked on my old laptop years ago.

[incar-cluster-com3]# read 0
Waiting for heartbeat...
Send: ['F2', '57', '01', '00', 'B6']

error: 'NoneType' object has no attribute 'getitem'
[incar-cluster-com3]#

This is what I get trying to clear my airbag code.

[incar-airbag]$ listports
COM3
[incar-airbag]$ open com3
serial port opened successfully
[incar-airbag-com3]# read 0
Waiting for heartbeat...
Send: ['FB', '57', '01', '00', 'AD']
retry #1
Waiting for heartbeat...
Send: ['FB', '57', '01', '00', 'AD']
retry #2
Waiting for heartbeat...
Send: ['FB', '57', '01', '00', 'AD']
retry #3
Waiting for heartbeat...
Send: ['FB', '57', '01', '00', 'AD']
retry #4
Waiting for heartbeat...
Send: ['FB', '57', '01', '00', 'AD']
retry #5
None

error: object of type 'NoneType' has no len()
[incar-airbag-com3]# readcodes
Waiting for heartbeat...
Send: ['FB', '57', '01', '02', 'AB']
retry #1
Waiting for heartbeat...
Send: ['FB', '57', '01', '02', 'AB']
retry #2
Waiting for heartbeat...
Send: ['FB', '57', '01', '02', 'AB']
retry #3
Waiting for heartbeat...
Send: ['FB', '57', '01', '02', 'AB']
retry #4
Waiting for heartbeat...
Send: ['FB', '57', '01', '02', 'AB']
retry #5
None
Waiting for heartbeat...
Send: ['FB', '57', '01', '04', 'A9']
retry #1
Waiting for heartbeat...
Send: ['FB', '57', '01', '04', 'A9']
retry #2
Waiting for heartbeat...
Send: ['FB', '57', '01', '04', 'A9']
retry #3
Waiting for heartbeat...
Send: ['FB', '57', '01', '04', 'A9']
retry #4
Waiting for heartbeat...
Send: ['FB', '57', '01', '04', 'A9']
retry #5
None

error: 2
[incar-airbag-com3]# clearcodes
Waiting for heartbeat...
Send: ['FB', '56', '0A', 'A5']
[]
Reset sent
[incar-airbag-com3]#
See less See more
If I want to copy a table how can I copy this to the clipboard?
Can anyone help me out with table 2?

PM is fine if you don't wish to discuss privately
Just as an FYI really, used this to read / clear the airbag codes on a VX Commodore.

Makes sense as it's the same airbag system from VT - VZ, but thought it worth mentioning.

Additional FYI, UK / Aus cars with seat airbags, naturally VZAirbag doesn't display the codes for them as the GTOs don't get seat airbags, but the 'Clear Airbag Codes' is a generic message and so will clear them.
  • Like
Reactions: 2
That’s cool. And I didn’t realize some non US models had seat airbags.
So I thought I'd try and compile a VZAbs as it seems the OP mostly wrote the code for it already, albeit I assume it's fairly untested...

I've had zero exposure at all to python before, which it's written in. The actual code side of it is fine as I've spent 18 years or so coding, it's just trying to get the damn thing to actually compile in to something I can run on Windows.

Anyone got any helpful advice? :D I've ended up with python installed, and have compiled an exe using PyInstaller, which was supposed to solve all my problems, but the exe it produces just crashes with unhelpful errors that make me suspect there's more to getting the source to compile than is immediately apparent.

EDIT:

Ignore that, making some progress now :)
  • Like
Reactions: 1
As a bit of an update, spent a few hours tinkering, basically it was written in Python 2.something, and I ended up with Python 3.11 as that is the latest and obviously I just installed whatever was current.

This has meant there's a few code changes because of how string / unicode stuff is handled differently in Python 3 from 2, and some silly things like calling 'print' now requires brackets around and so on.

Anyway, got it compiling and almost working, was just chasing my tail with working out what Python wanted in terms of converting the bytes returned from the car in to text to display, but think I've got to the bottom of that now, will have another look in the morning.

What would be really nice is to be able to initiate the ABS Bleed procedure, but that's looking a bit unlikely at the moment. I think an ABS clear codes should be doable at least. I have the VY Ute to read off as well which at least doesn't have any codes set whilst the Monaro currently does, so can do a bit of basic comparison to maybe find out which memory table contains the ABS fault codes.
See less See more
Can anyone help me out with table 2?

PM is fine if you don't wish to discuss privately
If you're using VZClusterMod I'm guessing youre reading from the Cluster module, and all that's defined in the code for table 2 is the odometer so there's plenty to work out!!

Either way, for reference, mine are:
From the Ute:
['01', '02', '00', '01', '7B', '09', '00', '00', '54', 'CD', '00', '03', 'A3', 'F8', '01', '9E', '00', '05', '00', '0E', '00', '2B', '00', '0A', '14', '00', '00', '00', '00', '00', '00', '00', '00', '5F', '00', 'A9', '00', '00', '0E', '54', '00', '00', '85', 'EA', '03', 'E7', '00', '00', '00', '00', '00', '00', 'B4', '3C', '50', '64', '6E', '00', '04', '00', '02', '01', '00', '00', '00', '00']

From the Monaro:
['01', '02', '00', '01', '19', '07', '00', '00', '43', '80', '00', '05', 'CF', '92', '02', '7A', '00', '03', '00', '21', '00', '42', '00', '20', '28', '00', '00', '00', '00', '00', '00', '00', '00', '8C', '00', 'AC', '00', '00', '0B', 'AA', '00', '01', '08', 'F2', '03', 'E7', '00', '00', '00', '00', '00', '00', '64', '19', '23', '37', '4B', '00', '04', '01', '0D', '00', '00', '00', 'EE']
See less See more
Would an xdf and bin file using Tunerpro help?
Would an xdf and bin file using Tunerpro help?
If that's aimed at me... Not at the moment!

Looking at it again this evening, I'm almost there with it reading back tables, it's able to 'listen' and detects the heartbeat, but when I send the read command don't seem to get anything back.

I think that's because the code perhaps isn't interpreting what it's seeing properly, it doesn't log anything visually at that point currently so I don't quite know what's going on, but my gut says it'll be to do with this annoying mess of how Python 3 now deals with byte data differently.

I'm tempted to re-write it in C# as that's what I'm familiar with and feel after the initial hurdle of getting it going, I'd be in a much stronger position to develop it properly (and easily give it an actual user interface etc.) . Starting to get too close to being the day job though!
  • Like
Reactions: 3
@Sturdy… it would be great if you can develop it some more, especially to make it more user friendly. I was able to go through it and turn on my shift light, change the coolant gauge reading and adjust the tach for the 05-06 gauge face (swapped on to an 04 cluster). I followed directions and got it done but otherwise, I was completely clueless to it, not going to lie. I’d like to know if gauge calibration is possible, along with adjusting the brightness of the lighting, not the LCD screen but the background lighting. It could be a touch brighter in my opinion. Regardless, kudos to you for tinkering with it and trying to learn more.
@Sturdy… it would be great if you can develop it some more, especially to make it more user friendly. I was able to go through it and turn on my shift light, change the coolant gauge reading and adjust the tach for the 05-06 gauge face (swapped on to an 04 cluster). I followed directions and got it done but otherwise, I was completely clueless to it, not going to lie. I’d like to know if gauge calibration is possible, along with adjusting the brightness of the lighting, not the LCD screen but the background lighting. It could be a touch brighter in my opinion. Regardless, kudos to you for tinkering with it and trying to learn more.
Do you have the background lighting turned up all the way? Mine are way too bright at the highest setting, I have them dimmed quite a ways.
Do you have the background lighting turned up all the way? Mine are way too bright at the highest setting, I have them dimmed quite a ways.
Yes, they are turned up all the way.
I've seen there are some LCD Brightness figures returned out of the cluster (because the OP has defined where they are in the data) but I've no idea if they're just a readout of the current setting (from the little slider) or if they can be changed.

I don't have a spare cluster to 'practice' on, but if I make progress with it I may look into finding something. I do at least have the VY Ute which has a slightly different configuration to the Monaro so can make some comparisons etc.

I'll likely have a bit more of a play this evening, I'll update the thread if I make some progress.
  • Like
Reactions: 3
You can change the lcd brightness, i did on mine.
961 - 980 of 991 Posts
Top