嵌入式 wifi 热点

时间:2022-01-01 20:15:16

记录惨烈的wifi热点移植过程,太痛苦了


嵌入式支持的wifi本来就很少,能够让wifi连接网络就可以了,但因为项目需要,没办法


首先要看下芯片是否支持ap就是热点模式,linux下查看 很简单 iw list 出现ap字就说明 支持 如果出现nl80211 not found.那就是不支持 


我的芯片是rt8188 驱动已经移植好了 可以连接上路由并自动获取ip


先在电脑上试试,参考http://blog.csdn.net/cupidove/article/details/38845049

很容易就在电脑上建立的wifi热点 

但是在开发板就就老是出现错误

各种错误 

invalid/unknown driver 'nl80211'


中间还有很多错误 ,看来各种资料 ,首先编译了十几遍驱动,网上说什么驱动不支持 不行,http://www.cnblogs.com/heat-man/p/4657157.html

驱动能让连接路由,那肯定就没问题。

无意中发现 友善210的开发板能够连接wifi 并且创建热点,在友善210开发群里遇到了正在搞同样功能的人,发现smart210 内核里面已经配置好了驱动,只要

执行modprobe rtl8192cu 2>/dev/null就可以加载驱动,然后用udhcp分配ip即可使用

而我的板子 驱动没有 hostapd配置工具没有 iw网卡工具也没有 udhcpd工具更没有 没办法 只能自己一个个移植了 



实现wifi热点错误 

嵌入式 wifi 热点


先前移植了hostap 0.7.3版本的 但是老是出错 卡了好几天 问了下  友善210群里的兄弟 发现他的版本是0.8.x嵌入式 wifi 热点


从hostapd官网下载了 移植好了 还是同样的错误 

后来从其他地方下载了驱动 发现里面有工具 一看版本还是0.8.x的 便移植嵌入式 wifi 热点


发现可以用 配置文件 就在源码里面 要用2G的那个 记住 一定要是RTL8188c*****linux_v****这样源码包里面的hostapd才能配置rt8188cu热点

执行 ./hostapd -B rtl_hostapd_2G.conf

发现 错误 SIOCGIFADDR failed, is the interface up and configured?: Cannot assign reque

这是因为没有给wan0配置ip

配置wlan0  ip这个谁都会吧

但又出错了 issue_probersp, alloc mgnt frame fail

百度 google都没遇到过这种问题 艹  唯一的搜索到的就是源码里面有这个打印错误的信息 

翻译了一下 说是分配架构失败 

仔细思考了 一下 wifi要成为热点 就是服务器 路由服务器必须给 能连接上的设备分配Ip

问搞运维的 但一个都没回答我 那没办法了 

发现 dhcp这个是分配ip的 

网上都是dhcp客户端的移植 客户端是自动获取ip的 服务端 才是分配ip的 

板子上就没有这个工具 又只能自己移植了

根据自己的经验  高版本的一般移植了都不能用 只能下载低版本的移植了 


嵌入式 wifi 热点


下载了个 udhcp0.9.8移植成了  移植步骤自己网上搜索一下 或者看它自己的文档

执行 ./udhcpd  /etc/udhcpd.conf

嵌入式 wifi 热点


又出错了 再跑群里问问  都没回答 自己搞


向别人要了个udhcp.con


配置如下

# udhcpd configuration file (/etc/udhcpd.conf)
# Values shown are defaults
 
# The start and end of the IP lease block
start		192.168.3.30
end		192.168.3.100
 
# The interface that udhcpd will use
interface	wlan0
 
# The maximum number of leases (includes addresses reserved
# by OFFER's, DECLINE's, and ARP conflicts). Will be corrected
# if it's bigger than IP lease block, but it ok to make it
# smaller than lease block.
max_leases	68
 
# The time period at which udhcpd will write out a dhcpd.leases
# file. If this is 0, udhcpd will never automatically write a
# lease file. Specified in seconds.
#auto_time	7200
 
# The amount of time that an IP will be reserved (leased to nobody)
# if a DHCP decline message is received (seconds)
#decline_time	3600
 
# The amount of time that an IP will be reserved
# if an ARP conflict occurs (seconds)
#conflict_time	3600
 
# How long an offered address is reserved (seconds)
#offer_time	60
 
# If client asks for lease below this value, it will be rounded up
# to this value (seconds)
#min_lease	60
 
# The location of the leases file
#lease_file	/var/lib/misc/udhcpd.leases
 
# The location of the pid file
#pidfile	/var/run/udhcpd.pid
 
# Every time udhcpd writes a leases file, the below script will be called
#notify_file			# default: no script
#notify_file	dumpleases	# useful for debugging
 
# The following are bootp specific options
# next server to use in bootstrap
#siaddr		192.168.0.22	# default: 0.0.0.0 (none)
# tftp server name
#sname		zorak		# default: none
# tftp file to download (e.g. kernel image)
#boot_file	/var/nfs_root	# default: none
 
# Static leases map
#static_lease 00:60:08:11:CE:4E 192.168.0.54
#static_lease 00:60:08:11:CE:3E 192.168.0.44


# The remainder of options are DHCP options and can be specified with the
# keyword 'opt' or 'option'. If an option can take multiple items, such
# as the dns option, they can be listed on the same line, or multiple
# lines.
opt	dns	192.168.3.1 8.8.8.8
option	subnet	255.255.255.0
opt	router	192.168.3.1
opt	wins	192.168.3.1
 
option	dns	129.219.13.81	# appended to above DNS servers for a total of 3
option	domain	210.FriendlyARM.com
option	lease	86400		# default: 10 days
 
# Arbitrary option in hex form:
option	0x08	01020304	# option 8: "cookie server IP addr: 1.2.3.4"
 
# Currently supported options (for more info, see options.c):
#opt lease      NUM
#opt subnet     IP
#opt broadcast  IP
#opt router     IP_LIST
#opt ipttl      NUM
#opt mtu        NUM
#opt hostname   STRING		# client's hostname
#opt domain     STRING		# client's domain suffix
#opt search     STRING_LIST	# search domains
#opt nisdomain  STRING
#opt timezone   NUM		# (localtime - UTC_time) in seconds. signed
#opt tftp       STRING		# tftp server name
#opt bootfile   STRING		# tftp file to download (e.g. kernel image)
#opt bootsize   NUM		# size of that file
#opt rootpath   STRING		# (NFS) path to mount as root fs
#opt wpad       STRING
#opt serverid   IP		# default: server's IP
#opt message    STRING		# error message (udhcpd sends it on success too)
# Options specifying server(s)
#opt dns        IP_LIST
#opt wins       IP_LIST
#opt nissrv     IP_LIST
#opt ntpsrv     IP_LIST
#opt lprsrv     IP_LIST
#opt swapsrv    IP
# Obsolete options, no longer supported
#opt logsrv     IP_LIST	# 704/UDP log server (not syslog!)
#opt namesrv    IP_LIST	# IEN 116 name server, obsolete (August 1979!!!)
#opt cookiesrv  IP_LIST	# RFC 865 "quote of the day" server, rarely (never?) used
#opt timesrv    IP_LIST	# RFC 868 time server, rarely (never?) used
 
 


试了试 什么unable 

option	0x08	01020304	# option 8: "cookie server IP addr: 1.2.3.4"
 

把这行去掉  

试试 可以了 艹 真TM的 搞了 一个多星期  移植了五六十变 hostapd工具 rt8188驱动 搞死人  记录下