I think what I am trying to say is that nothing I do or show here requires any sort of "unlocking", No seeds, no keys, no hidden messages, that sort of thing. So other areas of the module are likely locked away, but I don't pursue such things.
About the only time I have encountered the 7F/33 (security access denied) response was an attempted service $23 query of IPC diagnostic memory.
Gotcha! Let me know if you ever change your mind. IIRC, you'd need an unlocked PCM to do things like turn on the fuel pump, but that's not something most people need.
Where I use the trailing $01 most is for service $22 queries. For many PIDs if I do not include the trailing $01 I get a 7F/12 response. ( Sub-Function Not Supported or Invalid format) I also need it with service $23 queries.
Yes, that matches my experience too. In fact, I was taking too long to compose the following post (which goes into this in depth) when I saw your post ....
About the "data rate" byte in various commands...
Since I often get mixed up myself, just to set the record straight, per SAE J2190, the "data rate" byte is
mandatory in Mode $2A commands. It's supposed to be "optional" in Modes $21, $22, and $23. I read "optional" as meaning "
node should handle it being present or absent". GM, unfortunately, seems to read "optional" as meaning "
it's our option to decide to force the user to include it always... or not"! So with GM, at least for all the vehicles I've tested, it's
mandatory for Modes $22 and $23 (and probably Mode $21 -- I've just never tested/used it since it would require manufacturer-specific, node-specific knowledge).
Data rate bytes of "00" to "04" are defined by SAE J2190. Values from "05" to "FF" are manufacturer-defined with mostly unknown meaning.
Looking back at old logs, I see where I experimented with various values for the "data rate" byte on Mode $2A commands and the results are anything but logical! Among the manufacturer-defined values that return a valid reply, I see 13, 14, 22, and 23 for the PCM nodes, but that could be entirely different on a different GM vehicle and/or node!
I don't know if I've ever experimented with a "data rate" other than "01" on GM Mode $22 commands, though. I guess I never had much reason to use such a command, but the test results would be interesting.
After review of my logs, I can confirm that your experience of "
the GM implementation of $2A allows for 4 data packets to be requested in a single message" matches my experience. (I rarely use/test Mode $2A manually, so I get very foggy about the operation.)
On to a semi-related issue (another command "suffix")...
The GM "01" data rate specification (1 byte, 2 hex characters) is a separate issue from the ELM327 "VRWO" [defined below] nybble (1 hex character).
Copied directly from an old log, here's a typical command that I use on a Buick when I take "snapshot" data, using a common GM PID in a Mode $22 command to query the Transmission Fluid Temperature (TFT):
Code:
Command: 221940011
Reply: 6C F1 10 62 19 40 40 FF
Broken down for readability, that's "22 1940 01 1".
The "01" is because GM insists on specifying the "data rate" byte, even though SAE J2190 says it's "optional".
The trailing "1" is what I call the
VRWO (Vehicle Reply Wait Optimization) nybble, since the ELM327 datasheet defines and supports this capability but never gives it an actual name or acronym. It's only defined by and relevant for ELM327 (and compatible) chips and means that the scantool should assume that the vehicle will only send 1 line of reply data and should not wait any longer after that before sending the ELM327 "user input prompt" character (">").
So, contrary to what I implied in my previous post, I don't think you're sending any erroneous VRWO nybble -- you're sending the GM-required data rate in cases where GM decided that it's mandatory. But as you can see in my command above, you can send both the "01" data rate
and the VRWO nybble. It certainly speeds up the ELM327 readiness after a vehicle-targeted command.
In fact, I think you'll find that if you send an erroneous VRWO value (either a whole byte instead of a nybble or the wrong value for the nybble), you'll see the lag in the ELM327 response. I'm sure I've tested all this years ago.
I try to use a VRWO nybble wherever I can when commands are sent under computer control. On my "snapshots", where I'm doing tons of commands to query vehicle data points, it speeds things up nicely. But there are cases where I'm not sure
where if a VRWO nybble can be used, so I don't use it 100% of the time.
Back to "data rate" for a second...
I thought that the weirdness we talked about in
this post might have been due to a non-standard "data rate" byte. But the screenshot in that post clearly shows that the Mode $22 commands were being sent with a common "01" data rate, so I'm still baffled by that initial Mode $7F reply with a Response Code of $22!