GW-US54GXSのために,zd1211rwを再コンパイルした.

概要

USB無線LAN子機 GW-US54GXSはそのままでは使えなかった.
モジュールのソースに変更を加え,コンパイルしなおしたら,使えた.

やったこと

zd1211rwに修正が必要.そこで,ソースを入手する.

% mkdir -p tmp/zd1211rw
% cd tmp
% cp -r /var/abs/core/kernel26 .
% cd kernel26
% makepkg -o
% cp src/linux-2.6.32/driver/net/wireless/zd1211rw/* ../zd1211rw 
% cd zd1211rw

参考のurlにあるように,ソースを変更する.
zd_mac.c

    { ZD_REGDOMAIN_ETSI, "DE" }, /* Generic ETSI, use most restrictive */
    { ZD_REGDOMAIN_JAPAN, "JP" },
    { ZD_REGDOMAIN_JAPAN_ADD, "JP" },
+    { ZD_REGDOMAIN_JAPAN_3, "JP" },
    { ZD_REGDOMAIN_SPAIN, "ES" },
    { ZD_REGDOMAIN_FRANCE, "FR" },
};

zd_mac.h

#define ZD_REGDOMAIN_FRANCE    0x32
#define ZD_REGDOMAIN_JAPAN_ADD    0x40
#define ZD_REGDOMAIN_JAPAN    0x41
+#define ZD_REGDOMAIN_JAPAN_3    0x49

これから,makeするので,

pacman -S kernel26-headers

としておく.

Makefileを変更.

obj-$(CONFIG_ZD1211RW) += zd1211rw.o

zd1211rw-objs := zd_chip.o zd_mac.o \
		zd_rf_al2230.o zd_rf_rf2959.o \
		zd_rf_al7230b.o zd_rf_uw2453.o \
		zd_rf.o zd_usb.o

KDIR	:=/usr/src/linux-$(shell uname -r)
PWD	:=$(shell pwd)

all:
	$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:

	$(MAKE) -C $(KDIR) M=$(PWD) clean

makeして,コピーする.

% make all
% cd /lib/modules/2.6.32-ARCH/kernel/driver/net/wireless/zd1211rw
% sudo mv zd1211rw.ko zd1211rw.ko.original
% cd -
% sudo cp zd1211rw.ko /lib/modules/2.6.32-ARCH/kernel/driver/net/wireless/zd1211rw

再起動したら,ちゃんと使えた(kernel26-firmware必要).
めでたし,めでたし.