wifi模块配置sta模式下出现的问题

2019-04-15 15:21发布

1.error: unknown field 'private' specified in initializer 内核编译时没加驱动 问题原因:是因为在配置Makefile时,我们指定的内核在配置时不支持802.11的无线设备驱动。   解决办法:重新配置编译指定的Linux Kernel,将Device Drivers==>Network deivce support==>Wireless LAN==><*> USB ZD1201 based Wireless device support,编译即可   2.make[1]: /opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-:命令未找到 Makefile时交叉编译器后面加了空格   3.error: implicit declaration of function 'usb_buffer_alloc' 是内核版本差异造成的,经过努力发现2.6.35 内核后, usb_buffer_alloc 和 usb_buffer_free 被替换成 usb_alloc_coherent 和 usb_free_coherent。所以编译才会报错。修改 include/os/rt_linux.h 文件。如下   #define RTUSB_URB_ALLOC_BUFFER(pUsb_Dev, BufSize, pDma_addr) usb_buffer_alloc(pUsb_Dev, BufSize, GFP_ATOMIC, pDma_addr) #define RTUSB_URB_FREE_BUFFER(pUsb_Dev, BufSize, pTransferBuf, Dma_addr) usb_buffer_free(pUsb_Dev, BufSize, pTransferBuf, Dma_addr) 替换成: #define RTUSB_URB_ALLOC_BUFFER(pUsb_Dev, BufSize, pDma_addr) usb_alloc_coherent(pUsb_Dev, BufSize, GFP_ATOMIC, pDma_addr) #define RTUSB_URB_FREE_BUFFER(pUsb_Dev, BufSize, pTransferBuf, Dma_addr) usb_free_coherent(pUsb_Dev, BufSize, pTransferBuf, Dma_addr)  
4.>: insmod /usr/rt3070sta.ko rt3070sta: Unknown symbol usb_alloc_urb (err 0) rt3070sta: Unknown symbol usb_free_urb (err 0) rt3070sta: Unknown symbol usb_alloc_coherent (err 0) rt3070sta: Unknown symbol usb_register_driver (err 0) rt3070sta: Unknown symbol usb_put_dev (err 0) rt3070sta: Unknown symbol usb_get_dev (err 0) rt3070sta: Unknown symbol usb_submit_urb (err 0) rt3070sta: Unknown symbol usb_free_coherent (err 0) rt3070sta: Unknown symbol usb_control_msg (err 0) rt3070sta: Unknown symbol usb_deregister (err 0) rt3070sta: Unknown symbol usb_kill_urb (err 0) insmod: can't insert '/usr/rt3070sta.ko': unknown symbol in module or invalid parameter   原因是WiFi未加载usb驱动。。修改/os/linux/usb_main_dev.c。。在文件开头加上下面一行 MODULE_LICENSE("GPL"); 从新编译即可   5.现在大部分WiFi加密都是wpa2加密。。Iwconfig只能连接未加密的或者wep加密的 命令iwconfig wlan0 essid "zmd" key 12345678
这种方式只是针对WEP加密方式的,目前用的很少了
WEP一般可以有4个密码,分ascii字符和16进制两个格式,并且WEP格式的密码数目是有控制的
有5个字符的,13个字符等,所以推断楼主的加密方式应该不是WEP格式

如果不是WEP格式,则都可以用wpa_supplicant工具实现联网,   6.make  openssl-0.9.8l时候出现没找到/user/bin/perl5没找到 这是因为是使用的openssl-0.9.8l。。如果是openssl-0.9.8i或者其他版本不回这样。。因为makefile中选择的是/user/bin/perl5而我们的虚拟机上只有perl5.10.1。。两种方法。。一种是将/user/bin/perl5.10.1拷贝一份名为perl5。。二是将makefile中的perl5.10.1改为perl5