[Android] ubuntu에서 adb with linux

안드로이드 단말과 통신하기 위해서 ADB 라는 유틸을 쓴다. 윈도우 환경에서 단말 장치 인식을 하기 위해서 각 제조사에서(구글폰은 안드로이드 개발자 사이트에서) 배포한 USB 드라이버를 설치한다. 하지만 ubuntu 등과 같은 리눅스 환경에서는 따로 드라이버를 설치하는 것이 아니고, /etc/udev/rules.d/ 폴더 밑에 어떤 파일 작성을 통해 드라이버 인식을 해야 한다. 검색질과 삽질을 통해 알아낸 방법을 기록한다.

http://developer.android.com/guide/developing/device.html

위의 안드로이드 개발자 사이트에서는 /etc/udev/rules.d/50-android.rules 를 작성하라고 한다. 하지만 본인의 ubuntu 환경에서는 70-android.rules 를 작성해야 제데로 동작했다. 그 디렉토리 안에 이미 존재하는 파일을 참고해서 만드는 건가?

아무튼 /etc/udev/rules.d/70-android.rules 를 관리자 권한으로 열어서 아래 내용을 작성해야 한다.

SUBSYSTEMS=="usb", ATTRS{idVendor}=="????", ATTRS{idProduct}=="????", MODE="0666"

물음표로 된 부분에 연결한 단말에 알맞는 정보를 넣어야 한다. 이 정보는 lsusb 명령을 통해 얻어올 수 있다.

Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 003: ID 046d:c018 Logitech, Inc. Optical Wheel Mouse
Bus 005 Device 002: ID 0566:3107 Monterey International Corp.
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 008: ID 1004:618e LG Electronics, Inc.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0bda:0158 Realtek Semiconductor Corp. USB 2.0 multicard reader
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

지금 본인의 PC에 연결되어있는 단말은 LG전자 것이므로 LG Electronics, Inc. 라고 되어있는 열에서 ID 값인 1004:618e 를 ':' 로 분리해서 idVendor와 idProduct에 각각 넣어주면 된다. 즉, 아래와 같이 넣어주면 된다.

SUBSYSTEMS=="usb", ATTRS{idVendor}=="1004", ATTRS{idProduct}=="618e", MODE="0666"

마지막으로 연결된 단말의 USB를 뽑았다가 다시 연결 해본 다음에 adb devices 로 인식이 되는지 확인한다.

※ 추가
/udev 디렉토리는 /dev 밑에 연결되어 있는 디바이스 노드들에 대하여 이름 변경이나 심볼릭 링크, 권한 변경등을 제공한다. /etc/udev/rules.d/ 밑에 .rules 라는 접미사가 붙어있는 파일 작성을 통해 이러한 커스토마이징이 가능하다. rules 파일의 구조는 한 라인당 한 개의 룰을 작성하며, 조건식과 대입식을 콤마로 나누어 구성한다. 위의 ADB 의 경우에는 SUBSYSTEMS와 ATTRS{idVendor}, ATTRS{idProduct}가 조건식(비교 연산자인 ==)이고, MODE 가 대입식(대입 연산자인 =) 이다. 그렇다면 위에서 설명한 ADB 연결 작업은 곧 해당 USB 디바이스를 찾아서 접근 권한을 666(read/write)으로 하는 것이라고 볼 수 있다.

아래는 참고한 사이트

덧글

댓글 입력 영역