본문 바로가기
IOT스마트홈 만들기 (Home Assistant)/(armbian OS) RK3328에 HA 설치

리눅스에서 USB가 절전모드로 전환되는 이슈 해결방법

by ProjectDH 2021. 9. 5.

안녕하세요.

 

오늘은 리눅스에서 USB가 자동으로 절전모드로 넘어가는 이슈에 대하여 설명하고

해결방법에 대해서 이야기해보려고 합니다.

 

저의 상황은 다음과 같습니다.

 

NanoPI NEO3 (SBC)에 debian 기반 os인 armbian을 설치해놓았고

CC2538 지그비 스틱 연결하여서 IOT 장치들을 연결시켜 놓았었는데

잘 제어되다가, 어느 순간 갑자기 지그비 장치들이 제어가 안 되었습니다.

 

(NEO3의 USB 포트에 USB 허브를 연결하여서 지그비 스틱을 연결했습니다.)

=> 허브 때문에 절전 문제가 발생하는 것 같습니다.

 

제가 보통 일주일 이내에 리눅스를 한 번씩 재부팅할 일이 생겨서

재부팅을 하곤 하는데

이번엔 15일 동안 한 번도 재부팅하지 않고 부팅되어 있는 상태였습니다. 

 

그래서 우선 zigbee2mqtt 로그를 확인하였더니

adapter disconnected 가 기록되어 있었습니다.

생각보다 adapter disconnected 오류가 많이 발생했었네요.

 

아무튼 이 오류는 리눅스에서 뭔가 usb에 이상이 생긴 거라고 인지를 하였고

바로 usb 장치 기록을 확인해보았습니다.

 

dmesg 입력하면 USB 장치 연결, 해제, 오류 기록 등을 확인하실 수 있습니다.

 

 

아마 가장 먼저 발생한 오류가 clear tt 1 (9032) error -71 인 것 같습니다.

그 후 ch341_read_int_callback - usb_submit_urb_failed: -19 라는 오류가 발생하였습니다.

또한 USB 연결이 여러 번 해제되는 모습을 보실 수 있습니다.

 

clear tt 1 error -71를 검색하니 보통 USB 포트가 절전으로 넘어가서 발생하는

오류라고 합니다.

 

자동 절전모드로 넘어가는 기능을 끄게 되면

아마 앞으로는 지그비 스틱이 먹통 될 일은 없을 것이라고 생각합니다.

 

이제 USB 자동 절전모드 해제 방법을 설명해드리겠습니다.

 

armbian OS에서 설정 방법

 

아래의 명령어를 입력합니다.

 

vi /boot/armbianEnv.txt

 

i키를 입력하여 수정 모드로 진입하시고, 제일 아래에 한 문장을 추가해야 합니다.

추가할 문장: extraargs=usbcore.autosuspend=-1

 

verbosity=1
bootlogo=false
overlay_prefix=rockchip
fdtfile=rockchip/rk3328-nanopi-neo3-rev02.dtb
rootdev=UUID=*
rootfstype=ext4
console=serial
usbstoragequirks=*

extraargs=usbcore.autosuspend=-1

 

수정 후 ESC => :wq 엔터로 종료

 

reboot를 입력해서 서버 재시작을 합니다.

그리고 다시 부팅되고 나서

cat /sys/module/usbcore/parameters/autosuspend

이 명령어를 입력해서 -1이 출력되면 USB 자동 절전 모드가 해제된 것입니다.

 

어제 설정 후에 서버 재부팅을 한 지 24시간이 지났지만 지금까지 오류는 발생하지 않았습니다.

 

라즈베리파이에서 설정 방법

 

아래의 명령어를 입력합니다.

 

sudo vi /boot/cmdline.txt

 

i키를 입력하여 수정 모드로 진입하시고, 제일 아래에 한 문장을 추가해야 합니다.

추가할 문장: usbcore.autosuspend=-1

 

serial-consoles usbcore.autosuspend=-1

 

수정 후 ESC => :wq 엔터로 종료

 

reboot를 입력해서 서버 재시작을 합니다.

그리고 다시 부팅되고 나서

cat /sys/module/usbcore/parameters/autosuspend

이 명령어를 입력해서 -1이 출력되면 USB 자동 절전 모드가 해제된 것입니다.

 

우분투, 데비안 OS에서 설정 방법

 

/etc/default/grub 이 파일에서 DEFAULT="quiet splash"의 따옴표 안에

usbcore.autosuspend=-1 문장을 추가합니다.

 

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.autosuspend=-1"

 

이렇게 수정하고 sudo update-grub를 입력해서 변경 내용을 저장하시고

 

reboot를 입력해서 서버 재시작을 합니다.

그리고 다시 부팅되고 나서

cat /sys/module/usbcore/parameters/autosuspend

이 명령어를 입력해서 -1이 출력되면 USB 자동 절전 모드가 해제된 것입니다.

 

NEO3 SBC를 사용하면서 지그비가 먹통이 되는 이슈 말고는 다른 문제점은 없네요. 

다만 armbian에서 측정되는 온도가 80~90도를 왔다 갔다 하네요. 이 기기가 발열은 있습니다.

 

 

지금까지 USB 자동 절전 모드 해제 방법에 대한 글이었습니다.

이제 지그비 IOT 서버가 먹통 되는 일이 없기를 기대합니다..

감사합니다.

댓글