이번 주제는 우분투를 활용하면서 블루투스 키보드인식 문제가 발생할때에 대해서 애기해 본다.
증상 : 블루투스 무선 키보드가 입력이 발생하지 않으면 연결이 끈어지고 재연결시까지 3~5초까지 시간이 걸리는 현상
본 현상은 사실 우분투에서만 겪는 현상은 아니고 윈도우즈에서도 절전모드 사용시 비슷한 증상이 발생한다.
별것 아닌 문제 같지만, 실제로 발생시 굉장히 짜증난다. 타자를 많이 쳐야 하는 작업의 경우 이런 증상이 발생하는 경우 실무적으로 사용하는게 거의 불가능하다.
원래 나는 NAS용으로 우분투를 쓰기 때문에 보통은 대게는 원격에서 터미널로 작업하지, 직접 NAS에 키보드를 연결하여 제어할일이 별로 없었지만, 요즘은 NAS보다는 거실에 있는 미디어 PC용으로 사용을 많이 하는 중이라, 이런 블루투스 키보드 응답문제는 굉장히 불편함을 느꼈다.
어쨌든 운영체제들은 이러한 통신프로토콜에 대해서 항시 응답대기 상태로 남겨두면 적든 많든 전기를 소모하기 때문에 필요하면 절전모드를 실시하여 응답대기를 풀고 완전히 down 시켜놓는다.
그런데 키보드와 마우스 같은 입력장치들은 down되고 나면 연결이 끈어지고 입력을 받으면 재연결(페어링)이 될때까지는 통신을 주고받지 못하기 때문에, 논리상으로는 당연한 흐름이지만 사람인 사용자로서는 이러한 프로세스가 체감적으로 느껴지고 매우 불편함을 느낀다.
그래서 노트북의 경우는 배터리를 아끼기 위해서 절전모드가 이것저것 실행되더라도 보통은 키보드나 마우스 블루투스 모듈등은 절전 제어를 하지 않는다.
이 이슈는 Ubuntu 18.04부터 느껴썼었던 같은데, 20.04 버젼인 지금와서도 상황은 비슷하다
해결법 : 해당장치만 절전모드를 중지한다.
절전모드 중지는 이전 버젼 우분투에서는 그놈 데스크탑에서도 GUI로 지원했는지는 모르겠지만, 우분투 20.04에서는 GUI에서 지원하지 않는다.
그래서 CLI인 터미널에서 처리해줘야 하는데 powertop을 설치해 줘야 한다.
문제 해결을 위해 자꾸 뭔 앱을 설치하라는게 불편하긴 하지만, powertop는 리눅스 기본 명령어인 top과 비슷하지만, 전력소모를 측정하고 사용자에게 알려주는 앱이다.
powertop을 통해 어떤 장치들이 절전모드로 구동되는지 파악할 수 있다.
이 앱을 통해 절전모드 설정을 조정할 수 도 있다. CLI인 것만 빼면 완벽한 전원관리도구라고 생각한다.
powertop을 설치한다.
설치후 sudo powertop 명령어를 통해 powertop을 실행해 본다.
top과 비슷한 모습을 보여 주지만, 소모전력을 표기해주고 있다. 대부분 그리 전기 먹는 놈은 없는데, 생각치도 않게 Minecraft Bed Rock서버가 1.78w를 혼자서 먹고 앉아 있다.
이렇게 프로세스 뿐 아니라, CPU코어별 Device별로도 표현해 준다. Tab키를 눌러서 필요한 목록별로 정보를 파악할 수 있다.
Tap키를 눌러서 Tunables 메뉴로 진입한다. 그러면 아래의 화면을 보여줄 것이다.
화면에서 보면 Good이라고 나오는 놈들은 절전관리를 하고 있다는 것이고, Bad은 절전관리를 안하고 있다는 뜻 이다.
현재 문제가 되는 블루투스 키보드 문제는 화면에 나오는 Bluetooth device interface status가 아니고, 바로 선택된 Autosuspend for unkonwn USB device 1-14가 문제인 것이다.
왜인지는 모르겠으나 현재 우분투는 USB Autosuspend가 문제가 있다고 구글 검색하면 많이 나온다. 게다가 나는 USB 장치를 NAS에 붙혀놓은게 전혀 없다.
그래서 저 문구가 왜 unknown USB이고 이게 블루투스 장치랑 무슨 상관인지 전혀 모르겠으나 어쨌거나 이 방법으로 해결됐다는 구글 결과가 많으니 본 포스트를 진행하는 것이다.
결론만 애기하면, Autosuspend for unkonwn USB device 1-14를 엔터키를 눌러 토글하여 Bad으로 만들면 위에서 애기한 증상은 모두 해결된다.
참고로 각자의 기기 마다 USB device의 번호는 다를 수 있다. 내 경우는 1-14번 이었다.
기기를 토글하면, 화면 상단에 아래와 같은 메세지가 뜬다. 이것을 잘 메모해 놓는다.
중요 : Bad status로 되어야 절전모드가 해제된다. 위의 이미지는 Bad으로 변경 후 뜨는 화면이다.
이렇게 하면 당장은 블루투스 키보드와 마우스의 연결성의 문제는 바로 해결되나, 재부팅 한다면 다시 원래 대로 절전기능이 회복된다.
그래서 부팅시마다 절전기능을 해제해 주게끔 서비스로 처리해주자.
아무 파일이나 만들어서 아래와 같이 작성해준다.
위에 코딩에서 아까 Powertop에서 메모한 명령문을 Mouse 변수 입력값과 대체 해준다.
그리고 이 파일을 부팅시마다 실행되게끔 서비스 처리 해준다. 서비명파일 명은 알아서 임의로 처리하면 된다.
서비스 파일 및 경로명에 위에서 생성한 파일의 경로명을 생성해 준다. 나의 경우는 disable-bt-mouse-keyboard-autosuspend.sh 이다.
chmod를 통해 해당 파일을 실행가능한 파일로 변경해 두는 것도 잊지 말자.(그래야 서비스가 먹는다)
모두 완료되었으면, 서비스를 개시하고 등록한다. 그러면 부팅시 마다, 서비스를 통해 해당 장치의 절전기능을 중지할 것 이다.
Ubuntu NAS를 사용한지가 벌써 3년이 되어가는데, 이 문제를 이제야 해결한 셈이다.
확실히 반응성이 좋아져서 사용이 훨씬 쾌적해 졌다. 리눅스 사용자는 불편이 있다면 그냥 참지말고, 적극적인 구글링을 요망…
이상 자작NAS 사용자의 이슈 삽질 2부 마침
안녕하세요
저도 무선 키보드, 무선 숫자패드를 사용하고 있습니다
자동 절전기능 때문에 너무 힘들어서 구글링 하던 중 선생님 글을 발견하고 읽어 보았습니다
하지만 저는 일반인이라 리눅스나 파워탑을 어떻게 하는지 전혀 모릅니다
제가 간단하게 해결할 수 있는 방법이 있을까요? 도움 부탁드립니다!
구글로 ubuntu bluetooth autosuspend 라고 치면 무수한 검색 게시물이 발견 됩니다.
즉, 이 문제는 상당히 널리 알려진 문제 인데 안타깝게도 아직 까지는 일반 사용자의 문제해결에 대한 편의를 제공하는 단계까지 이르지 못했습니다.
보통, 블루투스 디바이스 제조사가 자사 제품의 드라이버를 유니버셜화 시켜 배포하거나 윈도우즈 같은 운영체제에 탑재시켜야 하는데, 리눅스로는 제조사들이 아직 그렇게까지 하고 있질 않습니다.
즉, 요청하신 간단한 해결법이 아직 없습니다.
답 변 주셔서 감사합니다
저도 이참에 컴퓨터 언어를 공부해 봐야 겠습니다 ^^
공부하면 참 편리한 세상이 보일 듯 하네요!
감사합니다!! 덕분에 끊기는 현상 해결했어요!!
다름이 아니라 코드에 오타가 있습니당!
실행 권한 옵션 줄 때 chmod가 아니라 chown 으로 잘못쓰신것 같아요!ㅎㅎ 감사합니다
멋진 지적이십니다. ㅋ 감사합니다. 수정 반영하였습니다.