왼손잡이해방연대 아지트

사용자 확인중...

일지 96호의 개정판

본문 보기

우분투가 절전모드를 한 번에 못 들어가는 문제

컴퓨터에 연결된 외부 기기들이 절전에서 깨우는 명령을 제멋대로 보내서 일어나는 문제이다. 해결 방법은 꽤나 복잡하다:

  1. 깨우기 명령을 보내는 포트를 알아낸다.
    $ cat /proc/acpi/wakeup
    ...
    XHC0	  S4	*enabled   pci:0000:09:00.3
    ...
    
  2. 각 포트가 어떤 기기에 연결되어있는지 알아본다. 아마 Phys 값을 들여다보면 되는 것 같다.
    $ cat /proc/bus/input/devices
    ...
    I: Bus=... Vendor=... Product=... Version=...
    N: Name="Logitech USB Receiver"
    P: Phys=usb-0000:09:00.3-3/input0
    S: Sysfs=...
    U: Uniq=
    H: Handlers=mouse0 event2 
    B: PROP=0
    B: EV=...
    B: KEY=...
    B: REL=...
    B: MSC=...
    ...
    
  3. 의심스러운 녀석의 wakeup 기능을 꺼준다. 내 경우 무선 키보드 수신기가 연결된 단자가 의심스러웠다.
    $ cat XHC0 | sudo tee /proc/acpi/wakeup
    
  4. 절전 모드로 들어가본다.
  5. 절전이 잘 되면 아마 된 것이다. 그렇지 않을 경우 3번 명령어를 다시 입력하면 wakeup 기능을 다시 켜준다. 다른 단자에도 하나씩 테스트해서 문제가 되는 녀석을 찾아보자.
  6. 이제 이 설정을 재부팅해도 유지하게 해야 한다. 기기의 ID를 찾아보자.
    $ lsusb
    ...
    Bus 005 Device 003: ID 046d:c547 Logitech, Inc. USB Receiver
    ...
    
  7. 이 기기는 이제 wakeup을 빼앗길 것이다.
    $ sudo vim /etc/udev/rules.d/logitech.rules
    ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c547", ATTR{power/wakeup}="disabled"
    
  8. 이제 재부팅해서 suspend가 잘 되는지 확인해보자. 안 되면 아래와 같이 로그를 찾아보길 바란다. 보통은 오타다.
    $ journalctl -b0 | grep -F '/etc/udev/rules.d'
    

참고