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模块的指示灯在闪烁。

相关文章:

  • 2021-06-03
  • 2022-12-23
  • 2021-11-10
  • 2022-01-02
  • 2021-05-04
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-05-10
  • 2021-10-09
  • 2021-12-02
  • 2022-12-23
  • 2022-12-23
  • 2021-04-13
  • 2022-12-23
相关资源
相似解决方案