저는 아치 리눅스에서 arduino ide를 사용하고 있으며 USB를 통해 arduino uno를 연결하고 있습니다. ide 메뉴에서 올바른 포트와 보드를 선택했는지 확인했습니다.
내가 실행하면 ls -l /dev/ttyACM*
다음을 얻습니다.
crw-rw---- 1 root uucp 166, 0 14. dub 12.44 /dev/ttyACM0
crw-rw-rw- 1 root uucp 166, 1 14. dub 12.54 /dev/ttyACM1
하지만 업로드를 클릭하면 다음 오류가 발생합니다.
Sketch uses 440 bytes (1%) of program storage space. Maximum is 32256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.
avrdude: Version 6.3, compiled on Jul 7 2020 at 19:38:43
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "//etc/avrdude.conf"
User configuration file is "/home/john/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/ttyACM1
Using Programmer : arduino
Overriding Baud Rate : 115200
avrdude: ser_open(): can't open device "/dev/ttyACM1": Input/output error
avrdude done. Thank you.
the selected serial port
does not exist or your board is not connected
최신 Linux 커널과 LTS에는 버그가 여전히 존재합니다.
내 장치는 Lenovo thinkpad X390: Linux 5.11.14-arch1-1입니다.
Arduino를 USB에 연결하고 실행하면 sudo dmesg
다음 메시지가 나타납니다.
[ 1605.378324] usb 1-4: new full-speed USB device number 14 using xhci_hcd
[ 1605.520509] usb 1-4: New USB device found, idVendor=2341, idProduct=0043, bcdDevice= 0.01
[ 1605.520517] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=220
[ 1605.520521] usb 1-4: Manufacturer: Arduino (www.arduino.cc)
[ 1605.520523] usb 1-4: SerialNumber: 7583434383935150E152
[ 1605.523881] cdc_acm 1-4:1.0: ttyACM1: USB ACM device
[ 1630.618749] usb 1-9: reset full-speed USB device number 10 using xhci_hcd
[ 1630.792727] audit: type=1130 audit(1618567069.016:82): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=fprintd comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[ 1632.601215] audit: type=1100 audit(1618567070.822:83): pid=29714 uid=1000 auid=1000 ses=1 msg='op=PAM:authentication grantors=? acct="john" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/1 res=failed'
[ 1635.720577] audit: type=1100 audit(1618567073.942:84): pid=29714 uid=1000 auid=1000 ses=1 msg='op=PAM:authentication grantors=pam_faillock,pam_permit,pam_faillock acct="john" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/1 res=success'
[ 1635.721507] audit: type=1101 audit(1618567073.942:85): pid=29714 uid=1000 auid=1000 ses=1 msg='op=PAM:accounting grantors=pam_unix,pam_permit,pam_time acct="john" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/1 res=success'
[ 1635.722751] audit: type=1110 audit(1618567073.946:86): pid=29714 uid=1000 auid=1000 ses=1 msg='op=PAM:setcred grantors=pam_faillock,pam_permit,pam_faillock acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/1 res=success'
[ 1635.727018] audit: type=1105 audit(1618567073.949:87): pid=29714 uid=1000 auid=1000 ses=1 msg='op=PAM:session_open grantors=pam_limits,pam_unix,pam_permit acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/1 res=success'
이 문제를 어떻게 해결할 수 있나요?
당신의 도움에 감사드립니다
첨부된:더 많은 정보가 필요하시면 아래에 댓글을 남겨주시면 최대한 빨리 추가하겠습니다.
답변1
솔루션 소스여기이것은 나에게 효과적입니다.
나는 좀 더 테스트를 했고 또 다른 효과적인 솔루션을 찾았습니다.
tlp
설치하고 활성화 하셨나요 ?분명히 USB 자동 일시 중단이라는 것이 있으며 tlp는 기본적으로 이를 활성화합니다(아마도 현명할 것입니다). 내가 한 일은 파일을 편집
/etc/tlp.conf
하고 변경한 것#USB_AUTOSUSPEND=1
뿐입니다USB_AUTOSUSPEND=0
. 재부팅 후 최신 커널 5.11.16에서도 arduino에 업로드할 수 있었습니다.udev 규칙을 통해 자동 일시 중단을 비활성화하려고 하는데 비활성화할 수 없습니다.
tlp
아마도 확실하지는 않지만 구성이 udev 규칙보다 우선한다고 생각합니다 .
답변2
나는 같은 문제가 있었고 나에게 도움이 된 유일한 해결책은 grub 구성에서 USB 자동 일시 중단을 비활성화하는 것이었습니다.
비활성화한 후에는 Arduino 보드를 정상적으로 사용할 수 있습니다.
그래서 나는 이렇게 했습니다:
sudo vim /etc/default/grub
- 이 줄을 검색하세요
GRUB_CMDLINE_LINUX_DEFAULT=""
(인용문이 다른 내용으로 채워졌을 수 있음). usbcore.autosuspend=-1
따옴표 안에 어딘가를 포함하도록 변경하십시오.- 달리기
sudo update-grub
- 그런 다음 다시 시작하세요
이것은 많은 인터넷 검색 후에 실제로 Arduino를 사용하려고 할 때마다 다시 연결된다는 문제가 있다는 것을 깨달았기 때문에 도움이 되었습니다. 따라서 minicom을 사용하여 직렬 출력에 액세스하면 Arduino는 즉시 연결이 끊어졌다가 다시 연결됩니다. 나는 watch -n 1 ' sudo dmesg | tail -n 20'
minicom을 실행할 때 무슨 일이 일어나고 있는지 확인하기 위해 사용할 때만 그것을 발견했습니다.
이 동작은 grub 내에서 자동 일시 중단을 비활성화한 후에 변경되어야 합니다.
답변3
최신 Manjaro 업데이트로 인해 어떻게든 발생한 것 같습니다.CDC_acm파괴할 모듈.. 이 문제를 해결하기 위해 다음 명령을 실행했습니다.
sudo modprobe -r cdc_acm
sudo modprobe cdc_acm
sudo chmod 666 /dev/ttyACM0