嵌入式 wifi 热点

记录惨烈的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 热点_第1张图片


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


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

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


发现可以用 配置文件 就在源码里面 要用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的 

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

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




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

执行 ./udhcpd  /etc/udhcpd.conf

嵌入式 wifi 热点_第3张图片


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


向别人要了个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驱动 搞死人  记录下 



你可能感兴趣的:(嵌入式)