文章目录

  • 参考博客
    • 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模块相关推荐

  1. 嵌入式Linux移植USB网卡驱动

    开发板:友善之臂smart210 操作系统:Ubuntu 12,04 交叉编译器:arm-none-linux-gnueabi gcc version 4.3.2 WIFI 模组:TP-LINK TL ...

  2. 基于ARM的嵌入式Linux移植真实体验(3)――操作系统

    基于ARM的嵌入式Linux移植真实体验(3)――操作系统 宋宝华[email]21cnbao@21cn.com[/email] 出处:dev.yesky.com 在笔者撰写的<C语言嵌入式系统 ...

  3. 基于ARM的嵌入式Linux移植真实体验(1)――基本概念

    基于 ARM 的嵌入式 Linux 移植真实体验( 1 ) ――基本概念 宋宝华   [email]21cnbao@21cn.com[/email] 出处:dev.yesky.com 1. 引言 AR ...

  4. 嵌入式linux查看usb设备驱动程序,嵌入式Linux下USB驱动程序的设计

    嵌入式Linux下USB驱动程序的设计 usb概念:  USB(Universal Serial Bus)即通用串行总线,是一种全新的双向同步传输的支持热插拔的数据传输总线,其目的是为了提供一种兼容不 ...

  5. 基于ARM的嵌入式Linux移植真实体验(4)――设备驱动

    基于 ARM 的嵌入式 Linux 移植真实体验( 4 ) ――设备驱动 宋宝华 [email]21cnbao@21cn.com[/email] 出处:dev.yesky.com 设备驱动程序是操作系 ...

  6. 嵌入式linux 移植安卓,Android系统内核移植流程详解

    Android系统移植工作的目的是为了在特定的硬件上运行Android系统,由于Android系统用的是linux内核,因此内核移植和嵌入式linux移植差异不大,过程如下: (1)移植boot-lo ...

  7. ARM的嵌入式Linux移植体验之操作系统

    转自:[url]http://dev.yesky.com/153/2527653.shtml[/url] 06-08-13 08:00 作者: 宋宝华 出处: 天极开发 责任编辑:方舟 在笔者撰写的& ...

  8. 嵌入式linux 配置usb otg,嵌入式linux系统环境下USB设备的驱动实现

    0  引言 嵌入式linux系统环境以其易于移植裁减.内核小.效率高.完整.原代码开放及性能优异等特点,在嵌入式领域得到了非常广泛的应用.Linux的USB设备端的源代码中主要有USB device的 ...

  9. 基于ARM的嵌入式Linux移植真实体验1-基本概念

    1.引言 ARM是Advanced RISC Machines(高级精简指令系统处理器)的缩写,是ARM公司提供的一种微处理器知识产权(IP)核. ARM的应用已遍及工业控制.消费类电子产品.通信系统 ...

最新文章

  1. android 判断横竖屏的方法
  2. Iterator和ListIterator接口的使用和区别
  3. pep8 python 编码规范_编码规范的重要性
  4. C#设计模式之16-迭代器模式
  5. c++ idea 插件_IDEA的基本使用:让你的IDEA有飞一般的感觉 CSDN 博文精选
  6. 当物联网和区块链同台,太惊艳!
  7. 20.10-20.15 shell:for,while循环,break,continue,exit
  8. MICIN、LINEIN、LINEOUT、HPOUT、麦克风、耳机、扬声器一次说明白
  9. Win11切换桌面快捷键
  10. Android8.0通知适配
  11. hive 查询表中的数据来源hdfs 位置
  12. Go语言核心之美 3.4-Struct结构体
  13. 计算机里FC方式,谁知道头文字D里提到的FD,FR,FC,FF指的是什么驱动方式的车?...
  14. RCNN、Fast RCNN、Faster RCNN算法详细介绍
  15. 织梦如何更改默认的后台登录账号和密码(亲测可用)
  16. word打开文件出错怎么办?
  17. Selenium库实现推特爬虫
  18. 香港理工大学智能计算实验室招收PhD/博士后/研究助理
  19. JDBC+java+swing实现学生信息管理系统
  20. python开头声明_python开头——文件声明 详解

热门文章

  1. linux 添加开机启动项的三种方法。
  2. Anemometer安装
  3. 银行系统日终结算要多久_银行 核心系统的清算与结算 - 系统性能与软件架构 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  4. 2022年茶艺师(中级)考试题库模拟考试平台操作
  5. Tomcat 在本地创建虚拟目录myapp
  6. enovia PLM : add new value to SPEO
  7. 题解 [校内测试]图森破
  8. Java final与static
  9. 【阿旭机器学习实战】【13】决策树分类模型实战:泰坦尼克号生存预测
  10. 万亿产业进化论,装备企业的机会在哪里?