본문으로 건너뛰기

CAN 네트워크 구성 및 ID 검색

이 문서는 CAN 네트워크 구성, CAN0 상태 확인, CAN UUID 검색 및 일반적인 CAN 오류 해결을 위한 것입니다.

적용 시나리오:

  • UTOC 등 USB to CAN 모듈을 사용하여 CAN 툴 보드에 연결.
  • USB 브리지 CAN 펌웨어가 플래시된 메인보드를 사용하여 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를 사용하는 경우 USB를 통해 UTOC를 호스트 컴퓨터에 연결합니다.
  4. USB 브리지 CAN 메인보드를 사용하는 경우 해당 메인보드에 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

결과에 따라 구성 방식을 선택합니다.

판단 결과설명권장 선택
networkingactive로 표시되고 /etc/network/interfaces.d/가 존재함Debian, Armbian 등 시스템에서 흔함ifupdown 사용
systemd-networkdactive로 표시되고 networkctl list에 네트워크 장치가 보임네트워크가 systemd-networkd에 의해 관리됨systemd-networkd 사용
NetworkManageractive로 표시되고 nmcli device status에 네트워크 장치가 보임네트워크가 NetworkManager에 의해 관리됨아래 두 방식을 직접 혼용하지 말고, 현재 시스템의 NetworkManager 방안에 따라 우선 처리
여러 서비스가 active로 표시됨시스템에 혼합 네트워크 관리가 있을 수 있음어떤 서비스가 실제로 can0을 관리하는지 확인한 후 해당 방식을 선택

현재 시스템이 어떤 방식을 사용하는지 판단할 수 없는 경우, 시스템 이미지 또는 호스트 컴퓨터 제조업체 문서를 참조하는 것이 좋습니다. FLY 호스트 컴퓨터 및 FlyOS-FAST 시스템은 일반적으로 CAN0을 수동으로 구성할 필요가 없습니다.

CAN0 구성 작성

네트워크 관리 방식을 확인한 후, 실제 시스템에 따라 해당 구성을 선택합니다.

ifupdown

/etc/network/interfaces.d/를 사용하여 네트워크를 관리하는 Debian, Armbian 등 시스템에 적합합니다. 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 속도가 필요한 경우, 위 명령어의 1000000500000으로 변경한 후 실행하십시오.

구성 완료 후 장치를 재부팅합니다.

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를 검색할 수 없음: 먼저 아래 "ID를 검색할 수 없는 경우 확인 순서"에 따라 CAN0, 선 순서, 종단 저항, 전원 공급 및 펌웨어 통신 방식을 확인하십시오.
Loading...

CAN ID 입력 방법

  1. 프린터 웹 인터페이스를 열고 왼쪽 구성 항목에서 printer.cfg를 찾습니다.
  2. 검색된 UUID를 해당 [mcu] 구성 섹션의 canbus_uuid: 뒤에 입력합니다.
  3. CAN 연결을 사용하는 경우, 동일한 [mcu]serial:canbus_uuid:를 동시에 유지하지 마십시오.
  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 availableCAN 버퍼 부족 또는 시스템 네트워크 대기열 이상버퍼가 1024인지 확인, 필요한 경우 CAN0 재구성
mcu 'xxx': Invalid CAN uuidCAN 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를 검색할 수 있거나 printer.cfg에 해당 장치의 canbus_uuid:가 입력되어 있는지 확인합니다.
  3. Klipper 서비스를 중지합니다.
sudo systemctl stop klipper

업데이트 실행

아래 명령어의 <CAN_UUID>를 실제 장치 ID로 바꾸십시오.

버전 설명

시스템 버전에 따라 해당 명령어를 선택하십시오.

  • FlyOS-FAST 1.3.8 이상 또는 2026년 4월 9일 이후 Klipper를 업데이트한 시스템:
python3 ~/klipper/lib/katapult/flashtool.py -u <CAN_UUID>
  • 구버전 시스템, 즉 FlyOS-FAST 1.3.8 미만, 또는 2026년 4월 9일 이전에 Klipper를 업데이트하지 않은 시스템:
python3 ~/klipper/lib/canboot/flash_can.py -u <CAN_UUID>
주의

-u 뒤에는 반드시 공백이 하나 있어야 하며, 그 다음에 CAN UUID를 입력하십시오.

CAN Flash Success 메시지가 나타나면 일반적으로 플래시가 성공한 것입니다.

Loading...

업데이트 후 작업

업데이트가 완료되면 Klipper를 다시 시작합니다.

sudo systemctl start klipper

업데이트 후 연결이 되지 않으면 CAN ID를 다시 검색하고 printer.cfgcanbus_uuid:가 여전히 올바른지 확인하십시오.

최종 점검 목록

CAN ID를 검색할 수 없거나 Klipper가 CAN 장치에 연결할 수 없는 경우, 다음 순서로 빠르게 확인하십시오.

  1. can0이 시스템에 인식됩니다.
  2. bitrate가 펌웨어 컴파일 시 설정된 CAN 속도와 일치합니다.
  3. qlen 또는 txqueuelen1024입니다.
  4. CAN-H와 CAN-L이 반대로 연결되지 않았습니다.
  5. CAN 버스 양쪽 끝 종단 저항이 올바릅니다.
  6. 툴 보드 또는 메인보드에 정상적으로 전원이 공급됩니다.
  7. 펌웨어 통신 방식이 올바르게 선택되었습니다.
  8. printer.cfg에서 실제 검색된 canbus_uuid:를 사용합니다.
  9. 동일한 [mcu]serial:canbus_uuid:가 동시에 활성화되어 있지 않습니다.
Loading...