Linux学习第54天:Linux WIFI 驱动:蓝星互联
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联网测试
本笔记为参考正点原子开发板配套教程整理而得,仅用于学习交流使用,不得用于商业用途。
相关文章:
Linux学习第54天:Linux WIFI 驱动:蓝星互联
Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 数字化、现代化的今天,随处的WIFI给与了大众极大的方便,也感受到了科技的力量。万物互联、无线互联越来越成为一个不可逆转的趋势。现在比较火…...
芯片后端之 PT 使用 report_timing 产生报告如何阅读
今天,就PT常用的命令,做一个介绍,希望对大家以后的工作,起到帮助作用。 在PrimeTime中,使用report_timing -delay max命令生成此报告。switch -delay max表示定时报告用于设置(这是默认值)。 首先,我们整…...
基于elastic stack搭建的ELK系统资源占用预估
1、ES 1.1 内存:ES非常消耗内存,不是JVM用到的内存,而是机器的物理内存,ES在运行期间对JVM Heap(堆内存)的需求较小 实践建议: 数据量过百万,建议单台服务器的内存至少要有16GB;数据量过亿,建议单台服务器的内存至少要有64GB 1.2 CPU:ES集…...
LiteDB - 一个单数据文件 .NET NoSQL 文档存储
LiteDB 一个小巧、快速、轻量级的 NoSQL 嵌入式数据库。 Serverless NoSQL 文档存储类似于 MongoDB 的简单 API100% C# 代码,支持 .NET 3.5 / .NET 4.0 / NETStandard 1.3 / NETStandard 2.0,单 DLL (小于 300 kb)支持线程和进程安全支持文档/操作级别的 ACID支持写失败后的数…...
视觉理解与图片问答,学习如何使用 GPT-4o (GPT-4 Omni) 来理解图像
🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、引言 OpenAI 最新发布的 GPT-4 Omni 模型,也被称为 GPT-4o,是一个多模态 AI 模型,旨在提供更加自然和全面的人机交互体验。 GPT-4o 与 GPT-4 Turbo 都具备视觉功…...
【LocalAI】(13):LocalAI最新版本支持Stable diffusion 3,20亿参数图像更加细腻了,可以继续研究下
最新版本v2.17.1 https://github.com/mudler/LocalAI/releases Stable diffusion 3 You can use Stable diffusion 3 by installing the model in the gallery (stable-diffusion-3-medium) or by placing this YAML file in the model folder: Stable Diffusion 3 Medium 正…...
云计算【第一阶段(19)】磁盘管理与文件系统 LVM与磁盘配额(二)
目录 一、LVM概述 1.1、LVM机制的基本概念 编辑 1.2、LVM的管理命令 1.3、lvm存储 两种机制 1.4、lvm应用实例 二、磁盘配额概述 2.1、设置磁盘配额 2.2.1、实现磁盘限额的条件 2.2.2、linux磁盘限额的特点 2.2.3、磁盘配额管理 一、LVM概述 1.1、LVM机制的基本概…...
基于C++实现的EventLoop与事件驱动编程
一,概念介绍 事件驱动编程(Event-Driven)是一种编码范式,常被应用在图形用户界面,应用程序,服务器开发等场景。 采用事件驱动编程的代码中,通常要有事件循环,侦听事件,…...
Android高级面试_8_热修补插件化等
Android 高级面试:插件化和热修复相关 1、dex 和 class 文件结构 class 是 JVM 可以执行的文件类型,由 javac 编译生成;dex 是 DVM 执行的文件类型,由 dx 编译生成。 class 文件结构的特点: 是一种 8 位二进制字节…...
显卡GTX与RTX有什么区别?哪一个更适合玩游戏?
游戏发烧友们可能对游戏显卡并不陌生,它直接关系到游戏画面的流畅度、细腻程度和真实感。在众多显卡品牌中,英伟达的GTX和RTX系列显卡因其出色的性能而备受关注。 一、GTX与RTX的区别 架构差异 GTX系列显卡采用的是Pascal架构,这是英伟达在…...
QT自定义信号和槽函数
在QT中最重要也是必须要掌握的机制,就是信号与槽机制,在MFC上也就是类型的机制就是消息与响应函数机制 在QT中我们不仅要学会如何使用信号与槽机制,还要会自定义信号与槽函数,要自定义的原因是系统提供的信号,在一些情…...
Atcoder Beginner Contest 359
传送门 A - Count Takahashi 时间限制:2秒 内存限制:1024MB 分数:100分 问题描述 给定 N 个字符串。 第 i 个字符串 () 要么是 Takahashi 要么是 Aoki。 有多少个 i 使得 等于 Takahashi ? 限制 N 是整数。每个…...
无线通讯几种常规天线类别简介
天线对于无线模块来说至关重要,合适的天线可以优化通信网络,增加其通信的范围和可靠性。天线的选型对最后的模块通信影响很大,不合适的天线会导致通信质量下降。针对不同的市场应用,天线的材质、安置方式、性能也大不一样。下面简…...
最大团问题--回溯法
一、相关定义 给定一个无向图 ,其中 V 是图的顶点集,E图的边集 完全图:如果无向图中的任何一对顶点之间都有边,这种无向图称为完全图 完全子图:给定无向图 ,如果 ,且对应任意 且 ,则…...
MBSE之简单介绍
MBSE之简单介绍 文章目录 MBSE之简单介绍1. What is MBSE?2. MBSE 最佳实践 1. What is MBSE? Model-Based Systems Engineering (MBSE), a.k.a. Model-Based Systems Development (MBSD), is a Systems Engineering process paradigm that emphasizes t…...
基于ODPS解析字段值为JSON的情况
最近在使用ODPS数据库,其中一个字段他是用JSON存储的,但是我是需要JSON字符串中的一个属性值就行,刚好ODPS中有一个函数可以用来使用! 使用案例 select GET_JSON_OBJECT({"id":1,"name":"xiaobai"},$.name);…...
CesiumJS【Basic】- #020 加载glb/gltf文件(Primitive方式)
文章目录 加载glb/gltf文件(Primitive方式)1 目标2 代码实现3 资源文件加载glb/gltf文件(Primitive方式) 1 目标 使用Primitive方式加载glb/gltf文件 2 代码实现 import * as Cesium from "cesium";const viewer = new Cesium.Viewer...
2024黑盾杯复现赛题MISC部分
一、一个logo 一张png图片,查看颜色通道即可发现flag 二、 学会Office 最好用联想自带的excel工具查看,我用WPS打开未解出题目 这里会发现有隐藏信息 隐藏信息为宏加密 。去百度了解宏加密后,发现有俩个宏,一个加密一个解密 执…...
Linux0.12内核源码解读(5)-head.s
大家好,我是呼噜噜,好久没有更新old linux了,本文接着上一篇文章图解CPU的实模式与保护模式,继续向着操作系统内核的世界前进,一起来看看heads.s as86 与GNU as 首先我们得了解一个事实,在Linux0.12内核源…...
刷代码随想录有感(119):动态规划——打家劫舍III(树形dp)
题干: 代码: class Solution { public:vector<int>dp(TreeNode* cur){if(cur NULL)return vector<int>{0, 0};vector<int> left dp(cur -> left);vector<int> right dp(cur -> right);//偷int val1 cur -> val l…...
vivado CARRY_REMAP、CASCADE_HEIGHT
CARRY_REMAP opt_design-carry_remap选项可用于将单个carry*单元重新映射到LUT中 提高了布线的设计效果。使用-carry_remap选项时,仅 将单级进位链转换为LUT。CARRY_REMAP属性允许您 指定在优化过程中要转换的长度较大的进位链。 您可以使用控制任意长度的单个进位链…...
Ubuntu磁盘分区和挂载 虚拟机扩容 逻辑卷的创建和扩容保姆及教程
目录 1、VMware虚拟机Ubuntu20.04系统磁盘扩容 2、Linux的磁盘分区和挂载 3、创建逻辑卷和逻辑卷的扩容 1、VMware虚拟机Ubuntu20.04系统磁盘扩容 通过下图可以看出我们的根磁盘一共有20G的大小,现在我们把它扩容为30G 注:如果你的虚拟机有快照是无…...
【附精彩文章合辑】哈佛辍学小哥的创业经历【挑战英伟达!00 后哈佛辍学小哥研发史上最快 AI 芯片,比 H100 快 20 倍!】
前情提要 https://blog.csdn.net/weixin_42661676/article/details/140020491 哈佛辍学小哥的创业经历 一、背景与起步 这位哈佛辍学小哥,名为Chris Zhu,是一位华裔学生,他在2020年进入哈佛大学,攻读数学学士学位和计算机科学硕…...
Oracle CPU使用率过高问题处理
1.下载Process Explorer 2.打开Process Explorer,查看CPU使用情况最高的进程 3.双击该进程,查看详情 \ 4. 获取cpu使用最好的线程tid 5. 查询sql_id select sql_id from v$session where paddr in( select addr from v$process where spid in(1…...
pyqt的QWidgetList如何多选?如何按下Ctrl多选?
通过设置setSelectionMode(QAbstractItemView.MultiSelection),可以实现QWidgetList的多选。 但是上述结果不太符合我们需求。设置多选模式后,只需鼠标点击就可以选择多个条目。 我希望按下Ctrl键时才进行多选,仅鼠标单击的话,只进…...
【电路笔记】-MOSFET放大器
MOSFET放大器 文章目录 MOSFET放大器1、概述2、电路图3、电气特性3.1 ** I D = F ( V G S ) I_D=F(V_{GS}) ID=F(VGS)**特性3.2 I D = F ( V D S ) I_D=F(V_{DS}) ID=F(VDS)特性4、MOSFET放大器5、输入和输出电压6、电压增益7、总结1、概述 在前面的文章中,我们已经…...
Ubuntu 20.04安装显卡驱动、CUDA、Pytorch(2024.06最新)
文章目录 一、安装显卡驱动1.1 查看显卡型号1.2 根据显卡型号选择驱动1.3 获取下载链接1.4 查看下载的显卡驱动安装文件1.5 更新软件列表和安装必要软件、依赖1.6 卸载原有驱动1.7 禁用默认驱动1.8 安装lightdm显示管理器1.9 停止显示服务器1.10 在文本界面中,禁用X…...
wpf 附加属性 RegisterAttached 内容属性
// // 摘要: // 选中时展示的元素 public static readonly DependencyProperty CheckedElementProperty DependencyProperty.RegisterAttached("CheckedElement", typeof(object), typeof(StatusSwitchElement), new PropertyMetadata((object)null…...
laravel8框架windows下安装运行
目录 1、安装前如果未安装先安装Composer 2、使用composer安装laravel8 3、使用内置服务器:8000 的命令去访问测试 4、使用本地环境运行phpstudy配置到public目录下 Laravel官网 Laravel 中文网 为 Web 工匠创造的 PHP 框架 安装 | 入门指南 |《Laravel 8 中文文档 8.x…...
如何快速判断IP被墙
IP被墙是指IP部分地区或者运营商无法被正常进行访问的一个情况。 被墙的原因有很多种不一一列举,由于被墙的时间短的为按周按月计算,时间长的则为按年计算,所以一般这种情况下只能选择更换IP。 检查办法: 第一,确认IP…...
个人备案做运营网站/百度正版下载恢复百度
http://blog.csdn.net/lifetragedy/article/details/7712691 一、为何要集群 单台App Server再强劲,也有其瓶劲,先来看一下下面这个真实的场景。 当时这个工程是这样的,tomcat这一段被称为web zone,里面用springws,还…...
电商网站如何做引流/网络营销策划内容
这个小编相信大家都很常用这个功能的,打个比方,要做首页推荐,如果接口里有20条数据,整好你想要显示6条数据,那就可以用这两种方法 用法:在循环后添加 .slice(0, 6) 用法(1),直接在循环里定义 …...
高质量内容的重要性/网站seo排名优化软件
------------http://www.falaosao.net/article.asp?id102 本系列文章其实算不上教程,只能算是在下的学习笔记。所有内容均取自ASP.NET开发队的Joe Stagner所做的"How Do I?"系列视频教程。在下面的讲解里我会列出所对应的视频教程,有能力的…...
佛山营销网站建设公司/交换链接的例子
不少使用Windows XP的用户,在IE8浏览器中打开网页,发现特别卡,关闭了浏览器,还是很卡,其实,这是IE8的一个新“特性”,IE8设计了一个备份iexplore.exe的进程,浏览的选项卡崩溃不会导致…...
学做网站论坛插件/外贸业务推广
SimpleViewpagerIndicator 项目地址:al4fun/SimpleViewpagerIndicator 简介:一个简单的 Viewpager 指示器,提供多种可选样式 更多:作者 提 Bug 标签: viewpager指示器- 写这个小控件是因为最近负责维护的一…...
搭建网站代码/今日热点新闻一览
vue的$nextTick使用总结,this.$refs为undefined的解决办法,element Ui的树形控件setCheckedKeys方法无法使用参考文章: (1)vue的$nextTick使用总结,this.$refs为undefined的解决办法,element U…...