Dépannage des erreurs CAN
Ce document traite du dépannage des erreurs courantes sur le réseau CAN, des anomalies de communication et de la procédure à suivre lorsqu'un ID CAN est introuvable.
Scénarios d'application :
- Klipper affiche des erreurs liées à CAN0, à l'UUID CAN ou au réseau CAN.
- Un périphérique CAN se déconnecte de manière intermittente ou est introuvable.
- Vous devez résoudre des problèmes de
bytes_invalidCAN, de Timer too close, etc.
Si vous avez besoin de configurer CAN0, de rechercher un ID CAN ou de comprendre le câblage et les règles de résistance de terminaison, veuillez d'abord consulter Configuration du réseau CAN et recherche d'ID.
Diagnostic des erreurs courantes
| Erreur | Cause courante | Solution |
|---|---|---|
OSError: [Errno 19] No such device | L'ordinateur hôte ne trouve pas le périphérique CAN | Vérifiez l'UTOC, le câble USB, le firmware du pont CAN et l'alimentation |
can.CanError: Failed to transmit: [Errno 100] Network is down | CAN0 non démarré ou mal configuré | Reconfigurez CAN0 et redémarrez |
can.CanError: Failed to transmit: [Errno 105] No buffer space available | Tampon CAN insuffisant ou file d'attente réseau système anormale | Assurez-vous que le tampon est 1024, sinon reconfigurez CAN0 |
mcu 'xxx': Invalid CAN uuid | UUID CAN mal renseigné ou périphérique hors ligne | Recherchez à nouveau l'UUID, vérifiez l'ordre des fils, l'alimentation et la résistance de terminaison |
Serial connection closed | Klipper a trouvé la configuration mais la connexion a été interrompue | Vérifiez la qualité du réseau CAN, l'ordre des fils, la résistance de terminaison et le débit du firmware |
Duplicate canbus_uuid | Plusieurs configurations MCU utilisent le même UUID CAN | Recherchez à nouveau l'UUID, confirmez que chaque [mcu xxx] est unique |
Unknown canbus_uuid xxx | L'UUID CAN dans la configuration n'est pas dans les résultats de recherche du réseau actuel | Commentez la configuration MCU correspondante, puis recherchez et renseignez à nouveau |
Can not update MCU 'xxx' config as it is shutdown | Le MCU CAN est d'abord entré en shutdown, la mise à jour de configuration suivante a échoué | Remontez dans klippy.log pour trouver la première cause de déconnexion ou de shutdown |
Pour plus d'erreurs Klipper, référez-vous à Indications d'erreurs courantes.
Dépannage des erreurs de communication CAN
Une grande partie des anomalies de communication sur le bus CAN est due aux interférences électromagnétiques (EMI). À l'intérieur d'une imprimante 3D, les câbles des moteurs pas à pas, des chauffages et du lit chauffant génèrent un fort champ électromagnétique lors du passage de courants importants. Si les câbles de communication CAN (CANH/CANL) sont câblés en parallèle et à proximité de ces câbles de forte puissance, les signaux d'interférence peuvent se coupler sur le bus CAN, entraînant :
- Des timeouts de communication, des déconnexions intermittentes du MCU
- Des déconnexions aléatoires des périphériques CAN, une impossibilité de les scanner avec
canbus_query.py - Le déclenchement de
Timer too closeouCommunication timeoutpendant le homing - Un shutdown soudain pendant l'impression, sans erreur matérielle évidente dans les logs
Lors du dépannage des interférences, vérifiez en priorité la disposition des câbles CAN par rapport aux câbles de forte puissance, la mise à la terre du blindage et l'intégrité de la résistance de terminaison.
Le compteur CAN bytes_invalid augmente continuellement
Message d'erreur : dans klippy.log, la ligne de statistiques Stats par seconde montre bytes_invalid non nul et en augmentation continue.
Cause de l'erreur : Les messages du bus CAN sont réordonnés (reordered messages). C'est un problème grave qui peut provoquer une instabilité et des erreurs aléatoires à n'importe quelle étape de l'impression.
Causes connues :
- Noyau Linux inférieur à v6.6.0, avec un bug de réordonnancement du pilote CAN gs_usb.
- Adaptateur USB-CAN utilisant le firmware candlelight, version inférieure à v2.0.
- Firmware du nœud en mode pont USB-to-CAN Klipper inférieur à v0.12.0.
Solutions :
- Mettez à niveau le noyau Linux vers la version v6.6.0 ou supérieure.
- Si vous utilisez un adaptateur USB-CAN candlelight, mettez à niveau son firmware vers v2.0 ou supérieur.
- Si vous utilisez le mode pont USB-to-CAN Klipper, assurez-vous que le nœud pont a flasher le firmware Klipper v0.12.0+.
- Si
bytes_invalidcontinue d'augmenter, la cause première n'est pas résolue. Continuez à vérifier les versions du noyau et du firmware. - Note : L'augmentation de
bytes_invalidn'est pas causée par des problèmes matériels comme le câblage ou la résistance de terminaison ; elle ne peut être résolue que par une mise à jour logicielle/du firmware.
File d'attente du bus CAN insuffisante entraînant Timer too close
Message d'erreur : MCU 'xxx' shutdown: Timer too close lors de la communication CAN.
Cause de l'erreur : La longueur de file d'attente par défaut (qlen) définie par le noyau Linux pour les interfaces réseau CAN est généralement de 10, ce qui est trop faible pour les besoins de communication à haute fréquence et faible latence de Klipper. Les exemples officiels de Klipper utilisent souvent txqueuelen 128 ; FlyOS-FAST est préréglé à 1024, offrant une plus grande marge dans les scénarios à plusieurs nœuds ou à forte charge.
Solutions :
- Vérifiez la longueur actuelle de la file d'attente de l'interface CAN :
ip link show can0 | grep qlen
- Augmentez temporairement la longueur de la file d'attente. Pour un système standard, testez d'abord
128. Pour un système FLY ou une machine à plusieurs nœuds, utilisez1024:
sudo ip link set dev can0 qlen 128
# ou
sudo ip link set dev can0 qlen 1024
- Réglage permanent : Ajoutez le paramètre
txqueuelen 128outxqueuelen 1024dans/etc/network/interfaces.d/can0; si vous utilisez systemd-networkd, définissezTxQueueLength=dans le fichier.link.
Un nœud du bus CAN ne répond pas
Message d'erreur : Un périphérique CAN se déconnecte soudainement, impossible de le scanner avec canbus_query.py.
Causes courantes :
- Résistance de terminaison CAN manquante ou incorrecte (il doit y avoir exactement deux résistances de 120Ω entre CANH et CANL).
- Connexions CANH/CANL desserrées, mauvais sertissage ou connecteur desserré.
- Câble CAN non blindé, ou câblé en parallèle de câbles de forte puissance générant des interférences électromagnétiques (cause la plus courante et la plus difficile à détecter).
- Alimentation anormale de l'adaptateur USB-CAN.
Points clés pour le dépannage des interférences :
Les anomalies de communication CAN dues aux interférences électromagnétiques se manifestent souvent par un caractère "intermittent" et "aléatoire" – parfois tout fonctionne parfaitement, parfois une déconnexion survient soudainement, puis tout rentre dans l'ordre après un redémarrage. Lors du dépannage, concentrez-vous sur :
- Disposition des câbles : Les câbles de communication CAN sont-ils câblés côte à côte avec les câbles moteurs, les câbles de chauffage ou ceux du lit chauffant dans la gaine ? Les signaux de modulation PWM à haute vitesse des drivers moteur et le bruit de commutation des chauffages sont les sources d'interférence les plus fortes.
- Mise à la terre du blindage : En cas d'utilisation d'un câble blindé, le blindage est-il mis à la terre à une seule extrémité (uniquement du côté de l'ordinateur hôte) ? Une mise à la terre aux deux extrémités crée une boucle de masse, ce qui introduit des interférences.
- Position des résistances de terminaison : Les résistances de terminaison sont-elles installées aux extrémités physiques du bus CAN, activées via un cavalier sur la carte, un interrupteur DIP ou une interface de terminaison dédiée ?
- Spécification du câble CAN : Utilisez-vous une paire torsadée (pas de torsade de plus de quelques centimètres) ? Les câbles parallèles (non torsadés) n'ont pratiquement aucune capacité à supprimer les interférences en mode commun.
- Intégrité de la mise à la terre : L'alimentation de l'imprimante et son châssis sont-ils correctement mis à la terre ? Un châssis métallique non mis à la terre agit comme une grande antenne, captant facilement le bruit ambiant.
Méthodes de dépannage :
Les vérifications matérielles suivantes doivent être effectuées après avoir complètement éteint l'imprimante et débranché l'alimentation : vérification des CANH/CANL, réacheminement des câbles, ajustement du blindage, activation/désactivation des résistances de terminaison, mesure de la résistance CANH-CANL.
- Assurez-vous qu'il y a exactement deux résistances de terminaison de 120Ω sur le bus CAN. Privilégiez l'utilisation de cavaliers, d'interrupteurs DIP ou d'interfaces de terminaison intégrées sur les cartes.
- Vérifiez que les connexions CANH/CANL sont solides, que les connecteurs sont complètement insérés.
- Effectuez les opérations hors tension d'abord. Utilisez un multimètre pour mesurer la résistance entre CANH et CANL (normalement environ 60Ω).
- Réacheminez les câbles : Séparez les câbles de communication CAN des câbles de forte puissance, en maintenant une distance d'au moins 2 à 3 cm pour éviter le parallélisme.
- Confirmez la mise à la terre du blindage : Le blindage est mis à la terre uniquement du côté de l'ordinateur hôte ; l'extrémité de la carte outil reste flottante et non connectée. Ne démontez pas vous-même l'alimentation ou ne modifiez pas la terre secteur.
- Utilisez
candumppour surveiller le trafic du bus CAN et observez s'il y a un grand nombre de trames d'erreur (error frames). - Réduisez temporairement la vitesse/accélération d'impression pour tester. Si le problème disparaît, cela indique une corrélation positive entre les interférences et l'intensité du pilotage moteur.
Ordre de dépannage lorsqu'un ID est introuvable
- Exécutez
ip -details link show can0pour confirmer que CAN0 existe et est dans un état utilisable. - Confirmez que le débit CAN du firmware de la carte outil et de la carte mère est identique à celui du CAN0 sur l'ordinateur hôte.
- Si l'ID du périphérique est déjà écrit dans
printer.cfg, commentez d'abord temporairement la configuration correspondante, puis éteignez et débranchez l'alimentation pendant environ 10 secondes avant de rallumer et de rechercher. - Vérifiez si CAN-H et CAN-L ne sont pas inversés, coupés ou en mauvais contact.
- Confirmez qu'il y a une résistance de terminaison
120Ωà chaque extrémité du réseau CAN. Après avoir éteint la machine, mesurez la résistance entre CAN-H et CAN-L. Elle doit être d'environ60Ω. - Assurez-vous que la carte outil ou la carte mère est correctement alimentée.
- Vérifiez que le mode de communication correct a été sélectionné lors de la compilation du firmware.
- Si le résultat de la recherche affiche
Application: CANBOOTouApplication: Katapult, flashez d'abord le firmware Klipper avant de rechercher à nouveau.
Règles pour les résistances de terminaison
Avant d'ajuster les cavaliers, les interrupteurs DIP des résistances de terminaison, ou de rebrancher les câbles CAN, éteignez complètement l'imprimante et débranchez l'alimentation.
| Type de périphérique | Exigence de résistance de terminaison | Instructions |
|---|---|---|
| Carte outil CAN | Nécessite une résistance de terminaison 120Ω | Activée via un cavalier ou un interrupteur DIP sur la carte |
| Interface CAN de la carte mère | Nécessite une résistance de terminaison 120Ω | Activée via un cavalier ou un interrupteur DIP sur la carte |
| Module convertisseur type UTOC | Résistance 120Ω souvent intégrée | Aucune résistance de terminaison supplémentaire requise |
Ordre de vérification rapide
- Vérifiez d'abord le périphérique : exécutez
lsusbpour confirmer la présence de1d50:606f. - Vérifiez ensuite la configuration : exécutez
ip -details link show can0pour confirmer que CAN0 existe, que le débit est correct et que le tampon est1024. - Vérifiez enfin le matériel : après avoir complètement éteint la machine, mesurez la résistance entre CAN-H et CAN-L pour confirmer qu'elle est d'environ
60Ω.
Si le problème persiste après toutes ces vérifications, essayez de remplacer le câble USB, le câble CAN, l'UTOC ou le dispositif de pont CAN pour un test croisé.
Référence pour la mise à jour du firmware des périphériques CAN
Cette section est destinée aux scénarios où vous êtes déjà connecté au réseau CAN et devez mettre à jour le firmware de la carte mère ou de la carte outil via CAN. Les noms de firmware et les méthodes de compilation diffèrent selon les produits. Veuillez d'abord compiler le nouveau firmware conformément au tutoriel du produit correspondant.
Préparation
- Compilez le nouveau firmware conformément au tutoriel du produit.
- Confirmez que l'UUID CAN du périphérique est détectable, ou qu'il est déjà renseigné sous
canbus_uuid:dansprinter.cfg. - Arrêtez le service Klipper :
sudo systemctl stop klipper
Exécution de la mise à jour
Remplacez <CAN_UUID> dans la commande ci-dessous par l'ID réel du périphérique.
Choisissez la commande correspondant à votre version système.
- FlyOS-FAST version 1.3.8 ou ultérieure ou système ayant mis à jour Klipper après le 9 avril 2026 :
python3 ~/klipper/lib/katapult/flashtool.py -u <CAN_UUID>
- Systèmes plus anciens, c'est-à-dire FlyOS-FAST antérieur à la version 1.3.8, ou système n'ayant pas mis à jour Klipper avant le 9 avril 2026 :
python3 ~/klipper/lib/canboot/flash_can.py -u <CAN_UUID>
Il doit y avoir un espace après -u, puis renseignez l'UUID CAN.
L'apparition du message CAN Flash Success indique généralement que le flashage a réussi.
Opérations après la mise à jour
Une fois la mise à jour terminée, redémarrez Klipper :
sudo systemctl start klipper
Si la connexion est impossible après la mise à jour, recherchez à nouveau l'ID CAN et confirmez que canbus_uuid: dans printer.cfg est toujours correct.
Liste de vérification finale
Si vous ne trouvez pas d'ID CAN ou si Klipper ne peut pas se connecter à un périphérique CAN, vérifiez rapidement dans cet ordre :
can0est reconnu par le système.bitrateest identique au débit CAN défini lors de la compilation du firmware.qlenoutxqueuelenest1024.- CAN-H et CAN-L ne sont pas inversés.
- Les résistances de terminaison du bus CAN sont correctes aux deux extrémités.
- La carte outil ou la carte mère est correctement alimentée.
- Le mode de communication dans le firmware est correctement sélectionné.
canbus_uuid:dansprinter.cfgutilise lecanbus_uuid:réellement détecté.- Aucun
serial:etcanbus_uuid:ne sont activés simultanément dans le même[mcu].