Aller au contenu principal

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

ErreurCause fréquenteAction
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 système 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 à nouveau l'UUID, vérifier le câblage, 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, le câblage, la résistance de terminaison et le débit du firmware
Duplicate canbus_uuidPlusieurs configurations MCU utilisent le même UUID CANRechercher à nouveau l'UUID, confirmer 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 actuelCommenter la configuration MCU correspondante, puis rechercher et renseigner à nouveau
Can not update MCU 'xxx' config as it is shutdownLe 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 messagesVérifier canstat_mcu, bus_state, l'alimentation, l'émetteur-récepteur et le faisceau
can state BUS-OFF / ERROR-PASSIVELe contrôleur CAN est entré dans un état d'erreurCouper 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 close ou Communication timeout pendant 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 :

  1. Si vous utilisez un adaptateur USB-CAN candlelight, mettez à niveau le firmware vers v2.0 ou supérieur.
  2. 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+.
  3. Si bytes_invalid continue d'augmenter, la cause racine n'est pas résolue ; continuez à vérifier la version du noyau et du firmware.
  4. Remarque : 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 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 :

  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 les systèmes classiques, testez d'abord 128 ; pour les systèmes FLY ou les machines multi-nœuds, utilisez 1024 :
sudo ip link set dev can0 qlen 128
# ou
sudo ip link set dev can0 qlen 1024
  1. 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.

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 :

Couper l'alimentation

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.

  1. Dans klippy.log, trouvez les lignes Stats avant et après USB CANBUS bridge 'mcu' is discarding!, et enregistrez les valeurs de canstat_mcu : bus_state, rx_error, tx_error, tx_retries.
  2. Si bus_state passe de active à off ou passive, privilégiez le diagnostic du bus matériel, ne vous contentez pas d'ajuster la longueur de la file d'attente Linux.
  3. 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Ω.
  4. 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.
  5. 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.
  6. 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.
  7. 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 can0 de 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 :

Couper l'alimentation

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.

  1. 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.
  2. 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.
  3. 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.
  4. Confirmez que chaque canbus_uuid dans [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.
  5. Mesurez la résistance CANH-CANL après avoir coupé l'alimentation ; environ 60Ω indique généralement une résistance de terminaison 120Ω à chaque extrémité ; en cas d'écart significatif, traitez d'abord la résistance de terminaison.
  6. 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 :

Couper l'alimentation

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.

  1. 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.
  2. Vérifiez que les connexions CANH/CANL sont solides et que les connecteurs sont complètement insérés.
  3. 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Ω).
  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 et en évitant le parallélisme.
  5. 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.
  6. Utilisez candump pour surveiller le trafic du bus CAN et observer s'il y a un grand nombre de trames d'erreur.
  7. 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

  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 cohérent avec celui de CAN0 de l'ordinateur hôte.
  3. 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.
  4. Vérifiez que 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 coupé l'alimentation de toute 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, veuillez d'abord flasher le firmware Klipper avant de rechercher.

Règles de la résistance de terminaison

Couper l'alimentation

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ériqueExigence de résistance de terminaisonInstructions
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 UTOCRésistance 120Ω généralement intégréeAucune activation supplémentaire nécessaire

Ordre de dépannage 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 cache est 1024.
  3. 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

  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é 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.

Note de version

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.

Loading...

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 :

  1. can0 est reconnu par le système.
  2. bitrate est cohérent avec le 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. Le canbus_uuid: utilisé dans printer.cfg est celui réellement trouvé.
  9. Dans le même [mcu], serial: et canbus_uuid: ne sont pas activés simultanément.
Loading...