[TUTO] Télécodage et calibration d'un NAC / RCC / CIROCCO / CMB_NUM SANS Diagbox via Arduino
Avertissement: Ni moi ni @bagou91 ne sommes responsables en cas de dommages sur votre véhicule vous effectuez les opérations en connaissances de cause.
--
Statistiques: nombre d'unités uniques
--
Coût total de l'adaptateur: < 40€
--
Liste de courses
-
Un Arduino Uno (original ou copie) + cable USB B (aussi dispo
ici avec cable USB inclus) - entre 10 et 25€ TTC - ou un
Arduino Nano + cable mini USB
Liste de courses optionnelle
-
Un fer à souder de faible puissance (Antex 12W par ex) ou à température réglable et
un peu d'étain (au plomb c'est mieux, ça fond plus vite) - environ 30€
Etape 0 - Je comprends rien !
Qu'est-ce que le CAN-BUS ?
Etape 1 - Soudure des connecteurs sur la Shield
Ceci n'est valide que pour les Shield 1.2 et 1.5, la Shield 2.0 de chez Seedstudio est livrée soudée 👍
Votre carte CAN-BUS Shield arrive avec ses PIN à souder vous-même:
Je vous recommande de travailler sur une planche bien plane pour éviter que les connecteurs ne soient trop vers l'extérieur ou trop vers l'intérieur, c'est galère à rattraper après: souder un PIN de chaque bloc bleu pour vous
assurer qu'il soit bien perpendiculaire à la carte avant de passer aux autres, si ajustement il y a, ce sera plus simple.
Voila pourquoi vous avez grand intérêt à avoir un fer de basse puissance et avec une petite panne, il faut mettre un peu d'étain sur chaque PIN, attention au sens du connecteur ISP, il doit être monté dans l'autre sens !
La bonne technique c'est de chauffer d'abord le PIN et la pastille avec la panne du fer à souder puis d'approcher l'étain
Rappel:
Le schéma de câblage du module 8Mhz avec Arduino Nano est
ici (c'est exactement le même pour un Arduino Uno)
Etape 2 - Modification de la Shield
Ajoutez de l'isolant (ruban adhésif, etc) sous le connecteur DB9
(1) pour éviter le contact des PINs du connecteur avec la masse du port USB de l'Arduino (qui est juste en dessous).
Mettez également l’interrupteur sur OFF si vous n'utilisez pas ce port.
La résistance de terminaison de 120 Ohms (terminaison resistor) doit être activée sur votre carte (P1 non coupé sur v2.0 - rien à toucher -, Jumper J1 connecté - soudure ou cavalier - sur module 8Mhz)
Etape 3 - Préparer l'accès au CAN-BUS
Pour pouvoir utiliser le programme il faut que l'Arduino communique avec le boitier télématique (NAC ou RCC), on va utiliser la prise Diagnostic de la voiture (OBD2)
Chez PSA le CAN-BUS Diagnostic (Vitesse: 500 Kbps) utilise les PIN suivants:
PIN 3: CAN-BUS Diagnostic High
PIN 8: CAN-BUS Diagnostic Low
Selon le standard OBD2 il s'agit de PIN réservés aux constructeurs pour leur propre usage (Ici le télécodage / calibration d'une grande partie des ECU de la voiture)
--
Pour la connexion vous devez
modifier un câble OBD2 vers DB9
(1) (V_OBD est inutile, GND est optionnel):
Ou directement connecter deux fils (idéalement multibrins) du bornier
(4) vers les PIN indiqués:
Afin d'améliorer l'envoi et la réception de données (et éviter les blocages ou "stalling") il est recommandé d'avoir une masse commune entre l'Arduino et la voiture en connectant le PIN 5 (OBD2) vers n'importe quel point de masse (GND) sur l'Arduino
Etape 4 - Installation de l'IDE Arduino
Récupérez et installez le
Legacy IDE compatible avec votre système d'exploitation directement sur
https://www.arduino.cc/en/software#legacy-ide-18x
Etape 5 - Ajout des librairies nécessaires au projet dans votre IDE
Téléchargez
arduino-mcp2515.zip - Librairie pour gérer les cartes CAN-BUS Shield
Téléchargez
ArduinoThread.zip - Librairie pour l'éxécution parallèle de tâches (
Protothread)
Et ajoutez les .zip un par un via ce menu:
Etape 6 - Compiler le Sketch Arduino
Récupérez le sketch
arduino-psa-diag.ino (Version 1.9 -
10 / 01 / 2022)
Vous avez le choix entre copier le code source depuis le
RAW et enregistrer le
fichier .ino ou bien récupérer le
ZIP du master pour directement récupérer le .ino et les ZIP des librairies
Dans le cas d'une carte CAN-BUS Shield
V2.0 vous devez changer CS_PIN_CAN0 à
9 (au lieu de 10)
Etape 7 - Uploader le programme
Branchez votre Arduino en USB sur votre ordinateur.
Vous n'avez plus qu'à uploader le programme sur votre Arduino en cliquant sur la flèche allant à droite, vérifiez bien dans Tools > Port que vous avez bien sélectionné le bon port.
Le message après compilation indiquant qu'il reste peu de mémoire disponible est tout à fait normal et parfaitement pris en considération
Etape 8 - Débogage / Vérification
Evidemment si vous voulez faire quelque chose d’intéressant il faut que vous connectiez l'Arduino en USB sur votre PC Portable pendant qu'il est connecté au CAN-BUS
actif de la voiture (ce qui implique
d'avoir au minimum le contact allumé)
Ouvrez le terminal série (en baudrate 115200) et envoyez "
>764:664" [↵] suivi de "
1003" [↵]
Surprise, vous recevez un message de réponse et votre NAC affiche maintenant ceci:
Vous pouvez trouver une grande liste de commandes possibles sur le
repo Github (et savoir ce que fait le sketch derrière les commandes que
vous envoyez)
Vous pouvez ensuite fermer le terminal série pour libérer le port COM pour le programme qui suit.
Maintenant que votre shield est fonctionnelle c'est maintenant que le programme rentre en jeu.
Quel est son but ? Fournir une interface graphique à ces commandes disgracieuses 😅
Remercions @bagou91 qui est à l'origine de la plus grande partie du programme Windows (interface graphique), ayant plutôt participé à la partie communication du programme avec mon sketch Arduino
--
- Comment as-t-on pu arriver à ce résultat ?
En analysant le CAN-BUS pendant l'utilisation de Diagbox, en analysant un dump complet de la mémoire NAND du NAC ainsi que le firmware non chiffré que PSA avait laissé fuité en 2017 (21-05-65-32_NAC-R0_NAC_EUR_WAVE2)
Mais même avec tout ça il s'avère que le NAC/NAC reste un calculateur sécurisé avec un système de seed/key (on vous donne un texte, vous le passez dans un algorithme secret et vous donnez ce texte modifié en réponse), sans la
bonne réponse: le calculateur reste verrouillé et aucune modification n'est possible
Cet algorithme secret est toujours un secret (pour l'instant), le programme utilise une faiblesse de la génération des seed et un dictionnaire que j'ai établi (environ 16 millions de valeurs possibles générées maximum, au lieu
de 4 Milliards théoriquement possible sur 4 bytes)
Mise à jour: Cet algorithme secret ne l'est maintenant plus 😎
--
Téléchargez la dernière version de PSA-Arduino-NAC.exe ici (v1.3.1 - 26/04/2023)
Téléchargez la dernière version de PSA-Arduino-CIROCCO.exe ici (v1.2.7 - 16/03/2022)
Changelog:
- v1.0 - 02/09/2020: Initial version
- v1.0.2 - 04/09/2020: Clearer buttons text and fix Adaptive Cruise Control setting mislabeled
- v1.0.3 - 06/09/2020: AIO Diagnostic session message and COM port settings changed
- v1.0.4 - 25/09/2020: VisioPark zone configuration added
- v1.0.5 - 25/09/2020: RCC Unlocking bruteforce + RCC Wave3 support
- v1.0.6 - 26/09/2020: Fix software crash on NAC access
- v1.0.7 - 26/09/2020: Error message if .log file is locked by another process
- v1.0.8 - 26/09/2020: Retry zone reading if it fails
- v1.0.9 - 27/09/2020: Extremely partial AIO support (Huge work needed)
- v1.1.0 - 30/09/2020: RCC supported for writing ! Internet is now mandatory
- v1.1.1 - 30/09/2020: Fix slow ECU unlocking
- v1.1.2 - 30/09/2020: Fix RCC unlocking issues
- v1.1.3 - 30/09/2020: Fix RCC calibration upload
- v1.1.4 - 14/10/2020: Fix RCC calibration upload
- v1.1.5 - 26/10/2020: Generic Diag sketch support + Sending hardware reference to the server to better identify differences in data between units
- v1.1.6 - 24/11/2020: Russian translation by @SHKoder + Fix logs writing issues (a buffer has been added)
- v1.1.7 - 27/11/2020: Fix automatic language selection (bug introduced in 1.1.6)
- v1.1.8 - 28/11/2020: Remove some Russian added inside English setting names, fix "Alerts History" on Wave3/4
- v1.1.9 - 29/11/2020: Fix Russian language crashing the app
- v1.2.0 - 29/12/2020: Settings adjustments
- v1.2.1 - 30/12/2020: Wave3/4 car type fix
- v1.2.2 - 18/01/2021: Mono/bizone setting in zone 210D
- v1.2.3 - 24/02/2021: Zone 2134 for electric cars (Wave3/4)
- v1.2.4 - 02/03/2021: Rectifying some settings names (Thank's to @Hallahub) + Webasto settings in 210D zone
- v1.2.5 - 06/03/2021: Fix introduced calibration issue in 1.2.4
- v1.2.6 - 20/06/2021: Unobfuscated so no more virus false positive, new settings added
- v1.2.7 - 13/12/2021: Sound adjustment for AAS in 2100, 2132 zone support, new values for menus in 2127, clearer 212A zone values, fix various settings names & values
- v1.2.8 - 17/12/2021: Fix introducted bug with RCCs and 2132 zone support
- v1.2.9 - 16/03/2022: Following deletion of many of my topics by admins of Forum-Peugeot, everything has been transferred to vlud.net
- v1.3.0 - 12/03/2023: Chinese (TW) translation thanks to afu1986 (github.com), BTA setting in 2133, LVDS configs in 2133, translation fixes
- v1.3.1 - 26/04/2023: FIAT Brand added, Car models added / rectified
--
Une connexion Internet est requise sur le PC pour le déverrouillage du calculateur (configuration et calibration)
--
Premièrement connectez vous à l'Arduino, le port COM de celui-ci ne doit pas être utilisé par l'IDE Arduino
Vous avez l'affichage de la calibration courante dans votre NAC (Ici de 508 R8)
Effectuez ensuite une lecture de tous les paramètres en cliquant sur "Read Parameters"
Fortement recommandé avant de bidouiller : Sauvegarde complète de la configuration actuelle de votre NAC, cliquez sur "Backup"
Enregistrez le fichier .nac en lieu sûr
Vous pouvez ensuite accéder aux paramètres en cliquant sur "Parameters":
Tous les paramètres sont repartis dans leur zone respective (c'est comme ça qu'ils sont stockés dans le NAC/RCC)
Certains paramètres sont liés à d'autres voire en doublon et ils ne sont pas forcément dans la même zone (je pense par exemple à l'activation du Menu Climatisation qui est dans la zone 212C et 210D)
Exemple de modification #1: ajout d'une caméra panoramique 180°
Tout ces paramètres doivent être activés et toutes les options de la zone 2106 (Caméra 130°) désactivées
Exemple de modification #2: modification du modèle de voiture
Les modèles listés dépendent de nombreux facteurs dont : La modèle de votre NAC *, la marque constructeur et l'ID du modèle
* Wave 1/2/3/4. Les NAC Wave 3 existent en deux variantes majeures (HD et non-HD), la version HD est dédiée aux écrans 10" quand l'autre est dédiée aux écrans 7" et 8", les NAC Wave 4 sont forcément HD.
/!\ Tous les modèles ne sont pas listés pour toutes les marques et tous les modèles, à vous de jouer
Cliquez sur "Save" pour enregistrer la configuration et validez:
Puis attendez que votre boitier redémarre tout seul: c'est terminé !
Les petits + du programme: Effacement des défauts après chaque télécodage / calibration et aucune erreur résiduelle de type "Télécodage Sécurisé" ou "Programmation manquante" affichée dans Diagbox.
Mais aussi: aucune augmentation du compteur du nombre de téléchargements 👍
Le détail des zones dans les fichiers de configuration ou dans les calibrations se trouve
ici
Liste de configurations
Vous avez perdu votre configuration ? Pas de problème, en voici quelques unes qui vont serviront de base
Liste de calibrations
Vous voulez changer la calibration de votre NAC ? Pas de problème, en voici quelques une:
NAC / RCC_CN (China)
RCC
Liste complète
Pour sauvegarder le fichier sur votre PC: clic droit sur le fichier voulu, puis "Enregistrer le lien sous..."