最近在海思3559平台上用rtl wifi模块做了一个AP,主要工作:
1.wifi模块驱动
2.hostapd
##首先看了下海思提供的内核,发现可选realtek 87xxu驱动,窃喜,打开编到内核。重烧插上wifi模块 ,果然不好使,提示 B720 untested,内核没有可使用的驱动,放弃内核。
平台下使用 lsusb 查看wifi模块的具体型号:
0BDA B720,确定是RTL8723BU,找到源码进行编译,重新测试,驱动OK,被内核识别。
##开启AP还需要 hostapd,
编译有点繁琐,主要有两个依赖:openssl libnl 。分别下载:
hostapd-2.6 libnl-1.1 openssl-1.1.0 ,交叉编译,挺费劲的,需要看他们的Make方式,最后合并 得到hostapd。
hostapd需要hostapd.config,网上抄过来。
当然并没有这样顺利结束。
hostapd 运行提示 Cannot open RFKILL control device,这个需要内核支持,menuconfig中搜索rfkill,打开相关配置重新编译。
烧内核,再次运行hostapd,提示 Could not select hw_mode and channel. 检查hostapd.config 中的channel 配置,选的1 换了些其他的均不行。没办法,跟踪hostapd源码,发现wifi模块提示的14个通道全部是关闭状态。
最后解决办法:突然发现wifi模块在插入时内核会检测到两个设备 wlan0 wlan1,一直使用的wlan0启动AP,当换成wlan1时 hostapd正常启动了。怀疑wifi驱动里有点区别。
最后,PC端连接AP,发现可以建立连接但是无法获得ip。
文件系统没有提供udhcpd,再去下载udhcpd交叉编译,启动,测试,连接成功。telentd ftpd就可以欢快的跑起来了
END》》