嵌入式Linux:移植USB接口的RTL8188EUS、RTL8188ETV WIFI模块
文章目录
- 参考博客
- github上面的源码
- 神仙网站
- 一、驱动移植
- 二、内核配置
- 1、配置USB支持设备
- 2、配置支持WIFI设备
- 3、配置支持IEEE 802.11
- 三、编译、拷贝和运行
- 1、运行测试
- 2、连接WIFI
- 3、设置上电自动连接WIFI
这里移植的是RTL8188EU,可以兼容RTL8188ETV
参考博客
Linux使用wifi(RTL8188EUS)
linux USB无线网卡(RTL8188EUS)驱动
全志A40i移植 RTL8188FTV/RTL8188FU USB-WiFi
Linux无线网卡芯片RTL8188EUS驱动安装
rtl8188eu 驱动移植
详细记录丨Realtek RTL8188FU WiFi 移植超详细步骤
1、编译过程,部分参考资料如下:
- 【推荐】Linux 添加 WiFi 驱动(https://blog.csdn.net/sbddbfm/article/details/101222266)
- linux下wifi工具iw的交叉编译(https://blog.csdn.net/weixin_42432281/article/details/85786866)
- rtl8188 驱动移植 wifi工具移植(https://blog.csdn.net/wmdshhzsmile/article/details/102792811)
- rtl8188 驱动移植 wifi工具移植(https://blog.csdn.net/wmdshhzsmile/article/details/102792811)
- rtl8188etv 无线网卡驱动移植(https://blog.csdn.net/imlsq/article/details/72844532)
2、解决问题,部分参考资料如下:
- 【问题1】line 1: syntax error: unexpected word (expecting “)”)(https://blog.csdn.net/qq_26093511/article/details/78932765)
- 【问题2】wifi模块配置ap模式下出现的问题(https://blog.csdn.net/qq_41877422/article/details/103194360)
github上面的源码
源码一:https://github.com/quickreflex/rtl8188eus
源码二:https://github.com/lwfinger/rtl8188eu
quickreflex的github上有说:支持 rtl8188eu、rtl8188eus 和 rtl8188etv 芯片的 Wifi 驱动程序,并在新的 linux 内核 (5.1.x) 下工作。
lwfinger的代码一直在更新。
Linux无线网卡芯片RTL8188EUS驱动安装文章中指出对两种驱动都进行了安装,测试发现,lwfinger的驱动仍然无法创建ap, 而quickreflex的驱动则可以完美创建ap(使用create_ap ), 问题解决. 另外,也有一些其它的驱动,例如realtek官方提供的驱动(2013年的),其版本太老,无法编译(内核版本不支持).
神仙网站
查无线网卡芯片的网站:https://wikidevi.wi-cat.ru/Main_Page
瑞昱的无线网卡芯片:https://wikidevi.wi-cat.ru/Realtek
一、驱动移植
驱动移植常用命令:
- 配置内核:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
- 编译内核:
time make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
- 拷贝内核到启动卡:
sudo cp ./arch/arm/boot/zImage /media/liefyuan/BOOT/
- 拷贝驱动模块到启动卡:
sudo cp ./drivers/staging/rtl8188eu/r8188eu.ko /media/liefyuan/rootfs/lib/modules/
- 安全弹出启动卡:
sudo sync&&eject /dev/sdb
下载lwfinger源码,解压出来,拷贝到kernel的drivers/net/wireless/realtek/rtlwifi目录,改个名字为rtl8188eu。
如下:
其实该目录下还有一个名为的rtl8188eufw.bin的固件到时候要拷贝到开发板的根文件系统/lib/firmware/rtlwifi/
目录下:
编辑:drivers/net/wireless/realtek/rtlwifi/Kconfig
文件,注释掉RTL8192CU相关配置,并增加RTL8188EU配置,如下:
#config RTL8192CU
# tristate "Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter"
# depends on USB
# select RTLWIFI
# select RTLWIFI_USB
# select RTL8192C_COMMON
# ---help---
# This is the driver for Realtek RTL8192CU/RTL8188CU 802.11n USB
# wireless network adapters.
#
# If you choose to build it as a module, it will be called rtl8192cuconfig RTL8188EUtristate "Realtek 8188EU USB WiFi"depends on USBselect RTLWIFIselect RTLWIFI_USBselect RTL8192C_COMMON---help---Help message of RTL8188EU
编辑:drivers/net/wireless/realtek/rtlwifi/Makefile
文件,注释掉RTL8192CU相关配置,如下:
# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_RTLWIFI) += rtlwifi.o
rtlwifi-objs := \base.o \cam.o \core.o \debug.o \efuse.o \ps.o \rc.o \regd.o \stats.ortl8192c_common-objs += \obj-$(CONFIG_RTLWIFI_PCI) += rtl_pci.o
rtl_pci-objs := pci.oobj-$(CONFIG_RTLWIFI_USB) += rtl_usb.o
rtl_usb-objs := usb.oobj-$(CONFIG_RTL8192C_COMMON) += rtl8192c/
obj-$(CONFIG_RTL8192CE) += rtl8192ce/
#obj-$(CONFIG_RTL8192CU) += rtl8192cu/
obj-$(CONFIG_RTL8192SE) += rtl8192se/
obj-$(CONFIG_RTL8192DE) += rtl8192de/
obj-$(CONFIG_RTL8723AE) += rtl8723ae/
obj-$(CONFIG_RTL8723BE) += rtl8723be/
obj-$(CONFIG_RTL8188EE) += rtl8188ee/
obj-$(CONFIG_RTLBTCOEXIST) += btcoexist/
obj-$(CONFIG_RTL8723_COMMON) += rtl8723com/
obj-$(CONFIG_RTL8821AE) += rtl8821ae/
obj-$(CONFIG_RTL8192EE) += rtl8192ee/
然后,内屏配置的时候就出现了可以配置的界面了:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
拷贝.ko文件到文件系统中/lib/modules目录中:
二、内核配置
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
1、配置USB支持设备
Device Drivers --->[*] USB support ---><*> Support for Host-side USB<*> EHCI HCD (USB 2.0) support<*> OHCI HCD (USB 1.1) support<*> ChipIdea Highspeed Dual Role Controller[*] ChipIdea host controller[*] ChipIdea driver debug
2、配置支持WIFI设备
我的是linux5.2他的目录是:
Device Drivers ---> [*] Network device support --->[*] Wireless LAN --->[*] Intersil devices<*> IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)[*] Support downloading firmware images with Host AP driver [*] Support for non-volatile firmware download
之前用的是linux4.X的kernel,这个配置不是在Intersil devices子目录下的而是在上一个配置目录上的一眼就可以看到的。linux5.2变了,搞的找了好久都没有看到这个配置。
3、配置支持IEEE 802.11
三、编译、拷贝和运行
- 编译内核:
time make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
- 拷贝内核到开发板:
sudo cp ./arch/arm/boot/zImage /media/liefyuan/BOOT/
- 拷贝WIFI驱动模块到开发板:
sudo cp ./drivers/staging/rtl8188eu/r8188eu.ko /media/liefyuan/rootfs/lib/modules/
- 拷贝WIFI固件到开发板:
sudo cp ./drivers/net/wireless/realtek/rtlwifi/rtl8188eu/rtl8188eufw.bin /media/liefyuan/rootfs/lib/firmware/rtlwifi
1、运行测试
参考:https://blog.csdn.net/L1643319918/article/details/125244982
安装驱动模块:
# insmod /lib/modules/r8188eu.ko
[ 29.833682] r8188eu: module is from the staging directory, the quality is unknown, you have been warned.
[ 29.860682] Chip Version Info: CHIP_8188E_Normal_Chip_TSMC_D_CUT_1T1R_RomVer(0)
[ 29.902286] usbcore: registered new interface driver r8188eu# lsmod
Module Size Used by Tainted: G
r8188eu 368640 0# ifconfig -a
lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0UP LOOPBACK RUNNING MTU:65536 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)wlan0 Link encap:Ethernet HWaddr CC:D2:9B:38:64:D6BROADCAST MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
打开wlan0:
# ifconfig wlan0 up
[ 38.520346] MAC Address = cc:d2:9b:38:64:d6
#
2、连接WIFI
其他测试:
- 扫描路由器:
iwlist wlan0 scan
连接的 WIFI 热点扫描到以后就可以连接了,先在开发板根文件系统的/etc 目录下创建一个名为“wpa_supplicant.conf”的配置文件,此文件用于配置要连接的 WIFI 热点以及 WIFI 秘码,比如我要连接到“MERCURY_6666”这个热点上,因此 wpa_supplicant.conf 文件内容如下所示:
# vi /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1network={ssid="MERCURY_6666"key_mgmt=WPA-PSKproto=WPA2pairwise=CCMPpsk="1234567"
}
ssid 是要连接的 WIFI 热点名字,这里我要连接的是“MERCURY_6666”这个 WIFI 热点。
psk 就是要连接的 WIFI 热点密码,根据自己的实际情况填写即可。
注意, wpa_supplicant.conf 文件对于格式要求比较严格,“=”前后一定不能有空格,也不要用 TAB 键来缩进,比如第 4 行和 5 行的缩进应该采用空格,否则的话会出现 wpa_supplicant.conf文件解析错误!最重要的一点!
wpa_supplicant.conf 文件内容要自己手动输入,不要偷懒复制粘贴!!!
wpa_supplicant.conf 文 件 编 写 好 以 后 再 在 开 发 板 根 文 件 系 统 下 创 建 一 个
/var/run/wpa_supplicant
目录, wpa_supplicant 工具要用到此目录!命令如下:
创建一个socket通信的目录
mkdir /var/run/wpa_supplicant -p
一切准备好以后就可以使用 wpa_supplicant 工具让 RTL8188 USB WIFI 连接到热点上,输入如下命令:
wpa_supplicant -D wext -c /etc/wpa_supplicant.conf -i wlan0 &
# wpa_supplicant -D wext -c /etc/wpa_supplicant.conf -i wlan0 &
# Successfully initialized wpa_supplicant
rfkill: Cannot get wiphy information
ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
wlan0: Trying to associate with c8:e7:d8:34:27:84 (SSID='MERCURY_2784' freq=2462 MHz)
wlan0: Association request to the driver failed
[ 387.033540] R8188EU: assoc success
wlan0: Associated with c8:e7:d8:34:27:84
wlan0: WPA: Key negotiation completed with c8:e7:d8:34:27:84 [PTK=CCMP GTK=CCMP]
wlan0: CTRL-EVENT-CONNECTED - Connection to c8:e7:d8:34:27:84 completed [id=0 id_str=]
当 RTL8188 连接到 WIFI 热点上以后会输出“wlan0: CTRL-EVENTCONNECTED”字样。接下来就是最后一步了,设置 wlan0 的 IP 地址,这里使用 udhcpc 命令从路由器申请 IP 地址,输入如下命令:
udhcpc -i wlan0 //从路由器获取 IP 地址
# udhcpc -i wlan0
udhcpc: started, v1.27.2
udhcpc: sending discover
udhcpc: sending select for 192.168.1.103
udhcpc: lease of 192.168.1.103 obtained, lease time 7200
deleting routers
adding dns 202.96.134.33
adding dns 202.96.128.68
测试一下网络通信
# ifconfig -a
lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0UP LOOPBACK RUNNING MTU:65536 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)wlan0 Link encap:Ethernet HWaddr CC:D2:9B:38:64:D6inet addr:192.168.1.103 Bcast:192.168.1.255 Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:11 errors:0 dropped:3 overruns:0 frame:0TX packets:11 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:2463 (2.4 KiB) TX bytes:1837 (1.7 KiB)# ping www.baidu.com
PING www.baidu.com (14.215.177.39): 56 data bytes
64 bytes from 14.215.177.39: seq=0 ttl=56 time=9.775 ms
64 bytes from 14.215.177.39: seq=1 ttl=56 time=10.165 ms
64 bytes from 14.215.177.39: seq=2 ttl=56 time=9.079 ms
64 bytes from 14.215.177.39: seq=3 ttl=56 time=9.456 ms
64 bytes from 14.215.177.39: seq=4 ttl=56 time=8.884 ms
^C
--- www.baidu.com ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 8.884/9.471/10.165 ms
没有问题!!
3、设置上电自动连接WIFI
在/etc/init.d/rcS
文件中的最后一行添加
vi /etc/init.d/rcS
insmod /lib/modules/r8188eu.ko
sleep 1s
ifconfig wlan0 up
sleep 1s
wpa_supplicant -D wext -c /etc/wpa_supplicant.conf -i wlan0 &
sleep 3s
udhcpc -i wlan0
sleep 1s
嵌入式Linux:移植USB接口的RTL8188EUS、RTL8188ETV WIFI模块相关推荐
- 嵌入式Linux移植USB网卡驱动
开发板:友善之臂smart210 操作系统:Ubuntu 12,04 交叉编译器:arm-none-linux-gnueabi gcc version 4.3.2 WIFI 模组:TP-LINK TL ...
- 基于ARM的嵌入式Linux移植真实体验(3)――操作系统
基于ARM的嵌入式Linux移植真实体验(3)――操作系统 宋宝华[email]21cnbao@21cn.com[/email] 出处:dev.yesky.com 在笔者撰写的<C语言嵌入式系统 ...
- 基于ARM的嵌入式Linux移植真实体验(1)――基本概念
基于 ARM 的嵌入式 Linux 移植真实体验( 1 ) ――基本概念 宋宝华 [email]21cnbao@21cn.com[/email] 出处:dev.yesky.com 1. 引言 AR ...
- 嵌入式linux查看usb设备驱动程序,嵌入式Linux下USB驱动程序的设计
嵌入式Linux下USB驱动程序的设计 usb概念: USB(Universal Serial Bus)即通用串行总线,是一种全新的双向同步传输的支持热插拔的数据传输总线,其目的是为了提供一种兼容不 ...
- 基于ARM的嵌入式Linux移植真实体验(4)――设备驱动
基于 ARM 的嵌入式 Linux 移植真实体验( 4 ) ――设备驱动 宋宝华 [email]21cnbao@21cn.com[/email] 出处:dev.yesky.com 设备驱动程序是操作系 ...
- 嵌入式linux 移植安卓,Android系统内核移植流程详解
Android系统移植工作的目的是为了在特定的硬件上运行Android系统,由于Android系统用的是linux内核,因此内核移植和嵌入式linux移植差异不大,过程如下: (1)移植boot-lo ...
- ARM的嵌入式Linux移植体验之操作系统
转自:[url]http://dev.yesky.com/153/2527653.shtml[/url] 06-08-13 08:00 作者: 宋宝华 出处: 天极开发 责任编辑:方舟 在笔者撰写的& ...
- 嵌入式linux 配置usb otg,嵌入式linux系统环境下USB设备的驱动实现
0 引言 嵌入式linux系统环境以其易于移植裁减.内核小.效率高.完整.原代码开放及性能优异等特点,在嵌入式领域得到了非常广泛的应用.Linux的USB设备端的源代码中主要有USB device的 ...
- 基于ARM的嵌入式Linux移植真实体验1-基本概念
1.引言 ARM是Advanced RISC Machines(高级精简指令系统处理器)的缩写,是ARM公司提供的一种微处理器知识产权(IP)核. ARM的应用已遍及工业控制.消费类电子产品.通信系统 ...
最新文章
- android 判断横竖屏的方法
- Iterator和ListIterator接口的使用和区别
- pep8 python 编码规范_编码规范的重要性
- C#设计模式之16-迭代器模式
- c++ idea 插件_IDEA的基本使用:让你的IDEA有飞一般的感觉 CSDN 博文精选
- 当物联网和区块链同台,太惊艳!
- 20.10-20.15 shell:for,while循环,break,continue,exit
- MICIN、LINEIN、LINEOUT、HPOUT、麦克风、耳机、扬声器一次说明白
- Win11切换桌面快捷键
- Android8.0通知适配
- hive 查询表中的数据来源hdfs 位置
- Go语言核心之美 3.4-Struct结构体
- 计算机里FC方式,谁知道头文字D里提到的FD,FR,FC,FF指的是什么驱动方式的车?...
- RCNN、Fast RCNN、Faster RCNN算法详细介绍
- 织梦如何更改默认的后台登录账号和密码(亲测可用)
- word打开文件出错怎么办?
- Selenium库实现推特爬虫
- 香港理工大学智能计算实验室招收PhD/博士后/研究助理
- JDBC+java+swing实现学生信息管理系统
- python开头声明_python开头——文件声明 详解
热门文章
- linux 添加开机启动项的三种方法。
- Anemometer安装
- 银行系统日终结算要多久_银行 核心系统的清算与结算 - 系统性能与软件架构 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
- 2022年茶艺师(中级)考试题库模拟考试平台操作
- Tomcat 在本地创建虚拟目录myapp
- enovia PLM : add new value to SPEO
- 题解 [校内测试]图森破
- Java final与static
- 【阿旭机器学习实战】【13】决策树分类模型实战:泰坦尼克号生存预测
- 万亿产业进化论,装备企业的机会在哪里?