이번 주제는 우분투를 활용하면서 블루투스 키보드인식 문제가 발생할때에 대해서 애기해 본다.

증상 : 블루투스 무선 키보드가 입력이 발생하지 않으면 연결이 끈어지고 재연결시까지 3~5초까지 시간이 걸리는 현상

본 현상은 사실 우분투에서만 겪는 현상은 아니고 윈도우즈에서도 절전모드 사용시 비슷한 증상이 발생한다.

별것 아닌 문제 같지만, 실제로 발생시 굉장히 짜증난다. 타자를 많이 쳐야 하는 작업의 경우 이런 증상이 발생하는 경우 실무적으로 사용하는게 거의 불가능하다.

원래 나는 NAS용으로 우분투를 쓰기 때문에 보통은 대게는 원격에서 터미널로 작업하지, 직접 NAS에 키보드를 연결하여 제어할일이 별로 없었지만, 요즘은 NAS보다는 거실에 있는 미디어 PC용으로 사용을 많이 하는 중이라, 이런 블루투스 키보드 응답문제는 굉장히 불편함을 느꼈다.

어쨌든 운영체제들은 이러한 통신프로토콜에 대해서 항시 응답대기 상태로 남겨두면 적든 많든 전기를 소모하기 때문에 필요하면 절전모드를 실시하여 응답대기를 풀고 완전히 down 시켜놓는다.

그런데 키보드와 마우스 같은 입력장치들은 down되고 나면 연결이 끈어지고 입력을 받으면 재연결(페어링)이 될때까지는 통신을 주고받지 못하기 때문에, 논리상으로는 당연한 흐름이지만 사람인 사용자로서는 이러한 프로세스가 체감적으로 느껴지고 매우 불편함을 느낀다.

그래서 노트북의 경우는 배터리를 아끼기 위해서 절전모드가 이것저것 실행되더라도 보통은 키보드나 마우스 블루투스 모듈등은 절전 제어를 하지 않는다.

이 이슈는 Ubuntu 18.04부터 느껴썼었던 같은데, 20.04 버젼인 지금와서도 상황은 비슷하다

해결법 : 해당장치만 절전모드를 중지한다.

절전모드 중지는 이전 버젼 우분투에서는 그놈 데스크탑에서도 GUI로 지원했는지는 모르겠지만, 우분투 20.04에서는 GUI에서 지원하지 않는다.

그래서 CLI인 터미널에서 처리해줘야 하는데 powertop을 설치해 줘야 한다.

문제 해결을 위해 자꾸 뭔 앱을 설치하라는게 불편하긴 하지만, powertop는 리눅스 기본 명령어인 top과 비슷하지만, 전력소모를 측정하고 사용자에게 알려주는 앱이다.

powertop을 통해 어떤 장치들이 절전모드로 구동되는지 파악할 수 있다.

이 앱을 통해 절전모드 설정을 조정할 수 도 있다. CLI인 것만 빼면 완벽한 전원관리도구라고 생각한다.

powertop을 설치한다.

Copy to Clipboard

설치후 sudo powertop 명령어를 통해 powertop을 실행해 본다.

powertop 실행모습

top과 비슷한 모습을 보여 주지만, 소모전력을 표기해주고 있다. 대부분 그리 전기 먹는 놈은 없는데, 생각치도 않게 Minecraft Bed Rock서버가 1.78w를 혼자서 먹고 앉아 있다.

이렇게 프로세스 뿐 아니라, CPU코어별 Device별로도 표현해 준다. Tab키를 눌러서 필요한 목록별로 정보를 파악할 수 있다.

Tap키를 눌러서 Tunables 메뉴로 진입한다. 그러면 아래의 화면을 보여줄 것이다.

Powertop , 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으로 변경 후 뜨는 화면이다.

이렇게 하면 당장은 블루투스 키보드와 마우스의 연결성의 문제는 바로 해결되나, 재부팅 한다면 다시 원래 대로 절전기능이 회복된다.

그래서 부팅시마다 절전기능을 해제해 주게끔 서비스로 처리해주자.

아무 파일이나 만들어서 아래와 같이 작성해준다.

Copy to Clipboard

위에 코딩에서 아까 Powertop에서 메모한 명령문을 Mouse 변수 입력값과 대체 해준다.

그리고 이 파일을 부팅시마다 실행되게끔 서비스 처리 해준다. 서비명파일 명은 알아서 임의로 처리하면 된다.

Copy to Clipboard

서비스 파일 및 경로명에 위에서 생성한 파일의 경로명을 생성해 준다. 나의 경우는 disable-bt-mouse-keyboard-autosuspend.sh 이다.

chmod를 통해 해당 파일을 실행가능한 파일로 변경해 두는 것도 잊지 말자.(그래야 서비스가 먹는다)

Copy to Clipboard
Copy to Clipboard

모두 완료되었으면, 서비스를 개시하고 등록한다. 그러면 부팅시 마다, 서비스를 통해 해당 장치의 절전기능을 중지할 것 이다.

Copy to Clipboard

Ubuntu NAS를 사용한지가 벌써 3년이 되어가는데, 이 문제를 이제야 해결한 셈이다.

확실히 반응성이 좋아져서 사용이 훨씬 쾌적해 졌다. 리눅스 사용자는 불편이 있다면 그냥 참지말고, 적극적인 구글링을 요망…

이상 자작NAS 사용자의 이슈 삽질 2부 마침