본문으로 건너뛰기

CAN 문제 모음

장치 검색 전 주의사항

  • CAN ID를 검색하기 전에 먼저 SSH 연결을 해야 합니다.
  • 네트워크를 통해 SSH에 로그인하는지 확인해야 하며, 시리얼 포트로 로그인하지 않아야 합니다.
  • UTOC 또는 CAN 브리지 펌웨어가 깔린 메인보드가 제대로 연결되었는지 확인하고, 상위 기기와 연결된 데이터 케이블이 데이터 전송 기능을 가지고 있는지 확인해야 합니다.

장치 존재 여부 확인

  • 이제 정상적으로 상위 기기에 로그인한 상태입니다. lsusb 명령어를 입력하여 장치를 검색할 수 있으며, 다음 중 하나의 상황이 발생할 것입니다:
    • lsusb 명령어를 입력하면 ls 명령어를 찾을 수 없다는 메시지가 나타나면, 아래의 명령어를 입력하여 명령어를 설치할 수 있습니다:
      sudo apt-get install usbutils
    • lsusb 명령어를 입력한 후 아무런 반응도 없으면, 이는 시스템 문제이며 해결할 수 없습니다. 시스템을 변경하거나 제대로 작동하는 시스템을 사용해야 합니다.
    • 아래 이미지에서 정보가 표시됩니다. 이는 참고용입니다. 1d50:606f가 표시되면 됩니다.
  • 1d50:606f는 이번에 사용할 장치입니다. 나머지는 신경 쓸 필요가 없습니다. 시스템 문제로 인해 완전히 표시되지 않을 수도 있습니다.
  • 여러 개의 1d50:606f가 있으면 한 개만 사용하도록 권장합니다. 그렇지 않으면 후속 프로세스에서 문제가 발생할 수 있습니다. 예를 들어, FLY MINI PAD의 경우 보드 내장 UTOC를 사용하고 다른 CAN 브리지 장비는 사용하지 않는 것이 좋습니다.
  • 만약 없다면 데이터 케이블이 제대로 연결되었는지, 펌웨어가 제대로 깔렸는지 확인해야 합니다.
주의사항

1d50:606f가 있을 때만 CAN ID를 검색할 수 있습니다.

오류 메시지로 문제 판단

  • 아래는 일반적인 오류 메시지들입니다:
    • OSError: [Errno 19] No such device
    • can.CanError: Failed to transmit: [Errno 100] Network is down
    • can.CanError: Failed to transmit: [Errno 105] No buffer space available
  • 첫 번째는 상위 기기에서 CAN 장치(CAN 브리지 펌웨어가 깔린 메인보드 또는 UTOC)를 찾지 못함을 의미합니다.
  • 두 번째는 상위 기기가 CAN0를 잘못 설정하거나 구성했음을 의미합니다.
  • 세 번째는 상위 기기의 버퍼가 부족하거나 시스템 문제로 인해 버퍼가 꺼졌음을 의미합니다.
  • 두 번째와 세 번째는 아래의 CAN0 설정을 참조하여 문제를 파악할 수 있습니다.
  • ID를 찾지 못했다면 마지막 부분을 참조하세요.

상위 기기가 CAN을 지원하는지 확인

  • FLY 상위 기기는 이 작업을 수행할 필요가 없습니다.
  • 시스템이 Ubuntu라면 Ubuntu CAN0 설정 문서가 아직 업데이트되지 않았습니다.
  • 시스템이 CAN을 지원하는지 확인하려면 아래 명령어를 입력하세요.
sudo modprobe can && echo "Kernel은 CAN을 지원합니다." || echo "Kernel은 CAN을 지원하지 않습니다."
  • 위 명령어를 실행한 후, Kernel이 CAN을 지원하면 Kernel은 CAN을 지원합니다.라는 메시지가 반환됩니다. 그렇지 않으면 Kernel은 CAN을 지원하지 않습니다.라는 메시지가 반환됩니다.
  • Kernel은 CAN을 지원합니다.라는 메시지가 반환되면 CAN0 설정을 진행할 수 있습니다.

CAN0 설정

  • 이 명령은 기존의 CAN0 설정을 덮어쓰므로 설정이 완료된 후에는 시스템을 재시작해야 합니다.
  • 실제 상황에 따라 아래 중 하나를 선택해야 합니다.

  • 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 속도를 사용하려면 아래 명령어를 입력하세요.
sudo /bin/sh -c "cat > /etc/network/interfaces.d/can0" << EOF
allow-hotplug can0
iface can0 can static
bitrate 500000
up ifconfig \$IFACE txqueuelen 1024
pre-up ip link set can0 type can bitrate 500000
pre-up ip link set can0 txqueuelen 1024
EOF
  • 시스템 재시작
sudo reboot

ID를 찾지 못한 경우 주의사항

  • Klipper가 해당 ID를 구성했다면, 시스템 설정에서 ID를 비활성화하고 재시작하거나 전원을 끈 후 다시 켜거나, 메인보드 리셋 버튼을 누르세요.
  • 상위 기기 CAN 속도와 메인보드, 도구보드 등이 일치하는지 확인하세요.
  • 아래 코드를 사용하여 상위 기기 CAN 속도를 확인할 수 있습니다.
  • 선이 끊어졌는지 확인하세요.
  • 도구보드와 장치(펌웨어가 깔린 메인보드 또는 UTOC) 사이에 120Ω 점선이 설치되어 있는지 확인하세요.
  • 120Ω 점선이 설치되어 있다면, 장치가 완전히 전원을 차단한 상태에서 다이오드 테스트기를 사용하여 CAN H와 CAN L의 저항값이 약 60Ω인지 측정하세요.
  • 선이 끊어졌는지 확인하세요.
ip -details link show can0
  • 아래 그림에서 원으로 표시된 부분은 상위 기기 CAN 속도와 버퍼입니다.
  • 위의 1024는 현재 CAN0 버퍼입니다.
  • 아래의 1000000은 현재 CAN0 속도입니다.
  • UUID를 찾지 못했다면 아래 주의사항을 확인하세요.

    • 메인보드 또는 CAN 도구보드가 제대로 연결되었는지 확인하세요.
    • 올바르게 전력을 공급했는지 확인하세요. 메인보드의 경우 VCC 전원을 연결하는 것을 권장합니다.
    • 상위 기기가 CAN 네트워크를 지원하는지 확인하세요.
    • CAN 저항값이 약 60Ω인지 확인하세요.
    • 펌웨어가 올바르게 컴파일되었는지 확인하세요.

ID 검색

  • 아래 명령어를 입력하여 ID를 검색합니다.
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
  • ID가 표시되고 마지막에 Application:Klipper로 표시되면 이 ID는 바로 사용 가능합니다.
  • ID가 표시되고 마지막에 Application:CANBOOT 또는 Katapult로 표시되면 펌웨어를 업데이트해야만 사용 가능합니다.