Using flat‎ > ‎

안드로이드폰을 USB연결 모니터로

posted Apr 8, 2018, 2:49 AM by Sundew Shin   [ updated Apr 16, 2018, 1:27 AM ]
안드로이드폰을 USB로 연결해서 SBC의 모니터/입력장치로 사용하는 방법을 알아봅니다.
일반적인 VNC로 SBC의 X윈도를 원격 접속하는 방법과 다를 바 없는데, 대신 네트워크 설정없이, 즉 네트워크 환경에 의존 없이, 유선으로 두 기기만 연결함으로써 보안, 저속화면전송, 네트워크 단절 같은 문제를 해결합니다.

준비물

- RPi, 팅커보드 및 기타 arm기반 SBC
- 안드로이드폰 5.0+ (Lollipop 이 상)
- USB 케이블

방법-1: 직접(쉘) 설치

[SBC에서]
1. VNC 서버를 설치합니다.
sudo apt-get update && apt-get install tightvncserver -y

2. VNC 뷰어에서 입력할 연결암호를 설정합니다.
vncpasswd

3. adb를 준비합니다.
ADB(Android Debug Bridge)를 데비안 기반 리눅스에 설치하는 표준방법은 'apt-get install android-tools-adb'입니다만, 2018년 3월 현재, 이렇게 해서 설치되는 버전은 라즈비안의 경우 1.0.31로 여기서 우리가 하려는 목적을 이룰 수 없습니다. arm 버전의 ('adb reverse' 명령을 지원하는) adb 1.0.32버전 이상이 필요한데 최신 Android-SDK를 직접 받아 컴파일해도 좋고 아니면 준비된 binary 파일을 복사해 옵니다.
git clone https://github.com/pipcc/adb-arm.git
sudo cp adb-arm/adb-arm /usr/bin/adb


이제 명령줄에서 'adb version'이라고 쳤을 때 다음과 같은 문자열이 프린트되면 정상 준비된 것입니다:
Android Debug Bridge version 1.0.32

4. 폰을 USB 케이블로 연결합니다.

5. 처음으로 폰과의 연결을 시도 합니다.
adb wait-for-device

[안드로이드폰에서]
6. 그러면 바로 폰 화면에 'USB 디버깅을 허용하시겠습니까? (Allow USB debugging?)'하는 대화창이 뜨고 아래 채크박스('Always allow..')를 눌러준 다음 확인을 누릅니다.
(그전에 개발자 옵션(Developer options)의 'USB debugging' 기능이 켜져 있어야 하는데 인터넷에 많은 설명이 있음: 그중 하나)


[SBC에서]
7. 다시 RPi로 돌아와 'adb devices'라고 쳤을 때 다음과 같은 메시지가 출력되면 SBC<->폰 연결이 완성된 것입니다.
List of devices attached
ZY224MXZMN device

8. 이제 VNC 서버를 실행할 차례입니다. 다음과 같이 폰 화면에서 사용할 X의 해상도와 색상 정도를 지정합니다. 끝에 'localhost'와 ':1' 사이에는 공백이 하나 있음을 주의합니다.
tightvncserver -geometry 1920x1080 -depth 16 -localhost :1

참고로, '1080x1920'같이 하면 화면이 밑으로긴 portrait 상태로 보입니다. 그리고 명령 줄에 (loopback-only) '-localhost' 옵션을 빼면 USB로 연결된 폰 이외의 기기에서도 SBC가 연결된 네트워크를 통해 '[SBC IP]::5901' 주소로 접속할 수 있음을 꼭 기억합니다.

9. 폰과 SBC의 포트(5901)를 서로 연결해 줍니다.
adb reverse tcp:5901 tcp:5901

[안드로이드폰에서]
10. 폰에 VNC Viewer 앱을 설치합니다. 여기서는 'VNC Viewer - Remote Desktop'을 사용합니다.

11. 'New Connection'버튼을 눌러 다음과 같이 VNC 서버 정보를 넣습니다.
localhost::5901


12. 여기까지 해서 SBC에 준비된 기본 X 화면이 뜨면 모든 과정이 끝났습니다.

방법-2: 플렛에 설치

1. 위에 '직접 설치' 방법과는 달리, 제일 먼저 안드로이드폰을 USB 케이블로 연결합니다.

2. 'X Android' 템플릿을 찾아 선택 합니다.

3. 아래 설정화면처럼 기본정보를 넣어 주세요.
(처음 설치시 약 200MB 파일을 다운로드 받는 만큼의 시간이 소요 됩니다.)

4. 컨테이너가 만들어지자마자 (앞서 직접설치-6단계와 같이) 자동으로 폰 화면에 USB 디버깅 허용을 묻는 화면이 뜨면 그다음부터는 작업과정이 같습니다.

[주의]
직접설치 방법은 호스트(SBC 자체)의 하나뿐인 유일한 X 환경이 직접 폰 화면에 나오지만 플랫을 사용했을 때는 (호스트로부터 격리된, 컨테이너마다 다른) 컨테이너 안의 X 환경이 나온다는 점입니다. 자세한 사항은 다르지만 쉽게 설명해서 MS윈도 호스트에 설치된 VMWare안에 새로 만든 하나의 가상 머쉰의 윈도 화면을 보게 된다고 생각하시면 이해하기 쉽습니다. 즉, 호스트의 윈도와는 완전별개이지만 호스트의 모든 H/W 자원을 사용할 수 있는 격리된 환경 말입니다.

플렛의 모든 템플릿의 기반은 Raspbian Lite이므로, 기본 모습은 화면 왼쪽 위에 xterm만 하나 떠있는 변경되지 않은 최초의 X 상태입니다.

5. (옵션) 이 xterm에서나 컨테이너의 콘솔에서 명령을 실행시켜 원하는 윈도 매니저를 추가설치 할 수 있습니다.
apt-get update && apt-get install lxde-core lxappearance -y 명령으로 LXDE를 설치하거나, 혹은,
apt-get update && apt-get install xfce4 xfce4-terminal -y 명령으로 XFCE를, 아니면,
apt-get update && apt-get install mate-desktop-environment-core -y 명령으로 MATE를 설치할 수도 있습니다. (참고)

마지막으로 컨테이너를 재시작('Restart')하고 다시 폰에서 VNC 접속하면 새로운 윈도매니저를 확인할 수 있습니다. (여러 개의 윈도매니저가 있을 때는 lightdm같은 로그인매니저를 추가설치해서 선택합니다.)
Comments