您的位置:首页 > 其它

通过zd1211在ubuntu和mini2440建立连接

2011-11-12 11:44 309 查看
最近要调试mini2440的模块,让mini2440和任何一个电脑可以通过无线网卡(wifi,即wlan)进行通信。把较为详细的步骤记录在这里,以供参考。

1、搭建mini2440上面的环境,主要参考了http://www.linuxidc.com/Linux/2011-03/33931.htm,把步骤简要写在这里:

第一,在内核里面添加zd1211的驱动:

新版的linux2.6.27.9已自带zd1211b的驱动。此驱动在rat-linux-2.6.27.9/drivers/net/wireless/zd1211rw/中。

要让此驱动生效,得修改内核配置。

选中

networking support-->wireless-->Generic IEEE 802.11 Networking Stack (mac80211)

选中

device drivers-->netword device support-->wirelss lan-->ZyDAS ZD1211/ZD1211B USB-wireless support

第二,添加zd1211的运行环境所需要的相关文件



http://downloads.sourceforge.net/zd1211/zd1211-firmware-1.4.tar.bz2?modtime=1191498990&big_mirror=0

下载到zd1211 firmware 1.4后,根据firmware的说明,将其中的zd1211_*文件拷贝到根文件系统/lib/firmware/zd1211目录中。这里执行ifconfig wlan0 up命令:

firmware: requesting zd1211/zd1211b_uphr

zd1211rw 1-1:1.0: firmware version 4725

zd1211rw 1-1:1.0: zd1211b chip 0ace:1215 v4810 full 00-02-72 AL2230_RF pa0 g--N

第三,要正常使用无线网卡,还要正确配置。linux下的配置工具是wireless-tools,可以在这里下载到它的最新版。

http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html

下载后,将源代码解压。再修改其中的makefile文件,将其中的

CC = gcc

AR = ar

RANLIB = ranlib

改为

CC = arm-linux-gcc

AR = arm-linux-ar

RANLIB = arm-linux-ranlib

再执行make,编译完成后,将生成的iwconfig,iwlist文件拷贝到rat-linux for mini2440的根文件系统中的/bin目录下,将libiw.so.29拷贝到/lib目录下。

启动mini2440开发板,进入linux命令行后,执行ifconfig wlan0 up,启动无线网卡。再执行iwlist scanning,此命令可以搜索到可用的无线网络接入点。

2、需要将插在电脑上的zd1211设置为接入点模式。

首先将zd1211插入ubuntu电脑上的usb口,并将其设置为ap模式(acess point)

参考资料:http://blog.163.com/monk...popo/blog/static/20868022010522115033900/

Ubuntu 10.04 LTS内含了zd1211的驱动,称为 zd1211rw。这个驱动并不是由厂家提供的,而是一个rewrite的驱动。

rw的驱动在linux 2.6.18-rc1之后就内置了,一般的用户可以无须自己去找驱动,就能用上 zd1211或 zd1211b的无线网卡。但是,rw版本的驱动程序不再提供对AP功能的支持,当使用 sudo iwconfig wlan0 mode master 指令时,报错 :

Error for wireless request "Set Mode" (8B06) :

SET failed on device wlan0 ; Invalid argument.

如何解决这个问题呢?上面的参考文章提到,我们需要另外编译自己的驱动,而不是用ubuntu自带的驱动来做这件事。但是这样对新手来说门槛有点高。这个问题本质上就是在ubuntu下,zd1211不能够实现ap功能导致的,因此又在网上搜一搜这个问题的解决方案:

http://forum.ubuntu.org.cn/viewtopic.php?f=116&t=329742

里面提到了一个网址:

http://wireless.kernel.org/en/users/Documentation/hostapd?action=show&redirect=RTFM-AP

这里面有解决方案。大致上就是利用一个工具来实现软AP的功能。因此,我们的目标改为,如何使用这个名为hostapd的工具来实现软AP的功能。

那么,首先我们来编译hostapd工具:

http://haohetao.iteye.com/blog/805312

根据这个网站的内容,《ubuntu上hostapd的编译和使用

注意,这里需要包含内核的头文件的路径,在/usr/src里面有。

步骤摘抄如下:

第一,安装build-essentials libnl-dev libssl-dev libdbus-glib-1-dev
libgupnp-1.0-dev libreadline-dev,直接apt-get就可以

第二,下载hostapd的源码,网上也有,也可以使用命令 git clone git://w1.fi/srv/git/hostap.git

第三,编译hostapd :

cd hostap/hostapd

cp defconfig .config

编辑 .config

CONFIG_DRIVER_NL80211=y

CFLAGS += -I#这里写内核头文件的路径#

make

make install

这样,hostapd就算完成了。但是还需要配置,参考下面这篇名为《hostapd基本配置》的文章:

/article/7060477.html

我的配置文件如下:


hostapd.tar (16
K) 下载次数:2

这样,配置就完成了,然后启动:

/usr/bin/hostapd /etc/hostapd.conf

就可以。

3.在开发板上面执行

ifconfig wlan0 up

iwlist scanning

iwconfig wlan0 essid "test" #这里的名字就是电脑上 /etc/hostapd.conf里面配置的ssid的名字

iwconfig wlan0 ap auto #这一句相当于接入了

iwconfig wlan0

ifconfig wlan0 192.168.2.2 netmask 255.255.255.0

如果要设置网关,命令是

route add default gw 192.168.2.1

这样就把开发板上面配置好了

4.在电脑上执行

ifconfig wlan2 192.168.2.1 netmask 255.255.255.0

其中,wlan2是电脑上的无线网卡的名字(用ifconfig查看)。

然后试一试,就可以ping通了

如果要让开发板上网的话,必须在PC端做一些设置。可以参考

http://blog.sina.com.cn/s/blog_7285600f0100ru05.html

步骤如下:

在PC上执行下面几条命令:

echo "1" > /proc/sys/Net/ipv4/ip_forward #打开IP转发,1表示转发;0表示不转发

上面这个命令也可以通过修改/etc/sysctl.conf实现,在文件中加上下面一行:

net.ipv4.ip_forward = 1

然后执行:

iptables -t nat -F #清除原有的nat表中的规则iptables -F #清除原有的filter有中的规则

iptables -P INPUT ACCEPTiptables -P FORWARD ACCEPT #缺省允许IP转发

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #打开NAT,eth0指能够连接internet的网卡名称

同时,我们也可以配置dhcp来分配ip地址。可参见

/article/10656251.html

命令如下:sudo
dhcpd wlan0 -pf /var/run/dhcp-server/dhcpd.pid
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: