通过zd1211在ubuntu和mini2440建立连接

最近要调试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基本配置》的 文章:
http://www.cnblogs.com/zhuwenger/archive/2011/03/11/1980294.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地址。可参见
http://blog.csdn.net/longzh_cn/article/details/8009829
命令如下: sudo dhcpd wlan0 -pf /var/run/dhcp-server/dhcpd.pid

你可能感兴趣的:(server,ubuntu,Authentication,Parameters,interface)