There are a couple of other threads on this, but they are more about commercial stuff. Let's talk about the details of OBD-II and other Volvo data access...
As we know, all Volvos from 1996 in the US support some form of OBD-II communication. Most Volvos from 1999-2004 use an ISO9141 interface for this, while 2005- use CAN. To read the car's OBD-II you need a scan tool or other device which uses the right interface. But, the OBD-II protocol, and what you can read from the car with it, is pretty much the same.
Going "down a layer", you can in fact read the raw protocol that's travelling around the various car components, but once you go there you're in proprietary Volvo-land, and it's not at all obvious how to figure it out. Some folks here have been doing so, but only a few. BSR seems to have cracked some or all of it, to make their PPC and diagnostic (http://www.ppc-diagnostic.com/).
So, I'm a Palm developer in my spare time (http://mytreo.net/downloads/details-640.html?KeyguardTime+) and crazy enough to hack on the open source PalmOS client for this bluetooth OBD device (on my Treo 650):
http://www.car-pal.net
It's really useful as a data logger and general monitoring tool. There are lots of other devices like it (though this is the only one I know with Bluetooth). But OBDII devices are not at all a window into the inner workings of the car, they're limited by what the car chooses to reveal.
OBD-II is implemented by a kind of "gateway" device in the car, and it allows sampling of signals called "PIDs" (http://en.wikipedia.org/wiki/OBD-II_PIDs). These are defined by the SAE J1979 spec, and they're rather generic. There is much more detailed information available when speaking the Volvo protocols, this is what dealers use of course.
My V50 has a 500Kbit/s CANbus (our XC90 is ISO9141), and the Car-Pal connects right up. The available OBD PIDs are as follows, most other Volvos seem to be pretty much identical:
3 - fuel system
4 - load
5 - coolant temp
6 - STFT
7 - LTFT
A - fuel pressure
C - RPM
D - speed
E - ign adv
F - air temp
10 - MAF
11 - Throttle
13 - O2 sensor map
15 - O2 sensor
1C - OBD std type
1F - time since engine started
I have found that my Treo can sample all these available PIDs together at about 9.5/second. Interestingly, if I reduce the number of PIDs being scanned, the sample rate actually goes down, I suspect there's a software glitch in my Treo client. But, 9.5 is about all I have seen any OBDII device do, so I am assuming the max sample rate is basically being limited by the car. This makes sense, since OBD-II is really just a compliance thing. There isn't really a big effort to expose the inner workings of the car, or make it a general-purpose interface.
Anyway, the good thing is that the basic OBD-II data is more than good enough for basic monitoring for speed (acceleration), basic air/fuel (off the O2 sensor) which can also give mpg, engine rpm and load, plus some interesting engine parameters like coolant temp, IAT, fuel pressure, fuel trim etc which are useful when tuning. And, it reads engine codes, etc (but only engine and emission codes, not the many others). So, it's really good for data logging and basic diagnostics. These data are basically what the Auterra PDA Dyno, G-tech, and other devices are reading.
Unfortunately, it doesn't read boost (pid 0xb), which of course is what everyone would want to see. I suspect Volvo leaves this off intentionally. It's not required for compliance purposes, and it's a window into the car's algorithms. Maybe I'm just a cynic, but there it is.
Anyway, I'm really interested in knowing if anyone else here is interested in OBD or CAN programming for Volvos, and/or has started down this road. There are bunches of similar projects on other brands. Anyone want to share?
Tom.
As we know, all Volvos from 1996 in the US support some form of OBD-II communication. Most Volvos from 1999-2004 use an ISO9141 interface for this, while 2005- use CAN. To read the car's OBD-II you need a scan tool or other device which uses the right interface. But, the OBD-II protocol, and what you can read from the car with it, is pretty much the same.
Going "down a layer", you can in fact read the raw protocol that's travelling around the various car components, but once you go there you're in proprietary Volvo-land, and it's not at all obvious how to figure it out. Some folks here have been doing so, but only a few. BSR seems to have cracked some or all of it, to make their PPC and diagnostic (http://www.ppc-diagnostic.com/).
So, I'm a Palm developer in my spare time (http://mytreo.net/downloads/details-640.html?KeyguardTime+) and crazy enough to hack on the open source PalmOS client for this bluetooth OBD device (on my Treo 650):

It's really useful as a data logger and general monitoring tool. There are lots of other devices like it (though this is the only one I know with Bluetooth). But OBDII devices are not at all a window into the inner workings of the car, they're limited by what the car chooses to reveal.
OBD-II is implemented by a kind of "gateway" device in the car, and it allows sampling of signals called "PIDs" (http://en.wikipedia.org/wiki/OBD-II_PIDs). These are defined by the SAE J1979 spec, and they're rather generic. There is much more detailed information available when speaking the Volvo protocols, this is what dealers use of course.
My V50 has a 500Kbit/s CANbus (our XC90 is ISO9141), and the Car-Pal connects right up. The available OBD PIDs are as follows, most other Volvos seem to be pretty much identical:
3 - fuel system
4 - load
5 - coolant temp
6 - STFT
7 - LTFT
A - fuel pressure
C - RPM
D - speed
E - ign adv
F - air temp
10 - MAF
11 - Throttle
13 - O2 sensor map
15 - O2 sensor
1C - OBD std type
1F - time since engine started
I have found that my Treo can sample all these available PIDs together at about 9.5/second. Interestingly, if I reduce the number of PIDs being scanned, the sample rate actually goes down, I suspect there's a software glitch in my Treo client. But, 9.5 is about all I have seen any OBDII device do, so I am assuming the max sample rate is basically being limited by the car. This makes sense, since OBD-II is really just a compliance thing. There isn't really a big effort to expose the inner workings of the car, or make it a general-purpose interface.
Anyway, the good thing is that the basic OBD-II data is more than good enough for basic monitoring for speed (acceleration), basic air/fuel (off the O2 sensor) which can also give mpg, engine rpm and load, plus some interesting engine parameters like coolant temp, IAT, fuel pressure, fuel trim etc which are useful when tuning. And, it reads engine codes, etc (but only engine and emission codes, not the many others). So, it's really good for data logging and basic diagnostics. These data are basically what the Auterra PDA Dyno, G-tech, and other devices are reading.
Unfortunately, it doesn't read boost (pid 0xb), which of course is what everyone would want to see. I suspect Volvo leaves this off intentionally. It's not required for compliance purposes, and it's a window into the car's algorithms. Maybe I'm just a cynic, but there it is.
Anyway, I'm really interested in knowing if anyone else here is interested in OBD or CAN programming for Volvos, and/or has started down this road. There are bunches of similar projects on other brands. Anyone want to share?
Tom.