Arduino sketch to send diagnostic frames to telematic units
The serial console is used to send raw diagnostic frames, start it using 115200 baud rate
| Command | Description |
|---|---|
| 190209 | List of current faults |
| 14FFFFFF | Clear faults |
| 37 | Flash autocontrol (Unit must be unlocked first) |
| 1001 | End of communication |
| 1002 | Open Download session |
| 1003 | Open Diagnostic session |
| 1103 | Reboot |
| 2701 | Unlocking service for download (Diagnostic session must be enabled first) - SEED |
| 2703 | Unlocking service for configuration (Diagnostic session must be enabled first) - SEED |
| 2702XXXXXXXX | Unlocking response for download - XXXXXXXX = KEY - Must be given within 5 seconds after seed generation |
| 2704XXXXXXXX | Unlocking response for configuration - XXXXXXXX = KEY - Must be given within 5 seconds after seed generation |
| 22XXXX | Read Zone XXXX (2 bytes) |
| 2EXXXXYYYYYYYYYYYY | Write Zone XXXX with data YYYYYYYYYYYY (Unit must be unlocked first) |
| 3101FF0081F05A | Empty flash memory (Unit must be unlocked first) |
| 3103FF00 | Empty flash memory (Unit must be unlocked first) |
| 3481110000 | Prepare flash writing (Unit must be unlocked first) |
| 3101FF04 | Empty ZI Zone (Unit must be unlocked first) |
| 3103FF04 | Empty ZI Zone (Unit must be unlocked first) |
| 3483110000 | Prepare ZI zone writing (Unit must be unlocked first) |
| Command | Description |
|---|---|
| 22D4XX | Measures |
| 22D405 | Visible satellites |
| 3101DF07 | NAC/RCC: Tactile Test Screen |
| 2FD6000300 | NAC/RCC: Black screen |
| 2FD60000 | NAC/RCC: Restore the screen |
| 2FD66000 | NAC/RCC: Stop Camera display control |
| 2FD66003 | NAC/RCC: Camera display control |
| 2FD6700330 | NAC/RCC: 180° Camera display control - Standard view |
| 2FD6700340 | NAC/RCC: 180° Camera display control - Zoom view |
| 2FD6700350 | NAC/RCC: 180° Camera display control - Lateral view |
| 2FD62000 | NAC/RCC: Stop Sound Test |
| 082FD620030108 | NAC/RCC: Sound test Front Right |
| 082FD62003010A | NAC/RCC: Sound test Front Right |
| 082FD620030208 | NAC/RCC: Sound test Front Left |
| 082FD62003020A | NAC/RCC: Sound test Front Left |
| 082FD620030308 | NAC/RCC: Sound test Back Right |
| 082FD62003030A | NAC/RCC: Sound test Back Right |
| 082FD620030308 | NAC/RCC: Sound test Back Left |
| 082FD62003030A | NAC/RCC: Sound test Back Left |
| Answer | Description |
|---|---|
| 54 | Faults cleared |
| 7101FF0001 | Flash erased successfully |
| 7103FF0002 | Flash erased successfully |
| 7101FF0401 | ZI erased successfully |
| 7103FF0402 | ZI erased successfully |
| 77 | Flash autocontrol OK |
| 5001XXXXXXXX | Communication closed |
| 5002XXXXXXXX | Download session opened |
| 5003XXXXXXXX | Diagnostic session opened |
| 5103 | Reboot OK |
| 62XXXXYYYYYYYYYYYY | Successfull read of Zone XXXX - YYYYYYYYYYYY = DATA |
| 6701XXXXXXXX | Seed generated for download - XXXXXXXX = SEED |
| 6703XXXXXXXX | Seed generated for configuration - XXXXXXXX = SEED |
| 6702 | Unlocked successfully for download - Unit will be locked again if no command is issued within 5 seconds |
| 6704 | Unlocked successfully for configuration - Unit will be locked again if no command is issued within 5 seconds |
| 6EXXXX | Successfull Configuration Write of Zone XXXX |
| 741000 | Download Writing ready |
| 76XX02 | Download frame XX injected with success |
| 76XX0A | Invalid checksum on download frame XX |
| 7F3478 | Download Writing in progress |
| 7F3778 | Flash autocontrol in progress |
| 7F2724 | Anti-Bruteforce active |
| 7F2713 | Invalid SEED Answer (KEY) |
| 7F2E78 | Configuration Write in progress |
| 7F2E13 | Failed Configuration Write - Invalid Zone data |
| 7F2E7E | Failed Configuration Write - Unit is locked |
| 7F2E31 | Failed Configuration Write - Not allowed operation |
| 7F2EXX | Failed Configuration Write |
| 7F2E31 | Failed Configuration Read - Not allowed operation |
| 7F22XX | Failed Configuration Read |
| 7FXXYY | Error - XX = Service / YY = Error Number |
| Zone ID | Description |
|---|---|
| F0FE | ZI Zone (Last 6 characters: current calibration) |
| F080 | ZA Zone |
| F190 | VIN |
| F18C | NAC/RCC Serial number |
| 2100 | NAC/RCC: Telecoding_Fct_AAS |
| 2101 | NAC/RCC: Telecoding_Fct_AFIL |
| 1234 | NAC/RCC: HU_CODING_ADDONS |
| 2103 | NAC/RCC: Telecoding_Fct_ARTIV |
| 2104 | NAC/RCC: Telecoding_Fct_AUDIO |
| 2106 | NAC/RCC: Telecoding_Fct_AVR |
| 2107 | NAC/RCC: Telecoding_Fct_BT |
| 2108 | NAC/RCC: Telecoding_Fct_BTEL |
| 2109 | NAC/RCC: Telecoding_Fct_CAFR |
| 210A | NAC/RCC: Telecoding_Fct_CHANGER_CD |
| 210B | NAC/RCC: Telecoding_Fct_CHECK |
| 210C | NAC/RCC: Telecoding_Fct_CITYPARK |
| 210D | NAC/RCC: Telecoding_Fct_CLIM |
| 210E | NAC/RCC: Telecoding_Fct_DSG |
| 210F | NAC/RCC: Telecoding_Fct_ECRAN_PRINCIPALE |
| 2110 | NAC/RCC: Telecoding_Fct_ECRAN_SECONDAIRE |
| 2112 | NAC/RCC: Telecoding_Fct_HDC |
| 2113 | NAC/RCC: Telecoding_Fct_HY |
| 2114 | NAC/RCC: Telecoding_Fct_INTERNET |
| 2115 | NAC/RCC: Telecoding_Fct_MPD |
| 2117 | NAC/RCC: Telecoding_Fct_RADIO |
| 2118 | NAC/RCC: Telecoding_Fct_RADIO_NUM |
| 2119 | NAC/RCC: Telecoding_Fct_SAM |
| 211A | NAC/RCC: Telecoding_Fct_STT |
| 211B | NAC/RCC: Telecoding_Fct_XVV |
| 211C | NAC/RCC: Telecoding_Fct_WIFI |
| 211D | NAC/RCC: Telecoding_Fct_ASR |
| 211E | NAC/RCC: Telecoding_Fct_ADML |
| 211F | NAC/RCC: Telecoding_Fct_LANG |
| 2120 | NAC/RCC: Telecoding_Fct_LKA |
| 2121 | NAC/RCC: Telecoding_Fct_ACV |
| 2124 | NAC/RCC: Telecoding_Fct_LUM |
| 2125 | NAC/RCC: Telecoding_Fct_OBC |
| 2126 | NAC/RCC: Telecoding_Fct_CPUSH |
| 2128 | NAC/RCC: Telecoding_Fct_SPY |
| 2127 | NAC/RCC: Telecoding_Fct_IHM |
| 2116 | NAC/RCC: Telecoding_Fct_NAV |
| 0100 | NAC/RCC: Calibration_Fct_AAS |
| 0105 | NAC/RCC: Calibration_Fct_AVR |
| 0106 | NAC/RCC: Calibration_Fct_BT |
| 0107 | NAC/RCC: Calibration_Fct_BTEL |
| 010A | NAC/RCC: Calibration_Fct_CITYPARK |
| 010C | NAC/RCC: Calibration_Fct_ENTREE_VIDEO |
| 010D | NAC/RCC: Calibration_Fct_FAN |
| 010E | NAC/RCC: Calibration_Fct_FMUX |
| 010F | NAC/RCC: Calibration_Fct_HY |
| 0110 | NAC/RCC: Calibration_Fct_INTERNET |
| 0112 | NAC/RCC: Calibration_Fct_NAV |
| 0115 | NAC/RCC: Calibration_Fct_STT |
| 0116 | NAC/RCC: Calibration_Fct_XVV |
| 0117 | NAC/RCC: Calibration_Fct_LUM |
| 011A | NAC/RCC: Calibration_Fct_WIFI |
| 0119 | NAC/RCC: Calibration_Fct_LANG |
| 0118 | NAC/RCC: Calibration_Fct_OBC |
| 011B | NAC/RCC: Calibration_Fct_VIDEOTIMING |
| 011E | NAC/RCC: Calibration_Fct_SVR |
| 2123 | NAC/RCC: Telecoding_Fct_Alarm_2 |
| 0103 | NAC/RCC: Calibration_Fct_AUDIO |
| 2129 | NAC/RCC: Telecoding_Fct_LVDS |
| 2105 | NAC/RCC: Telecoding_Fct_AVP |
| 212A | NAC/RCC: Telecoding_Fct_VISIOPARK |
| 0120 | NAC/RCC: Calibration_Fct_VISIOPARK |
| FFF1 | NAC/RCC: Calibration_Fct_COLOR_CORRECTION |
| 011D | NAC/RCC: Calibration_Fct_HDC |
| 011F | NAC/RCC: Calibration_Fct_LVDS |
| 212C | NAC/RCC: Telecoding_Fct_ION |
| 212D | NAC/RCC: Telecoding_Fct_PPS |
| 212E | NAC/RCC: Telecoding_Fct_IDVR |
| 212F | NAC/RCC: Telecoding_Fct_AUDIO2 |
| 2130 | NAC/RCC: Telecoding_Fct_BTA |
| 0104 | NAC/RCC: Calibration_Fct_AVP |
| 011C | NAC/RCC: Calibration_Fct_CLIM |
| 0121 | NAC/RCC: Calibration_Fct_ION |
| 0122 | NAC/RCC: Calibration_Fct_PPS |
| 2131 | NAC/RCC: Telecoding_Fct_ANDROID |
| 2132 | NAC/RCC: Telecoding_Fct_IDVR_HMI |
| 0123 | NAC/RCC: Calibration_Fct_VIDEOTIMING_2 |
| 2133 | NAC/RCC: Telecoding_Fct_WAVE3 |
| 0124 | NAC/RCC: Calibration_Fct_LVDS_EXPORT |
| 0125 | NAC/RCC: Calibration_Fct_HW_VERSION |
| 0126 | NAC/RCC: Calibration_Fct_BEIDOU |
| 0127 | NAC/RCC: Calibration_Fct_DGT |
| 0128 | NAC/RCC: Calibration_Fct_MASS |
| 0129 | NAC/RCC: Calibration_Fct_PPS2 |
| 012A | NAC/RCC: Calibration_Fct_VP1_HW |
| 012B | NAC/RCC: Calibration_Fct_USB |
| 00DE | NAC/RCC: Calibration_Fct_PUSH_LUM |
| 00DD | NAC/RCC: Calibration_Fct_AEE_SEL |
| 2145 | NAC/RCC: Telecoding_Fct_AIO |
CAN-BUS is limited to 8 bytes per frame, to send larger data PSA chose a simple algorythm to truncate the data into multiple parts
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 |
|---|---|---|---|---|---|---|---|
| Full Data Length | Data[0] | Data[1] | Data[2] | Data[3] | Data[4] | Data[5] | Data[6] |
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 |
|---|---|---|---|---|---|---|---|
| 0x10 | Full Data Length | Data[0] | Data[1] | Data[2] | Data[3] | Data[4] | Data[5] |
| Byte 1 | Byte 2 | Byte 3 |
|---|---|---|
| 0x30 | 0x00 | 0x0A |
ID starting at 0x21 and increasing by 1 for every extra frame needed, after 0x2F reverting back to 0x20
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 |
|---|---|---|---|---|---|---|---|
| 0x21 | Data[6] | Data[7] | Data[8] | Data[9] | Data[10] | Data[11] | Data[12] |
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 |
|---|---|---|---|---|---|---|---|
| 0x22 | Data[13] | Data[14] | Data[15] | Data[16] | Data[17] | Data[18] | Data[19] |
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 |
|---|---|---|---|---|---|---|---|
| Full Data Length | Data[0] | Data[1] | Data[2] | Data[3] | Data[4] | Data[5] | Data[6] |
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 |
|---|---|---|---|---|---|---|---|
| 0x10 | Full Data Length | Data[0] | Data[1] | Data[2] | Data[3] | Data[4] | Data[5] |
| Byte 1 | Byte 2 | Byte 3 |
|---|---|---|
| 0x30 | 0x00 | 0x05 |
ID starting at 0x21 and increasing by 1 for every extra frame needed, after 0x2F reverting back to 0x20
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 |
|---|---|---|---|---|---|---|---|
| 0x21 | Data[6] | Data[7] | Data[8] | Data[9] | Data[10] | Data[11] | Data[12] |
| Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 | Byte 8 |
|---|---|---|---|---|---|---|---|
| 0x22 | Data[13] | Data[14] | Data[15] | Data[16] | Data[17] | Data[18] | Data[19] |
Received frames could be out-of-order, ID must be used to append parts at the correct position into the final data whose size is known
Every line of calibration files has this form:
| TYPE | LENGTH | ADDRESS | LENGTH2 | ZONE | DATA | CHECKSUM | CHECKSUM2 |
|---|---|---|---|---|---|---|---|
| 1h | 1h | Variable Length | 1h | 2h | Variable Length | 2h | 1h |
1h = 1 HEX Byte or 2 characters in the .cal file
| Line Part | Line Detail |
|---|---|
| TYPE | S1 = ZI Zone / S2 / S8 |
| LENGTH | Hex Length of ADDRESS+ZONE+DATA+CHECKSUM+CHECKSUM2 |
| ADDRESS | |
| LENGTH2 | Hex Length of ZONE+DATA+CHECKSUM |
| ZONE | |
| DATA | |
| CHECKSUM | CRC-16/X-25(DATA) with this order CRC[1] CRC[0] |
| CHECKSUM2 | CRC-8/2s_complement(ADDRESS+ZONE+DATA+CHECKSUM) - 1 |