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联网测试         


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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ISP IC/FPGA设计-第一部分-SC130GS摄像头分析(0)

1.介绍 SC130GS是一款国产的Global shutter CMOS图像传感器&#xff0c;最高支持1280Hx1024V240fps的传输速率&#xff1b;SC130GS有黑白和彩色款&#xff0c;作为ISP开发选择彩色的&#xff0c;有效像素窗口为1288Hx1032V&#xff0c;支持复杂的片上操作&#xff0c;选择他理…

谈谈WebComponents | 前端开发

一、 源起 让我们以一个例子开始。 假设我们要做一个环形进度条&#xff0c;它可以&#xff1a; 1、根据进度数值的不同&#xff0c;计算出百分比&#xff0c;以渲染对应的角度值。 2、根据设置的进度不同&#xff0c;我们用不同的颜色加以区分。 3、在环的中间我们以动画递增的…

基于RabbitMQ的异步消息传递:发送与消费

引言 RabbitMQ是一个流行的开源消息代理&#xff0c;用于在分布式系统中实现异步消息传递。它基于Erlang语言编写&#xff0c;具有高可用性和可伸缩性。在本文中&#xff0c;我们将探讨如何在Python中使用RabbitMQ进行消息发送和消费。 安装RabbitMQ 在 Ubuntu 上安装 Rabbi…

wps的domain转为shp矢量

wps的namelist制作、python出图和转矢量 简介 wps&#xff08;WRF Preprocessing System&#xff09;是中尺度数值天气预报系统WRF(Weather Research and Forecasting)的预处理系统。 wps的安装地址在GitHub上&#xff1a;https://github.com/wrf-model/WPS 下载完成后&…

注册中心不知选哪个?Zookeeper、Eureka、Nacos、Consul和Etcd 5种全方位剖析对比

本文给大家讲解 5 种常用的注册中心&#xff0c;对比其流程和原理&#xff0c;无论是面试还是技术选型&#xff0c;都非常有帮助。 对于注册中心&#xff0c;在写这篇文章前&#xff0c;我其实只对 ETCD 有比较深入的了解&#xff0c;但是对于 Zookeeper 和其他的注册中心了解甚…

pytorch统计学分布

1、pytorch统计学函数 import torcha torch.rand(2,2) print(a) print(torch.sum(a, dim0)) print(torch.mean(a, dim0)) print(torch.prod(a, dim0))print(torch.argmax(a, dim0)) print(torch.argmin(a, dim0)) print(torch.std(a)) print(torch.var(a)) print(torch.median…

AI进阶指南第四课,大模型优缺点研究?

在上一篇文章中&#xff0c;我主要探讨了LM模型与企业级模型的融合。 但是&#xff0c;在文末对于具体的大模型优缺点只是简单地说明了一下&#xff0c;并不细致。 因此&#xff0c;在这一节&#xff0c;我将更为细致地说明一下大模型的优缺点。 一&#xff0c;隐私安全 将L…

Python输入与输出基础

Python输入与输出基础 引言 Python是一种非常直观且功能强大的编程语言&#xff0c;它允许用户轻松地处理输入和输出操作。无论是从用户那里获取数据&#xff0c;还是将结果展示给用户&#xff0c;Python都提供了简单易用的函数和方法。 一、输入数据 在Python中&#xff0c…

UWB:DS-TWR( Double-sided two-way ranging)双边测距公式推导:为啥是乘法?

UWB DS-TWR&#xff08; Double-sided two-way ranging&#xff09;双边测距为啥是乘法&#xff1f;&#xff1f; 公式&#xff1a; 我们先看单边 Single-Sided Two-Way Ranging (SS-TWR) 单边很好理解。 symmetric double-sided TWR (SDS-TWR)对称的双边测距 再看双边 Trou…

LeetCode热题100——最长连续序列

给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 class Solution(object):def longestConsecutive(self, nums):""":t…

【MAVEN学习 | 第2篇】Maven工程创建及核心功能

文章目录 一. 基于IDEA的Maven工程创建1.1 Maven工程GAVP属性&#xff08;1&#xff09;GroupID 格式&#xff08;2&#xff09;ArtifactID 格式&#xff08;3&#xff09;Version版本号格式&#xff08;4&#xff09;Packaging定义规则 1.2 IDEA构建Maven JavaSE工程1.3 IDEA构…

kettle使用手册 安装9.0版本 建议设置为英语

0.新建转换的常用组件 0. Generate rows 定义一个字符串 name value就是字符串的值 0.1 String operations 字段转大写 去空格 1. Json input 来源于一个json文件 1.json 或mq接收到的data内容是json字符串 2. Json output 定义Jsonbloc值为 data, 左侧Fieldname是数据库…

VS2022(Visual Studio 2022)最新安装教程

1、下载 1、下载地址 - 官网地址&#xff1a;下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux - 根据自己的电脑的 【操作系统】 灵活选择。 2、安装包 【此处为Windows系统安装包】 2、安装 1、打开软件 - 右击【以管理员身份打开】&#xff0c; 2、准备配置 …

昇思25天学习打卡营第03天|张量Tensor

何为张量&#xff1f; 张量&#xff08;Tensor&#xff09;是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数&#xff0c;这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 &#x1d45b;维空间内&#xff0c;有  &#x1d45b;&a…

机器人控制系列教程之URDF文件语法介绍

前两期推文&#xff1a;机器人控制系列教程之动力学建模(1)、机器人控制系列教程之动力学建模(2)&#xff0c;我们主要从数学的角度介绍了机器人的动力学建模的方式&#xff0c;随着机器人技术的不断发展&#xff0c;机器人建模成为了机器人系统设计中的一项关键任务。URDF&…

聚合项目学习

首先建立一个总的工程目录&#xff0c;里边后期会有我们的父工程、基础工程(继承父工程)、业务工程&#xff08;依赖基础工程&#xff09;等模块 1、在总工程目录中&#xff08;open一个空的文件夹&#xff09;&#xff0c;首先建立一个父工程模块&#xff08;通过spring init…

地铁中的CAN通信--地铁高效安全运转原理

目前地铁采用了自动化的技术来实现控制,有ATC(列车自动控制)系统可以实现列车自动驾驶、自动跟踪、自动调度;SCADA(供电系统管理自动化)系统可以实现主变电所、牵引变电所、降压变电所设备系统的遥控、遥信、遥测;BAS(环境监控系统)和FAS(火灾报警系统)可以实现车站…

AS-V1000外部设备管理介绍(国标GB28181设备管理,可以管理的国标设备包括DVR/NVR、IPC、第三方国标28181平台)

目录 一、概述 1、视频监控平台介绍 2、外部设备定义&#xff08;接入的国标设备&#xff09; 二、外部设备管理 2.1 外部设备添加 &#xff08;1&#xff09;设备侧的配置 &#xff08;2&#xff09;平台侧的配置 2.2 外部设备信息的修改 三、外部通道管理 3.1 外部…

【技术追踪】SDSeg:医学图像的 Stable Diffusion 分割(MICCAI-2024)

这医学图像分割领域啊&#xff0c;终究还是被 Stable Diffusion 闯进去了~ SDSeg&#xff1a;第一个基于 Stable Diffusion 的 latent 扩散医学图像分割模型&#xff0c;在五个不同医学影像模态的基准数据集上超越了现有的最先进方法~ 论文&#xff1a;Stable Diffusion Segmen…

当设备树中出现多个同一节点的处理办法

当设备树中出现多个同一节点的处理办法 1.同一文件下有多个节点不同设备树调用同一节点需要#include "xxx.dtsi"3,vscode快速搜索文件 ctrlshiftp 去掉> 1.同一文件下有多个节点 覆盖规则&#xff1a; 同一层次的节点&#xff0c;后面的会覆盖前面的节点 memory…