조희대의 개인사이트
Anything personal, something useful

라즈베리파이 3를 오디세이의 비디오입력으로 연결하기

지금 패밀리카로 타고 다니는 오디세이에는 RES(Rear Entertainment System)가 설치되어 있다. 그런데 동영상은 DVD밖에 지원하지 않기 때문에 매번 DVD를 굽는 것이 여간 번거롭지 않고 DVD 개수도 점점 늘어난다는 단점이 있다. 그래서 라즈베리파이를 사서 RES에 연결하는 프로젝트를 진행하기로 했다. 가장 저렴한 시스템을 구축하기 위해서는 5불짜리 라즈베리파이 제로를 쓰는 것이 좋겠지만 파이 제로는 미니 HDMI 출력만 지원한다. 따라서 미니 HDMI => HDMI => RCA 변환을 위한 어뎁터들이 필요하다. 미니 HDMI => HDMI는 이미 있고 특별한 신호변환이 필요없으니 괜찮다. HDMI => RCA 변환케이블의 경우 아마존에서 많은 제품들을 검색할 수 있었지만, 대부분이 신호변환을 해 주지 않는 단순한 연결케이블이기 때문에 사용할 수가 없다. RadioShack에서 별도전력을 필요로 하지 않는 변환케이블을 찾을 수 있었으나 일단 가격이 48불에다가 가게 매니져에 따르면 이 변환케이블은 출력쪽 기기의 전압이 충분할 때나 변환이 이루어진다고 한다. 자신이 직접 라즈베리파이로 테스트해 봤는데 출력전압이 충분하지 못 해서 제대로 작동하지 않았다고 한다.

반면 35불짜리 라즈베리파이 3는 3단자 RCA 출력을 지원하는 3.5mm 단자를 가지고 있다. 거기에 3.5mm => RCA 연결케이블만 추가하면 필요한 하드웨어는 모두 준비가 되는 셈이다. 이 케이블을 인터넷으로 찾아 봤다. 라즈베리파이 지원이 가장 확실해 보이는 이 제품부터 로컬에서 바로 구입할 수 있는 이 것이 케이블이 있었다. 그런데 처음의 제품은 배송비만 9불 포함 총비용이 14불 정도가 된다. 반면 로컬에서 구입하면 많이 싸다. 그래서 둘 중 더 저렴한 케이블을 사서 시도해 봤다. 3단자 케이블의 연결은 비디오, 왼쪽/오른쪽 오디오가 제대로 되어 있었다. 하지만 심한 잡음과 함께 비디오도 너무 많이 일그러져 보였다. 그래서 조금 더 비싼 두번째 케이블을 사서 테스트해 보니 단자의 연결은 달랐지만 접지선이 똑같아서 오른쪽 오디오와 비디오 연결만 바꾸니 비디오와 오디오 모두 깨끗하게 잘 전달되었다. 첫번째 케이블의 경우 스마트폰과 연결했을 때 제대로 되는 걸로 보아 라즈베리파이의 출력이 낮고 이 낮은 출력을 전달할 만큼의 품질은 아니었던 걸로 추정된다. 아무튼 비디오와 오디오의 연결은 이렇게 6불대로 해결되었다. 오디세이의 3열 좌석 왼쪽 끝에는 RES로 연결되는 RCA 3단자와 AC 파워가 있다. 이 AC 파워에 집구석에 굴러 다니던 아이파드용 충전기와 역시 굴러 다니던 USB 충전케이블로 전원을 해결하고 라즈베리파이를 RES에 연결했다.

20170226_180854.jpg
그림 1: 케이스 안에 설치한 라즈베리파이

총비용의 측면에서 파이 제로는 5불(본체)+48불(될 지 안 될 지 모를 케이블)+5불(싸구려 USB WiFi 동글)=58불, 파이 3는 35불(본체)+6불(케이블)=41불로 파이 3 쪽이 더 저렴하다. 물론 그에 따른 계산능력의 향상, 메모리의 증가, 표준 USB포트 4개, 블루투스는 아주 좋은 덤이다. 여기에 본체 보호를 위해 9불짜리 케이스를 추가하면 하드웨어의 준비는 모두 끝이 난다. 총 하드웨어 비용은 50불하고 세금이 되겠다.

20170226_180839.jpg
그림 2: 완성된 라즈베리파이를 3열 좌석 왼쪽 컵홀더에 설치

이제는 이렇게 RES에 연결된 라즈베리파이를 어떻게 컨트롤할지 생각해 봐야 한다. 가장 쉬운 그러나 추가비용이 발생하는 방법이 블루투스 키보드와 마우스가 되겠다. 하지만 처음 목표가 스마트폰을 핫스팟으로 이용해서 RES에서 인터넷 동영상을 감상하는 것이었으니 일단 스마트폰을 이용해서 라즈베리파이를 컨트롤하기로 결정했다. 라즈베리파이의 기본 OS인 라즈비안에는 이미 RealVNC의 VNC서버가 설치되어 있다. 이 서버를 활성화하고 스마트폰의 핫스팟으로 연결하면 스마트폰에서 VNC를 이용해서 라즈베리파이에 접근이 가능하다. 단, VNC서버의 인증방법을 RealVNC가 아닌 클라이언트도 접근할 수 있게 VNC인증으로 바꿔 줘야 표준 VNC 클라이언트로 접근이 가능하다.

20170226_180950.jpg
그림 3: ThinkPad X201에서 라즈베리파이에 접속

기본 브라우저로 유투브에 접속해서 동영상을 시작해 봤다. 너무 느렸다. 이 문제에 대해 검색을 해 보니 하드웨어 가속을 지원하지 않는 브라우저라서 그런 문제가 생긴 것 같았다. 그래서 하드웨어 가속을 지원하는 omxplayer를 기반으로 하는 Kweb Suite을 설치해서 kweb으로 유투브를 재상하니 놀랍게도 아주 쾌적한 감상이 가능했다. 신기하게도 이 프로그램을 설치한 다음 기본 브라우저로 유투브를 감상하니 느리던 문제가 해결되어 있었다. 아마도 하드웨어 가속 플러그인이 kweb과 같이 설치되지 않았나 짐작한다.

이제 문제는 한글이다. 패키지 매니져로 korea를 검색하니 내가 즐겨 쓰는 한글 입력기 나비백묵글꼴이 있었다. 이 두 패키지를 설치하고 다음과 같이 ~/.xinitrc와 ~/.xsession 파일을 생성해서 나비의 설정을 마쳤다.

# ~/.xinitrc 파일 생성
$ cat <<EOT > ~/.xinitrc
export XMODIFIERS="@im=nabi"
export GTK_IM_MODULE="xim"
export QT_IM_MODULE="xim"

nabi&

exec x-session-manager
EOT

# 파일권한을 실행가능하기 바꾸기
$ chmod a+x ~/.xinitrc

# ~/.xsession 링크 생성
$ ln -s ~/.xinitrc ~/.xsession

# 라즈베리파이 재부팅
$ sudo reboot

이제 스마트폰의 VNC 클라이언트를 이용해서 라즈베리파이에 접근 및 한글 입출력이 가능해졌다. 그런데 문제가 발생했다. omxplayer의 GUI 버전인 omxplayergui가 더 이상 작동하지 않는다. 실행한 후에 응답이 없다. 나비 때문일까? ~/.xinitrc에 추가한 환경변수를 하나씩 없애 봤다. 범인은 XMODIFIERS였다. 하지만 이 환경변수가 없으면 나비가 작동하지 않는다. 그래서 /usr/local/bin/omxplayergui를 /usr/local/bin/omxplayergui.orig로 이름을 바꾼 다음 XMODIFIERS를 없앤 후 원래 프로그램을 호출하는 스크립트를 만들었다.

# root로 로그인
$ sudo su

# wrapper script 생성
$ echo "XMODIFIER= /usr/local/bin/omxplayergui.orig" > /usr/local/bin/omxplayergui

# wrapper script를 실행가능하게 파일허가 변경
$ chmod a+x /usr/local/bin/omxplayergui

이제 omxplayergui는 XMODIFIER 환경변수 없이 호출된다. 파일매니져에서 omxplayergui에 연결된 파일을 재생하니 잘 작동했다. 그런데 kweb에서 유투브를 재생하니 오류가 나면서 kweb이 죽어 버렸다. 기본브라우져에서는 재생에 문제가 없으니 이 kweb 문제는 더 이상 파고들지 않기로 했다. 어차피 재생되는 영상의 크기면에서 기본브라우져가 더 크게 보이니 아쉬울 건 별로 없다.

20170226_180812.jpg
그림 4: 스마트폰이 쏴 주는 핫스팟에 접속해서 검정고무신을 시청하기 전
이 칸을 비워 두세요.