调试记录-wifi模块驱动

按照周立功的指导手册进行wifi驱动移植,将生产的两个驱动模块放到核心板的/opt目录下

drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko

同时,新增文件insert_wifi.sh,内容如下:

#/bin/sh
insmod /opt/brcmutil.ko && #加载 brcmutil.ko 完成,才执行下一行命令,加载 brcmfmac.ko
insmod /opt/brcmfmac.ko
sleep 2
ifconfig wlan0 up

编辑 WiFi 配置文件/etc/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
	ssid="QZYN-300M"
	psk="123456789"
}

问题1:只读文件系统

周立功为了系统安全,将/etc设置为只读文件系统,修改需要在前面加wr,即使用这个命令来打开文件并修改

wr vi /etc/wpa_supplicant.conf

执行如下命令,连接/etc/wpa_supplicant.conf 配置文件中描述的 WiFi 热点.

wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf -B 

周立功原来的指导手册是使用这个命令,多出来的> /dev/null 2>&1,主要意思是产生的错误报警不报告到终端,直接丢弃掉,这样不利于调试,调试的时候可以先不加。我在调试的时候,配置文件/etc/wpa_supplicant.conf里的psk,被我误写成了key_mgmt,一直也没有错误记录爆出来,但就是连不上wifi,耽误了不少时间。

wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf -B > /dev/null 2>&1

经过以上操作以后,会出现一个报错,但是这个错误不会影响wifi连接。我在调试的时候,一直没连上wifi,以为是这个错误导致的,实际上是由于wifi信号不好,这里也耽误了不少时间。
在这里插入图片描述
也就是说,rfkill这个错误,可以忽略。

rfkill: Cannot open RFKILL control device

问题2:WIFI连接不上

能搜到wifi,就是连接不上,状态如下:

root@IoT-A6G2C opt]# wpa_cli -iwlan0 status
wpa_state=SCANNING
address=28:ed:e0:f8:c5:49
uuid=e806d8f8-f685-5316-9f52-924ab8f92c50

可能是由于wifi的信号质量不好。信号质量-81属于信号不太好的状态。

34:46:ec:55:13:98       2437    -81     [WPA2-PSK-CCMP][WPS][ESS]       QZYN-300M

手头暂时确实天线,就把核心板拿到路由器边上,就可以连接上了。

root@IoT-A6G2C opt]# wpa_cli -iwlan0 status
bssid=34:46:ec:55:13:98
freq=2437
ssid=QZYN-300M
id=0
mode=station
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2-PSK
wpa_state=COMPLETED
address=28:ed:e0:f8:c5:49
uuid=e806d8f8-f685-5316-9f52-924ab8f92c50
[root@IoT-A6G2C opt]# udhcpc -i wlan0
udhcpc (v1.23.2) started
Sending discover...
Sending select for 192.168.3.8...
Lease of 192.168.3.8 obtained, lease time 86400
deleting routers
adding dns 192.168.3.1
[root@IoT-A6G2C opt]#

问题3:开机自动启动

如何实现开机自动连上wifi,需要修改开机启动脚本/etc/init.d/S90start_userapp.sh,增加内容如下:

#enable wifi
cd /opt
./insert-wifi.sh
sleep 6
wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf -B
sleep 3
udhcpc -i wlan0

开机以后,自动执行的结果如下:

brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Apr 22 2013 14:50:00 version 5.90.195.89.6 FWID 01-b30a427d
brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code
fec 20b4000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Successfully initialized wpa_supplicant
rfkill: Cannot open RFKILL control device
udhcpc (v1.23.2) started
Sending discover...
Sending select for 192.168.43.93...
Lease of 192.168.43.93 obtained, lease time 3600
deleting routers
adding dns 192.168.43.1
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值