라즈베리파이의 스크린세이버와 소비전력

라즈베리파이에 터치 LCD를 붙여 이것저것 시험해보고 있다. 그러던 중 스크린세이버와 관련한 몇가지 중요한 정보들이 있어 정리해 본다.

백라이트가 다시 켜지지 않는 문제, 스크린세이버의 시간 설정, 스크린세이버를 아예 끄는 방법, 그리고 마지막으로 스크린세이버가 얼마나 소비전력을 아껴주는지 알아보자.

이 모든 것을 알아보게 된 이유는 백라이트 관련 버그 때문이다. 내용인즉슨...

터치를 하지 않고 일정시간이 지나면 화면이 꺼진다. 스크린세이버 설정이 되어 있는 것이다. 이때는 다시 터치하면 화면이 살아난다. 그런데 화면이 꺼진 상태에서 10여분이 지난 뒤 터치하면 화면이 돌아오지 않는다.

백라이트가 다시 켜지지 않는 문제 


뒷쪽 LED가 깜박이는 걸 보니 죽은 것 같지는 않다. 실제로 ssh로 연결해보니 접속도 되고 살아있다. 단지 LCD의 백라이트만 켜지지 않는 것이다.

처음에는 선 연결이 누락되었기 때문으로 의심했다. 7" LCD 설치에 관한 다른 자료들을 보면 라즈베리파이의 확장핀에서 LCD 컨트롤보드로 4가닥의 선을 연결하는 것을 볼 수 있다. 이 중 둘은 5V와 GND로 전원에 관계된 것이고, 나머지 둘은 I2C통신과 관계된 SDA, SCL 핀이다. 그런데 SmartiPi 케이스를 사용하면 이 4가닥 연결을 하지 않는다. 전원은 USB로 공급하니 없어도 되지만 SDA, SCL핀은 빠지면 안되는 거 아닐까? 라는 생각을 했다.


그런데 더 알아보니 그 SDA, SCL 선은 연결하지 않아도 되는 거였다. 이 두 선을 연결해야 하는 모델은 아주 오래된 A, B 모델 뿐이다. 그 이후의 A+, B+, 2, 3 등 버전은 플랫 케이블을 통해 I2C 통신을 하기 때문에 따로 선 연결을 할 필요가 없다.

그렇다면 무슨 문제일까? 혹시나 하고 syslog를 봤더니 다음과 같은 에러가 눈에 들어왔다.

12:44:19 raspberrypi kernel: [ 4803.822399] rpi-backlight rpi_backlight: Backlight change failed

에러 메시지에 따르면 일정기간 입력이 없어서 LCD의 백라이트가 꺼졌다가, 이벤트 때문에 다시 켤려고 했는데 에러가 났다는 얘기다. 위 문구를 가지고 검색을 해 본 결과 이 내용이 라즈베리파이 커널의 이슈로 등록되어 있었다. 이 이슈에 따르면 2017년 3월 버전의 패키지로 업데이트를 하면 문제가 해결된다고 한다.

백라이트 문제가 있는 커널의 버전을 uname -a 로 보면 2016.11.23 버전이다.

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.4.34-v7+ #930 SMP Wed Nov 23 15:20:41 GMT 2016 armv7l GNU/Linux

다음 명령으로 패키지를 최신 버전으로 올려보았다.

$ sudo apt-get update
$ sudo apt-get dist-upgrade

그런데 두시간은 걸리는 것 같다. 업그레이드하지 말고 그냥 새 최신버전을 SD에 굽는게 더 빠를 듯 하다. 어쨌든 업그레이드하고 리부팅후 버전을 확인하니 다음과 같다.

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.4.50-v7+ #970 SMP Mon Feb 20 19:18:29 GMT 2017 armv7l GNU/Linux

버전을 업그레이드하고 나니, 이제 백라이트가 잘 돌아온다. 퍼펙트!


스크린세이버 사용하지 않기 


나는 라즈베리파이와 터치 LCD를 조그만 키오스크(kiosk)로 사용하려 한다. 그래서 스크린세이버는 작동하지 않는 것이 좋다. 화면이 꺼져 있으면 사람들이 동작하지 않는 것으로 생각하기 때문이다.

스크린세이버를 동작하지 않도록 하는 것은 간단하다. 윈도우 매니저 설정파일은 lightdm.conf를 sudo로 오픈한다.

$ sudo vi /etc/lightdm/lightdm.conf

그리고 SeatDefaults 섹션에 다음 명령을 추가하면 된다.

[SeatDefaults]
xserver-command=X -s 0 -dpms

이 명령은 X서버를 띄울 때 스크린세이버의 타임아웃을 0으로 (-s 0) 하고, DPMS(Display Power Management Service)를 끄는 것이다. 이렇게 저장하고 reboot 하면 스크린세이버가 동작하지 않는다.


응용하여 -s 10 과 같이 인자를 주면 스크린세이버 타임아웃을 10분으로 주는 것이다.


스크린세이버가 소비전력에 주는 영향 


스크린세이버는 노는 시간에 화면을 꺼서 소비전력을 줄이고자 하는 것이다. 그러면 소비전력이 얼마나 먹을까? 가지고 있는 USB 계측기로 측정을 해보았다.

먼저 라즈베리파이는 idle 상태이고, LCD는 켜져있는 상태라면 아래와 같이 0.8A 정도의 전류를 소모한다. 대략 4.3W 정도 된다.


idle 상태로 10여분 둔 뒤 스크린세이버가 동작하여 화면이 꺼진 상태일 때 측정해보면 대략 0.4A를 소모한다. 대략 2.2W 정도 된다. 이 정도면 매우 적은 전력으로 대기상태를 유지할 수 있다.


유튜브에서 720p 동영상을 재생할 때의 소비전력도 측정해 보았다. 대략 1.2A 정도 소모하고, 대략 6.5W 정도 사용한다.


라즈베리파이의 소비전력 대비 효용성은 거의 깡패 수준인 듯 하다.

참고로 LCD 화면 오른쪽 상단에 노란색 번개(lightning bolt) 아이콘이 표시되는 경우가 있다. 이 아이콘은 전압이 낮다는 경고이다. 보통 USB 파워케이블이 너무 얇으면 발생한다. 좀 더 두꺼운 것으로 교체하면 해결된다. 비슷하게 온도계 표시가 나올때도 있는데, 내부 온도가 너무 높다는 뜻이다. 이때는 히트싱크를 설치한다든지 대책을 세워야 한다.


댓글 없음:

댓글 쓰기

인기글