2017 GM HMI Calibration / VIN setting

Since I can program both my 17 ZL1 and my 17 RS… I figured maybe I can sniff the traffic on both, and save / change it so the VIN is right and the proper calibrations are sent. The ZL1 has the IO6 module and the RS has the IO5 based on GM SPS files.

I’m still waiting on some items to get going on this project… but as I wait… for a DeskTop power supply… do you think a standard 12V Computer Power supply for a motherboard would be sufficiently clean for a desktop off board programming for 1 module? Being more of a hobby for me and just wanting to get my car right, I don’t want to spend $400 + for the GM recommended power supply. There has to be a less expensive way to accomplish the task. I’ve also seen this and wonder if it would work. Amazon CCTV 12V power supply

Here is what I am using and I am running a bunch of stuff off it. I wouldn’t use a standard Desktop power supply as it would not be the best choice… And is likely more expensive then this:

Just make sure you check the voltage as it is adjustable.

There are a variety of issues with using an ATX type power supply. Not real complex but things to be aware of. The unit I have listed here is cheap and works well atleast for me it is.


You guys aren’t lying… there is a crap ton of traffic on the can bus. I thought I read somewhere that someone had a compiled list of the ID’s that come through so I could eliminate the noise and only look at traffic going to a specific module. Is that true?

Check out http://opengarages.org and do your research from there. Yes there are some places out there but nothing 1 stop. GMLAN Bible might be a place to stop by too.


If you just need to change the VIN, there is a write block message to use. Many of the HMI’s are not even locked so Mode $27 isn’t even required. Some, on the other hand, are a PITA as they actually have the new 5 byte seed / key… cough IOB cough

Maybe this being IO6 it will be ok. Well, I have the M2 working and am able to monitor traffic. I even have a splitter on the OBD2 so that I can connect my GM MDI and watch what happens when I cause things to happen in GDS2. If I can only figure out what sets of packets need to be written… and in what order to set the VIN.

But, I believe my issue may not be just with the VIN. I noted on an SPS update (if I wanted to return it to IO5) there was a calibration change that was labeled ("…update to add OTA …") … something like that. That is currently the only issue I have. OTA doesn’t work and I cannot go to the shop and download apps. I’ve been told that the VIN is the issue, however that calibration file being different seams a bit odd.

I can’t speak to that, but having the wrong VIN can definitely cause some issues.

I’d have to dig through my notes to find the command, but the suggestions I have are:

Find the service IDs for Read / Write block.

Using Read Block, iterate through blocks (starting at $00) until you find the one with the VIN

Use the Write Block ID for the same block # and write the new VIN

If the Write Block attempt returns a 7F 27, then you need to also enter secure mode in which case you would have to do a Mode 27 to request the seed and they pass the key back. (assuming you know how to calc it)

If you don’t have IOB, pretty sure you won’t need security mode access.

Interesting. What application are you using to read/write? I have SaavyCan currently. Once I get the power supply and connector for the HMI module, I’ll play around with Off Board settings. Currently, the module is in the car and I’m “talking” to it through the CAN BUS in the car.

Did you ever get this sorted out Nitro?
Whats the ID of the HMI you have?

Negative. Pretty discouraged actually. Not much help out there. I’m trying it offboard. But I can’t even get it all powered up.

Found HMI is using $252/$652. VIN is on $2F when queried via $1A
Tried to write VIN using $3B and I get a normal response of $30 $00 $02 stating to send the rest of the data. I send the rest of the data $21 $22 for extended frames. I get a rejection message for out of range - $31.
HMI is not locked, mode $27 to request seed is rejected.

Tried sending the actual VIN, tried sending all $00, and all $FF and it never takes the write command.

Also sending tester present commands.

What am I missing here?

What are you using to read/write the blocks? Are you using the M2 to figure this out or a different interface?

I’ve been told VehicleSpy is the software used by a programmer I purchased a module from off of ebay. Might be worth looking into.

Can I ask what kind of setup you made to begin to sniff the isolated can traffic of just the HMI? Did you make up your own harness?

I’m doing this in car due to not having wiring harnesses for bench use.
I’m using the M2. Vehicle spy is just a glorified GUI. The M2 will interface with the bus all the same. Read GMW3110-2010 and it give you all you need to communicate on the bus. Learn that, use the M2 and you have the same power the Vehicle Spy has. VS still requires you to do digging to figure out which device is which etc. Pre global A stuff is avail online, global A is using different DID’s and PID’s, but works very similar.

Did you have any luck rewriting the VIN?

How were you able to determine which module was the HMI when you started sniffing?

I’ve been considering diving into this project because I don’t want to pay somebody in the hundreds of dollars just to swap in a new VIN into a module I paid 70 for.

I’m attempting to swap in a module for a 2017 vehicle into my 2014 vehicle. It’s not compatible on it’s own which is why I wanted to bench program. I could purchase a 2016+ module that had already been in a newer vehicle and already has the proper software on it and then change the VIN before I plug it into the vehicle.

I hope that you trying to write the vin in-vehicle while the HMI is attempting to communicate with all of the other modules isn’t the reason why it’s failing. On the bench the only thing talking to your device would be the M2, nothing else. I don’t know if that’s why it fails but it’s a theory.

I’ll pick up an M2 and start diving in myself.

I personally have not gotten this to work with anything. I am able to sniff and see traffic, but even with the help online, I’ve not been successful.


Would you mind detailing your bench-top setup for the HMI and which M2 you used (under hood or OBD port).

I’m interested in modifying both the radio module and HMI and would like to be able to do so on the bench.

I have one of the 30A power supplies on the way but I need some info in regards to a harness. Did you just hook up the wires from the M2 directly to the modules with some spade connectors on the pins? Did you wire them into a harness?

Please let me know when you have a moment. I’m interested in continuing to work on this project.

Thanks for your response!

Mine does not work. I tried bench with the OBD port and a modified cable. Both wired to a pin header (harness) as if it were in the car. Using the wires shown in the diagrams. I believe it may need an “activation” signal from the BCM. I have not had any time to revisit this in months. it’s collecting dust.

So what I’ve come to find out, even with updating modules via SPS off-board is you’ll need a wiring harness with an ECU and a BCM. The same might hold true for can bus read/writing on the bench. @Tazzi can you comment on this? or @redheadedrod

Thanks guys!