diag_l2_iso9141.c:373: Incomplete data, need

Help
soyo
2012-07-23
2013-04-24
  • soyo

    soyo - 2012-07-23

    I'm trying to clear dtc error. This is the logs:

    scantool->cleardtc
    Are you sure you wish to clear the Diagnostic Trouble Codes (y/n) ? y
    Requesting Mode 0x04 (Clear DTCs)…
    S: 0x68 0x6a 0xf1 0x04 0xc7
    A: 0x48 0x6b 0x10 0x44 0x07
    diag_l2_iso9141.c:373: Incomplete data, need to receive more.
    Request failed, retrying…
    S: 0x68 0x6a 0xf1 0x04 0xc7
    A: 0x48 0x6b 0x10 0x44 0x07
    diag_l2_iso9141.c:373: Incomplete data, need to receive more.
    Retry failed, resynching…
    S: 0x68 0x6a 0xf1 0x01 0x00 0xc4
    A: 0x48 0x6b 0x10 0x41 0x00 0xbe 0x1f 0xb8 0x10 0xa9
    ClearDTC requested failed - no appropriate response
    Failed


    S means sending command to ECU. A means answer from ECU. It says A: 0x48 0x6b 0x10 0x44 0x07 is incompleted. I think it may be a bug. Actually my engline light is off after this command cleardtc.

    Somebody give me some suggestions?

    Thanks

     
  • CSB

    CSB - 2012-07-23

    Hi - I haven't used freediag in a while; did you add the "S: 0x68 …" lines yourself or are they printed out ?

    In any case, I think I know where to look to fix this (actually it sortof worked : the reply 0x48 0x6b 0x10 0x44 signifies the DTC were succesfully cleared). Could you try this :
    - do your usual setup and connection ;
    - just *before* issuing the Clear DTC command, set the debug levels in freediag to -1. Something like this :

    > debug all -1
    

    This will enable all debug messages ( there's a lot of them). This will tell me if diag_l2_iso9141 was expecting an incorrect amount of data, or it didn't realise it received enough bytes.

     
  • soyo

    soyo - 2012-07-23

    Yes, I added send and reveive data bytes dump.

    Now the dtc error is gone. I cannot try again.

    I just wanna make sure:
    A: 0x48 0x6b 0x10 0x44 0x07 is a completed answer, or not?

     
  • soyo

    soyo - 2012-07-23

    It seems the answer length is valid. The answer is only 4 bytes long.

    if(len - OHLEN_ISO9141 > 0)
            *datalen = len - OHLEN_ISO9141;
        else
        {
            if (diag_l2_debug & DIAG_DEBUG_PROTO)
                fprintf(stderr, FLFMT "decode len short \n", FL);
            return diag_iseterr(DIAG_ERR_INCDATA);
        }
    

    I found 0x44 means clear is done successfully.

    rxmsg = find_ecu_msg(0, 0x44);
        if (rxmsg == NULL) {
            fprintf(stderr, "ClearDTC requested failed - no appropriate response\n");
            return -1;
        }
    

    Thank you!!!

     

Log in to post a comment.

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

JavaScript is required for this form.





No, thanks