Dépannage des erreurs CAN
Ce document aborde les erreurs courantes du réseau CAN, les procédures de dépannage des anomalies de communication et le processus de recherche 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 par intermittence ou est introuvable.
- Nécessité de diagnostiquer les problèmes
bytes_invalidouTimer too closesur le bus CAN.
Si vous devez configurer CAN0, rechercher un ID CAN ou connaître les règles de câblage et de résistance de terminaison, veuillez d'abord consulter Configuration du réseau CAN et recherche d'ID.
Diagnostic des erreurs courantes
| Erreur | Cause fréquente | Solution |
|---|---|---|
OSError: [Errno 19] No such device | L'ordinateur hôte ne trouve pas le périphérique CAN | Vérifier 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é | Reconfigurer CAN0 et redémarrer |
can.CanError: Failed to transmit: [Errno 105] No buffer space available | Cache CAN insuffisant ou file d'attente réseau anormale | Vérifier que le cache est 1024, reconfigurer CAN0 si nécessaire |
mcu 'xxx': Invalid CAN uuid | UUID CAN mal renseigné ou périphérique hors ligne | Rechercher l'UUID, vérifier l'ordre des fils, l'alimentation et la résistance de terminaison |
Serial connection closed | Klipper a trouvé la configuration mais la connexion est interrompue | Vérifier la qualité du réseau CAN, l'ordre des fils, la résistance de terminaison et le débit du firmware |
Pour plus d'erreurs Klipper, consultez 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 lorsqu'ils sont traversés par un courant élevé. Si les câbles de communication CAN (CANH/CANL) sont acheminés parallèlement et à proximité de ces câbles de puissance, les signaux parasites se couplent sur le bus CAN, entraînant :
- Des timeouts de communication, une déconnexion intermittente du MCU
- Une déconnexion aléatoire des périphériques CAN, une absence de détection par
canbus_query.py - Un déclenchement de
Timer too closeou deCommunication timeoutlors du homing - Un arrêt soudain pendant l'impression, sans erreur matérielle évidente dans les logs
Lors du dépannage des interférences, vérifiez en priorité le cheminement des câbles CAN par rapport aux câbles de puissance, la mise à la terre du blindage et l'intégrité des résistances de terminaison.
Le compteur CAN bytes_invalid augmente continuellement
Message d'erreur : Dans klippy.log, la ligne de statistiques Stats montre bytes_invalid non nul et en augmentation continue.
Cause de l'erreur : Les messages du bus CAN sont réordonnés (reordered messages), ce qui est un problème grave pouvant entraîner une instabilité et des erreurs aléatoires à n'importe quelle étape de l'impression.
Causes connues :
- Noyau Linux inférieur à v6.6.0, présence d'un bug de réordonnancement dans le pilote CAN gs_usb.
- Adaptateur USB-CAN avec firmware candlelight inférieur à v2.0.
- Nœud en mode pont USB-to-CAN Klipper avec firmware inférieur à v0.12.0.
Solutions :
- Mettre à jour le noyau Linux vers la version v6.6.0 ou supérieure.
- Si vous utilisez un adaptateur USB-CAN candlelight, mettre à jour le firmware vers v2.0 ou supérieur.
- Si vous utilisez le mode pont USB-to-CAN Klipper, assurez-vous que le nœud pont est flashé avec un firmware Klipper v0.12.0+.
- Si
bytes_invalidcontinue d'augmenter, la cause racine n'est pas résolue ; continuez à vérifier les versions du noyau et du firmware. - Remarque : L'augmentation de
bytes_invalidn'est pas causée par des problèmes matériels comme le câblage ou les résistances de terminaison ; elle ne peut être résolue que par une mise à jour logicielle/firmware.
File d'attente du bus CAN insuffisante menant à Timer too close
Message d'erreur : Lors de la communication sur le bus CAN, apparition du message MCU 'xxx' shutdown: Timer too close.
Cause de l'erreur : La longueur de file d'attente par défaut (qlen) définie par le noyau Linux pour l'interface 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 le prédéfinit à 1024, offrant une marge plus importante dans les scénarios avec de nombreux nœuds ou une charge élevée.
Solutions :
- Vérifier la longueur actuelle de la file d'attente de l'interface CAN :
ip link show can0 | grep qlen
- Augmenter temporairement la longueur de la file d'attente. Pour un système standard, testez
128; pour un système FLY ou une machine multi-nœuds, utilisez1024:
sudo ip link set dev can0 qlen 128
# ou
sudo ip link set dev can0 qlen 1024
- Pour une configuration permanente : 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 et canbus_query.py ne le détecte plus.
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, mal serties ou connecteurs desserrés.
- Câble CAN non torsadé et blindé, ou acheminé parallèlement à des câbles de puissance provoquant des interférences électromagnétiques (cause la plus courante et la plus insidieuse).
- 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 de manière "intermittente" et "aléatoire" – parfois tout fonctionne parfaitement, parfois il y a une déconnexion soudaine, puis tout revient après un cycle d'alimentation. Lors du dépannage, concentrez-vous sur :
- Cheminement des câbles : Les câbles de communication CAN sont-ils câblés en parallèle avec les câbles moteur, de chauffage ou de lit chauffant dans la chaîne porte-câbles ? Les signaux de modulation PWM à haute vitesse des pilotes moteur et le bruit de commutation des chauffages sont les sources d'interférences les plus fortes.
- Mise à la terre du blindage : Lors de l'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, qui peut en fait introduire des interférences.
- Position de la résistance de terminaison : La résistance de terminaison est-elle installée à l'extrémité physique du bus CAN, activée via un cavalier sur la carte, un interrupteur DIP ou une interface de terminaison dédiée ?
- Spécifications du câble CAN : Utilisez-vous une paire torsadée (avec un pas de torsion de quelques centimètres maximum) ? Les câbles parallèles (non torsadés) offrent une très faible capacité de suppression des interférences de mode commun.
- Intégrité de la mise à la terre : L'alimentation de la machine et le boîtier 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éthode 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, reroutage des câbles, ajustement du blindage, activation/désactivation de la résistance 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, en privilégiant l'utilisation de cavaliers sur carte, d'interrupteurs DIP ou d'interfaces de terminaison dédiées.
- Vérifiez que les connexions CANH/CANL sont solidement fixées et que les connecteurs sont complètement enfoncés.
- Éteignez d'abord l'appareil avant de manipuler. Utilisez un multimètre pour mesurer la résistance entre CANH et CANL (normalement environ 60Ω).
- Reroutez les câbles : Séparez les câbles de communication CAN des câbles de puissance, en maintenant une distance d'au moins 2-3 cm, et évitez le parallélisme.
- Confirmez la mise à la terre du blindage : Le blindage doit être mis à la terre uniquement du côté de l'ordinateur hôte, et laissé flottant du côté de la carte outil ; ne démontez pas vous-même l'alimentation et ne modifiez pas la terre secteur.
- Utilisez
candumppour surveiller le trafic du bus CAN et observez s'il y a une grande quantité de trames d'erreur. - 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 pilote 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 les débits CAN du firmware de la carte outil et de la carte mère correspondent à celui de CAN0 sur l'ordinateur hôte.
- Si l'ID du périphérique est déjà écrit dans
printer.cfg, commentez temporairement la configuration correspondante, puis éteignez, attendez environ 10 secondes et rallumez pour rechercher à nouveau. - Vérifiez si CAN-H et CAN-L ne sont pas inversés, cassé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Ω. - Confirmez que la carte outil ou la carte mère est correctement alimentée.
- Confirmez que le mode de communication correct a été sélectionné lors de la compilation du firmware.
- Si le résultat de la recherche indique
Application: CANBOOTouApplication: Katapult, flashez d'abord le firmware Klipper, puis recherchez à nouveau.
Règles pour les résistances de terminaison
Avant de manipuler les cavaliers de résistance de terminaison, les interrupteurs DIP ou de débrancher/rebrutcher 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 d'utilisation |
|---|---|---|
| Carte outil CAN | Nécessite une résistance de terminaison 120Ω | Activer via un cavalier sur carte ou un interrupteur DIP |
| Interface CAN de la carte mère | Nécessite une résistance de terminaison 120Ω | Activer via un cavalier sur carte ou un interrupteur DIP |
| Module de conversion type UTOC | A généralement une résistance 120Ω intégrée | Pas besoin d'activer une résistance de terminaison supplémentaire |
Ordre de dépannage rapide
- Vérifiez le périphérique : exécutez
lsusbpour confirmer la présence de1d50:606f. - Vérifiez la configuration : exécutez
ip -details link show can0pour confirmer que CAN0 existe, que le débit est correct et que le cache est1024. - Vérifiez le matériel : après avoir complètement éteint, mesurez la résistance entre CAN-H et CAN-L ; elle doit être d'environ
60Ω.
Si tout est vérifié et que le problème persiste, 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ù le périphérique est déjà connecté au réseau CAN et doit être mis à jour via CAN. Les noms de firmware et les méthodes de compilation varient selon les produits ; veuillez d'abord compiler le firmware conformément au didacticiel du produit correspondant.
Préparation
- Compilez le nouveau firmware selon le didacticiel du produit.
- Confirmez que l'UUID CAN du périphérique peut être trouvé, ou qu'il est déjà renseigné dans
printer.cfgsouscanbus_uuid:. - Arrêtez le service Klipper :
sudo systemctl stop klipper
Effectuer la mise à jour
Remplacez <CAN_UUID> dans la commande ci-dessous par l'ID réel du périphérique.
Choisissez la commande en fonction de la version de votre système.
- FlyOS-FAST version 1.3.8 ou supérieure ou système ayant mis à jour Klipper après le 9 avril 2026 :
python3 ~/klipper/lib/katapult/flashtool.py -u <CAN_UUID>
- Ancienne version du système, c'est-à-dire FlyOS-FAST antérieure à 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 avant de renseigner 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
Redémarrez Klipper une fois la mise à jour terminée :
sudo systemctl start klipper
Si la connexion échoue 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 l'ID CAN ou si Klipper ne peut pas se connecter au périphérique CAN, vérifiez rapidement les points suivants dans cet ordre :
can0est reconnu par le système.bitratecorrespond 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 aux deux extrémités du bus CAN sont correctes.
- L'alimentation de la carte outil ou de la carte mère est normale.
- Le mode de communication du firmware est correctement sélectionné.
printer.cfgutilise lecanbus_uuid:réellement trouvé.- Dans le même
[mcu],serial:etcanbus_uuid:ne sont pas activés simultanément.