리눅스를 사용하다 보면 시스템 대기모드 해제 후에도 usb가
절전모드에서 깨어나지 못하는 때가 있는데
tlp 관련 autosuspend 설정을 비활성화 한 후에도 동일한 증상이
발생할 때 사용해 볼 수 있는 방법입니다.
우선 TLP 설정을 변경해 보고 이후에도 변화가 없다면 시도해 보시면 좋습니다.
해당 방법은 터미널 명령어를 통해 usb 디바이스 목록과 각 디바이스에 wakeup 설정을
확인하고 각 디바이스를 특정하여 wakeup 설정을 변경하는 스크립트를 작정해 시스템에
적용해 주는 방식으로 진행됩니다.
1. 우선 시스템에 등록된 usb 디바이스를 확인합니다.
터미널을 열고
grep . /sys/bus/usb/devices/*/product
엔터하면 아래 예시와 같이 목록이 나타납니다.
#### 예시
/sys/bus/usb/devices/2-1.1/product:USB Optical Mouse
/sys/bus/usb/devices/2-1.3.1/product:USB Hub/Keyboard
/sys/bus/usb/devices/2-1.3/product:Generic USB Hub
/sys/bus/usb/devices/2-1/product:USB2.0 Hub
/sys/bus/usb/devices/2-5/product:ATIV VGA Camera
/sys/bus/usb/devices/2-8/product:USB2.0-CRW
/sys/bus/usb/devices/usb1/product:EHCI Host Controller
/sys/bus/usb/devices/usb2/product:xHCI Host Controller
/sys/bus/usb/devices/usb3/product:xHCI Host Controller
목록을 메모장에 복사해고 필요한 디바이스가 어떤 것인지 특정합니다.
특히 devices 이후에 숫자를 확인합니다.
2. usb 디바이스들의 설정을 확인합니다.
터미널을 열고
grep . /sys/bus/usb/devices/*/power/wakeup
엔터하면 아래와 같은 목록이 나옵니다.
#### 예시
/sys/bus/usb/devices/1-1/power/wakeup:disabled
/sys/bus/usb/devices/2-1.1/power/wakeup:disabled
/sys/bus/usb/devices/2-1.3.1/power/wakeup:disabled
/sys/bus/usb/devices/2-1.3/power/wakeup:disabled
/sys/bus/usb/devices/2-1/power/wakeup:disabled
/sys/bus/usb/devices/2-4/power/wakeup:disabled
/sys/bus/usb/devices/2-8/power/wakeup:disabled
/sys/bus/usb/devices/usb1/power/wakeup:disabled
/sys/bus/usb/devices/usb2/power/wakeup:disabled
/sys/bus/usb/devices/usb3/power/wakeup:disabled
목록 끝부분에 enabled가 되어 있다면 문제가 없겠으나
보통은 문제가 발생하는 경우는 예시와 같이 disabled 로 되어 있습니다.
이번에 나온 목록도 메모장에 복사하고 1 의 목록과 숫자를 비교하여
필요한 디바이스와 그 옵션 상황을 특정합니다.
3-1. 방법 1
부팅마다 실행될 rc.local 에 wakeup 활성화하는 명령어를 기입합니다.
sudo nano /etc/rc.local 하여 편집기를 열고 1 과 2에서 확인하여 특정된
필요한 usb를 아래 예시를 참고하여 본인에게 필요한 활성화 옵션 명령어를 입력합니다.
#### 예시 - devices/2-1.3.1/product:USB Hub/Keyboard
devices/2-1.1/product:USB Optical Mouse
인 usb 키보드와 마우스를 활성화 할때
echo enabled > /sys/bus/usb/devices/2-1.1/power/wakeup
echo enabled > /sys/bus/usb/devices/2-1.3.1/power/wakeup
를 편집기를 이용 rc.local 에 입력 후 저장, 재부팅하면 적용됩니다.
3-2. 방법 2 ( 시스템에 따라 방법 1이 잘 적용되지 않을 때 시도 합니다.)
터미널을 열고
sudo su
nano /etc/init.d/usbwakeup
엔터하여 편집창을 열어 주고 방법 1에서와 같이 디바이스에 따른 명령어를 입력해 주고 저장합니다.
#### 예시
echo enabled > /sys/bus/usb/devices/2-1.1/power/wakeup
echo enabled > /sys/bus/usb/devices/2-1.3.1/power/wakeup
혹 데스크탑 사용자나 노트북 사용자지만 전력관리에 큰의미가 없다면
아래 예시 한줄로 디바이스를 특정하지 않고 통으로 usb 모두를 깨울수 있습니다.
(사실 이 방법이 가장 편합니다.)
#### 예시
echo enabled | tee /sys/bus/usb/devices/*/power/wakeup
선택한 명령어를 입력하고 저장이 끝났으면 아래 명령어 순으로 실행권한 부여와
시스템 부팅시 적용될 수 있도록 링크를 걸어 마무리 합니다.
chmod +x /etc/init.d/usbwakeup
sudo ln -s /etc/init.d/usbwakeup /etc/rc3.d/S01usbwakeup
여기까지 진행 되었으면 재부팅하여 터미널을 열고
grep . /sys/bus/usb/devices/*/power/wakeup
엔터하여 잘 적용되어 있는지 확인하고 마무리 합니다. :)
참고링크 : https://askubuntu.com/questions/848698/wake-up-from-suspend-using-wireless-usb-keyboard-or-mouse-for-any-linux-distro