Broadcom 4323 USB Wi-Fi Dongle 드라이버 메뉴얼을 설명한다.
여기서 설명하는 드라이버 버전은 5_14_13_LGDTV.tgz 을 기준으로 한다.

History

버전 날짜 내용
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]
  • computer/lg/broadcom_wi-fi_드라이버_메뉴얼.txt
  • Last modified: 3 years ago
  • by likewind