Here is some useful info for those who do own an already ccp/xcp activated medc17 ecu or those who are willing to try to activate such a function.I am still working on it as well and have walked my way through while getting closer and closer to have this functions working.
The services on some ecus are standing behind the security access 3/4 seedkey challenge algo however on some ecus the
ccp protocol once you activate development mode condition is responding for 4sec and then disconnects.
Now the easy part is to just force b_ecudev to active but this is not working on all ecus.There are also some codewords that require activation by definition with a certain value(Calwup_swtWakeupEnaCpl_C & Calwup_swtWakeupEna_C)
If you need to do this the right way you have to change the hardware number from Hxx to Yxx or Xxx(with or without etk probe) or hack the code to use H for development mode
If your calibration software provides seedkey.dll functionality but you also like to unlock ccp services by default then you need to find the mpl list and set the 0x43 to 0x00 to each function that is locked.
Here is a small example of my mpl list.
The CCP services are :
.sdata2:8008D8F0 .word Ccp_DummyService
.sdata2:8008D8F4 .word Ccp_Connect
.sdata2:8008D8F8 .word Ccp_SetMTA
.sdata2:8008D8FC .word Ccp_Download
.sdata2:8008D900 .word Ccp_Upload
.sdata2:8008D904 .word Ccp_DummyService
.sdata2:8008D908 .word Ccp_StartStop
.sdata2:8008D90C .word Ccp_Disconnect
.sdata2:8008D910 .word Ccp_StartStopAll
.sdata2:8008D914 .word Ccp_GetCalPage
.sdata2:8008D918 .word Ccp_DummyService
.sdata2:8008D91C .word Ccp_DummyService
.sdata2:8008D920 .word Ccp_SetSessStatus
.sdata2:8008D924 .word Ccp_GetSessStatus
.sdata2:8008D928 .word Ccp_BuildChecksum
.sdata2:8008D92C .word Ccp_ShortUpload
.sdata2:8008D930 .word Ccp_DummyService
.sdata2:8008D934 .word Ccp_SelectCalPage
.sdata2:8008D938 .word Ccp_GetSeed
.sdata2:8008D93C .word Ccp_Unlock
.sdata2:8008D940 .word Ccp_GetDaqSize
.sdata2:8008D944 .word Ccp_SetDaqPtr
.sdata2:8008D948 .word Ccp_WriteDaq
.sdata2:8008D94C .word Ccp_ExchangeId
.sdata2:8008D950 .word Ccp_DummyService
.sdata2:8008D954 .word Ccp_Move
.sdata2:8008D958 .word Ccp_DummyService
.sdata2:8008D95C .word Ccp_GetVersion
.sdata2:8008D960 .word Ccp_DummyService
.sdata2:8008D964 .word Ccp_DummyService
.sdata2:8008D968 .word Ccp_DummyService
.sdata2:8008D96C .word Ccp_DummyService
.sdata2:8008D970 .word Ccp_DummyService
.sdata2:8008D974 .word Ccp_DummyService
.sdata2:8008D978 .word Ccp_DummyService
.sdata2:8008D97C .word Ccp_Download6
and the corresponding list to that services is :
.sdata2:8008F2E3 MPL_List .byte 0 ; DATA XREF: .sdata2:8008D8D4↑o
.sdata2:8008F2E4 .byte 0x43 ; C
.sdata2:8008F2E5 .byte 0x43 ; C
.sdata2:8008F2E6 .byte 0x43 ; C
.sdata2:8008F2E7 .byte 0x43 ; C
.sdata2:8008F2E8 .byte 0
.sdata2:8008F2E9 .byte 2
.sdata2:8008F2EA .byte 0x43 ; C
.sdata2:8008F2EB .byte 0x43 ; C
.sdata2:8008F2EC .byte 1
.sdata2:8008F2ED .byte 0
.sdata2:8008F2EE .byte 0
.sdata2:8008F2EF .byte 0x43 ; C
.sdata2:8008F2F0 .byte 0x43 ; C
.sdata2:8008F2F1 .byte 1
.sdata2:8008F2F2 .byte 2
.sdata2:8008F2F3 .byte 0
.sdata2:8008F2F4 .byte 1
.sdata2:8008F2F5 .byte 0x43 ; C
.sdata2:8008F2F6 .byte 0x43 ; C
.sdata2:8008F2F7 .byte 2
.sdata2:8008F2F8 .byte 2
.sdata2:8008F2F9 .byte 2
.sdata2:8008F2FA .byte 0x43 ; C
.sdata2:8008F2FB .byte 0
.sdata2:8008F2FC .byte 0x40 ; @
.sdata2:8008F2FD .byte 0
.sdata2:8008F2FE .byte 0x43 ; C
.sdata2:8008F2FF .byte 0
.sdata2:8008F300 .byte 0
.sdata2:8008F301 .byte 0
.sdata2:8008F302 .byte 0
.sdata2:8008F303 .byte 0
.sdata2:8008F304 .byte 0
.sdata2:8008F305 .byte 0
.sdata2:8008F306 .byte 1
.sdata2:8008F307 .global Eeepdd_NumTocPages_cu8
as you see each service has an assigned property/lock byte and if this service is requested and not unlocked part of the response of the can message will contain the byte 0x43.
Now the ETK function that wakes up those services is already checking your immo status so unless it is completely disabled or matched i assume it will never meet the requirements for further protocol activation. So can bus will disregard your requests if a security access is not initially done successfully.Will post up more things i found in the next days.