BCM 4323 Wi-Fi Dongle 을 최적화하고 안정화시키는 방법에 대해 기술한다.
2009년 7월 21일 현재 가장 안정화된 디바이스 드라이버는 5_14_13_lgdtv.tgz 이다
이 문서상의 모든 설명은 위의 드라이버를 기준으로 한다.
수정하기
위에서 받은 소스코드를 컴파일하면 에러가 발생한다. 몇가지 수정이 필요하다.
src/wl/linux/Makefile
아래와 같이 수정한다.
# $id: Makefile,v 1.213.14.1 2009/05/07 03:26:37 Exp $ # STBLINUX = 1 LINUXDIR = /vol/users/wjkim/work/gp2_test/os/saturn6_linux/kernel/linux-2.6.26-saturn6 DEFTARGETS = nodebug-mipsel-stadef-embed ... #DEFTARGETS = $... // 주석처리
추가로 broadcom_dongle_사용하기 를 참고하여 수정한다.
src/wl/sys/wl_linux.c
... L. 299 MODULES_LICENSE("GPL") // GPL 로 수정 ... L. 2404 //dma_cache_wback_inv((unsigned long)iph, 28); # 주석처리함 ...
src/shared/dbus_usb_linux.c
... L. 18 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 25)) // 등호의 방향을 반대로 바꿈 ...
모두 수정했으면, 컴파일한다.
$STBLINUX=1 make LINUXDIR=/vol/users/wjkim/work/gp2/os/saturn6_linux/kernel/linux-2.6.26-saturn nodebug-mipsel-stadef-embed
wl.ko 파일이 생성되었으면, 파일 크기를 줄이기 위해 아래와 같이 명령한다.
$mip
src/wl/config/wl.mk
Ad-hoc 모드에서 접속이 연결되고 끊어짐에 따라 이벤트를 발생시키기 위해 다음과 같이 수정한다.
#ifndef LINUX_HYBRID # Router IBSS Security Support # LGM IBSS CONFIG ROUTER_SECURE_IBSS=1 // 추가 ifeq($(ROUTER_SECURE_IBSS),1) ...
wl 컴파일 및 생성하기
src/wl/exe/GNUmakefile 파일을 아래와 같이 수정한다.
... # Final link targets $(WL_EXE): $(WL_OBJS) $(CC) -static $(LDFLAGS) -o $@ $^ // -static 추가 ...
수정했다면, 컴파일한다.
$make TARGETENV=linuxmips
'wlmips' 라는 파일이 생성되었다면, 파일시스템으로 복사한다.
wps 컴파일하기
'wps_enr_app.mk' 을 아래와 같이 수정한다.
CC = mipsel-linux-gcc // 수정 ... ifeq ($(BLDTYPE),debug) ... else wpsenr : $(OBJS) $(LIBS) $(CC) -static $(OBJS) $(LIBS) -o $(CC)/wpsenr // -static 추가 $(STRIP) $(CC)/wpsenr ...
수정했다면, 컴파일한다.
$cd src/wps/common/include $./wpsvers.sh $mv wpsvers.h wps_version.h $cd src/wps/linux/enr $make -f wps_enr_app.mk
'wpsenr' 파일이 생성되었다면, 정상적으로 컴파일된 것이다. 이후 실행방법은 기존의 Button 방식, PIN 방식과 동일하다.
커널 설정하기
앞에서 설명한 Wi-Fi 드라이버를 빌드하기 위해서는 커널 설정이 필요하다. 참고로 여기서는 커널 버전 2.6.31-1.0 을 기준으로 설명한다.
[*] Networking support --> [*] Wireless --> [*] Old wireless static regulatory definitions / [*] Wireless extensions --> [*] Wireless extensions sysfs files