Marvell 에서 생산되는 모든 Wi-Fi 칩은 양산이 되기 전에 정상동작 하는지 여부를 확인한다. 이때 사용하는 프로그램이 '랩툴(Labtool)' 이다.
이를 사용하여 Chip spec 을 만족하는지 각각 기능별로 테스트한다.
테스트 방법은 아래 그림과 같다.
타겟에서 mfgbridge 를 실행하는 방법
앞서 살펴본 것은 일반 PC 를 타겟으로 mfgbridge 를 실행하고, 여기에 연결된 쪽보드와의 통신을 통해 테스트하는 방법이었다.
이런 방법은 reference 보드의 경우에 적합하다. 하지만 거의 대부분 실제 제품에 실장되기 때문에 labtool 을 포팅하여 타겟에서 바로 실행한다.
여기서는 Samsung 갤럭시 그랜드(8777)를 기준으로 설명한다.
환경 설정하기
아래 문서를 참고하여 환경 설정을 완료했다면, 이제 Labtool 을 안드로이드에 포팅한다.
안드로이드에 포팅하기
먼저 labtool 코드를 다운로드 받는다. 8797.tar.gz
압축을 풀고 안드로이드 소스코드 아래의 특정 디렉토리에 labtool 코드를 복사한다.
#tar xzf 8797.tar.gz #cd /8797/mfg_and_Labtool/bridge_linux_0.1.0.29 #mkdir -p (안드로이드 소스코드 최상위디렉토리)/external/labtool #cp -arf bridge drvwrapper (안드로이드 소스코드 최상위디렉토리)/external/labtool/
빌드하기 전에 수정사항이 있는데, Android_mbt.mk 파일을 사용해야 한다.
#cd (안드로이드 소스코드 최상위디렉토리)/external/labtool/bridge #mv Android.mk Android.mk-ori #mv Android_mbt.mk Android.mk
파일명을 수정했으면, 빌드하자.
#mm // 일반 빌드 할때 또는 #mm -B // 강제로 재빌드 할 때
에러없이 빌드되었다면, (안드로이드 소스코드 최상위디렉토리)/out/target/product/보드명/system/bin 아래에 mfgbridge 라는 파일이 보일 것이다. 이 파일을 타겟으로 전송하자.
#cd (안드로이드 소스코드 최상위디렉토리)/out/target/product/보드명/system/bin #adb push mfgbridge /tmp
mfgbridge 파일이 실행될 때, 참조하는 설정 파일을 함께 전송해야 한다.
#adb push bridge_init.conf /tmp
이제 타겟에서 실행해보자!
#adb shell #cd /tmp #./mfgbridge
네트워크 설정하기
Labtool 을 사용하기 위해서는 타겟보드와 호스트 PC 가 서로 네트워크 통신이 가능해야 한다. 이를 위해서는 각각 설정이 필요하다.
타겟보드
타겟(핸드폰)의 설정에서 'USB tethering' 을 선택한다. 이렇게 하면, 타겟과 호스트 PC 사이에 통신하는 데 필요한 인터페이스(usb0)가 생성된다.
#adb shell #root@android:/ # netcfg rndis0 UP 192.168.42.129/24 0x00001043 aa:e5:e0:27:de:b3 ccinet0 DOWN 0.0.0.0/0 0x00001082 a6:e2:79:51:aa:b6 ccinet1 DOWN 0.0.0.0/0 0x00001082 72:12:7f:a2:ea:7e ccinet2 DOWN 0.0.0.0/0 0x00001082 32:ef:31:dc:ae:0f ccinet6 DOWN 0.0.0.0/0 0x00001082 ce:86:74:7c:20:ab ccinet7 DOWN 0.0.0.0/0 0x00001082 72:6f:be:cb:0b:52 ccinet3 DOWN 0.0.0.0/0 0x00001082 9e:d6:f3:ed:4b:4d ccinet4 DOWN 0.0.0.0/0 0x00001082 02:4f:04:b9:97:b1 ccinet5 DOWN 0.0.0.0/0 0x00001082 76:f0:2c:2e:e7:ce sit0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00 lo UP 127.0.0.1/8 0x00000049 00:00:00:00:00:00 tunl0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00
타겟의 IP 주소는 '192.168.42.129' 로 설정된 것을 알 수 있다. 이제 default gw 를 지정해주어야 한다. 참고로 192.168.42.130 는 Host PC 의 usb0 인터페이스에 할당할 IP 주소다.
#route add default gw 192.168.42.130 dev rndis0 // Host PC 에 물려있는 IP 주소를 default gw 로 설정
Host PC 설정하기
#ifconfig usb0 192.168.42.130 up #ping 192.168.42.129 // 타겟 쪽으로 ping 테스트, 반대로 타겟에서도 Host PC 쪽으로 테스트 해본다
이제 외부와의 통신을 위해 아래와 같이 실행한다.
#iptables -F #echo 1 > /proc/sys/net/ipv4/ip_forward #iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 9930 -j DNAT --to 192.168.42.129:9930
labtool 의 통신 포트인 9930 를 외부 IP 로 포트 포워딩한다.
Labtool 실행하기
이제 타겟과 Host PC 각각 프로그램을 실행시켜 명령어를 통해 제대로 동작하는지 확인하자.