Android Things 이미지 설치하기


지난 시간에 간단하게 Android Things의 개요를 살펴보았다. 뭐니뭐니해도 가장 중요한 내용은 바로 광범위한
안드로이드의 생태계를 거의 그대로 사용 가능하다는 것이었다. 편리한 배포와 업데이트, 안드로이드 수준의 보안, 
수많은 리소스들의 활용, 거기에 상용제품에 준하는 하드웨어를 이용한 신속한 개발 등 상당히 매력적인 플랫폼인
것은 분명하다.


공식 홈페이지에는 하드웨어에 대한 기본적인 설명을 먼저 하고 있지만 나는 라즈베리파이에 대해서만 알면 되기에
바로 라즈베리파이에 이미지를 설치하는 내용으로 건너 뛰었다. 


라즈베리파이에 Android Things 이미지 설치하기


공식적으로 Android Things가 지원하는 기종은 라즈베리파이 3다. 2도 설치는 되는 것 같으나 검색을 해보니
오동작하는 경우가 종종 있다고 한다. 그리고 최근 접한 소식에 아직 국내에서는 구하기 어렵지만 라즈베리파이
제로 W도 지원을 하지 않는다고 한다(미지원 사유는 CPU 문제라고 한다).


공식 홈에는 간단하게 라즈베리파이 3의 사양에 대한 설명이 나오고 Android Things의 이미지를 굽는 방법이
나온다. 기존 다른 라즈베리파이용 OS와 유사하게 SD카드에 이미지를 굽고 그 SD카드를 라즈베리파이에 꽂아
기동하게 된다.


준비할 것들 목록이 다음과 같이 정리되어있다.

  • HDMI 케이블
  • HDMI로 연결할 수 있는 디스플레이
  • 마이크로 USB 케이블
  • 이더넷 케이블
  • 마이크로 SD카드 리더기


그리고 목록에는 나와있지 않지만 당연히 마이크로 SD카드가 필요하다. 8Gb 이상이어야 한다.


당연히 준비해야 할 것들이고 이미지를 굽는 방법도 매우 단순하다. 나는 현재 MAC mini를 사용하고 있기에
MAC에서의 설치 방법을 따랐다.


먼저 Eacher라는 앱을 설치한 후 실행하여 다운로드 받은 Android Things 이미지를 선택한다. 그리고 이 이미지를
구울 마이크로 SD 카드의 경로를 선택을 한 후 Flash! 버튼을 클릭하면 이미지가 SD카드에 설치된다. 앱의
UI와 설치 과정이 매우 단순하여 쉽게 이미지를 구울 수 있다.



그리고 이렇게 구워진 마이크로 SD카드를 라즈베리파이에 끼우고 부팅을 하면 끝이다.
나는 간단하게 아래와 같이 준비를 하였다.



안드로이드 개발 환경 구성하기


이미 여러 번 말했거니와 이름 자체가 Android Things이기 때문에 당연히 안드로이드 개발 환경이 갖추어져
있어야 한다. 기본적으로 Android Studio를 설치해야 하므로 아래 링크로 가서 찬찬히 살펴보면서 설치해보자
다행히도 한글화가 잘 되어있다^^


https://developer.android.com/studio/index.html


그리고 Android Things가 실행된 라즈베리파이와 통신하기 위해서는 adb tool이 필요한데 이에 대한 설명
역시 링크로 대신한다.


https://developer.android.com/studio/command-line/adb.html


사실 adb tool은 안드로이드 SDK가 설치되면서 함께 설치되기 때문에 파일 위치만 확인하면 된다. MAC OSX의
경우 다음 위치에 실행 파일이 존재한다.


/Users/[사용자 ID]/Library/Android/sdk/platform-tools



라즈베리파이와 통신하기


이제 공식 홈페이지에서 설명하는 것과 같이 Android Things가 구동되고 있는 라즈베리파이와 통신을 해보자.
Android Things로 부팅이되면 아래와 같은 화면이 보여진다. 다른 라즈베리파이용 OS와 달리 사용자와 인터페이스
할 수 있는 UI는 없고 단지 로고와 몇가지 정보만 보여준다. 그 정보 중 하나가 이더넷 주소이다. 아래 이미지에는
Wi-Fi 주소가 함께 보여지는데 이 것은 내가 Wi-Fi를 연결한 이후 나타난 것이고 Wi-Fi를 설정하여 연결하기 전에는
이더넷 주소만 보인다.



이 이더넷 주소를 이용하여 다음과 같이 연결을 시도한다.

$ adb connect 172.30.1.57
connected to 172.30.1.57:5555


MDNS를 지원하는 기기에서는 IP 주소와 port 대신 Android.local로도 접속이 가능하다고 한다.


늘 이더넷 케이블을 연결시켜놓기는 불편하니 이제 Wi-Fi 연결을 시도해보자. 아래와 같이 adb 명령을 실행하면 된다.

$ adb shell am startservice \
    -n com.google.wifisetup/.WifiSetupService \
    -a WifiSetupService.Connect \
    -e ssid <Network_SSID> \
    -e passphrase <Network_Passcode>


SSID와 비밀번호만 정상적으로 잘 입력하면 잘 연결이 되…어야 하겠지만…돌발 변수가 발생했다.
눈을 부릅뜨고 봐도 내가 잘못 입력한 내용이 없는 것 같은데 요상하게 연결이 안된다. 이 작은 기기들은 왜이리
나를 괴롭히는 것을 좋아하는지…ㅠ.ㅠ


열심히 구글링을 하여 드디어 밝혀낸 원인은…라즈베리파이의 Wi-Fi는 5Ghz 대역을 지원하지 않는다는 것이다.
집에 ‘얼레! 기가찬’ Wi-Fi를 쓰고 있다보니 연결이 되지 않는 것이었다…ㅠ.ㅠ 다행히 기가찬 Wi-Fi에는 기존의
2.4Ghz Wi-Fi 대역도 제공하고 있기에 그쪽으로 연결하니 정상적으로 연결이 되었다. 성공적으로 연결이 되면
다음과 같은 로그 내용을 확인할 수 있다.

$ adb logcat -d | grep Wifi
...
V WifiWatcher: Network state changed to CONNECTED
V WifiWatcher: SSID changed: ...
I WifiConfigurator: Successfully connected to ...


그리고 Android Studio를 켠 상태에서 연결을 하였다면 Android Monitor 창을 통해 다음과 같은 방법으로도 확인 가능하다.


이렇게 Wi-Fi가 연결되고 난 후 이더넷 케이블을 제거하고 라즈베리파이를 부팅하면 다음과 같이 부팅이 되고
화면 하단에는 이더넷 정보는 사라지고 Wi-Fi 정보만 보여진다.



마지막으로 모든 네트워크 설정을 지우고 싶다면 다음과 같이 adb 명령을 사용하면 된다.

$ adb shell am startservice \
    -n com.google.wifisetup/.WifiSetupService \
    -a WifiSetupService.Reset

정리


이후에 원활한 디버깅을 위한 Serial debug console에 대한 이야기가 나오는데 이 부분은 참고로 봐두면 될 것이다.
앞서 말했지만 Android Things는 사용자와 인터페이스 하는 UI가 없기에 샘플 프로젝트를 돌려보기 전까지는 
그야말로 아무것도 할 것이 없다.


그래도 일단 개발할 준비가 되었다는 것만도 뭔가 뿌듯함이 느껴진다. 앞으로 예제를 하나 하나 실행해가면서
Android Things의 API에 익숙해지도록 해야겠다. 이전 포스팅에서도 말했지만 사실 지금 당장 하고 싶은 것은
TensorFlow를 이용하여 사진을 인식하는 예제이다. 어쩌면 바로 이 예제에 도전해볼지도…^^;;;


암튼 빨리 진행은 해보고 싶지만 워낙 잡다하게 공부하는 것이 많다보니 언제쯤 해보게 될런지…ㅠ.ㅠ






저작자 표시
신고
  1. js 2017.11.26 08:29 신고

    adb shell -d | grep wifi 해보면 grep가 없는 명령이라고 나옵니다???

    • 마즈다 2017.11.26 20:52 신고

      음...grep이 아니라 shell이 없는 명령어라고 나온 것이 아닐까요? grep이 없을 수가 없습니다만... 한 번만 더 확인해보세요^^

+ Recent posts

티스토리 툴바