Перейти к основному содержанию

Конфигурация CAN сети и поиск ID

Эта статья предназначена для обработки конфигурации CAN сети, проверки статуса CAN0, поиска CAN UUID и устранения распространенных ошибок CAN.

Сценарии применения:

  • Подключение инструментальной платы CAN через USB-to-CAN модуль, такой как UTOC.
  • Подключение инструментальной платы CAN через материнскую плату с прошивкой USB-CAN моста.
  • Материнская плата или инструментальная плата уже имеют прошивку CAN, необходимо найти CAN UUID.
  • В Klipper возникают ошибки, связанные с CAN0, CAN UUID или CAN сетью.

Примечания перед использованием

  1. Подключите UTOC или материнскую плату с прошивкой CAN моста к хост-компьютеру через USB.
  2. Войдите в бэкенд хост-компьютера по сети, не используйте последовательный порт.
  3. В системе FlyOS-FAST CAN0 предварительно настроен на скорость 1M и буфер 1024, обычно ручная настройка CAN0 не требуется.
  4. Скорость CAN в прошивке инструментальной платы и материнской платы должна соответствовать скорости CAN0 хост-компьютера.
  5. На обоих концах CAN шины требуются терминальные резисторы. Проблемы с порядком проводов, резисторами и питанием могут привести к невозможности поиска ID.

Подключение CAN и терминальные резисторы

Подключение и терминальные резисторы являются наиболее распространенным источником проблем в CAN сети. При проверке сначала отключите питание, затем проверьте порядок проводов и резисторы.

Проверка подключения

  1. Убедитесь, что CAN устройство правильно запитан.
  2. Убедитесь, что CAN-H подключен к CAN-H, а CAN-L к CAN-L.
  3. При использовании UTOC подключите UTOC к хост-компьютеру через USB.
  4. При использовании материнской платы с USB-CAN мостом убедитесь, что на нее прошита соответствующая прошивка.
  5. Проверьте CAN провода, разъемы и места обжима, убедитесь в отсутствии обрывов, ослаблений или плохого контакта.

Проверка терминальных резисторов

На каждом конце CAN шины требуется один терминальный резистор 120Ω. После полного отключения питания измерьте сопротивление между CAN-H и CAN-L мультиметром.

Измеренное значениеЗаключение
Примерно 60ΩНормально, терминальные резисторы на обоих концах правильно подключены
Примерно 120ΩОбычно терминальный резистор только на одном конце, или обрыв линии
Примерно 40ΩВозможно наличие лишних терминальных резисторов, проверьте промежуточные узлы
Примерно 140ΩВозможна переполюсовка CAN-H / CAN-L или неисправность линии
Внимание

Измерение терминальных резисторов должно производиться только при полностью отключенном питании. Измерение под напряжением может привести к неточным показаниям и повреждению оборудования.

Проверка поддержки CAN хост-компьютером

Хост-компьютеры FLY могут пропустить этот шаг.

Выполните следующую команду для проверки поддержки CAN ядром:

sudo modprobe can && echo "Ядро поддерживает CAN" || echo "Ядро не поддерживает CAN"

Если отображается Ядро поддерживает CAN, можно продолжать настройку. Если отображается неподдерживаемая версия, рекомендуется сначала заменить образ системы с поддержкой SocketCAN.

Проверка распознавания CAN устройства

Перед настройкой или поиском CAN ID рекомендуется убедиться, что хост-компьютер распознал UTOC или USB-CAN мост.

Выполните:

lsusb

Оценка результатов:

  • Виден 1d50:606f: Устройство распознано системой, можно продолжать настройку или поиск CAN ID.
  • Сообщение lsusb не найдено: Сначала установите usbutils.
  • Отсутствует 1d50:606f: Проверьте USB-кабель, UTOC, прошивку USB-CAN моста и питание.
  • Отображается несколько 1d50:606f: Рекомендуется оставить только одно CAN-мостовое устройство, чтобы избежать одновременного подключения нескольких источников CAN0.

Установка usbutils:

sudo apt-get update
sudo apt-get install usbutils
Внимание

Только после того, как система распознает CAN-мостовое устройство, последующая настройка CAN0 и поиск CAN ID имеют смысл.

Настройка CAN0

Внимание

Эта операция перезапишет существующую конфигурацию CAN0, после завершения потребуется перезагрузка системы. Система FlyOS-FAST не требует выполнения этого шага.

Определение способа управления сетью

Разные системы используют разные способы управления сетью. Перед настройкой CAN0 следует определить, какая система управляет сетью в данный момент. Не используйте несколько способов для настройки одного и того же can0, иначе конфигурация может не примениться, потеряться после перезагрузки или CAN0 будет работать некорректно.

Выполните следующую команду для проверки состояния распространенных сетевых служб:

systemctl is-active NetworkManager
systemctl is-active systemd-networkd
systemctl is-active networking

Также можно проверить конфигурационные файлы и статус устройств:

ls /etc/network/interfaces /etc/network/interfaces.d/ 2>/dev/null
networkctl list 2>/dev/null
nmcli device status 2>/dev/null

Выберите способ настройки в зависимости от результатов:

Результат проверкиОписаниеРекомендуемый выбор
networking отображает active, и существует /etc/network/interfaces.d/Распространено в Debian, Armbian и т.д.Используйте ifupdown
systemd-networkd отображает active, networkctl list показывает сетевые устройстваСеть управляется systemd-networkdИспользуйте systemd-networkd
NetworkManager отображает active, nmcli device status показывает сетевые устройстваСеть управляется NetworkManagerНе смешивайте напрямую с двумя следующими способами, отдавайте приоритет решению NetworkManager текущей системы
Несколько служб отображают activeВ системе может быть смешанное управление сетьюСначала определите, какая служба фактически управляет can0, затем выберите соответствующий способ

Если невозможно определить, какой способ использует текущая система, рекомендуется обратиться к документации образа системы или производителя хост-компьютера. Хост-компьютеры FLY и система FlyOS-FAST обычно не требуют ручной настройки CAN0.

Запись конфигурации CAN0

После определения способа управления сетью выберите соответствующую конфигурацию в зависимости от фактической системы.

ifupdown

Подходит для систем Debian, Armbian и т.д., использующих /etc/network/interfaces.d/ для управления сетью. Конфигурация скорости 1M:

sudo /bin/sh -c "cat > /etc/network/interfaces.d/can0" << EOF
allow-hotplug can0
iface can0 can static
bitrate 1000000
up ifconfig \$IFACE txqueuelen 1024
pre-up ip link set can0 type can bitrate 1000000
pre-up ip link set can0 txqueuelen 1024
EOF

Для скорости 500K замените 1000000 в команде выше на 500000 перед выполнением.

После завершения настройки перезагрузите устройство:

sudo reboot

Подтверждение статуса CAN0

После перезагрузки выполните:

ip -details link show can0

Обратите внимание на следующее:

  • bitrate: Скорость CAN связи, например 1000000 означает 1M.
  • qlen или txqueuelen: Длина очереди отправки, рекомендуется 1024.
Loading...

Если отображается сообщение о том, что can0 не найден, сначала выполните:

ip link
lsusb
dmesg | grep -i can

Распространенные причины:

  • UTOC не распознан системой, или USB-кабель поддерживает только питание.
  • На материнскую плату не прошита прошивка USB-CAN моста.
  • Файл конфигурации CAN0 не вступил в силу, или система не перезагружена.
  • Образ системы не поддерживает SocketCAN.

Поиск CAN ID

Перед поиском убедитесь, что устройство находится в состоянии, доступном для поиска:

  1. Если UUID устройства уже записан в printer.cfg и Klipper успешно подключен, команда поиска может снова не отобразить это устройство.
  2. Перед поиском можно временно закомментировать соответствующий раздел [mcu], сохранить и перезапустить Klipper.
  3. Отключите питание устройства примерно на 10 секунд, затем снова включите его и выполните команду поиска.

Обычный хост-компьютер выполняет:

~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0

Хост-компьютер FLY выполняет:

python3 ~/klipper/scripts/canbus_query.py can0

Оценка результатов:

  • Application: Klipper: Этот ID можно напрямую использовать, записав в printer.cfg.
  • Application: CANBOOT или Application: Katapult: Устройство все еще находится в загрузчике, сначала необходимо прошить прошивку Klipper.
  • Невозможно найти ни одного ID: Сначала проверьте CAN0, порядок проводов, терминальные резисторы, питание и способ связи прошивки согласно порядку устранения неполадок ниже.
Loading...

Способ заполнения CAN ID

  1. Откройте веб-интерфейс принтера, найдите printer.cfg в конфигурации слева.
  2. Запишите найденный UUID после canbus_uuid: в соответствующем разделе [mcu].
  3. При использовании CAN-подключения не оставляйте одновременно serial: и canbus_uuid: в одном [mcu].
  4. Сохраните и перезапустите Klipper.

Пример заполнения для CAN прошивки:

[mcu]
canbus_uuid: xxxxxxxxxxxx

Для USB прошивки используйте serial:, для CAN прошивки используйте canbus_uuid:. При переходе с USB прошивки на CAN прошивку необходимо удалить или закомментировать исходный serial:.

Внимание

ID в документации являются примерами. ID каждой материнской платы или инструментальной платы уникальны, необходимо ввести фактически найденный ID.

Распространенные сообщения об ошибках

ОшибкаРаспространенная причинаСпособ устранения
OSError: [Errno 19] No such deviceХост-компьютер не может найти CAN устройствоПроверьте UTOC, USB-кабель, прошивку CAN моста и питание
can.CanError: Failed to transmit: [Errno 100] Network is downCAN0 не запущен или настроен неправильноПеренастройте CAN0 и перезагрузите
can.CanError: Failed to transmit: [Errno 105] No buffer space availableНедостаточно CAN буфера или проблемы с сетевой очередью системыУбедитесь, что буфер равен 1024, при необходимости перенастройте CAN0
mcu 'xxx': Invalid CAN uuidНеправильно указан CAN UUID или устройство не в сетиПовторно найдите UUID, проверьте порядок проводов, питание и терминальные резисторы
Serial connection closedKlipper нашел конфигурацию, но соединение прерваноПроверьте качество CAN сети, порядок проводов, терминальные резисторы и скорость прошивки

Больше ошибок Klipper можно найти в Распространенные сообщения об ошибках.

Порядок устранения неполадок, если ID не найден

  1. Выполните ip -details link show can0, чтобы убедиться, что CAN0 существует и находится в рабочем состоянии.
  2. Убедитесь, что скорость CAN в прошивке инструментальной платы и материнской платы соответствует скорости CAN0 хост-компьютера.
  3. Если ID устройства уже записан в printer.cfg, временно закомментируйте соответствующую конфигурацию, выключите устройство примерно на 10 секунд, затем снова включите его для поиска.
  4. Проверьте, не перепутаны ли CAN-H и CAN-L, нет ли обрывов или плохого контакта.
  5. Убедитесь, что на обоих концах CAN сети есть по одному терминальному резистору 120Ω, после полного отключения питания измерьте сопротивление между CAN-H и CAN-L, оно должно быть примерно 60Ω.
  6. Убедитесь, что инструментальная плата или материнская плата нормально запитаны.
  7. Убедитесь, что при компиляции прошивки был выбран правильный способ связи.
  8. Если результат поиска показывает Application: CANBOOT или Application: Katapult, сначала прошейте прошивку Klipper, затем повторите поиск.

Правила терминальных резисторов

Тип устройстваТребование к терминальному резисторуИнструкция по эксплуатации
CAN инструментальная платаТребуется терминальный резистор 120ΩВключить через перемычку на плате или DIP-переключатель
CAN интерфейс материнской платыТребуется терминальный резистор 120ΩВключить через перемычку на плате или DIP-переключатель
Преобразователи типа UTOCОбычно имеют встроенный резистор 120ΩДополнительно включать терминальный резистор не нужно

Быстрый порядок устранения неполадок

  1. Сначала проверьте устройство: выполните lsusb, убедитесь, что виден 1d50:606f.
  2. Затем проверьте конфигурацию: выполните ip -details link show can0, убедитесь, что CAN0 существует, скорость правильная, буфер равен 1024.
  3. Наконец, проверьте аппаратное обеспечение: полностью отключите питание, измерьте CAN-H и CAN-L, убедитесь, что сопротивление составляет примерно 60Ω.

Если после всех проверок аномалии сохраняются, попробуйте заменить USB-кабель, CAN-кабель, UTOC или CAN-мостовое устройство для перекрестного тестирования.

Обновление прошивки CAN устройства

Этот раздел предназначен для случаев, когда устройство уже подключено к CAN сети, и необходимо обновить прошивку материнской платы или инструментальной платы через CAN. Названия прошивок и способы компиляции для разных продуктов различаются, сначала скомпилируйте новую прошивку в соответствии с инструкцией для соответствующего продукта.

Подготовка

  1. Скомпилируйте новую прошивку в соответствии с инструкцией для продукта.
  2. Убедитесь, что можно найти CAN UUID устройства, или что canbus_uuid: этого устройства уже указан в printer.cfg.
  3. Остановите службу Klipper:
sudo systemctl stop klipper

Выполнение обновления

Замените <CAN_UUID> в команде ниже на фактический ID устройства.

Информация о версии

Выберите соответствующую команду в зависимости от версии системы.

  • FlyOS-FAST 1.3.8 и выше или системы, в которых Klipper обновлялся после 9 апреля 2026 года:
python3 ~/klipper/lib/katapult/flashtool.py -u <CAN_UUID>
  • Старые версии системы, т.е. FlyOS-FAST до 1.3.8, или системы, в которых Klipper не обновлялся до 9 апреля 2026 года:
python3 ~/klipper/lib/canboot/flash_can.py -u <CAN_UUID>
Внимание

После -u должен быть пробел, а затем вводится CAN UUID.

Появление сообщения CAN Flash Success обычно означает успешную прошивку.

Loading...

Действия после обновления

После завершения обновления перезапустите Klipper:

sudo systemctl start klipper

Если после обновления подключиться не удается, выполните повторный поиск CAN ID и убедитесь, что canbus_uuid: в printer.cfg все еще корректен.

Финальный контрольный список

Если CAN ID не найден или Klipper не может подключиться к CAN устройству, быстро проверьте по следующему порядку:

  1. can0 распознается системой.
  2. bitrate соответствует скорости CAN, установленной при компиляции прошивки.
  3. qlen или txqueuelen равен 1024.
  4. CAN-H и CAN-L не перепутаны.
  5. Терминальные резисторы на обоих концах CAN шины правильные.
  6. Питание инструментальной платы или материнской платы в норме.
  7. Способ связи прошивки выбран правильно.
  8. В printer.cfg используется фактически найденный canbus_uuid:.
  9. В одном [mcu] не включены одновременно serial: и canbus_uuid:.
Loading...