Realtek 에서 샘플로 받은 RTL8191SU, RTL8192SU USB-to-Wireless Dongle 사용에 대해서 설명한다.
동작성 테스트
윈도우(X86)
디바이스드라이버 rtl8188_8191_8192_su_windowsdriver_5.1071.0408.2009.f0047.p0211_ui_1.01.0091.l.zip 를 설치하고, Dongle 을 꼽으면 바로 인식한다.
참고로 여기서는 사내 AP 망에 접속하는 방법에 대해 설명하겠다. '프로필 → 추가' 를 선택하여 아래와 같이 입력한다.
추가한 프로필을 더블 클릭하면, 자동으로 연결 시도를 한다.
리눅스(X86)
드라이버 rtl8192su_linux_2.6.0001.0320.2009.tar.gz 를 그대로 사용하면 Dongle 을 인식하지 못하는 문제가 발생한다. 따라서 r8192u_core.c 을 복사해야 한다.
VMware 상의 리눅스(Fedora10) 에서는 컴파일은 정상적으로 되었지만, 제대로 인식하지 못하는 문제가 발생했다.
하지만, USB Linux 로 부팅한 결과, 제대로 동작하는 것을 확인하였다.
컴파일 방법은 아래와 같다.
#tar xzf rtl8192su_linux_2.6.0001.0320.2009.tar.gz #cd rtl8192su_linux_2.6.0001.0320.2009 #cp r8192U_core.c /HAL/rtl8192u/ #make #cd firmware #cp -arf RTL8192SU/ /lib/firmware // 매주 중요 #cd .. #./wlan0up
DTV(타겟)
본사 엔지니어 2명이 번갈아 가며, 거의 일주일동안을 타겟에서 완벽하게 동작하도록 포팅하는 데는 실패했다. 현재(2009 年 6月 20日), 동작을 확인한 것은 다음과 같다.
- 디바이스 드라이버 컴파일 후, 커널 Loading
- 인터페이스(wlan0) 생성 및 초기화(ifconfig wlan0 up)
- AP 검색 및 접속 후 IP 할당
남겨진 문제점은 다음과 같다.
- 타이밍 문제(디버그 메세지를 없애면 Segmentation fault 발생)
- AP 를 검색및 접속이 안됨(여러번을 실행해야 접속이 됨)
전제적으로 불안정한 상태다. 참고로 작업을 했던 드라이버 코드는 기존의 받았던 드라이버 rtl8192su_linux_2.6.0001.0320.2009.tar.gz 코드가 아니다.
다시 말해, 정식 릴리즈된 드라이버가 아닌 테스트를 위해 만든 코드를 가지고 작업했다. 컴파일 방법은 수정사항이 너무 많아 일일이 여기에 기록하기에는 힘들다. 또한 본사 엔지니어가 작업을 했기 때문에 내가 자세히 알지 못한다.
여기서는 기본적인 수정사항만 적도록 하겠다.
$tar xzf rtl8712_driver.tar.gz $cd rtl8712_driver $vi Makefile
Makefile 은 아래와 같이 수정한다.
... CROSS_COMPILE = 컴파일러 경로 KSRC : = 커널 경로 ...
farray.h 코드 수정이 필요하다. farray.h 파일을 기존의 파일을 대체시키면 된다.
$cp farray.h include/
코드 수정 후에 'make' 를 실행한다. 제대로 컴파일이 완료되면, '8712u.ko' 파일이 생성된다. 타겟에 올리면, 아래와 같이 인터페이스(wlan0)를 초기화 해주어야 한다.
#insmod 8712u.ko #ifconfig wlan0 up ifconfig: ioctl 0x8914 failed: Cannot assign requested address #ifconfig wlan0 hw ether 00:11:11:11:11:11 up #ifconfig wlan0 Link encap:Ethernet HWaddr 00:E0:4C:74:00:09 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) #iwlist wlan0 scan ... ASW ... #iwconfig wlan0 essid ASW #busybox udhcpc -i wlan0 -s simple.script renew
위에서 실행한 명령어를 보면 알겠지만, 모듈 Loading 후에 바로 up 을 실행하면 에러가 발생한다. 먼저 MAC 주소를 지정해야 한다. 나중에 MAC 주소를 확인해보면, 지정한 MAC 주소로 지정된 것도 아니다. 일단 인터페이스(wlan0) 가 올라오면, 'iwlist, iwconfig' 를 이용해서 AP 에 접속할 수 있다.
WPS 모드
Realtek Dongle 에는 WPS 모드를 위한 버튼이 달려있다. 지금까지 포팅했던 Ralink, BCM 모두 각기 다른 WPS 프로그램을 제공했었다. Realtek 역시 자체적인 http://hostap.epitest.fi/wpa_supplicant/ WPS 프로그램을 제공한다. rtl8192su_linux_2.6.0001.0320.2009.tar.gz 압축을 풀면, 0.5.10 버전이 포함되어 있다. 따로 압축을 풀어서 컴파일해야 한다.
가장 최신버전(0.6.9)을 받아서 컴파일했더니, openssl 헤더파일을 찾지 못해서 에러가 발생했다. 개발서버에 openssl 패키지가 설치되지 않은 이유였다. 따라서 WPS 모드를 포함한 WPA/WPA2/AES/TKIP 을 이용한 접속은 테스트해 볼 수 없었다. 결국 iwconfig 에서 지원되는 'OPEN/WEP' 만 동작을 확인하였다.