There maybe a first byte if there is an Extended ID. This is very rare, only Toyota does (that I've seen) uses it for Non-OBDII messages (Enhanced Diagnostics) and GM Uses it for Functional Addressing (Broadcasting to multiple controllers).
Yes, seen those on Ford Mondeo 2008 on (European model), odometer readings being transmitted along with other data on the same data bytes, ext. id [D0] is different each time, rolls over after 5-6 times as far as i can remember. Thanks for clarifying this one!
Typically you have to do a Firmware Upload to get the firmware from the ECU. Of course this is difficult because you need to know how to bypass the security.
You could also monitor the firmware Download from a Reflash device and the controller as well. This would require you to monitor the CAN bus while a reflash was happening. Then you need to piece together the bytes.
Beware though that the file that was being reflashed may not necessarily be the WHOLE firmware, but some subset of it.
Just keep in mind that there are two things you are talking about here. PIDs typically refer to Diagnostic information however the data being "spit out" is what is referred to as Normal Communication. Normal Communication is not standard and can very widely on what information is or is not available. In comparison, diagnostic communication is there for diagnosing vehicle problems.
So what data you can have access to depends on what the engineers of the systems thought would be needed. Even in the case of OBDII PIDs, the OEM does not have to support all of the PIDs (and definitely will not support all of them) however it they choose to support a specific PID then OBDII PID list is what they use to determine how a test tool will get the PID.
I have a few questions, not quite understanding. On the OBD port, when there is any car activity the OBD port starts to spit out information. For example open a door and the CAnbus spits out info, ignition on and CAnbus starts going.
My question is that, do these PID's HAVE to be sent only in Diagnostic mode, by sending a Tester present?
I want to read instantaneous fuel consumption of the CANbus, but it is quite hard to do so by sifting through the CAN codes streaming through. Using PID's would make it easier