Linux环境下使用WIFI模块:WIFI驱动移植

WIFI驱动移植

实验平台

内核版本:Linux-4.19.5
开发板:SAMSUNG JZ2440
WIFI模块:Ralink rt3070

查看WIFI设备的PID

直接将WIFI模块接到电脑的USB插口,然后在windows的设备管理器->网络适配器中可以看到插入的USB-WIFI设备
《Linux环境下使用WIFI模块:WIFI驱动移植》
右键属性->详细信息->硬件ID
《Linux环境下使用WIFI模块:WIFI驱动移植》
可以看到这款WIFI模块的PID为0x3070。
通过这个网站 http://linuxwireless.sipsolutions.net/en/users/Devices/USB/,我们可以看一下目前内核是否可以支持这个usb设备
《Linux环境下使用WIFI模块:WIFI驱动移植》

配置内核

在内核的无线网络目录下搜索该WIFI模块的PID“0x3070”,grep "0x3070" -nR
《Linux环境下使用WIFI模块:WIFI驱动移植》
说明支持该WIFI模块的文件为rt2800usb.c,所以我们要把该文件编译到内核里面去,到对应的目录**rt2x00/**下打开Makefile文件可以看到
《Linux环境下使用WIFI模块:WIFI驱动移植》
说明我们需要配置 CONFIG_RT2800USB这个选项。

通过make menuconfig中的search功能,可以知道需要配置哪些选项
《Linux环境下使用WIFI模块:WIFI驱动移植》
这边给出我用的Ralink rt3070 WIFI模块的配置项
《Linux环境下使用WIFI模块:WIFI驱动移植》
接着编译内核make uImage和模块make modules
查看相应的模块文件
《Linux环境下使用WIFI模块:WIFI驱动移植》
最后把uImage和4个模块文件放到网络文件夹下等待测试。

测试WIFI模块

用新内核启动开发板,挂载开发板的文件系统到虚拟机上,加载4个模块文件。这边需要注意一定要按顺序,不然在加载模块的时候会报错。
《Linux环境下使用WIFI模块:WIFI驱动移植》
模块全部加载完成以后我们插入USB-WIFI模块
《Linux环境下使用WIFI模块:WIFI驱动移植》
使用ifconfig wlan0 192.168.9.123给模块配置IP地址,发现会报错
《Linux环境下使用WIFI模块:WIFI驱动移植》
原来是每一个WIFI模块厂家都配备了一个固件库,我这边用的是rt2870.bin,只要把这个文件放到 /lib/firmware/ 目录下就行。
我们重新执行一次ifconfig wlan0 192.168.9.123,然后查看一下IP
《Linux环境下使用WIFI模块:WIFI驱动移植》
发现IP配置成功,并且WIFI模块的指示灯在闪烁。

    原文作者:丶未云何龙
    原文地址: https://blog.csdn.net/yunlong654/article/details/88635398
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞