Aller au contenu principal

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_invalid CAN, 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

ErreurCause couranteSolution
OSError: [Errno 19] No such deviceL'ordinateur hôte ne trouve pas le périphérique CANVérifiez 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éReconfigurez CAN0 et redémarrez
can.CanError: Failed to transmit: [Errno 105] No buffer space availableTampon CAN insuffisant ou file d'attente réseau système anormaleAssurez-vous que le tampon est 1024, sinon reconfigurez CAN0
mcu 'xxx': Invalid CAN uuidUUID CAN mal renseigné ou périphérique hors ligneRecherchez à nouveau l'UUID, vérifiez l'ordre des fils, l'alimentation et la résistance de terminaison
Serial connection closedKlipper a trouvé la configuration mais la connexion a été interrompueVérifiez la qualité du réseau CAN, l'ordre des fils, la résistance de terminaison et le débit du firmware
Duplicate canbus_uuidPlusieurs configurations MCU utilisent le même UUID CANRecherchez à nouveau l'UUID, confirmez que chaque [mcu xxx] est unique
Unknown canbus_uuid xxxL'UUID CAN dans la configuration n'est pas dans les résultats de recherche du réseau actuelCommentez la configuration MCU correspondante, puis recherchez et renseignez à nouveau
Can not update MCU 'xxx' config as it is shutdownLe 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

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

  1. Mettez à niveau le noyau Linux vers la version v6.6.0 ou supérieure.
  2. Si vous utilisez un adaptateur USB-CAN candlelight, mettez à niveau son 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 a flasher le firmware Klipper v0.12.0+.
  4. Si bytes_invalid continue d'augmenter, la cause première n'est pas résolue. Continuez à vérifier les versions du noyau et du firmware.
  5. Note : L'augmentation de bytes_invalid n'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 :

  1. Vérifiez la longueur actuelle de la file d'attente de l'interface CAN :
ip link show can0 | grep qlen
  1. 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, utilisez 1024 :
sudo ip link set dev can0 qlen 128
# ou
sudo ip link set dev can0 qlen 1024
  1. Réglage permanent : 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, 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 :

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, réacheminement des câbles, ajustement du blindage, activation/désactivation des résistances 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. Privilégiez l'utilisation de cavaliers, d'interrupteurs DIP ou d'interfaces de terminaison intégrées sur les cartes.
  2. Vérifiez que les connexions CANH/CANL sont solides, que les connecteurs sont complètement insérés.
  3. Effectuez les opérations hors tension d'abord. Utilisez un multimètre pour mesurer la résistance entre CANH et CANL (normalement environ 60Ω).
  4. 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.
  5. 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.
  6. Utilisez candump pour surveiller le trafic du bus CAN et observez s'il y a un grand nombre de trames d'erreur (error frames).
  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 pilotage 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 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.
  3. 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.
  4. Vérifiez si CAN-H et CAN-L ne sont pas inversés, coupé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. Assurez-vous que la carte outil ou la carte mère est correctement alimentée.
  7. Vérifiez que le mode de communication correct a été sélectionné lors de la compilation du firmware.
  8. Si le résultat de la recherche affiche Application: CANBOOT ou Application: Katapult, flashez d'abord le firmware Klipper avant de rechercher à nouveau.

Règles pour les résistances de terminaison

Opération hors tension

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ériqueExigence de résistance de terminaisonInstructions
Carte outil CANNé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èreNécessite une résistance de terminaison 120ΩActivée via un cavalier ou un interrupteur DIP sur la carte
Module convertisseur type UTOCRésistance 120Ω souvent intégréeAucune résistance de terminaison supplémentaire requise

Ordre de vérification rapide

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

  1. Compilez le nouveau firmware conformément au tutoriel du produit.
  2. Confirmez que l'UUID CAN du périphérique est détectable, ou qu'il est déjà renseigné sous canbus_uuid: dans printer.cfg.
  3. 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.

Version

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

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.

Loading...

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 :

  1. can0 est reconnu par le système.
  2. bitrate est identique 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 du bus CAN sont correctes aux deux extrémités.
  6. La carte outil ou la carte mère est correctement alimentée.
  7. Le mode de communication dans le firmware est correctement sélectionné.
  8. canbus_uuid: dans printer.cfg utilise le canbus_uuid: réellement détecté.
  9. Aucun serial: et canbus_uuid: ne sont activés simultanément dans le même [mcu].
Loading...