RT3070无线网卡AP模式
RT3070无线网卡AP模式——开发板实现路由功能并使客户端成功联网(WIFI)
主机操作系统:Centos 6.7
交叉编译器环境:arm-linux-gcc-4.5.4
开发板平台: FL2440
Linux内核版本: linux-3.0
开发模块: SIM900 WiFI-AP模式
一、配置内核支持无线网卡softAP模式
如果没有build in RF选项,在使用hostapd命令时会出错
注:在以上的几个目录下反复选,因为会生成新的选项,返回去接着重新选择(多来回选几遍避免遗漏,导致后面各种错误,血的教训啊!!!)
配置无线网络的软件移植
1.移植Openssl-0.9.8e
Hostapd依赖于openssl与libnl这两个库。所以首先要移植openssl与libnl,openssl我们已经移植过了,但我担心版本兼容性的问题,本着学习的心态便又移植了网上普遍使用的openssl-0.9.8e
1.1下载Openssl-0.9.8e
Openssl-0.9.8e
http://download.csdn.net/detail/u010944778/8940135
1.2解压之后直接修改Makefile
[luxibao@centos openssl-0.9.8e]$ mkdir install
[luxibao@centos openssl-0.9.8e]$ vim Makefile
29INSTALLTOP=/home/luxibao/fl2440/kernel/linux-3.0/openssl-0.9.8e/install
62 CC= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc
63 CFLAG= -O
64 DEPFLAG= -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_GMP -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779
65 PEX_LIBS=
66 EX_LIBS=
67 EXE_EXT=
68 ARFLAGS=
69 AR=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ar $(ARFLAGS) r
70 RANLIB= /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ranlib
[luxibao@centos openssl-0.9.8e]$ sudo make
[luxibao@centos openssl-0.9.8e]$ sudo make install
2.移植libnl
2.1下载libnl
libnl
http://download.csdn.net/detail/u010944778/8940293
[luxibao@centos linux-3.0]$ cd libnl-1.1
[luxibao@centos libnl-1.1]$ mkdir install
[luxibao@centos libnl-1.1]$ ./configure --prefix=/home/luxibao/fl2440/kernel/linux-3.0/libnl-1.1/install --host=arm-linux
[luxibao@centos libnl-1.1]$ make CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc
[luxibao@centos libnl-1.1]$ make install
移植Hostapd
3.1下载
hostapd-1.0.tar.gz
http://download.csdn.net/detail/u010944778/8940421
3.2解压后修改.config与Makefile
[luxibao@centos linux-3.0]$ cd hostapd-1.0
[luxibao@centos hostapd-1.0]$ ls
COPYING hostapd patches README src
[luxibao@centos hostapd-1.0]$ cd hostapd/
Makefile的修改:
CFLAGS += -I../src
CFLAGS += -I../src/utils
CFLAGS += -I/home/luxibao/fl2440/kernel/linux-3.0/libnl-1.1/install/include/
CFLAGS += -I/home/luxibao/fl2440/kernel/linux-3.0/openssl-0.9.8e/install/include/
LIBS += -L/home/luxibao/fl2440/kernel/linux-3.0/libnl-1.1/install/lib/
LDFLAGS += -L/home/luxibao/fl2440/kernel/linux-3.0/libnl-1.1/install/lib/
LIBS += -L/home/luxibao/fl2440/kernel/linux-3.0/openssl-0.9.8e/install/lib/
LDFLAGS += -L/home/luxibao/fl2440/kernel/linux-3.0/openssl-0.9.8e/install/lib/
# Uncomment following line and set the path to your kernel tree include
[luxibao@centos hostapd]$ cp defconfig .config
.config 修改:
22 # Driver interface for drivers using the nl80211 kernel interface
23 CONFIG_DRIVER_NL80211=y
[luxibao@centos hostapd]$ make CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc
得到了hostapd和配置文件hostapd.conf,需要tftp到你的开发板上。 hostapd 需要到 /bin 目录下
interface=wlan0 //网络接口设备名称
driver=nl80211 //默认使用nl80211无线驱动
ssid=luxibao //热点名称
channel=3 //设定无线频道
hw_mode=g //使用80211g协议标准ignore_broadcast_ssid=0
auth_algs=1 //指定OSA认证算法
wpa=3 //指定WPA/WPA2类型
wpa_passphrase=12345678 //指定认证密钥
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP //启用了WPA或WPA2则需要指定wpa_pairwise或 rsn_pairwise
rsn_pairwise=CCMP
上面各项解释如下:
(1) ssid:无线路由器发射的wifi名称;
(2) hw_mode:指定802.11协议,包括 a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g;
===================================================================
无线局域网标准 IEEE 802.11协议
*IEEE 802.11, 1997年,原始标准(2Mbit/s,工作在2.4GHz)。
*IEEE 802.11a,1999年,物理层补充(54Mbit/s,工作在5GHz)。
*IEEE 802.11b,1999年,物理层补充(11Mbit/s工作在2.4GHz)。
*IEEE 802.11g,2003年,物理层补充(54Mbit/s,工作在2.4GHz)。
使用最多的应该是802.11n标准,工作在2.4GHz频段,可达600Mbps(理论值)
===================================================================
(3)channel:设定无线频道;
(4)interface:接入点设备名称,注意不要包含ap后缀,即如果该设备称为wlan0ap,填写wlan0即可;
(5)driver:设定无线驱动,我这里是nl80211;
(6)auth_algs=1
其中auth_algs指定采用哪种认证算法,采用位域(bit fields)方式来制定,其中第一位表示开放系统认证(Open System Authentication, OSA),第二位表示共享密钥认证(Shared Key Authentication, SKA)。我这里设置alth_algs的值为1,表示只采用OSA;
(7)wpa:指定WPA类型,这是一个位域值(bit fields),第一位表示启用WPA,第二位表示启用WPA2。在我的配置中,无论设置成1、2或3,都可以正常连接
(8)wpa_passphrase:WPA/WPA2加密需要指定密钥,这个选项就是配置WPA/WPA2的密钥。注意wpa_passphrase要求8~63个字符。另外还可以通过配置wpa_psk来制定密钥,不过要设置一个256位的16进制密钥,不适合我们的需求;
wpa_pairwise/rsn_pairwise:如果启用了WPA,需要指定wpa_pairwise;如果启用了WPA2,需要指定 rsn_pairwise,或者采用wpa_pairwise的设定。
接下来将hostapd拷贝到的/bin下,并修改可执行权限,将hostapd.conf也拷贝到开发板的/apps/AP/目录下
在板子上直接执行hostapd -B hostapd.conf 即可
如果编译过程出现缺少库的错误,请自行检查你hostapd所依赖的libnl库和openssl库是否成功交叉编译。
>: ls
Hostapd.conf
>: mv /dev/random /dev/random.org
>: ln -s /dev/urandom /dev/random
>: hostapd -B hostapd.conf
Configuration file: hostapd.conf
phy0 -> rt2x00lib_request_firmware: Info - Loading firmware file 'rt2870.bin'.
phy0 -> rt2x00lib_request_firmware: Info - Firmware detected - version: 0.36.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 0 - CWmin: 3, CWmax: 4, Aifs: 2, TXop: 102.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 1 - CWmin: 4, CWmax: 5, Aifs: 2, TXop: 188.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 2 - CWmin: 5, CWmax: 10, Aifs: 3, TXop: 0.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 3 - CWmin: 5, CWmax: 10, Aifs: 7, TXop: 0.
Using interface wlan0 with hwaddr 00:24:25:50:a9:4d and ssid 'test'
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 0 - CWmin: 2, CWmax: 3, Aifs: 1, TXop: 47.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 1 - CWmin: 3, CWmax: 4, Aifs: 1, TXop: 94.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 2 - CWmin: 4, CWmax: 6, Aifs: 3, TXop: 0.
phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 3 - CWmin: 4, CWmax: 10, Aifs: 7, TXop: 0.
(9)修改/home/leiyuxing/fl2440/3rdparty/busybox-1.20.2/examples/udhcp /udhcpd.conf 然后拷贝到开发板/etc目录下
1,修改IP池
起始IP的后两位可以随意,但必须在一个网段
192.168.x.y
192.168.x.z
2修改执行dhcp功能的接口
可以用过ifconfig -a或者iwconfig命令来查看接口
3,修改DNS、网关、netmask等
opt dns 8.8.8.8 # DNS地址
option subnet 255.255.255.0 #子网掩码
opt router 192.168.2.1 #网关
其他默认即可
4. 自动分配IP链接wifi
因为udhcpd和udhcpc一样都是busybox里面自带的命令。所以我直接把配置文件放到开发板上再执行命令
因为udhcpd和udhcpc一样都是busybox里面自带的命令。所以我直接把配置文件放到开发板上再执行命令
>: ifconfig wlan0 192.168.2.1 netmask 255.255.255.0 (先把要接入点设备ip设置好)
Udhcpd在执行的时候可能会提示没有一个叫做udhcpd.release的租赁文件,这个只要在相应的文件夹下创建即可。执行下面两条命令:
>: mkdir -p /var/lib/misc/
>: touch /var/lib/misc/udhcpd.leases
再执行:
>: udhcpd -f /etc/udhcpd.conf //就可以启动dhcp服务器了。
udhcpd (v1.20.2) started
Sending OFFER of 192.168.2.10 //这时候就是已经连上你开发板的wifi
Sending ACK to 192.168.2.10 //此时还不能上网!!!
4.iptables移植
iptables简介
iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表。
Filter表负责过滤数据包,包括的规则链有,input,output和forward;
Nat表则涉及到网络地址转换,包括的规则链有,prerouting,postrouting和output;
Mangle表则主要应用在修改数据包内容上,用来做流量整形的。
默认的规则链有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING;
INPUT匹配目的IP是本机的数据包,FORWARD匹配流经本机的数据包,PREROUTING用来修改目的地址用来做DNAT,POSTROUTING用来修改源地址用来做SNAT。
===================================================================
4.1下载
iptables-1.4.12.tar.gz
http://download.csdn.net/detail/u010944778/8945513
4.2解压之后进入目录
[luxibao@centos linux-3.0]$ cd iptables-1.4.12
[luxibao@centos iptables-1.4.12]$ mkdir install
[luxibao@centos iptables-1.4.12]$ ./configure --host=arm-linux --enable-static --disable-shared --prefix=/home/luxibao/fl2440/kernel/linux-3.0/iptables-1.4.12/install --disable-ipv6 --disable-largefile
[luxibao@centos iptables-1.4.12]$ make CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc CFALGS=--static LDFLAGS=-static
[luxibao@centos iptables-1.4.12]$ sudo make install
[luxibao@centos iptables-1.4.12]$ cd install
[luxibao@centos install]$ cd sbin/
[luxibao@centos sbin]$ ls
iptables iptables-restore iptables-save xtables-multi
[luxibao@centos sbin]$ sudo /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-strip xtables-multi
[luxibao@centos sbin]$ cd ../
[luxibao@centos install]$ ls
bin include lib sbin share
[luxibao@centos install]$ tar -czf lib.tar.gz lib
[luxibao@centos install]$ ls
bin include lib lib.tar.gz sbin share
此时将/install/lib文件夹和xtables-multi打包放到开发板/lib和/bin目录下,赋予权限后将xtables-multi改名为iptables
.使用iptables命令接着配置nat转发表
/*将局域网内地址通过eth0接口伪装后转发出去*/
>:iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/*开启转发功能,允许已建立连接及相关连接对内转发*/
>: iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISH -j ACCEPT
/*对外转发,数据包从wlan0流向eth0*/
>: iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
>:echo "1" >/proc/sys/net/ipv4/ip_forward
>:ifconfig eth0 192.168.199.22
>:route add default gw 192.168.199.1
注:执行上面的iptables那四个命令,再设置eth0的ip(ifconfig eth0 192.168.199.22,注意设置eth0的ip地址应该和连接的路由器ip地址在同一网段!!!这个很重要,关系到能否上外网),接着设置网关route add default gw 192.168.199.1,执行指令udhapd -f etc/udhapd.conf,手机连上wifi后就可以直接上网啦!!!
然后连上的wifi热点就可以上网了。至此使用hostapd+udhcpd+iptables等工具基于内核mac80211驱动框架就实现了RT3070无线网卡的softAP!!!
遇到的问题:
1.
解决:./configure --prefix 遗漏的中间的空格符.
2.tftp 路径不对
解决:修改TFTP路径
3.缺少libnl.so.1
解决:
>: ls
apps data etc init linuxrc proc sbin tmp var
bin dev info lib mnt root sys usr
>: cd lib/
>: tftp -gr libnl.so.1 192.168.1.2
libnl.so.1 100% |*******************************| 1135k 0:00:00 ETA
>: chmod 777 libnl.so.1
4.缺少'rt2870.bin'
解决:
>: ls
apps data etc init linuxrc proc sbin tmp var
bin dev info lib mnt root sys usr
>: cd lib/
>: mkdir firmware
>: cd firmware/
>: tftp -gr rt2870.bin 192.168.1.2
rt2870.bin 100% |*******************************| 8192 0:00:00 ETA
5.
解决:
Udhcpd在执行的时候可能会提示没有一个叫做udhcpd.release的租赁文件,这个只要在相应的文件夹下创建即可。执行下面两条命令:
~>mkdir -p /var/lib/misc/
~>touch /var/lib/misc/udhcpd.leases
再次执行!
RT3070无线网卡AP模式相关推荐
- RT3070无线网卡AP模式——开发板实现路由功能
RT3070无线网卡有两种工作模式STA模式和softAP模式,分别由STA驱动和softAP驱动来实现,STA驱动支持无线网卡工作在STA模式下,可以连接到网络实现上网功能.而SoftAP的驱动支持 ...
- RT3070无线网卡STA模式并使开发板接入Wifi上网
开发板:FL2440 内核:linux 3.0 无线网卡:RT3070 RT3070的工作模式分为 STA(station)模式.SoftAP(Access Point)模式两种. STA模 ...
- 实现RT3070无线网卡STA模式并使开发板接入Wifi上网
--------------------------------------- 主机操作系统:Centos 6.7 交叉编译器环境:arm-linux-gcc-4.5.4 开发板平台: FL2440 ...
- 无线网卡AP模式和station模式
AP模式: Access Point,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般的无线路由/网桥工作在该模式下.AP和AP之间允许相互连接 Sta模式: Station, 类似于无线终 ...
- 3070网卡支持linux,RT3070网卡AP模式网速问题
各位前辈们,我目前在利用RT3070传输视频数据到手机端的应用时遇到了wifi网速慢的问题. 我的大致环境是:开发板端连接USB WIFI,采用的是RT3070,开发板端做AP,同时开发板端连有USB ...
- linux 无线网卡 ap模式,ubuntu 自启动无线网卡AP模式
自己手头有一台ubuntu主机,懒得专门接显示器和键盘使用,但是手上仅有的电脑是macbook和一个win平板,都没有网线接口,无法直接连接ubuntu主机,手头有几个TP的722N无线网卡,就有个想 ...
- linux无线网卡模拟ap,ubuntu自启动无线网卡AP模式
自己手头有一台ubuntu主机,懒得专门接显示器和键盘使用,但是手上仅有的电脑是macbook和一个win平板,都没有网线接口,无法直接连接ubuntu主机,手头有几个TP的722N无线网卡,就有个想 ...
- busybox文件系统与简单驱动学习(4)-RT3070无线网卡STA模式配置
需要的源码与版本: DPO_RT3070_LinuxSTA_V2.3.0.2_20100412 libnl-1.1.4 openssl-1.0.1d wpa_supplicant-0.7.3 进入DP ...
- imx6 linux wifi ap模式配置(usb-wifi模块rt3070)
不是所有的usb-wif模块在linux下面都可以支持ap模式. 在linux下的ap模式是通过工具hostapd工具进行配置运行的,该工具一般使用nl80211协议驱动无线网卡ap模式的运行.所以一 ...
最新文章
- (0085)iOS开发之OC与JS交互高级用法(JavaScriptCore)
- python自学网课推荐-这些AI课网课最具人气!不仅免费、系统,还附带链接 | 资源...
- 霸榜各大CV任务榜单,Swin Transformer横空出世!
- 简单工厂抽象工厂工厂方法_让工厂美丽
- Mac入门--Apache/Php/Mysql的开启关闭
- Linux 软件安装到 /usr,/usr/local/ 还是 /opt 目录?
- 微软首席技术官:不清楚平板是否昙花一现
- FTP:226 transfer done but failed to open directory
- Mysql问题1862
- P3376 【模板】网络最大流
- 智能客服搭建(5) - FreeSWITCH + mod_unimrcp + ESL 开发对接
- 对公司的建议_工作总结
- 物联网卡新型智慧城市解决方案
- 炒股:如何安全地追热点
- 数据库的升序降序排列
- CODESYS Automation Server Connector
- centos 安装百度云/百度网盘Python客户端
- flutter FijkPlayer seekTo的不准确问题
- 【C++】算法集锦(12):高楼扔鸡蛋
- 显著性检测评估指标及计算方法