Dépannage des erreurs CAN
Ce document traite des erreurs courantes du réseau CAN, de la recherche des anomalies de communication et de la procédure de dépannage lorsque l'ID CAN est introuvable.
Cas d'application :
- Apparition d'erreurs liées à CAN0, UUID CAN ou au réseau CAN dans Klipper.
- Déconnexion intermittente ou introuvabilité d'un périphérique CAN.
- Nécessité de diagnostiquer les problèmes
bytes_invalid,USB CANBUS bridge,BUS-OFF, Timer too close, etc.
Si vous devez configurer CAN0, rechercher un ID CAN ou comprendre 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 | Action |
|---|---|---|
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 système 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 à nouveau l'UUID, vérifier le câblage, 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, le câblage, la résistance de terminaison et le débit du firmware |
Duplicate canbus_uuid | Plusieurs configurations MCU utilisent le même UUID CAN | Rechercher à nouveau l'UUID, confirmer 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 | Commenter la configuration MCU correspondante, puis rechercher et renseigner à nouveau |
Can not update MCU 'xxx' config as it is shutdown | Le MCU CAN est déjà entré en shutdown, la mise à jour ultérieure de la configuration a échoué | Remonter dans klippy.log pour trouver la première cause racine de déconnexion ou de shutdown |
USB CANBUS bridge 'mcu' is discarding! | Le matériel CAN du MCU pont USB-CAN a déjà ignoré des messages | Vérifier canstat_mcu, bus_state, l'alimentation, l'émetteur-récepteur et le faisceau |
can state BUS-OFF / ERROR-PASSIVE | Le contrôleur CAN est entré dans un état d'erreur | Couper l'alimentation et vérifier le bus physique, la résistance de terminaison, le câblage et le nombre de nœuds |
Pour plus d'erreurs Klipper, veuillez consulter Indications d'erreurs courantes.
Dépannage des erreurs de communication CAN
:::attention Les interférences électromagnétiques sont une source courante
Une grande partie des anomalies de communication sur le bus CAN est due aux interférences électromagnétiques (EMI). Les câbles des moteurs pas à pas, des chauffages et du lit chauffant à l'intérieur d'une imprimante 3D génèrent un fort champ électromagnétique lors du fonctionnement à courant élevé. Si les câbles de communication CAN (CANH/CANL) sont acheminés parallèlement et à proximité de ces câbles de forte puissance, les signaux d'interférence se couplent sur le bus CAN, entraînant :
- Délais de communication, déconnexions intermittentes du MCU
- Déconnexion aléatoire des périphériques CAN, impossibilité de scanner avec
canbus_query.py - Déclenchement de
Timer too closeouCommunication timeoutpendant le homing - Shutdown soudain pendant l'impression, sans erreur matérielle évidente dans les logs
Lors de la recherche d'interférences, vérifiez en priorité la disposition du câblage 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). Il s'agit d'un problème grave pouvant entraîner une instabilité et des erreurs aléatoires à n'importe quelle phase de l'impression.
Causes connues :
- Noyau Linux de version inférieure à v6.6.0, avec un bogue de réordonnancement du pilote CAN gs_usb.
- Adaptateur USB-CAN utilisant le firmware candlelight, de version inférieure à v2.0.
- Firmware du nœud en mode pont USB-to-CAN Klipper de version inférieure à v0.12.0.
Solutions :
- Si vous utilisez un adaptateur USB-CAN candlelight, mettez à niveau le firmware vers v2.0 ou supérieur.
- Si vous utilisez le mode pont USB-to-CAN Klipper, assurez-vous que le nœud de pont a flashé un firmware Klipper v0.12.0+.
- Si
bytes_invalidcontinue d'augmenter, la cause racine n'est pas résolue ; continuez à vérifier la version 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 la résistance de terminaison ; elle ne peut être corrigée 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 de 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 faible pour les besoins de communication à faible latence et haute fréquence de Klipper. Les exemples officiels de Klipper utilisent souvent txqueuelen 128 ; FlyOS-FAST prédéfinit 1024, offrant une plus grande marge dans les scénarios à nombreux nœuds ou à charge élevée.
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 les systèmes classiques, testez d'abord
128; pour les systèmes FLY ou les machines multi-nœuds, utilisez1024:
sudo ip link set dev can0 qlen 128
# ou
sudo ip link set dev can0 qlen 1024
- 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.
USB CANBUS bridge is discarding / bus_state=off
Messages d'erreur : USB CANBUS bridge 'mcu' is discarding!, canstat_mcu: bus_state=off, can state BUS-OFF, ERROR-PASSIVE, suivis de Timeout with MCU 'xxx' ou Serial connection closed.
Cause de l'erreur : Le matériel CAN du MCU pont USB-CAN a cessé d'envoyer ou de recevoir normalement des messages. Ce n'est généralement pas un simple problème de txqueuelen insuffisant ; il est plus souvent dû à un mauvais contact du faisceau CAN, une position incorrecte de la résistance de terminaison, une anomalie de l'émetteur-récepteur ou d'un nœud, des fluctuations d'alimentation de la carte outil, un bus trop long ou trop de nœuds réduisant la marge de signal.
Méthode de diagnostic :
Avant de vérifier CANH/CANL, de rebrancher la carte outil, d'ajuster la résistance de terminaison ou de mesurer la résistance CANH-CANL, éteignez complètement l'imprimante et débranchez l'alimentation. N'ajoutez ni ne retirez de nœuds CAN et ne débranchez pas les faisceaux de la carte outil sous tension.
- Dans
klippy.log, trouvez les lignesStatsavant et aprèsUSB CANBUS bridge 'mcu' is discarding!, et enregistrez les valeurs decanstat_mcu:bus_state,rx_error,tx_error,tx_retries. - Si
bus_statepasse deactiveàoffoupassive, privilégiez le diagnostic du bus matériel, ne vous contentez pas d'ajuster la longueur de la file d'attente Linux. - Après avoir coupé l'alimentation, confirmez qu'il y a exactement deux résistances de terminaison sur le bus CAN, situées aux deux extrémités physiques ; la mesure de la résistance CANH-CANL doit généralement être proche de
60Ω. - Testez en réduisant un par un le nombre de nœuds CAN : ne conservez d'abord que la carte mère et une carte outil, puis ajoutez progressivement des nœuds pour identifier si une carte outil spécifique, un faisceau spécifique ou une dérivation spécifique déclenche l'anomalie lorsqu'elle est connectée.
- Vérifiez l'alimentation de la carte outil et l'état de sertissage des connecteurs ; si une carte outil se réinitialise, le côté pont peut d'abord présenter
discarding, puis d'autres MCU sont signalés en timeout. - Pour les machines à têtes d'outillage multiples ou à longs faisceaux, testez en réduisant temporairement le débit CAN, ou répartissez les têtes d'outillage sur deux adaptateurs USB-CAN pour une validation croisée.
- Si le problème se reproduit après la mise à jour de Klipper et de tous les firmwares des nœuds CAN, remplacez d'abord les câbles CAN prêts à l'emploi, l'adaptateur USB-CAN ou le module émetteur-récepteur de la carte outil pour des tests croisés.
Seule une partie des UUID des nœuds CAN multiples est trouvée
Message d'erreur : canbus_query.py ne trouve que les UUID de certaines cartes outil, ou un ou deux nœuds sur le même bus CAN fonctionnent normalement, mais lorsque l'on ajoute un troisième nœud ou plus, tout devient introuvable, avec des timeouts de connexion ou BUS-OFF.
Causes fréquentes :
- La nouvelle carte outil n'est pas en mode Katapult / Klipper CAN, ou le débit CAN du firmware est différent de celui de
can0de l'ordinateur hôte. - CANH/CANL d'un nœud inversé, mauvais sertissage, émetteur-récepteur endommagé, entraînant tout le bus après connexion.
- La résistance de terminaison n'est pas aux deux extrémités physiques du bus, ou une résistance de terminaison supplémentaire a été activée par erreur sur une carte outil, une carte de distribution ou une carte d'adaptation.
- Les faisceaux des têtes d'outillage multiples forment une boucle trop longue, une dérivation en étoile ou une discontinuité d'impédance, la marge de signal devient insuffisante avec l'augmentation du nombre de nœuds.
- Des cartes outil de lots différents utilisent différents bootloaders, firmwares Katapult ou Klipper, avec des états de recherche incohérents.
Méthode de diagnostic :
Avant d'ajouter ou de retirer des nœuds CAN, d'ajuster la résistance de terminaison, de ressertir des faisceaux ou de mesurer la résistance CANH-CANL, éteignez complètement l'imprimante et débranchez l'alimentation.
- Ne conservez que l'interface CAN de l'ordinateur hôte et une carte outil cible, confirmez que le nœud unique peut être trouvé avec son UUID.
- Remplacez un par un les câbles courts, les ports et les cartes outil pour déterminer s'il s'agit d'un problème spécifique à un nœud ou si le problème ne se déclenche qu'après l'augmentation du nombre de nœuds.
- Vérifiez le bootloader, le mode de communication du firmware Klipper et le débit CAN de chaque carte outil pour garantir la cohérence avec
can0. - Confirmez que chaque
canbus_uuiddans[mcu xxx]est unique ; si le périphérique a déjà été écrit dans la configuration, vous pouvez commenter temporairement la configuration MCU correspondante et redémarrer Klipper avant la recherche. - Mesurez la résistance CANH-CANL après avoir coupé l'alimentation ; environ
60Ωindique généralement une résistance de terminaison120Ωà chaque extrémité ; en cas d'écart significatif, traitez d'abord la résistance de terminaison. - Si deux nœuds quelconques sont stables mais que trois ou plus sont instables, vérifiez en priorité la topologie du bus, la longueur des câbles, la position des terminaisons et la documentation de la carte de distribution ; si nécessaire, divisez en deux bus CAN.
Un nœud du bus CAN ne répond pas
Message d'erreur : Le périphérique CAN se déconnecte soudainement, canbus_query.py ne le trouve pas.
Causes fréquentes :
- 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 connecteurs desserrés.
- Câble CAN non torsadé et blindé, ou acheminé parallèlement à des câbles de forte 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 diagnostic des interférences :
Les anomalies de communication CAN dues aux interférences électromagnétiques se manifestent souvent comme "intermittentes" et "aléatoires" – parfois tout fonctionne, parfois une déconnexion soudaine, et le redémarrage après coupure d'alimentation résout le problème. Lors du diagnostic, concentrez-vous sur :
- Disposition du câblage : Les câbles de communication CAN sont-ils acheminés côte à côte avec les câbles moteur, les câbles de chauffage et les câbles du lit chauffant dans la chaîne porte-câbles ? Les signaux de commande des moteurs pas à pas modulés en PWM haute vitesse et le bruit de commutation des radiateurs sont les sources d'interférence les plus puissantes.
- Mise à la terre du blindage : Lorsque vous utilisez un câble blindé, le blindage est-il mis à la terre à une seule extrémité (uniquement du côté de l'ordinateur hôte) ? La mise à la terre aux deux extrémités crée une boucle de terre, ce qui introduit 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 et activée via un cavalier sur la carte, un interrupteur DIP ou une interface de terminaison prête à l'emploi ?
- Spécification du câble CAN : Utilisez-vous un câble à paires torsadées (pas plus de quelques centimètres de torsion) ? Les câbles parallèles (non torsadés) ont une capacité de suppression du bruit en mode commun quasi inexistante.
- Intégrité de la mise à la terre : Le châssis de la machine et l'alimentation 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 diagnostic :
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 de CANH/CANL, réacheminement des câbles, ajustement du blindage, activation/désactivation de la résistance de terminaison, mesure de la résistance CANH-CANL.
- Confirmez qu'il y a exactement deux résistances de terminaison de 120Ω sur le bus CAN, en privilégiant les cavaliers sur carte, les interrupteurs DIP ou les interfaces de terminaison prêtes à l'emploi.
- Vérifiez que les connexions CANH/CANL sont solides et que les connecteurs sont complètement insérés.
- Coupez d'abord l'alimentation avant d'opérer. 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 et en évitant le parallélisme.
- Confirmez la mise à la terre du blindage : Le câble blindé doit être mis à la terre uniquement du côté de l'ordinateur hôte, l'extrémité de la carte outil doit être flottante et non connectée ; ne démontez pas l'alimentation et ne modifiez pas le fil de terre secteur vous-même.
- Utilisez
candumppour surveiller le trafic du bus CAN et observer s'il y a un grand nombre de trames d'erreur. - Testez en réduisant temporairement la vitesse/décélération d'impression ; si le problème disparaît, cela indique une corrélation positive entre les interférences et l'intensité de la commande du moteur.
Ordre de dépannage si l'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 cohérent avec celui de CAN0 de l'ordinateur hôte.
- Si l'ID du périphérique a été écrit dans
printer.cfg, commentez d'abord temporairement la configuration correspondante, puis éteignez et débranchez l'alimentation pendant environ 10 secondes avant de remettre sous tension et de rechercher. - Vérifiez que 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 coupé l'alimentation de toute 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, veuillez d'abord flasher le firmware Klipper avant de rechercher.
Règles de la résistance de terminaison
Avant d'ajuster le cavalier de la résistance de terminaison, l'interrupteur DIP 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Ω | 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 | Résistance 120Ω généralement intégrée | Aucune activation supplémentaire nécessaire |
Ordre de dépannage 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 cache est1024. - Vérifiez enfin le matériel : Après avoir complètement coupé l'alimentation, mesurez la résistance entre CAN-H et CAN-L ; confirmez qu'elle est d'environ
60Ω.
Si l'anomalie persiste après toutes ces vérifications, essayez de remplacer le câble USB, le câble CAN, l'UTOC ou le périphérique de pont CAN pour des tests croisés.
Référence pour la mise à jour du firmware des périphériques CAN
Cette section est destinée aux cas 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 varient selon les produits ; veuillez d'abord compiler le firmware selon le 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é 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 en fonction de la version de votre système.
- FlyOS-FAST version 1.3.8 et supérieure ou systèmes ayant mis à jour Klipper après le 9 avril 2026 :
python3 ~/klipper/lib/katapult/flashtool.py -u <CAN_UUID>
- Anciennes versions du système, c'est-à-dire FlyOS-FAST avant 1.3.8, ou systèmes n'ayant pas mis à jour Klipper avant le 9 avril 2026 :
python3 ~/klipper/lib/canboot/flash_can.py -u <CAN_UUID>
:::attention Attention
Il doit y avoir un espace après -u, puis l'UUID CAN.
:::
L'apparition de CAN Flash Success indique généralement une gravure réussie.
Opérations après la mise à jour
Redémarrez Klipper après la mise à jour :
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 l'ID CAN est introuvable ou si Klipper ne peut pas se connecter au périphérique CAN, vérifiez rapidement dans l'ordre suivant :
can0est reconnu par le système.bitrateest cohérent avec le 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é.
- Le
canbus_uuid:utilisé dansprinter.cfgest celui réellement trouvé. - Dans le même
[mcu],serial:etcanbus_uuid:ne sont pas activés simultanément.