http://www.aesop.or.kr/?document_srl=271882#8


오드로이드에 내장된 무선 모듈은 마벨사의 SD8686 WiFi칩과 CSR사의 BC04라는 Bluetooth 칩으로 구성되어 있습니다.

잘 아시겠지만 WiFi나 BT는 모두 2.4Ghz ISM 밴드를 사용합니다. 

그리고 현재 드라이버 구성의 한계로 BT와 WLAN을 동시에 키면 문제가 발생 할수 있습니다.

이 Co-existence 문제는 마벨의 정책때문에 오픈소스 드라이버를 사용하는 한 해결이 쉽지 않습니다. 

따라서 무선랜을 켤때는 블루투스를 꺼야 하고, 블루투스를 켤때는 무선랜을 꺼주셔야 정상 동작 합니다.

만일 오드로이드가 오픈소스가 아니라면, co-existence 문제나 AP 호환성 문제 해결이 좀 더 수월했을 겁니다.




먼저 무선랜에 대해서 좀 더 설명을 드리겠습니다. 

이미 공개된 오드로이드 소스코드를 보셨으면 아시겠지만, 소프트웨어 구성은 Kernel 2.6.29에 들어있는 Libertas라는 SD8686 무선랜 드라이버와 WPA-Supplicant를 통해 안드로이드와 인터페이스를 합니다. 안드로이드의 Connection manager에는 DHCP daemon도 포함되어 있습니다. 아랫단 쪽에는 SD8686내부의 ARM 코어에서 실행되는 2개의 Binary firmware도 필요합니다.

이렇게 조금은 복잡한 구조로 되어 있으며, 안드로이드에서는 몇개의 추가 Thread로 접속을 관리 합니다.


그런데, 현재 대부분의 경우 사용은 가능합니만, 일부 AP와는 접속이 잘 안되거나 접속이 되더라도 DHCP에 문제가 발생합니다.

몇가지 해결 방법을 알려 드리겠습니다.


<1> 고정 IP 사용 : 이는 DHCP가 잘 동작하지 않는 환경에서 유용합니다.

설정 -> 무선 및 네트워크 설설 -> WiFi 설정 -> 메뉴(3개 스위치중 가운데 버튼) -> 고급 -> 고정 IP 사용 -> IP 설정


 

<2> AP 설정 변경

사용 하는 AP가 오드로이드에서 보이지 않는 경우 AP의 채널(1~13번)을 다른 채널로 변경해 봅니다.

암호 알고리듬은 WEP, WPA, WPA-PSK 등등으로 이것저것 변경해 봅니다.  또는 암호를 없애고도 테스트를 해봅니다.

그리고 Beacon interval은 100msec 이하로 설정 하셔야 합니다.


위와 같이 여러 조합으로 테스트를 해보고 그 결과와 함께 시리얼 디버깅 포트나 ADB shell을 이용해서 logcat 정보를 공유해 주시길 바랍니다. 추후 개선할 수 있는 중요한 자료가 됩니다.


주의 사항: Thread가 꼬일 수 있으므로, 무선 및 네트워크 설정에 있는 Wi-Fi 켜기 메뉴를 절대로 이용하지 않고, Wi-Fi 설정 내부에 있는 켜기/끄기 메뉴를 사용해야 합니다. 꼬이기 시작하면 시스템 Reset을 하기 전에는 풀리지 않는 것 같습니다.





블루투스에 대해서도 말씀 드리겠습니다.

블루투스 C110의 UART0 에 연결되어 있으며 초기 115200BPS 기본값을 init.rc가 돌아갈때 10배 빠른 1152000BPS로 변경을 합니다. 그리고 나서 Bluez라는 리눅스 스택을 통해 안드로이드에 인터페이스가 됩니다. 


발송하기 전에 모든 세트에서 BT의 기본적인 동작 테스트는 하였습니다. 저희가 테스트한 방법은 이렇습니다. 

먼저 반드시 오드로이드 주변에 블루투스 기능을 활성화시키 휴대폰을 켜 놓습니다. 

그리고 오드로이드의 무선랜은 꺼 둡니다. 그 다음 

설정 -> 무선 및 네트워크 설정 -> 블루투스 설정 -> 블루투스 켜기 를 선택하고 4~5초 정도면 장치 검색을 시작합니다.

추가로 좀 더 기다리면 휴대폰의 BD(Mac) 주소가 리스트에 나타납니다.


예상하건데 1152000 BPS에서 baud-rate 오류가 발생하여 가끔 BT 장치와 인터페이스를 못 하는것 같습니다. 소프트웨어로 개선 가능한 부분입니다.


주의 사항: Thread가 꼬일 수 있으므로, 무선 및 네트워크 설정에 있는 Bluetooth  켜기 메뉴를 절대로 이용하지 않고, Bluetooth 설정 내부에 있는 켜기/끄기 메뉴를 사용해야 합니다. 꼬이기 시작하면 시스템 Reset을 하기 전에는 풀리지 않는 것 같습니다.

'Interesting > TIPTECH' 카테고리의 다른 글

netbeans android  (0) 2010.06.09
iPhone 4  (0) 2010.06.08
Android Debug tools  (0) 2010.05.31
ODROID-T  (0) 2010.05.28
Google Chrome to Phone Extension  (0) 2010.05.24

+ Recent posts