-
Notifications
You must be signed in to change notification settings - Fork 73
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add lots of DTC codes for Volvo 850/SVC70 #95
Conversation
Oh wow that is quite a list, thanks for extracting that. Is there a reason for the ordering of the sections ? e.g. one block of codes starting with |
This is cut/paste straight from that zip file. I preserved the existing order. If you'd prefer a different order, I can do that. |
fwiw, this change fixed it so that I got a human readable description for my ECC error code (0x37) |
The current table of just two DTCs is almost just a placeholder. It would be nice to use this longer table, but it could use some cleanup. @fenugrec, any thoughts on moving the DTC table out of scantool_850.c into its own file? Here is some background on the big DTC table:
|
Agreed. Not familiar with D2 but it looks like it could almost be a table-of-tables (one table per "ECU" type (first byte), and one table that holds all these known types) ? Whatever makes further maintenance and/or restructuring easier.
Totally in favour. |
|
||
// Taken from http://jonesrh.info/volvo850/freediag_v1_08_20171212.zip | ||
// Many additions to the dtc_table added by jonesrh on 2017-12-10 | ||
// (and made compilable on 2017-12-11). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changelog doesn't belong in code, we have version control for that. But Richard H. Jones should get credit for the DTC table.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Richard H. Jones should get credit for the DTC table.
agreed. Does he have a presence on github ? unclear if https://github.com/jonesrh is the correct profile
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess that's probably him. I will ask.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@fenugrec Richard says: "The GitHub user known as jonesrh is very likely me. I don't have any records of login credentials for GitHub and I don't remember registering."
//----------------------------------------------------------------------------- | ||
// Define all known, interpreted ECU 10 (M44, via KWP71) [instead of D2 via either ELM327 or KKL]) DTCs. | ||
// - The first two DTC lines below were already in scantool_850's dtc_table | ||
// and demonstrate two different ways to retrieve that DTC -- | ||
// one via M44 addressed as 0x10 using KWP71 via VAG KKL cable, and | ||
// one via M44 addressed as 0x7A using D2 (KWPD3B0) via ELM327 | ||
// (or even via KKL, like Vol-FCR and Brick-Diag Free do, | ||
// if freediag implements D2 via KKL). | ||
// - It's quite useful that freediag can communicate with the | ||
// '96-'98 850/S70/V70/C70/XC70 with either KWP71 or D2. Impressive! | ||
//----------------------------------------------------------------------------- |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are Richard's notes on his contribution, they don't belong in the code.
{0x10, 0x54, 445, "Pulsed secondary air injection system pump signal"}, | ||
{0x7a, 0x54, 445, "Pulsed secondary air injection system pump signal"}, | ||
////{0x7a, 0x54, 445, "Pulsed secondary air injection system pump signal"}, /* There's a more complete definition for this DTC in the 0x7A section below. */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't comment this out, just get rid of it.
//------------------------------------------------------ | ||
// Define all known, interpreted ECU 51 (COMBI) DTCs. | ||
//------------------------------------------------------ | ||
// ECU 51 has 22 DTCs: 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 14 15 16 17 20 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The "ECU xx has xx DTCs" lines are an artifact of how the DTC list was generated, they don't belong here.
//------------------------------------------------------ | ||
// ECU 51 has 22 DTCs: 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 14 15 16 17 20 | ||
{0x51, 0x01, 222, "Vehicle Speed Signal too high"}, | ||
{0x51, 0x02, 221, "Vehicle Speed Signal missing [usually due to bad ABS module solders] [P0500]"}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not crazy about the, sometimes extremely long and with web links, tips / reference material in some of the descriptions. Also I don't think the cross-references to J1979 OBD2 codes are that useful.
////{0x7A, 0x37, 445, "??Misfire cylinder 6??. [There is another more believable code that maps to EFI-445, so let's leave this commented out.]"}, | ||
{0x7A, 0x39, 353, "Immobilizer"}, | ||
{0x7A, 0x3D, 544, "Misfire, more than 1 cylinder"}, | ||
{0x7A, 0x3E, 543, "Misfire exhaust value of at least one cylinder"}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note "exhaust value" = "emission level" per Green Book, ie, misfiring badly enough to cause elevated emissions, but not enough to cause catalyst damage.
{0x7A, 0x3F, 551, "Misfire, cylinder 1"}, | ||
{0x7A, 0x40, 552, "Misfire, cylinder 2"}, | ||
{0x7A, 0x41, 553, "Misfire, cylinder 3"}, | ||
{0x7A, 0x42, 554, "Misfire, cylinder 4"}, | ||
{0x7A, 0x43, 555, "Misfire, cylinder 5"}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
According to the Green Book, EFI-551...555 and 545 are misfires with catalyst damage (flashing CEL). EFI-451..455 and 543 are more minor misfires.
{0x7A, 0x41, 553, "Misfire, cylinder 3"}, | ||
{0x7A, 0x42, 554, "Misfire, cylinder 4"}, | ||
{0x7A, 0x43, 555, "Misfire, cylinder 5"}, | ||
{0x7A, 0x44, 556, "Misfire, cylinder 6"}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You might be saying to yourself, "I've never had ignition in cylinder 6, so shouldn't this DTC always be set?" But the Motronic M4.4 (or M4.4.1) was also used in some model years of 960/S90/V90/C90. But then 0x37 should probably map to something like EFI-456 instead of EFI-445.
{0x7A, 0x99, 145, "Injector 4"}, | ||
{0x7A, 0x9A, 155, "Injector 5"}, | ||
{0x7A, 0x9B, 165, "Injector 6"}, | ||
{0x7A, 0xA4, 335, "Request for MIL lighting from TCM [or possibly Comm Failure between Motronic 4.4 ECM and AW 50-42 TCM] [P1618 (High), P1617 (Low/Missing/Faulty)] [check grounds 31/71, 31/32, 31/33; check TCM pin B15 to M44 pin B26 circuit & connections] [see OTP 850 DVD: TP-2308032, pp275-280; TP-2318201, p43, p269]"}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm sure that 0x1D is EFI-666 DTC in TCM / MIL request from TCM. So 0xA4 EFI-335 must not be MIL request from TCM - it must be cable fault between TCM and ECM (the MIL request signal is shorted or open).
{0x29, 0x35, 412, "Driver's (or passenger's) side interior temperature sensor inlet fan shorted to earth (or signal too low) [see \"ac heater system auto.pdf\"]"}, | ||
{0x29, 0x36, 413, "Driver's (or passenger's) side interior temperature sensor inlet fan, no control voltage (or signal too high) [see \"ac heater system auto.pdf\"]"}, | ||
{0x29, 0x37, 414, "Driver's (or passenger's) side interior temperature sensor inlet fan seized (or open/short circuit or faulty signal) [carefully clean out any lint from temp sensor fan(s)]"}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess these say "Driver's (or passenger's)" because which side is the driver's side depends on whether it's a left or right hand drive vehicle. But VADIS says 4-1-2 is for the driver's side sensor intake fan whether you have a LHD or RHD vehicle selected. So either the localization in VADIS is wrong, or the driver's side DTCs are driver's side regardless of market.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fwiw, there's a manual with codes here:
https://www.volvo-forums.com/threads/heater-ac-blower.32164/
Which seems to indicate that you are correct it is always "Driver's side"
Since, I'm going to be trying to fix this soon-ish, so I'll let you know if it's right :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking into this a bit further... up to model year '97 there were two passenger compartment temperature sensors, in the headliner, one on each side. From model year '98 up, there was a single passenger compartment temperature sensor, between the steering wheel and the climate controls. '98 was the first model year where the ECC could be queried by D2; before that, it could only do blink codes, so we can't talk to it. (Although it would be cool to try to get blink code reading working with a KKL cable and the appropriate wiring!)
So the only ECC we can talk to uses a single interior temperature sensor... we should just drop "driver's side" from these DTCs.
this can be a separate discussion, but you guys mention this DTC list was somehow generated from another source. Is that process automated, with an 'upstream' we should link/refer to ? We don't need to absorb all of that into freediag of course, but maybe worth looking into tweaking that generation step to produce something directly usable in freediag (i.e. already trimmed of the items @aaeegg marked as 'doesn't belong in here', the less well-defined entries, etc ) |
Yes, there's structure in the data that's not represented by the current format. Splitting into a table-of-tables would also let us remove the duplication between the Power Seat Left and Power Seat Right DTCs. The advantage of leaving it in its current format is that no one has to change the code... |
Richard has a website where you can paste the raw ELM327 output from a terminal program, and it will interpret the DTCs. This list is the DTC list he maintained for that website. He has updated his site since this list was exported in 2017 - so the list in this PR is outdated. I've asked his permission to scrape a new list. The previous export was manual, but it should be possible to automate it. |
@aaeegg I'm happy to see about writing some code to automate this if you want. I'll also attempt the cleanups that you describe above, specifically the table of tables. |
Richard has given permission to pull an updated DTC list from his interpreter, but he suggested another developer who might be willing to share a better list. Waiting for a response from that person. |
Ok. What do you guys think about this sequence :
|
Splitting the DTC table into a separate file is definitely the first step. A table of tables is probably better than the current format. That said, I don't see an immediate pressing need to change the format. If @brendandburns wants to do the work, I have no objection. Automation would depend on which DTC list we end up using. If we don't hear back on the better list soon (maybe by Monday?), an updated version of Richard's list should be the best way to move forward. |
Aleksi Venäläinen, author of the 850 OBD-II Android app, has agreed to provide us with his DTC list. |
@aaeegg once you get it, if you want to attach the DTC list to this PR, I can refactor this PR to contain that list. In the meantime I bought Aleksi's app, so maybe that's Karma :) |
DTC_List_850OBDII_D2.txt - Aleksi's current DTC list Aleksi's list has more DTCs, but Richard's list seems to have a few that aren't in Aleksi's, so I attached both. Aleksi's list retains some of the problems of Richard's, such as the typo of EFI-445 for cylinder 6 misfire on 960 (confirmed in VADIS as EFI-456; raw value remains unconfirmed), and the lack of detail on minor vs major misfires. It turns out that Motronic M4.4, Siemens EMS2000 and Denso ECUs all respond to address 7A, but have different DTCs. So, to handle all these ECUs, we will need to split the table, like fenugrec suggested. Richard has tried to include as much helpful information as possible in the text, but my opinion is the DTC table should just have the DTC description, and either remove the parentheticals entirely, or put them in a separate "tips" table. Any thoughts on this? As an aside, it would be nice to also add decoding for J1979 DTCs. |
agreed. Either would be fine. Could also be formatted as an extra field in the eventual DTC struct ?, i.e.
If the source list is in a fairly uniform format, a fancy sed command may even be able to automatically generate the table entries. Whatever the automation method, I think it should be documented / included in one of the table files. |
Ok, I will take a stab at adding the extra Thanks for all the info! |
Closing in favor of #99 |
See #67
Sourced from http://jonesrh.info/volvo850/freediag_v1_08_20171212.zip
More to come eventually.