Linux学习第54天:Linux WIFI 驱动:蓝星互联

news2024/11/22 23:59:14

Linux版本号4.1.15   芯片I.MX6ULL                                 大叔学Linux    品人间百味  思文短情长


       数字化、现代化的今天,随处的WIFI给与了大众极大的方便,也感受到了科技的力量。万物互联、无线互联越来越成为一个不可逆转的趋势。现在比较火的马斯克的卫星网络一旦组网成功,在地球的每个角落都能畅联,不仅信号强、速度快,将指数级别的催发科技的进一步突飞猛进,各种应用将层出不穷。如果将地球看做是一个局域网,卫星网络将类似WiFi,靠无线通信的互联深化蓝星的交流互通。

        本章的思维导图如下: 

一、WiFi驱动添加与编译

1、向Linux内核添加WiFi驱动

        只需要将 WIFI 驱动源码添加到 Linux 内核中,然后通过图形化界面配置,选择将其编译成模块即可.

1)rtl81xx 驱动文件浏览
2)删除 linux 内核自带的 RTL8192CU 驱动

3)将 rtl81xx 驱动添加到 Linux 内核中
        将 realtek 整个目录拷贝到 ubuntu 下 Linux 内核源码中的 drivers/net/wireless 目录下.
4)修改 drivers/net/wireless/Kconfig

        打开 drivers/net/wireless/Kconfig,在里面加入下面这一行内容:
        source "drivers/net/wireless/realtek/Kconfig"

5)drivers/net/wireless/Makefile

        在里面加入下面一行内容:obj-y += realtek/
 

2.配置Linux内核

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 device controller
                                -> [*] ChipIdea host controller

2)配置支持 WIFI 设备

路径如下:

-> Device Drivers
        -> [*] Network device support
                -> [*] Wireless LAN
                        -> <*> 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

3)配置支持 IEEE 802.11

路径如下:

-> Networking support
        -> -*- Wireless
                -> [*] cfg80211 wireless extensions compatibility
                -> <*> Generic IEEE 802.11 Networking Stack (mac80211)

        重新编译一下 Linux 内核,得到新的 zImage。
3.编译WiFi驱动

        执行“make menuconfig”命令,打开 Linux 内核配置界面,然后按照如下路径选择将 rtl81xx驱动编译为模块。

 -> Devices Drivers

        -> Network device support (NETDEVICES [=y])
                -> Wireless LAN (WLAN [=y])
                        -> Realtek wifi (REALTEK_WIFI [=m])
                                -> rtl8189ftv sdio wifi
                                -> rtl8188eus usb wifi
                                -> Realtek 8192C USB WiFi

        选中“rtl8189fs/ftv sdio wifi”、“rtl8188eus usb wifi” 和“Realtek 8192C USB WiFi”,将其编译为模块。执行如下命令编译模块:
                                     make modules -j12 //编译驱动模块
        编译完成以后就会在 rtl8188EUS、 rtl8189FS 和 rtl8192CU 文件夹下分别生成 8188eu.ko、8189fs.ko 和 8192cu.ko 这三个.ko 文件

        8188eu.ko、 8189fs.ko 和 8192cu.ko 就是我们需要的 RTL8188EUS、RTL8189FS 和 RTL8188CUS/8192CU 的 驱 动 模 块 文 件 , 将 这 三 个 文 件 拷 贝 到rootfs/lib/modules/4.1.15 目录中,命令如下:

sudo cp 8189fs.ko /home/zuozhongkai/linux/nfs/rootfs/lib/modules/4.1.15/ -rf

sudo cp 8188eu.ko /home/zuozhongkai/linux/nfs/rootfs/lib/modules/4.1.15/ -rf
sudo cp 8192cu.ko /home/zuozhongkai/linux/nfs/rootfs/lib/modules/4.1.15/ -rf
        将新编译出来的zImage镜像文件拷贝到 Ubuntu 中的 tftpboot 目录下,命令如下:
cp arch/arm/boot/zImage /home/zuozhongkai/linux/tftpboot/ -f
        然后重启开发板!!!

4.驱动加载测试

1)RTL8188 USB WIFI 驱动测试

        加载一下 8188eu.ko、 8189fs.ko 和 8192cu.ko 这三个驱动文件:

depmod //第一次加载驱动的时候需要运行此命令
modprobe 8188eu.ko //RTL8188EUS 模块加载 8188eu.ko 模块
modprobe 8192cu.ko //RTL8188CUS 模块加载 8192cu.ko 模块

        输入“ifconfig -a”命令,查看 wlanX(X=0….n)网卡是否存在.


2)RTL8189 SDIO WIFI 驱动测试


         输入命令加载 8189fs.ko 这个驱动模块:

depmod //第一次加载驱动的时候需要运行此命令
modprobe 8189eu.ko //加载驱动模块

        使用“ifconfig -a”命令查看一下是否有 wlanX(X=0…n)网卡存在。
 

二、wireless tools工具移植与测试

1.wireless tools移植

        wireless tools 是操作 WIFI 的工具集合,最常用的就是 iwlist【扫描】 和 iwconfig 【设置】这两个工具。

        进入到 iwlist_for_visteon-master 文件夹里面,打开Makefile 文件,修改 Makefile 中的 CC、 AR 和 RANLIB 这三个变量。

        修改完成以后就可以使用如下命令编译:

make clean //先清理一下工程
make //编译

sudo cp iwlist iwconfig iwspy iwpriv ifrename /home/zuozhongkai/linux/nfs/rootfs/usr/bin/ -f
sudo cp libiw.so.29 /home/zuozhongkai/linux/nfs/rootfs/usr/lib/ -f

2.wireless tools工具测试

        工具:iwlist
        将 RTL8188 WIFI 模块插到开发板的 USB HOST 接口上,然后加载 RTL8188
驱动模块 8188eu.ko,驱动加载成功以后在打开 wlan0 网卡,命令如下:

modprobe 8188eu.ko
ifconfig wlan0 up
//加载 RTL8188 驱动模块
//打开 wlan0 网卡

        wlan0 网卡打开以后就可以使用 iwlist 命令查找当前环境下的 WIFI 热点信息,也就是无线
路由器,输入如下命令:
                                                                        iwlist wlan0 scan
        上述命令就会搜索当前环境下的所有 WIFI 热点,然后将这些热点的信息信息答应出来,
包括 MAC 地址、 ESSID(WIFI 名字)、频率、速率,信号质量等等。

三、wpa_supplicant移植

1.openss移植

        要想连接到指定的 WIFI热点上就需要用到 wpa_supplicant 工具。

        先移植 openssl。

        解压:tar -vxzf openssl-1.1.1d.tar.gz

./Configure linux-armv4 shared no-asm --prefix=/home/zuozhongkai/linux/IMX6ULL/tool/openssl
CROSS_COMPILE=arm-linux-gnueabihf-

        配置成功以后会生成 Makefile,输入如下命令进行编译:
make
make install
         将 lib 目录下的 libcrypto 和 libssl 库拷贝到开发板根文件系统中的/usr/lib 目录下,命令如下:
sudo cp libcrypto.so* /home/zuozhongkai/linux/nfs/rootfs/lib/ -af
sudo cp libssl.so* /home/zuozhongkai/linux/nfs/rootfs/lib/ -af

2.libnl库移植

        在编译 libnl 之前先安装 biosn flex

sudo apt-get install bison
sudo apt-get install flex

        移植libnl库 

/configure --host=arm-linux-gnueabihf --prefix=/home/zuozhongkai/linux/IMX6ULL/tool/libnl/
--host 用于指定交叉编译器的前缀,这里设置为“arm-linux-gnueabihf”, --prefix 用于指定编
译结果存放目录

        对 libnl 库进行编译、安装:

make -j12 //编译
make install //安装

         将 lib 目录下的所有文件拷贝到开发板根文件系统的/usr/lib 目录下:

sudo cp lib/* /home/zuozhongkai/linux/nfs/rootfs/usr/lib/ -rf

3.wpa_supplicant移植

        wpa_supplicant 的配置:

cd wpa_supplicant/
cp defconfig .config

        打开.config 文件,在里面指定交叉编译器、 openssl、 libnl 库和头文件路径:
 

1 CC = arm-linux-gnueabihf-gcc
2 3
#openssl 库和头文件路径
4 CFLAGS += -I/home/zuozhongkai/linux/IMX6ULL/tool/openssl/include
5 LIBS += -L/home/zuozhongkai/linux/IMX6ULL/tool/openssl/lib -lssl
-lcrypto
6 7
#libnl 库和头文件路径
8 CFLAGS += -I/home/zuozhongkai/linux/IMX6ULL/tool/libnl/include/libnl3
9 LIBS += -L/home/zuozhongkai/linux/IMX6ULL/tool/libnl/lib

        编译 wpa_supplicant: 

export PKG_CONFIG_PATH=/home/zuozhongkai/linux/IMX6ULL/tool/libnl/lib/pkgconfig:
$PKG_CONFIG_PATH //指定 libnl 库 pkgconfig 包位置
make -j12 //编译

        wpa_cli 和 wpa_supplicant 这两个文件拷贝到开发板根文件系统的/usr/bin目录中:

sudo cp wpa_cli wpa_supplicant /home/zuozhongkai/linux/nfs/rootfs/usr/bin/ -f

        输入“wpa_supplicant -v”命令查看一下 wpa_supplicant 版本号

 

四、WiFi联网测试

        联网步骤:

①、插上 WIFI 模块,如果是板子集成的就不需要这一步。如果是 SDIO WIFI 的话确保 WIFI
所使用的 SDIO 接口没有插其他的模块,比如 SD 卡,防止其他模块对 SDIO WIFI 造成影响。
②、加载 RTL8188 或者 RTL8189 驱动模块。
③、使用 ifconfig 命令打开对应的无线网卡,比如 wlan0 或 wlan1……
④、无线网卡打开以后使用 iwlist 命令扫描一下当前环境下的 WIFI 热点,一来测试一下 WIFI 工作是否正常。二来检查一下自己要连接的 WIFI 热点能不能扫描到,扫描不到的话肯定就没法连接了。
        当上述步骤确认无误以后就可以使用 wpa_supplicant 来将 WIFI 连接到指定的热点上,实现
联网功能。

1.RTL8188 USB WIFI联网测试

        RTL8188EUS 请使用 8188eu.ko 驱动, RTL8188CUS 请使用 8192cu.ko 驱动!
        RTL8188 USB WIFI 联网测试,确保 RTL8188 能扫描出要连接的 WIFI 热点。

        在开发板根文件系统的/etc 目录下创建一个名为“wpa_supplicant.conf”的配置文件,此文件用于配置要连接的 WIFI 热点以及 WIFI 秘密。

1 ctrl_interface=/var/run/wpa_supplicant
2 ap_scan=1
3 network={
4 ssid="ZZK"
5 psk="xxxxxxxx"/*wpa_supplicant.conf 文件对于格式要求比较严格,“=”前后一定不能有空格,也不要
用 TAB 键来缩进*/
6 }

        创建目录:

mkdir /var/run/wpa_supplicant -p

        使用 wpa_supplicant 工具让 RTL8188 USB WIFI 连接到热点上: 

wpa_supplicant -D wext -c /etc/wpa_supplicant.conf -i wlan0 &

        设置 wlan0 的 IP 地址: 

udhcpc -i wlan0 //从路由器获取 IP 地址

2.RTL8189 SDIO WIFI联网测试         


本笔记为参考正点原子开发板配套教程整理而得,仅用于学习交流使用,不得用于商业用途。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1869439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试相关-接口测试常问的问题

1.为什么要做接口测试 (1)现在大多系统都是前后端分离的项目,前端和后端的进度可能不一样,那为了尽早的进入测试,前端界面没有开发完成的情况下,只要后端的接口开发完了,就可以提前做接口测试了; (2)基于安全考虑,只依赖前端进行限制,已经完全不满足系统的安全性…

DLS MARKETS外汇:日元暴跌,日本是否会再次干预汇市?

摘要 近日&#xff0c;日元兑美元汇率暴跌至1986年以来的最低水平&#xff0c;引发市场对日本政府可能再次干预汇市的猜测。尽管地缘政治紧张局势为日元带来压力&#xff0c;但美国和日本之间的巨大利差也是关键因素。本文将详细分析当前日元贬值的原因、日本当局的可能反应以及…

Java 自定义jackson2序列化器遇到的问题

问题1&#xff1a;java: 错误: 不支持发行版本 5 修改idea java环境 问题2&#xff1a;ClassNotFoundException: com.fasterxml.jackson.annotation.JsonMerge 缺少 jar 包&#xff1a;jackson-annotations 引入依赖的地址&#xff1a;https://mvnrepository.com/artifact/c…

武汉高校大学智能制造实验室数字孪生可视化系统平台建设项目验收

随着科技的不断进步和工业4.0的深入推进&#xff0c;智能制造已成为现代工业发展的重要方向。在这一背景下&#xff0c;武汉高校大学智能制造实验室积极响应国家号召&#xff0c;致力于将先进的数字孪生技术与智能制造教育相结合&#xff0c;打造了一个集教学、实训、科研于一体…

python下载安装入门(一)

一.下载安装 1、官网下载地址&#xff1a; Python Releases for Windows | Python.org 2、下载安装 1.下载python包&#xff1a;点击下载 2.安装 2.默认点击next即可 3.选择你想安装的路径&#xff0c;点击install即可 4.这里如果出现管理员字样&#xff0c;点击授权即可 安…

广州高校大学智能制造实验室数字孪生可视化系统平台建设项目验收

广州高校大学智能制造实验室数字孪生可视化系统平台建设项目验收。在广州的高校中&#xff0c;智能制造实验室一直是科研创新和技术探索的前沿阵地。随着数字化、智能化技术的迅猛发展&#xff0c;数字孪生技术逐渐成为推动制造业转型升级的重要力量。近日&#xff0c;广州某高…

uniApp获取实时定位

通过你获取的key放到项目manifest.json里面&#xff0c;对应填写你所需要的key值&#xff0c;还有高德用户名 用户名&#xff1a; key值的位置&#xff1a; 代码&#xff1a; html: <view class"intList pdNone"><view class"label">详细地…

聊一聊UDF/UDTF/UDAF是什么,开发要点及如何使用?

背景介绍 UDF来源于Hive&#xff0c;Hive可以允许用户编写自己定义的函数UDF&#xff0c;然后在查询中进行使用。星环Inceptor中的UDF开发规范与Hive相同&#xff0c;目前有3种UDF&#xff1a; A. UDF--以单个数据行为参数&#xff0c;输出单个数据行&#xff1b; UDF&#…

DM达梦数据库基本语法整理

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

生命在于学习——Python人工智能原理(2.6.1)

六 Python的文件系统 6.1 打开文件 在Python中&#xff0c;可以使用内置的open函数来打开文件&#xff0c;open函数的基本语法如下&#xff1a; file open(file_name, moder, buffering-1, encodingNone, errorsNone, newlineNone, closefdTrue, openerNone)参数说明&#…

“水刊”来了!专注发表水方向的SCI刊物,此“水刊”非彼水刊

【SciencePub学术】曾经的超级“水刊”《WATER SUPPLY》因为触碰红线&#xff0c;现在依旧被“on hold”中&#xff0c;解封日期恐怕也是遥遥无期。 来源&#xff1a;科睿唯安官网 后台有人私信小编有没有关于“水”类的期刊推荐&#xff0c;小编后台整理了一下&#xff0c;今…

一键生成AI动画视频?Animatediff 和 ComfyUI 更配哦!

大家好我是极客菌&#xff01; 之前我分享过 Animatediff 在 WebUI 中的应用&#xff0c;最近不是在分享 ComfyUI 嘛&#xff0c;那我们也来讲讲 Animatediff 在 ComfyUI 的应用。 如果从工作流和内存利用率的角度来说&#xff0c;Animatediff 和 ComfyUI 可能更配一些&#…

金融科技如何运用技术手段实现细颗粒度服务

随着金融科技的快速发展&#xff0c;金融机构正在通过采用各种技术手段来提供更加细颗粒度的服务&#xff0c;以满足客户日益增长的个性化需求。这些技术手段不仅提高了金融服务的效率和安全性&#xff0c;还显著提升了用户体验和满意度。 一、大数据分析与人工智能&#xff08…

iOS 其他应用的文件如何在分享中使用自己的应用打开

废话少说 一、第一步&#xff1a;先配置好plist文件 右击info.plist如下图文件打开 根据自己需要配置支持的文件类型&#xff0c;也可使用property List中配置&#xff0c;一样的 其他的文件可是参考文档&#xff1a;System-Declared Uniform Type Identifiers 可复制的代码&am…

基于Vue 3.x与TypeScript的PPTIST本地部署与无公网IP远程演示文稿

文章目录 前言1. 本地安装PPTist2. PPTist 使用介绍3. 安装Cpolar内网穿透4. 配置公网地址5. 配置固定公网地址 前言 本文主要介绍如何在Windows系统环境本地部署开源在线演示文稿应用PPTist&#xff0c;并结合cpolar内网穿透工具实现随时随地远程访问与使用该项目。 PPTist …

基于java + Springboot 的二手物品交易平台实现

目录 &#x1f4da; 前言 &#x1f4d1;摘要 &#x1f4d1;系统架构 &#x1f4da; 数据库设计 &#x1f4da; 系统功能的具体实现 &#x1f4ac; 登录模块 首页模块 二手商品轮播图添加 &#x1f4ac; 后台功能模块 二手商品商品列表 添加二手商品商品 添加购物车 &a…

CesiumJS【Basic】- #019 加载glb/gltf文件(Entity方式)

文章目录 加载glb/gltf文件(Entity方式)1 目标2 代码实现3 资源文件加载glb/gltf文件(Entity方式) 1 目标 使用Entity方式加载glb/gltf文件 2 代码实现 import * as Cesium from "cesium";const viewer = new Cesium.Viewer

langchain中的召回增强生成(RAG)一览

什么是RAG&#xff1f;[3] RAG是一种通过额外的、通常是私有或实时的数据来增强LLM知识的技术。LLM能够推理各种广泛的主题&#xff0c;但它们的知识仅限于它们训练时的公共数据&#xff0c;到达其特定时间节点为止。如果你想构建可以推理私人数据或在模型截止日期之后引入的数…

linux 安装腾讯会议和解决ubuntu打开腾讯会议提示:不兼容 wayland 协议

一. 下载腾讯会议安装包 腾讯会议下载链接 二. 命令行安装 cd [安装包路径] sudo dpkg -i TencentMeeting_0300000000_3.19.1.400_x86_64_default.publish.deb 三. 打开腾讯会议提示无法支持wayland 协议 解决方法: 打开终端 sudo vi /etc/gdm3/custom.conf打开 #Wayland…

vue3 【提效】全局布局 vite-plugin-vue-layouts 实用教程

一个常见的需求是&#xff0c;同模块的若干页面需要使用同一种布局&#xff0c;比如俱乐部相关的页面的顶部需要展示俱乐部的名称&#xff0c;其他页面顶部需要展示网站名称。 通常实现的方法是&#xff0c;将俱乐部的名称和网站名称定义成公共组件&#xff0c;在每个页面都书…