华硕WL-167G USB 无线网卡ARM移植 (4:配置:版本RT.1104)

来源:互联网 发布:软件开发成本估算 编辑:程序博客网 时间:2024/05/04 07:49

 

配置(前面的步骤见编译

 

 

1.  修改modules/ifcfg-rausb0

ifcfg-rausb0

root@zanget:network# cat ifcfg-rausb0

DEVICE=rausb0

ONBOOT=yes

 

## Confirm your AP supports dhcp or connects up the ethernet

## before set-up as a dynamic IP

BOOTPROTO=dhcp

 

 

## static for fixed ip

#BOOTPROTO=static

#IPADDR=192.168.0.31

#NETMASK=255.255.255.0

#GATEWAY=192.168.0.1

 

2. 安装模块

 

下面的步骤已经在编译里面修改过了,下面跳过

修改modules/Makefile  NDDIR部分

## Revision History by mike

##Configuration files on ARM busybox

ifeq ($(PLATFORM),ARM)

BASE_DIR := /opt/s3c-2416/rootfs/custom

NDDIR = $(BASE_DIR)/etc/sysconfig/network

MOD_CONF = $(BASE_DIR)/etc/modprobe.d/module-renames

ND_CONF = $(BASE_DIR)/etc/sysconfig/network/ifcfg-rausb0

else

## Revision History end

ND_CONF=/etc/sysconfig/network-scripts/ifcfg-rausb0

Endif

 

然后是install部分

install:

make -C $(LINUX_SRC) /

 

 

 

下面的步骤已经在前版本(见博客前第2篇文章:配置)中修改过,下面跳过

 

注意:BASE_DIR 为你busybox的根目录

为了保证安装不会出错,先创建/验证目录:

root@zanget:~# cd /opt/s3c-2416/rootfs/custom/etc

root@zanget:etc# mkdir -p sysconfig/network

root@zanget:etc# mkdir -p modprobe.d

root@zanget:etc# ls

fstab init.d inittab modprobe.d sysconfig

root@zanget:etc#cd modprobe.d/

root@zanget:etc#touch module-renames

 

 

root@zanget:modules# make install

root@zanget:rt73# make install

make -C /opt/s3c-2416/linux-2.6.21 /

        INSTALL_MOD_DIR=extra SUBDIRS=/opt/s3c-2416/wireless-usb/driver/RT.1104/Module /

        modules_install

make[1]: 正在进入目录 `/opt/s3c-2416/linux-2.6.21'

  INSTALL /opt/s3c-2416/wireless-usb/driver/RT.1104/Module/rt73.ko

  DEPMOD  2.6.21.5-cfs-v19

make[1]:正在离开目录 `/opt/s3c-2416/linux-2.6.21'

Network device directory /opt/s3c-2416/rootfs/custom/etc/sysconfig/network

Module configuration file /opt/s3c-2416/rootfs/custom/etc/modprobe.d/module-renames

/sbin/depmod -a

等几秒后à成功

 

根据前面步骤的配置(见博客前第2篇文章:配置),下面的步骤跳过:

root@zanget:modprobe.d# cat module-renames

alias rausb0 rt73

 

root@zanget:network# ls

ifcfg-rausb0

root@zanget:network# cat ifcfg-rausb0

DEVICE=rausb0

ONBOOT=yes

 

## Confirm your AP supports dhcp or connects up the ethernet

## before set-up as a dynamic IP

BOOTPROTO=dhcp

 

## static for fixed ip

#BOOTPROTO=static

#IPADDR=192.168.0.31

#NETMASK=255.255.255.0

#GATEWAY=192.168.0.1

 

根据前面步骤的配置(见博客前第2篇文章:配置),下面的步骤跳过:

由于modules/rt_config.h

 

00038: #ifndef __RT_CONFIG_H__

00039: #define __RT_CONFIG_H__

00040:

00041: #define PROFILE_PATH "/etc/Wireless/RT73STA/rt73sta.dat"

00042: #define NIC_DEVICE_NAME "RT73STA"

00043: #define RT2573_IMAGE_FILE_NAME "/etc/Wireless/RT73STA/rt73.bin"

 

的定义,需要手动拷贝:

 

root@zanget:modprobe.d# cd /opt/s3c-2416/rootfs/custom/etc

root@zanget:modprobe.d# mkdir -p Wireless/RT73STA

拷贝

root@zanget:modules# cp rt73.bin /opt/s3c-2416/rootfs/custom/etc/Wireless/RT73STA

root@zanget:modules# cp rt73sta.dat /opt/s3c-2416/rootfs/custom/etc/Wireless/RT73STA/

 

安装dos2unix

root@zanget:modprobe.d# apt-get install tofrodos

 

块加载由于版本差异,导致配置文件差异,请手动拷贝:

[root@dding Module]# cp rt73sta.dat /opt/s3c-2416/rootfs/custom/etc/Wireless/RT73STA/

converting file rt73sta.dat to UNIX format

[root@zanget:modprobe.d]# dos2unix rt73sta.dat

 

动态加载模块,用相关命令确认模块加载成功

/ # insmod rt73.o

/ # dmesg

idVendor = 0xb05, idProduct = 0x1723

usbcore: registered new interface driver rt73

selected clock c0335ec4 (pclk) quot 35, calc 115740

=> usb_rtusb_open

 

iwconfig iwlist 的移植和安装,请参考博客前第2配置,这里不再复述。

 

 

3. 手动测试

/ # ifconfig rausb0 inet 192.168.1.2 netmask 255.255.255.0 up

=> usb_rtusb_open

/ # iwlist rausb0 scan | grep ESSID

                    ESSID:"ChinaNet"

                    ESSID:"ChinaUnicom"                  

                    ESSID:"asus-test"

可看到测试的网络"asus-test",下面就将其设置到网卡:

/ # iwpriv rausb0 set SSID="asus-test"

ping百度

/ # ping 119.75.218.45

 

不通

/ # route add default gw 192.168.1.1

/ # ping 119.75.218.45

 

等几秒,通过     也可ping 192.168.1.1

 

4. 使用DHCP

 

编译Busybox  make menuconfig,添加以下选项:

Networking Utilities --->

udhcp Server/Client --->

       [ ] udhcp Server (udhcpd)       //在此不作服务端,故不选。生成udhcpd命令
udhcp Client (udhcpc)              //
生成udhcpc命令 
    

 

 

/ # ifconfig rausb0 up

=> usb_rtusb_open

/ # iwlist rausb0 scan | grep ESSID

                    ESSID:"ChinaNet"

                    ESSID:"ChinaUnicom"                  

                    ESSID:"asus-test"

可看到测试的网络"asus-test",下面就将其设置到网卡:

/ # iwpriv rausb0 set SSID="asus-test"

/ # udhcpc rausb0

udhcpc (v1.17.3) started

udhcpc: socket: Address family not supported by protocol

问题1

udhcpc: socket: Address family not supported by protocol

 

解决:重新编译内核(参看博客):

Networking --->

Networking support  

Networking options --->

需要选择下面红色部分:

  +---------------------- Networking options ----------------------+

  |  Arrow keys navigate the menu.  <Enter> selects submenus --->. | 

  |  Highlighted letters are hotkeys.  Pressing <Y> includes, <N>  | 

  |  excludes, <M> modularizes features.  Press <Esc><Esc> to      | 

  |  exit, <?> for Help, </> for Search.  Legend: [*] built-in     | 

  | +------------------------------------------------------------+ | 

   | +------------------------------------------------------------+ | 

  | |    [ ] Network packet debugging                            | | 

  | |    <*> Packet socket  (前一篇文章漏掉了,这里补充说明下)      | | 

  | |    <*> Unix domain sockets                                 | | 

  | |    < > Transformation user configuration interface         | | 

  | |    [ ] Transformation sub policy support (EXPERIMENTAL)    | | 

  | |    [ ] Transformation migrate database (EXPERIMENTAL)      | | 

  | |    < > PF_KEY sockets                                      | | 

  | |    [*] TCP/IP networking                                   | | 

  | |    [ ]   IP: multicasting                                  | | 

  | |    [ ]   IP: advanced router                               | | 

  | |    [*]   IP: kernel level autoconfiguration                | | 

  | |    [*]     IP: DHCP support                       | | 

  | |    [*]     IP: BOOTP support                      | | 

//

  | |    [*] Network packet filtering framework (Netfilter)  --->       | | 

 

 

另外,需要udhcpc的配置文件,拷贝Busybox下的simple.script/usr/share/udhcpc/下,并重命名为default.script

root@zanget: busybox-1.17.3# cd examples/udhcp/

root@zanget:udhcp# mkdir /opt/s3c-2416/rootfs/custom/usr/share

root@zanget:udhcp# cp simple.script /opt/s3c-2416/rootfs/custom/usr/share/default.script

 

修改default.scriptRESOLV_CONF="/etc/resolv.conf"RESOLV_CONF="/tmp/resolv.conf"

#!/bin/sh

# udhcpc script edited by Tim Riker <Tim@Rikers.org>

 

#//Revision History by mike

#RESOLV_CONF="/etc/resolv.conf"

RESOLV_CONF="/tmp/resolv.conf"

#//Revision History end

 

 

 

5. 下载测试 

下载完后重启板子:

/ # ifconfig rausb0 up

=> usb_rtusb_open

/ # iwlist rausb0 scan | grep ESSID

                    ESSID:"ChinaNet"

                    ESSID:"ChinaUnicom"                  

                    ESSID:"asus-test"

/ # iwpriv rausb0 set SSID="asus-test"

/ # udhcpc rausb0

udhcpc (v1.17.3) started

Sending discover...

Sending discover...

Sending discover...

 

发现不成功,google后发现:

/ #  udhcpc -i rausb0

udhcpc (v1.17.3) started

Sending discover...

Sending select for 192.168.1.4...

Sending select for 192.168.1.4...

Lease of 192.168.1.4 obtained, lease time 86400

显示租借IP 成功!!!时间为86400IP192.168.1.4

 

看看用法:

/ #  udhcpc -h

udhcpc: option requires an argument -- h

BusyBox v1.17.3 (2010-10-15 10:05:34 CST) multi-call binary.

 

Usage: udhcpc [-fbnqvoCR] [-i IFACE] [-r IP] [-s PROG] [-p PIDFILE]

        [-H HOSTNAME] [-c CID] [-V VENDOR] [-O DHCP_OPT]... [-P N]

 

        -i,--interface IFACE    Interface to use (default eth0)

:

/ # ping 192.168.1.1

PING 192.168.1.1 (192.168.1.1): 56 data bytes

ping: sendto: Network is unreachable

说明udhcpc获取成功,但设置失败了!!

6. 修正udhcpc

找了好久,终于在强大google的帮助下找大了一个讨论题

下面Gilles的回复让我恍然大悟:

I don't need the ifconfig step

 

Don't you need to indicate the script to run to set the ip

I do

udhcpc -q -n -T 3 -A 1 -t 3 -i eth%d -s /usr/bin/udhcpc.script

 

I find one problem in linux-2.6.27.21 kernel if the interface that udhcpc
run has no cable in.

This trigger a WARNING at net/sched/sched_generic.c 219 dev_watchdog

Seen that with ne2k-pci driver.

原来可能是我默认脚本的设置问题, 于是手动指定脚本测试:

/ # udhcpc -n -q -i  rausb0 -s /usr/share/default.script

udhcpc (v1.17.3) started

Setting IP address 0.0.0.0 on rausb0

Sending discover...

Sending select for 192.168.1.4...

Sending select for 192.168.1.4...

Lease of 192.168.1.4 obtained, lease time 86400

Setting IP address 192.168.1.4 on rausb0

Deleting routers

route: SIOCDELRT: No such process

Adding router 192.168.1.1

Recreating /tmp/resolv.conf

 Adding DNS server 192.168.1.1

果然!!!!

在前面的文章配置(第4步)中,我的配置经过参考文章所做的配置是:

root@zanget:udhcp# cp simple.script /opt/s3c-2416/rootfs/custom/usr/share/default.script

经过查阅文档,发现

25

-s, --script=file               Run file at dhcp events (default:

26

                                /usr/share/udhcpc/default.script)

27

-v, --version                   Display version

于是做下面的改动: (这里(点我)有相关脚本)

/ # mkdir /usr/share/udhcpc

/ # mv /usr/share/

/usr/share/default.script  /usr/share/udhcpc/

/ # mv /usr/share/default.script /usr/share/udhcpc/

/usr/share/udhcpc # ls

default.script

 

重启机器,再测试:

 

 

/ # ifconfig rausb0 up

=> usb_rtusb_open

/ # iwlist rausb0 scan | grep ESSID

                    ESSID:"ChinaNet"

                    ESSID:"ChinaUnicom"                  

                    ESSID:"asus-test"

/ # iwpriv rausb0 set SSID="asus-test"

/ # udhcpc -i rausb0

udhcpc (v1.17.3) started

Setting IP address 0.0.0.0 on rausb0

Sending discover...

Sending discover...

Sending discover...

Sending discover...

Sending discover...

Sending select for 192.168.1.4...

Lease of 192.168.1.4 obtained, lease time 86400

Setting IP address 192.168.1.4 on rausb0

Deleting routers

route: SIOCDELRT: No such process

Adding router 192.168.1.1

Recreating /tmp/resolv.conf

 Adding DNS server 192.168.1.1

 

/ # ifconfig rausb0

rausb0    Link encap:Ethernet  HWaddr 00:1B:FC:22:E2:1F 

          inet addr:192.168.1.4  Bcast:192.168.1.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:1056 errors:0 dropped:0 overruns:0 frame:0

          TX packets:39 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:107241 (104.7 KiB)  TX bytes:3462 (3.3 KiB)

ping百度

/ # ping 119.75.218.45

PING 119.75.218.45 (119.75.218.45): 56 data bytes

64 bytes from 119.75.218.45: seq=0 ttl=50 time=51.115 ms

终于成功了!

 

到此,所有驱动移植完毕,后续的任务就是移植wpa_supplicant,最新版0.7.3,官网是(点我),下载地址是(点我)。