Extended PIDs

I am trying to add tire pressure OBD-II channels for GR Yaris. It turns out this data is available under CAN extended addresses. For that to work in Torque Pro I configured it as follows:

PID: 221005
Equation: B * 0.01373
OBD Header: 750
Diagnostic start command: atcea 2A, atta 2A

These diagnostic start commands instruct the ELM327 to use CAN extended addressing. The CAN traffic generated by Torque Pro with this configuration is as following:

> 0x750 0x2A 0x03 0x22 0x10 0x05
< 0x758 0x2A 0x10 0x0D 0x62 0x10 0x05 0x00 0x9D

> 0x750 0x2A 0x30
> 0x758 0x2A 0x21 0x00 0x9A 0x00 0x8F 0x00 0x8D
> 0x758 0x2A 0x22 0x00 0x00 0x00 0x00 0x00 0x00

Would it be possible to get per channel diagnostic start command in RC as well? :)


  • Interesting. After "atcea 2A" and "atta 2A", are the standard PIDs still available? If they are, you could just use the Initialisation string in Vehicle profile...
  • Hm. Good point. I do not think standard PIDs will be available anymore, but have to check. My assumption is that the extended address will be added to every other PID request as well. In that case there will also be a need of diagnostic stop command - "ATCEA" that turns off extended addressing.

    FWIW, I did not use "diagnostic stop command" in Torque Pro and other sensors still worked. Maybe Torque Pro is turning off extended addresses by default before every PID request. Would have to snoop OBD-II traffic to verify that.

    If only we could just send CAN messages verbatim without this OBD-II overhead. :)
  • aolaol
    edited March 16
    It seems that "ATTA 2A" command's permanent version is "ATPP 2A". The "ATTA 2A" will set it temporarily for next request.
  • Hm, I played around a bit more with these commands and I see different results. What I see is that ATCEA is controlling the extended address when sending a message. And ATTA is controlling extended address of received messages. Both of them seem to stick for next request as well.

    My experiment was as follows:

    OBD> atd # reset OBD2 device

    OBD> atsh750 # set OBD header which is actually CAN PID

    OBD> 221005 # PID request
    CAN> 0x750 03 22 10 05 00 00 00 00 # generated can request with correct CAN ID but no extended address, also no response from CAN

    OBD> atcea2A
    OBD> 221005
    CAN> 0x750 2A 03 22 10 05 00 00 00 # extended address sent
    CAN< 0x758 2A 10 0D 62 10 05 00 9F # this time we have CAN response, but it is not picked up by OBD

    OBD> atta2A
    OBD> 221005
    CAN> 0x750 2A 03 22 10 05 00 00 00
    CAN< 0x758 2A 10 0D 62 10 05 00 9F
    CAN> 0x750 2A 30 00 00 00 00 00 00 # this time CAN response was picked up by OBD and it requests more frames
    CAN< 0x758 2A 21 00 9C 00 90 00 8D
    CAN< 0x758 2A 22 00 00 00 00 00 00

    And then I can continue sending 221005 via OBD and I will continue getting response back without sending ATCEA or ATTA again.

    So we would definitely need to send "ATCEA" command after a request with extended address is sent so it stops sending extended address for next request.
  • aolaol
    edited March 16
    Just to clarify, can you request standard OBD-II PIDs without calling ATCEA at the end? Or simply no longer works until ATCEA?
  • That's correct, no longer works until ATCEA.
  • aolaol
    edited March 16
    OK. I think the custom channels could have a field for the CAN extended address. But first I have to figure out how ATTA relates to all this, as according to ELM 327 documentation it should be temporary... ATCEA I understand now.

    Anyways this all will be sorted eventually, as I've got a GR Yaris on order :sunglasses:
  • > Anyways this all will be sorted eventually, as I've got a GR Yaris on order :sunglasses:

    Well this is very good news! :)

    Yup, ATTA is a bit mystery for me as well. From the OBDLink docs, it even mentions that this command needs to be surrounded with "Close the protocol (STPC)" and "Reopen the protocol (STPO)" commands. But for me it works without these. And I also have seen ATTA being used without these additional commands in Carista app as well.
  • aolaol
    edited March 16
    Yes, my ELM 327 e-book says this as well. But even weirder thing is that standard OBD-II PIDs can be requested even after ATTA is called?? And there's no way to cancel ATTA?
  • Just googling a bit around and found this: https://jonesrh.info/volvo850/elm327_reads_volvo_850_mileage.html#adam_goldman_asserts_atta_13_not_necessary

    Where it says:

    > Since the settings made by ATTA end up being overridden anyway with ATSH ...

    This is interesting. Also they migrate from ATTA to ATSR. I'll try that and see if it works.

    Also from the docs it seems that ATAR (Enable automatic filtering) should undo what ATSR did.
  • No cigar. In fact extended PID started working only after I ran ATAR. So automatic filtering had to be enabled for the ATTA effect to be kicked in. Full test transcript:

    20:39:17.820 >atd
    20:39:33.188 OK
    20:39:33.188 >atsh750
    20:39:41.621 OK
    20:39:41.621 >atcea2a
    20:39:48.235 OK
    20:39:48.235 >221005
    20:39:53.371 NO DATA
    20:39:53.371 >atsr2a
    20:40:28.958 OK
    20:40:28.958 >221005
    20:40:33.245 NO DATA
    20:40:33.245 >atta2a
    20:41:12.256 OK
    20:41:12.256 >221005
    20:41:15.969 NO DATA
    20:41:15.969 >atsh750
    20:41:35.424 OK
    20:41:35.424 >221005
    20:41:39.238 NO DATA
    20:41:39.238 >atcea2a
    20:41:46.553 OK
    20:41:46.553 >221005
    20:41:49.686 NO DATA
    20:41:49.686 >atta2a
    20:41:56.423 OK
    20:41:56.423 >221005
    20:41:59.890 NO DATA
    20:41:59.890 >atar
    20:42:18.334 OK
    20:42:18.334 >221005
    20:42:21.695 00D
    20:42:21.695 0: 62 10 05 00 9F
    20:42:21.699 1: 00 9C 00 91 00 8E
    20:42:21.699 2: 00 00 00 00 00 00
    20:42:21.808 >
    20:43:44.132 Disconnected
  • Does this mean you have to call atcea2a right after atta2a for it to activate? Also does calling atsh clear the atcea2a call?
  • I tried all 6 order permutations of atcea2a, atta2a and atsh750 and got response for 221005 after every different order. I reset state between trying different orders with atd.

    Also verified that changing headers (calling atsh700 and then atsh750) does not clear the atcea2a neither atta2a calls.
Sign In or Register to comment.