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

本文列举并解决了配置WiFi模块sta模式时遇到的几个问题,包括内核编译缺少驱动、Makefile配置错误、内核版本不兼容导致的函数声明问题、加载模块时未知符号错误以及WPA2加密的连接方法。同时提到了openssl编译时的Perl版本问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值