Broadcom 4323 USB Wi-Fi Dongle 드라이버 메뉴얼을 설명한다.
여기서 설명하는 드라이버 버전은 5_14_13_LGDTV.tgz 을 기준으로 한다.
| 버전 | 날짜 | 내용 |
| r0.1 | 2009年 8月 11日 | Broadcom 4323 드라이버를 빌드하는 방법 설명 |
| r0.2 | 2009年 8月 14日 | wlmips 사용법 설명 추가 |
| r0.3 | 2009年 8月 19日 | WPS 관련 라이브러리 및 테스트 방법 설명 |
| r0.4 | 2009年 8月 19日 | Ad-hoc 테스트 방법 추가 |
| 버전 | 날짜 | 내용 |
| r4228 | 2009年 8月 11日 | 5_14_13_LGDTV.tgz 버전을 기준으로 GP2 소스 트리에 컴파일할 수 있도록 수정 |
| r4519 | 2009年 8月 14日 | Wi-Fi 인터페이스(eth0 → wlan0) 변경, 컴파일 시 자동으로 wlmips 생성하도록 수정 |
| r4692 | 2009年 8月 19日 | 컴파일 시, WPS 관련 라이브러리 생성 및 Test 프로그램 생성하도록 수정 |
| r4699 | 2009年 8月 19日 | enum 변수 이름에 '_' prefix 추가(lgm_enr_api.h) |
| r4747 | 2009年 8月 19日 | Ad-hoc 모드에 대응할 수 있도록 수정 및 컴파일 시, 테스트 프로그램 생성하도록 수정 |
GP2 r4228 이후 버전으로 업데이트 하면, nm 디렉토리 밑에 driver.tar.gz 파일이 복사된다.
아래와 같이 압축을 푼다.
$cd gp2/src/mw/nm/ $ls driver.tar.gz // 파일 확인할 것 $tar xzf driver.tar.gz $cd driver/src/wl/linux $vi Makefile
각자 컴파일 환경이 다르기 때문에 Makefile 을 아래와 같이 수정해야 한다.
... # LGE_DTV STBLINUX = 1 LINUXDIR = /vol/users/wjkim/work/gp2/os/saturn6_linux/kernel/linux-2.6.26-saturn6 // 수정할 것 ...
위와 같이 주석이 적힌 부분을 수정해야 한다. 'LINUXDIR 는 리눅스 커널의 위치를 절대경로로 지정해야 한다.'
이는 계정 및 GP2 Branch 의 경로에 따라 다를 수 있기 때문에, 'pwd 명령어'로 확인한 후 알맞게 수정한다.
수정한 후에, 아래와 같이 컴파일하면 된다.
$make
에러없이 컴파일이 되었으면, 'wl.ko', 'wlmips', 'lgm_wps' 파일과 'ddi' 디렉토리가 생성된다.
$ls wl.ko wlmips lgm_wps ibss_status ddi/
생성된 파일에 대한 설명은 아래표와 같다.
| 파일명 | 설명 |
| wl.ko | bcm4323 드라이버 모듈 |
| wlmips | 드라이버 동작 검증을 위한 명령어 실행 파일 |
| lgm_wps | WPS 동작 검증을 위한 Test 실행 파일 |
| ddi | Ad-hoc 모드를 테스트하기 위한 실행 파일 |
이 파일을 특정 디렉토리에 복사하여 NFS 또는 EPK 빌드시 사용하면 된다.
wlmips 파일을 사용하여 Wi-Fi Dongle 의 모든 기능을 동작시킬 수 있다. 이를 이용하여 드라이버 상에서의 Wi-Fi Dongle 의 동작을 검증할 수 있다.
아래와 같이 실행한다.
$insmod wl.ko
$ifconfig wlan0 up
$wlmips up
$wlmips scan
$wlmips scanresults
...
SSID: "ASW"
Mode: Managed RSSI: -27 dBm SNR: 0 dB noise: -82 dBm Channel: 5u
BSSID: 00:08:9F:52:2A:E0 Capability: ESS WEP ShortSlot
Supported Rates: [ 1(b) 2(b) 5.5(b) 11(b) 9 18 36 54 6(b) 12(b) 24(b) 48 ]
RSN:
multicast cipher: AES-CCMP
unicast ciphers(1): AES-CCMP
AKM Suites(1): WPA-PSK
Capabilities(0x0000): No Pre-Auth, Pairwise, 1 PTK Replay Ctr1 GTK Replay Ctr
802.11N Capable:
Chanspec: 2.4GHz channel 3 40MHz (0x2e03)
Control channel: 5
802.11N Capabilities: 40Mhz SGI20 SGI40
Supported MCS : [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 32 ]
...
wlmips down wlmips up wlmips infra 0 #### set to 1 for infrastructure mode wlmips auth 0 wlmips wpa_auth 0 wlmips wsec 0 wlmips ssid <ssid> sleep 3 wlmips status
wlmips down wlmips up wlmips infra 1 wlmips auth 0 wlmips wpa_auth 0 wlmips wsec 0 wlmips ssid <ssid> sleep 3 wlmips status
WEP 방식을 사용할 때, 주의할 점이 한가지 있다. 그것은 AP 에서 WEP 키값을 지정시에 몇번째에 키값을 지정했는가에 따라서 명령어의 인자값이 조금 달라진다.
예를 들어, 2번째 기본키에 키 값을 설정했다면, 'wlmips addwep 1 12345' 와 같이 명령해야 한다. 'addwep' 다음에 들어가는 인자는 기본키 숫자의 하나 작은 수를 적어주면 된다.
wlmips down wlmips up wlmips infra 1 wlmips auth 0 wlmips wpa_auth 0 wlmips wsec 1 wlmips addwep 0 12345 // 1번 기본키에 키 값을 설정하였을 때 wlmips ssid <ssid> sleep 3 wlmips status
wlmips down wlmips up wlmips infra 1 wlmips auth 1 wlmips wpa_auth 0 wlmips wsec 1 wlmips addwep 1 12345 // 2번 기본키에 키 값을 설정하였을 때 wlmips ssid <ssid> sleep 3 wlmips status
wlmips down wlmips up wlmips infra 1 wlmips auth 2 wlmips wpa_auth 0 wlmips wsec 1 wlmips addwep 2 1234567890 // 3번 기본키에 키 값을 설정하였을 때 wlmips ssid <ssid> sleep 3 wlmips status
wlmips down wlmips up wlmips infra 1 wlmips auth 0 wlmips wpa_auth 0 wlmips wsec 1 wlmips addwep 3 1234567890abc // 4번 기본키에 키 값을 설정하였을 때 wlmips ssid <ssid> sleep 3 wlmips status
wlmips down wlmips up wlmips infra 1 wlmips auth 2 wlmips wpa_auth 0 wlmips wsec 1 wlmips addwep 0 1234567890abc wlmips ssid <ssid> sleep 3 wlmips status
wlmips down wlmips up wlmips infra 1 wlmips wsec 2 wlmips sup_wpa 1 wlmips wpa_auth 4 wlmips set_pmk 12345678 wlmips ssid <ssid> sleep 3 wlmips status
wlmips down wlmips up wlmips infra 1 wlmips wsec 4 wlmips sup_wpa 1 wlmips wpa_auth 4 wlmips set_pmk 1234567890 wlmips ssid <ssid> sleep 3 wlmips status
wlmips down wlmips up wlmips infra 1 wlmips wsec 2 wlmips sup_wpa 1 wlmips wpa_auth 128 wlmips set_pmk 1234567890 wlmips ssid <ssid> sleep 3 wlmips status
wlmips down wlmips up wlmips infra 1 wlmips wsec 4 wlmips sup_wpa 1 wlmips wpa_auth 128 wlmips set_pmk 1234567890 wlmips ssid <ssid> sleep 3 wlmips status
ifconfig eth1 up wpsenr -if eth1 -pb
ifconfig eth1 up wpsenr -if eth1 -pin 12345670
lgm_wps 파일은 드라이버에서 제공하는 WPS 관련 함수들에 대한 동작을 검증하기 위한 테스트 프로그램이다.
$insmod wl.ko $ifconfig wlan0 up $./lgm_wps ~~~~ Start ~~~ ##### LGM WPS Test ##### 1. WPS - PBC // PBC 모드 접속 테스트 2. WPS - PIN // PIN 모드 접속 테스트 3. Status // 현재 접속 여부를 출력([0] : 접속 안됨 / [1] : 접속됨) 4. Encryption Status // 현재 접속한 AP 의 보안 및 암호화 정보를 출력 5. Stop // 동작을 중지 9. Exit // 테스트 프로그램 종료 Slect Number :
위와 같이 WPS 의 각 모드에 대해서 테스트 해볼 수 있다. 다음은 PBC 모드를 테스트 했을 때의 모습이다.
------------------------------------- 0 : SSID:ASW BSSID:0:8:9f:52:2a:e0 Channel:3 WEP 1 : SSID: BSSID:0:22:b0:b3:a7:c6 Channel:9 ------------------------------------- Joining network ASW - 16 Start enrollment for BSSID:0:8:9f:52:2a:e0 266.765:TIMER_E ] Firing EV Timer 81921, Exp=266.247, Real=266.764, Jit=517 266.767:TIMER_E ] Firing CB Timer(PQ_CheckDimmingPeriodic ) 65, Exp=266.160, Real=266.764, Jit=604 266.769:TIMER_E ] Firing CB Timer(VIDEO_CheckAutoArcPeriodic ) 65, Exp=266.182, Real=266.768, Jit=586 Send EAPOL-Start Receive EAP-Request / Identity Send EAP-Response / Identity Receive EAP-Request(Start) Send EAP-Response(M1) Receive EAP-Request(M2) Send EAP-Response(M3) Receive EAP-Request(M4) Send EAP-Response(M5) Receive EAP-Request(M6) Send EAP-Response(M7) Receive EAP-Request(M8) Send EAP-Response(DONE) WPS Protocol SUCCEEDED !! SSID = ASW Key Mgmt type is WPA2-PSK Key : abcdefgh Encryption : AES Apply security to driver ... Success !!
제대로 AP 에 접속된 것을 알 수 있다.
Ad-hoc 모드를 테스트하기 위해서 ibss_status 프로그램을 사용할 수 있다. 사용방법은 아래와 같다.
$insmod wl.ko $ifconfig wlan0 up $./wlmips up $./wlmips infra 0 $./wlmips auth 0 $./wlmips wpa_auth 0 $./wlmips wsec 0 $./wlmips ssid ASW
이후, Wi-Fi 가 지원되는 디바이스(ex 노트북)에서 AP 스캔을 하면, ASW 가 검색되는 데, 이에 연결한다.
연결이 된 후에, 테스트 프로그램을 실행시키면, 아래와 같이 '[1]' 이 출력된다.
$./ibss_status kiki-debug : [1]
연결을 끊은 후에, 테스트 프로그램을 실행시키면, 아래와 같이 '[0]' 이 출력된다.
$./ibss_status kiki-debug : [0]