Aller au contenu principal

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_invalid ou Timer too close sur 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

ErreurCause fréquenteSolution
OSError: [Errno 19] No such deviceL'ordinateur hôte ne trouve pas le périphérique CANVérifier l'UTOC, le câble USB, le firmware du pont CAN et l'alimentation
can.CanError: Failed to transmit: [Errno 100] Network is downCAN0 non démarré ou mal configuréReconfigurer CAN0 et redémarrer
can.CanError: Failed to transmit: [Errno 105] No buffer space availableCache CAN insuffisant ou file d'attente réseau anormaleVérifier que le cache est 1024, reconfigurer CAN0 si nécessaire
mcu 'xxx': Invalid CAN uuidUUID CAN mal renseigné ou périphérique hors ligneRechercher l'UUID, vérifier l'ordre des fils, l'alimentation et la résistance de terminaison
Serial connection closedKlipper a trouvé la configuration mais la connexion est interrompueVé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

Les interférences électromagnétiques sont une cause fréquente

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 close ou de Communication timeout lors 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 :

  1. Mettre à jour le noyau Linux vers la version v6.6.0 ou supérieure.
  2. Si vous utilisez un adaptateur USB-CAN candlelight, mettre à jour le firmware vers v2.0 ou supérieur.
  3. 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+.
  4. Si bytes_invalid continue d'augmenter, la cause racine n'est pas résolue ; continuez à vérifier les versions du noyau et du firmware.
  5. Remarque : L'augmentation de bytes_invalid n'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 :

  1. Vérifier la longueur actuelle de la file d'attente de l'interface CAN :
ip link show can0 | grep qlen
  1. 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, utilisez 1024 :
sudo ip link set dev can0 qlen 128
# ou
sudo ip link set dev can0 qlen 1024
  1. Pour une configuration permanente : ajoutez le paramètre txqueuelen 128 ou txqueuelen 1024 dans /etc/network/interfaces.d/can0 ; si vous utilisez systemd-networkd, définissez TxQueueLength= 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 :

Opération hors tension

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.

  1. 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.
  2. Vérifiez que les connexions CANH/CANL sont solidement fixées et que les connecteurs sont complètement enfoncés.
  3. Éteignez d'abord l'appareil avant de manipuler. Utilisez un multimètre pour mesurer la résistance entre CANH et CANL (normalement environ 60Ω).
  4. 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.
  5. 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.
  6. Utilisez candump pour surveiller le trafic du bus CAN et observez s'il y a une grande quantité de trames d'erreur.
  7. 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

  1. Exécutez ip -details link show can0 pour confirmer que CAN0 existe et est dans un état utilisable.
  2. 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.
  3. 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.
  4. Vérifiez si CAN-H et CAN-L ne sont pas inversés, cassés ou en mauvais contact.
  5. 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'environ 60Ω.
  6. Confirmez que la carte outil ou la carte mère est correctement alimentée.
  7. Confirmez que le mode de communication correct a été sélectionné lors de la compilation du firmware.
  8. Si le résultat de la recherche indique Application: CANBOOT ou Application: Katapult, flashez d'abord le firmware Klipper, puis recherchez à nouveau.

Règles pour les résistances de terminaison

Opération hors tension

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ériqueExigence de résistance de terminaisonInstructions d'utilisation
Carte outil CANNécessite une résistance de terminaison 120ΩActiver via un cavalier sur carte ou un interrupteur DIP
Interface CAN de la carte mèreNécessite une résistance de terminaison 120ΩActiver via un cavalier sur carte ou un interrupteur DIP
Module de conversion type UTOCA généralement une résistance 120Ω intégréePas besoin d'activer une résistance de terminaison supplémentaire

Ordre de dépannage rapide

  1. Vérifiez le périphérique : exécutez lsusb pour confirmer la présence de 1d50:606f.
  2. Vérifiez la configuration : exécutez ip -details link show can0 pour confirmer que CAN0 existe, que le débit est correct et que le cache est 1024.
  3. 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

  1. Compilez le nouveau firmware selon le didacticiel du produit.
  2. Confirmez que l'UUID CAN du périphérique peut être trouvé, ou qu'il est déjà renseigné dans printer.cfg sous canbus_uuid:.
  3. 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.

Notes de version

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>
Attention

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.

Loading...

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 :

  1. can0 est reconnu par le système.
  2. bitrate correspond au débit CAN défini lors de la compilation du firmware.
  3. qlen ou txqueuelen est 1024.
  4. CAN-H et CAN-L ne sont pas inversés.
  5. Les résistances de terminaison aux deux extrémités du bus CAN sont correctes.
  6. L'alimentation de la carte outil ou de la carte mère est normale.
  7. Le mode de communication du firmware est correctement sélectionné.
  8. printer.cfg utilise le canbus_uuid: réellement trouvé.
  9. Dans le même [mcu], serial: et canbus_uuid: ne sont pas activés simultanément.
Loading...