Linux 开发板4G转WiFi热点 手机连接热点上网(三 WiFi模块的移植及AP的建立)
2016-10-09 10:28
656 查看
这里对WiFi模块的驱动就不做详细介绍,本篇文章可能会涉及两款WiFi模块,一个是USB接口的WiFi模块,一个是SDIO接口的wifi模块,即AP6212,平台可能涉及爱特梅尔和三星的4418两个平台。
本篇的记录主要内容是:建立WiFi模块的AP热点,并且客户端设备通过该热点,借助4G模块的网络连接外网。
建立WiFi的AP热点涉及下面几个软件包或者软件工具:
hostapd-0.8、hostapd-2.5、libnl-1.1.4、openssl-1.0.0
如果不了解libnl和openssl版本有什么不同,尽量不要使用高版本,很可能会出问题,使用上面的两个版本就可以,这两个依赖库官网都可下载(自行百度下载地址)。上面的hostapd有两个版本,原因是0.8版本是USB的wifi模块源码资料中打包提供的,官网没找到该版本,看来是厂家对其做了修改,以适应自己的USB WiFi模块;2.5版本就是官网通用版本可以下载得到,没什么特别需要注意的。为此WiFi模块的工具以厂家提供的为准最好,不会有兼容性问题。
对于这两个WiFi模块,他们执行的不同就是hostapd工具的不同,其他都一样,这里选择AP6212做主要说明。hostapd工具为2.5的版本。
hostapd工具即为热点的创建工具,libnl-1.1.4、openssl-1.0.0为其依赖库,所以要先编译libnl-1.1.4、openssl-1.0.0这两个依赖库。
注:编译器自由指定,由需求决定。
openssl-1.0.0的编译:
这个库的编译有点特殊,在配置之前先指定CC编译器,即:CC=arm-linux-gnueabihf-gcc
然后执行:
./config no-asm shared --prefix=/xxxx/openssl-1.0.0/install 如果PC机没有依赖库问题就会自动生成Makefile文件,一般不会有问题。生成Makefile后还需要修改它,修改的部分如下且修改为下面的情况即可:
libnl-1.1.4的编译:
这个库的编译没什么复杂的,先执行下面的配置命令:
./configure --prefix=/xxxx/libnl-1.1.4/install CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld --enable-shared --enable-static --host=arm-linux-gnueabihf之后直接make以及make install即可。
hostapd的编译:
该工具的编译不要configure的配置,直接使用hostapd目录下的defconfig配置即可,即执行命令:cp defconfig .config
然后打开.config文件需要添加所依赖的库路径,如下所示:
CFLAGS += -I/xxxx/libnl-1.1.4/install/include
LIBS += -L/xxxx/libnl-1.1.4/install/lib
CFLAGS += -I/xxxx/openssl-1.0.0/install/include
LIBS += -L/xxxx/openssl-1.0.0/install/lib另外解注释下面两个选项:
CONFIG_DRIVER_NL80211=y
CONFIG_TLS=openssl
执行make即可生成hostapd可执行工具。
到这里需要的必要工具就编译完成了,剩下的就是把它们拷贝到开发板了。具体的位置个人需求。把依赖库和可执行文件路径都添加到环境变量中即可使用了。
建立热点的命令如下:
insmod /lib/modules/bcmdhd.ko "firmware_path=/etc/firmware/fw_bcmdhd_apsta.bin" "nvram_path=/etc/firmware/nvram_ap6212.txt"
ifconfig wlan0 192.168.2.1 netmask 255.255.255.0 up
udhcpd -fS /etc/udhcpd.conf&
hostapd -B /etc/hostapd.conf这里给出udhcpd.conf和hostapd.conf两个文件的配置:
udhcpd.conf配置:
start 192.168.2.2
end 192.168.2.100
interface wlan0
max_leases 20
remaining yes
auto_time 7200
decline_time 3600
conflict_time 3600
offer_time 60
min_lease 60
lease_file /etc/udhcpd.leases
opt dns 114.114.114.114 #192.168.1.2 192.168.1.10
option subnet 255.255.255.0
opt router 192.168.2.1
option domain local
hostapd.conf配置(开放式热点):
还要建立一个udhcpd.leases文件,路径如前面udhcpd.conf配置文件所示:
为了确保运行的正确,请确保内核中有如下配置:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201610/d3f8668c10c34ce00d8cacf2a0854e48)
这样执行运行命令后应该就可以搜索到名为MyAP的热点了。
当然了前面只是建立了AP热点,且可自动分配IP地址,但是还无法上网。
为了使其能够通过4G网络连接互联网,那么我们需要iptables工具来实现nat转接。需要移植iptables工具,我这里使用的版本是iptables-1.4.19。
配置的命令是:
./configure --prefix=/xxxx/iptables-1.4.19/install CC=arm-cortex_a9-linux-gnueabi-gcc LD=arm-cortex_a9-linux-gnueabi-ld --enable-shared --enable-static --host=arm-cortex_a9-linux-gnueabi --disable-ipv6 --disable-largefile执行make和make install即可。
把编译好的库和可执行文件拷贝到开发,并指定环境变量,即可使用了。
为了保证iptables工具的正确执行,那么请确保内核开启了下面的功能:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201610/8c32c7af56409e1969a64db6f9778a42)
执行不报错即可,执行iptables -A FORWARD -s 192.168.2.0/24 -o ppp0 -j ACCEPT命令测试一下,然后执行iptables -L看是否有规则,如果有那么就说明没问题。
那么,WiFi模块通过4G模块上网的命令如下:
iptables -A FORWARD -s 192.168.2.0/24 -o ppp0 -j ACCEPT
iptables -A FORWARD -d 192.168.4.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.2.0/255.255.255.0 -o ppp0 -j MASQUERADE
echo 1 >/proc/sys/net/ipv4/ip_forward #启动转发
完整的命令如下:
ifconfig wlan0 192.168.2.1 netmask 255.255.255.0 up
udhcpd -fS /etc/udhcpd.conf&
iptables -A FORWARD -s 192.168.2.0/24 -o ppp0 -j ACCEPT
iptables -A FORWARD -d 192.168.4.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.2.0/255.255.255.0 -o ppp0 -j MASQUERADE
echo 1 >/proc/sys/net/ipv4/ip_forward
hostapd -B /etc/hostapd.conf为了方便,把上面的命令保存为ap.sh文件。
万事具备了,下面给出WiFi热点通过4G网卡上网的操作流程。
第一步:ppp.sh wcdma建立4G网络
第二步:ap.sh(注意路径问题)
之后搜索热点连接,应该可以上互联网了。
本篇的记录主要内容是:建立WiFi模块的AP热点,并且客户端设备通过该热点,借助4G模块的网络连接外网。
建立WiFi的AP热点涉及下面几个软件包或者软件工具:
hostapd-0.8、hostapd-2.5、libnl-1.1.4、openssl-1.0.0
如果不了解libnl和openssl版本有什么不同,尽量不要使用高版本,很可能会出问题,使用上面的两个版本就可以,这两个依赖库官网都可下载(自行百度下载地址)。上面的hostapd有两个版本,原因是0.8版本是USB的wifi模块源码资料中打包提供的,官网没找到该版本,看来是厂家对其做了修改,以适应自己的USB WiFi模块;2.5版本就是官网通用版本可以下载得到,没什么特别需要注意的。为此WiFi模块的工具以厂家提供的为准最好,不会有兼容性问题。
对于这两个WiFi模块,他们执行的不同就是hostapd工具的不同,其他都一样,这里选择AP6212做主要说明。hostapd工具为2.5的版本。
hostapd工具即为热点的创建工具,libnl-1.1.4、openssl-1.0.0为其依赖库,所以要先编译libnl-1.1.4、openssl-1.0.0这两个依赖库。
注:编译器自由指定,由需求决定。
openssl-1.0.0的编译:
这个库的编译有点特殊,在配置之前先指定CC编译器,即:CC=arm-linux-gnueabihf-gcc
然后执行:
./config no-asm shared --prefix=/xxxx/openssl-1.0.0/install 如果PC机没有依赖库问题就会自动生成Makefile文件,一般不会有问题。生成Makefile后还需要修改它,修改的部分如下且修改为下面的情况即可:
CROSS_COMPILE=arm-linux-gnueabihf- CC= $(CROSS_COMPILE)gcc CFLAG= -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int #CFLAG= -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_NO_KRB5 -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall #CFLAG= -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_NO_KRB5 -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall DEPFLAG= -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MD2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_STORE PEX_LIBS= EX_LIBS= -ldl EXE_EXT= ARFLAGS= AR=$(CROSS_COMPILE)ar $(ARFLAGS) r RANLIB= $(CROSS_COMPILE)ranlib NM= $(CROSS_COMPILE)nm PERL= /usr/bin/perl TAR= tar TARFLAGS= --no-recursion MAKEDEPPROG= gcc LIBDIR=lib之后直接make以及make install即可。
libnl-1.1.4的编译:
这个库的编译没什么复杂的,先执行下面的配置命令:
./configure --prefix=/xxxx/libnl-1.1.4/install CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld --enable-shared --enable-static --host=arm-linux-gnueabihf之后直接make以及make install即可。
hostapd的编译:
该工具的编译不要configure的配置,直接使用hostapd目录下的defconfig配置即可,即执行命令:cp defconfig .config
然后打开.config文件需要添加所依赖的库路径,如下所示:
CFLAGS += -I/xxxx/libnl-1.1.4/install/include
LIBS += -L/xxxx/libnl-1.1.4/install/lib
CFLAGS += -I/xxxx/openssl-1.0.0/install/include
LIBS += -L/xxxx/openssl-1.0.0/install/lib另外解注释下面两个选项:
CONFIG_DRIVER_NL80211=y
CONFIG_TLS=openssl
执行make即可生成hostapd可执行工具。
到这里需要的必要工具就编译完成了,剩下的就是把它们拷贝到开发板了。具体的位置个人需求。把依赖库和可执行文件路径都添加到环境变量中即可使用了。
建立热点的命令如下:
insmod /lib/modules/bcmdhd.ko "firmware_path=/etc/firmware/fw_bcmdhd_apsta.bin" "nvram_path=/etc/firmware/nvram_ap6212.txt"
ifconfig wlan0 192.168.2.1 netmask 255.255.255.0 up
udhcpd -fS /etc/udhcpd.conf&
hostapd -B /etc/hostapd.conf这里给出udhcpd.conf和hostapd.conf两个文件的配置:
udhcpd.conf配置:
start 192.168.2.2
end 192.168.2.100
interface wlan0
max_leases 20
remaining yes
auto_time 7200
decline_time 3600
conflict_time 3600
offer_time 60
min_lease 60
lease_file /etc/udhcpd.leases
opt dns 114.114.114.114 #192.168.1.2 192.168.1.10
option subnet 255.255.255.0
opt router 192.168.2.1
option domain local
hostapd.conf配置(开放式热点):
interface=wlan0 driver=nl80211 ctrl_interface=/var/run/hostapd ssid=MyAP channel=3 ieee80211n=1 hw_mode=g ignore_broadcast_ssid=0
还要建立一个udhcpd.leases文件,路径如前面udhcpd.conf配置文件所示:
touch
/etc/udhcpd.leases
为了确保运行的正确,请确保内核中有如下配置:
这样执行运行命令后应该就可以搜索到名为MyAP的热点了。
当然了前面只是建立了AP热点,且可自动分配IP地址,但是还无法上网。
为了使其能够通过4G网络连接互联网,那么我们需要iptables工具来实现nat转接。需要移植iptables工具,我这里使用的版本是iptables-1.4.19。
配置的命令是:
./configure --prefix=/xxxx/iptables-1.4.19/install CC=arm-cortex_a9-linux-gnueabi-gcc LD=arm-cortex_a9-linux-gnueabi-ld --enable-shared --enable-static --host=arm-cortex_a9-linux-gnueabi --disable-ipv6 --disable-largefile执行make和make install即可。
把编译好的库和可执行文件拷贝到开发,并指定环境变量,即可使用了。
为了保证iptables工具的正确执行,那么请确保内核开启了下面的功能:
执行不报错即可,执行iptables -A FORWARD -s 192.168.2.0/24 -o ppp0 -j ACCEPT命令测试一下,然后执行iptables -L看是否有规则,如果有那么就说明没问题。
那么,WiFi模块通过4G模块上网的命令如下:
iptables -A FORWARD -s 192.168.2.0/24 -o ppp0 -j ACCEPT
iptables -A FORWARD -d 192.168.4.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.2.0/255.255.255.0 -o ppp0 -j MASQUERADE
echo 1 >/proc/sys/net/ipv4/ip_forward #启动转发
完整的命令如下:
ifconfig wlan0 192.168.2.1 netmask 255.255.255.0 up
udhcpd -fS /etc/udhcpd.conf&
iptables -A FORWARD -s 192.168.2.0/24 -o ppp0 -j ACCEPT
iptables -A FORWARD -d 192.168.4.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.2.0/255.255.255.0 -o ppp0 -j MASQUERADE
echo 1 >/proc/sys/net/ipv4/ip_forward
hostapd -B /etc/hostapd.conf为了方便,把上面的命令保存为ap.sh文件。
万事具备了,下面给出WiFi热点通过4G网卡上网的操作流程。
第一步:ppp.sh wcdma建立4G网络
第二步:ap.sh(注意路径问题)
之后搜索热点连接,应该可以上互联网了。
相关文章推荐
- Linux 开发板4G转WiFi热点 手机连接热点上网(二 4G模块的移植)
- Linux 开发板4G转WiFi热点 手机连接热点上网(一 思路)
- 笔记本(win7)建立WiFi热点,供手机连接上网
- 用电脑WiFi热点,手机连接上网(转)
- 手机通过笔记本设置AP(wifi 热点)上网 intel5100 agn 无线网卡 win7系统
- 将win7电脑变身WIFI热点,让手机、笔记本共享上网用win7建立无线局域网。
- Deepin Linux系统中开启ap-hotspot wifi热点供其他计算机和android手机上网
- rt3070 无线wifi模块移植到linux,并连接无线路由上网
- 怎样用笔记本的无线网卡做一个AP 实现笔记本做wifi热点供手机、平板电脑wifi上网而不用无线路由器
- xp下如何用无线网卡做ap wifi热点。手机连电脑wifi上网
- XP系统下建立WIFI热点让手机、电脑能上网
- iPhone怎么建立WiFi热点,供电脑手机上网
- WIN7建wifi热点,手机连接wifi上网~
- win7 无线热点 || window 7 WiFi 设置无线热点|| WiFi手机直连 ||5530MX连接笔记本热源上网设置
- andorid/iphone 手机通过 wifi 连接笔记本 无线网卡 共享上网
- 将win7电脑变身WiFi热点,让手机、笔记本共享上网
- win7中通过有线连接共享wifi热点设置,让其他有无线网卡的终端连接上网。。
- 将win7电脑无线网变身WiFi热点,让手机、笔记本共享上网
- 将win7电脑无线网变身WiFi热点,让手机、笔记本共享上网