[rk3588]多种wifi模组兼容

2023-11-19

硬件部分

M.2接口:
在这里插入图片描述
在这里插入图片描述
使用的wifi模组是PCIE接口的RTL8852BE和SDIO接口的AP6256

软件部分

M.2接口介绍

M.2接口是一种用于连接各种扩展设备的接口标准。它最初设计用于连接固态硬盘(SSD),但也广泛用于连接其他设备,如无线网卡、蓝牙模块、GPS模块和其他可选功能模块。
M.2接口的一些特点和特点:
小型化设计:M.2接口采用小型化设计,相比传统的扩展接口(如PCIe插槽和SATA插槽)更为紧凑。它的尺寸和形状可以根据设备的需求进行调整,因此有不同的长度和键位配置。
高速传输:M.2接口支持多种高速传输协议,包括PCI Express(PCIe)和SATA。这使得M.2接口能够提供高速数据传输,适用于要求高带宽和低延迟的设备,如SSD和高性能无线网卡。
多功能性:M.2接口支持多种功能模块,包括无线网卡、蓝牙模块、GPS模块、NFC模块等。这使得用户可以根据需要选择适当的模块来满足特定的应用需求,并在需要时进行灵活更换和升级。
多种键位配置:M.2接口有多种键位配置,包括B键、M键和B+M键。这些键位配置决定了M.2插槽所支持的协议和功能。不同的键位配置兼容不同类型的模块,因此需要根据具体设备的要求来选择正确的键位配置。

wifi模组调试

wifi模组调试功能需要wifi驱动以及wifi固件,以正基模块ap6256为例。

wifi驱动可以向厂家提供驱动包,或者直接使用RK的SDK下kernel\drivers\net\wireless\rockchip_wlan\rkwifi\bcmdhd下的驱动。

Wi-Fi firmware文件:根据实际使用系统的需求存放,通常是/system/etc/firmware/下
fw_bcm43456c5_ag.bin
nvram_ap6256.txt

配置

检查内核Wi-Fi配置,打开如下几个配置:
CONFIG_WL_ROCKCHIP=y
CONFIG_WIFI_BUILD_MODULE=y
CONFIG_BCMDHD=y
CONFIG_AP6XXX=m
CONFIG_BCMDHD_PCIE=y #PCIE接口,与SDIO互斥,不是PCIE可不配
CONFIG_BCMDHD_SDIO=y #SDIO接口,与PCIE互斥

Wi-Fi接口初始化

make 编译完会生成ko,这个文件根据你们实际需求存放到对应位置,打开Wi-Fi加载这个ko即可;

drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/bcmdhd.ko

打开Wi-Fi

需先加载ko,并在insmod时参数指定firmware/nvram的路径,下面xx_path改成实际使用的:

insmod /ko_path/bcmdhd.ko firmware_path=/fw_path/
nvram_path=/nvram_path/ ifconfig -a #正常的话可以看到wlan0

自动加载WIFI驱动

要在系统启动时自动加载适当的WIFIbt驱动和固件,可以通过编写一个启动脚本并将其添加到系统的启动过程中。

判断模组

系统首先判断你插入的是什么接口的wifi模组,比如M.2接口上接了芯片ap6256,通过SDIO接口连接到主机设备,要查看SDIO设备的信息,可以尝试使用以下命令:

ls /sys/bus/sdio/devices

如果接了SDIO接口模组会有如下打印:

mmc2:0001:1  mmc2:0001:2  mmc2:0001:3

如果接的是PCIE接口的rtl8852模组,可以使用以下命令:

lspci

会有一下打印:

0002:20:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device
3588 (rev 01) 0002:21:00.0 Network controller: Realtek Semiconductor
Co., Ltd. Device b852 0004:40:00.0 PCI bridge: Fuzhou Rockchip
Electronics Co., Ltd Device 3588 (rev 01) 0004:41:00.0 Ethernet
controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller
(rev 05)

启动脚本

创建一个启动脚本,例如wifi_setup.sh,并将其保存在适当的位置,比如/usr/local/bin/目录下

#!/bin/bash

# 获取M.2接口的设备ID
device_id=$(lspci -d 10ec:b852 | awk '{print $1}')

# 根据设备ID判断模组类型并加载相应的驱动
case "$device_id" in
    "21:00.0")
        modprobe rtkm
        modprobe 8852be
        ;;
    *)
        echo "Unknown WiFi module"
        ;;
esac

保存并退出脚本文件后,使用以下命令添加执行权限:

chmod +x /usr/local/bin/wifi_setup.sh

添加脚本到启动过程中,可以通过编辑/etc/rc.local文件实现:

sudo vi /etc/rc.local

在文件的exit 0行之前添加以下内容:

/usr/local/bin/wifi_setup.sh

保存并退出文件。
确保/etc/rc.local文件也具有执行权限:

sudo chmod +x /etc/rc.local

重新启动系统。
上述脚本只是一个示例,你还可以添加逻辑如果执行ls /sys/bus/sdio/devices找到了mmc这个字符就执行对应的加载wifi驱动的命令。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[rk3588]多种wifi模组兼容 的相关文章

  • 限制 Imagemagick 使用的空间和内存

    我在 Rails 应用程序上使用 Imagemagick 使用 rmagick 但我的服务器 Ubuntu 不是很大 当我启动转换进程时 Imagemagick 占据了我的服务器 30GB HDD 的所有位置 内存 我想限制内存和 tmp
  • Gearman,php 扩展问题:使用终端在 .. 中找不到类“GearmanWorker”,但可以在浏览器上使用

    我最近在 ubuntu 10 04 上安装了 gearman 并安装了它的 pecl 扩展 现在 当我在浏览器中运行一个 php 文件时 其中包含 client new GearmanWorker die var Dump client I
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 让 TeXstudio 在 linux mint 中工作:找不到文件“url.sty”。

    刚刚切换到 Linux Mint 以前的顽固 Windows 用户 我在尝试安装 TeXstudio 时遇到一些问题 Sudo apt get install texstudio 给了我一个正确的安装 至少 我是这么认为的 但是当我尝试构建
  • 为什么我的 Dockerfile CMD 不起作用?

    所以在我的 Dockerfile 的末尾我有这样的内容 WORKDIR home CMD django admin startproject whattt CMD bin bash 当我创建映像然后运行容器时 一切都按预期运行 没有错误 D
  • Linux中使用管道进行进程间通信

    我已经编写了在 linux 中写入数字以进行管道传输的代码 如下所示 但显示错误 任何人都可以帮助我解决这个问题 基本上该程序的问题陈述如下 一个程序将打开一个管道 向管道写入一个数字 其他程序将打开同一管道 读取数字并打印它们 关闭两个管
  • Web 应用程序的带宽和流量模拟器?

    您能否建议如何创建一个测试环境来模拟 Web 应用程序中的各种类型的带宽和流量 或者也许是一个针对本地主机执行此操作的开源程序 我认为在编写网络应用程序时这是一个非常重要的主题 但这不是一个常见的主题 我能想象创建这种环境的唯一方法是在本地
  • C:如果文件描述符被删除,阻塞读取应该返回

    我正在以阻塞的方式从设备 文件描述符中读取 可能会发生这样的情况 在不同的线程中 设备被关闭并且文件描述符被删除 不幸的是 读取没有返回或注意到并且一直阻塞 作为一种解决方法 我可以使用 select 作为超时来执行 while 循环 如果
  • 无法在 64 位 Linux 上从汇编 (yasm) 代码调用 C 标准库函数

    我有一个函数foo以汇编语言编写 并在 Linux Ubuntu 64 位上使用 yasm 和 GCC 编译 它只是使用以下命令将消息打印到标准输出puts 如下所示 bits 64 extern puts global foo secti
  • 如何将后台作业的输出分配给 bash 变量?

    我想在 bash 中运行后台作业并将其结果分配给一个变量 我不喜欢使用临时文件 并且希望同时运行多个类似的后台任务 root root var echo hello world root root echo var hello world
  • pprof 和 ps 之间的内存使用差异

    我一直在尝试分析用 cobra 构建的 cli 工具的堆使用情况 这pprof工具显示如下 Flat Flat Sum Cum Cum Name Inlined 1 58GB 49 98 49 98 1 58GB 49 98 os Read
  • 码头无故停止

    我需要经验丰富的码头用户的建议 我在负载均衡器 亚马逊云 后面维护着 2 台 Linux 机器 使用 Jetty 9 0 3 有时我的 Jetty 容器会被 Thread 2 无故关闭 同时地 显示以下日志并且容器无故停止 没有错误 没有例
  • 使用 gcc 理解共享库

    我试图理解 C 中共享库的以下行为 机器一 cat one c include
  • 在 Linux 上创建线程与进程的开销

    我试图回答在 python 中创建线程与进程有多少开销的问题 我修改了类似问题的代码 该问题基本上运行一个带有两个线程的函数 然后运行带有两个进程的相同函数并报告时间 import time sys NUM RANGE 100000000
  • 如何在 Linux 中重新添加 unicode 字节顺序标记?

    我有一个相当大的 SQL 文件 它以 FFFE 的字节顺序标记开头 我使用 unicode 感知的 linux 分割工具将此文件分割成 100 000 行块 但是当将这些传递回窗口时 它确实not与第一个部分以外的任何部分一样 只是它具有
  • 在 Docker 容器中以主机用户身份运行

    在我的团队中 我们在进行开发时使用 Docker 容器在本地运行我们的网站应用程序 假设我正在开发 Flask 应用程序app py具有依赖关系requirements txt 工作流程大致如下 I am robin and I am in
  • XAMPP Windows 上的 Php Cron 作业

    嗯 我是这个词的新手CRON 据我所知 这是一个Unix安排特定操作在定义的时间间隔后执行的概念 我需要运行一个php文件 每小时更新一次数据库 但我的困惑在于安排执行 我在用XAMPP用于 Windows 7 上的本地开发测试 我发现了什
  • 用于读取文件的 Bash 脚本

    不知道为什么最后一行没有从脚本中删除 bin bash FILENAME 1 while read line do cut d f2 echo line done lt FILENAME cat file 1 test 2 test 3 t
  • 如何列出 nginx 中的所有虚拟主机

    有没有一个命令可以列出 CentOS 上 nginx 下运行的所有虚拟主机或服务器 我想将结果通过管道传输到文本文件以用于报告目的 我正在寻找与我用于 Apache 的命令类似的命令 apachectl S 2 gt 1 grep 端口 8
  • 为什么默认情况下不启用 arp 忽略/通告 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个需要经验才能回答的具体问题 为什么 arp ignore arp announce 在 Linux 安装 例如 debian 上默认不启用 有

随机推荐

  • Java程序员开发软件(工具)清单

    亲 你准备好了吗 001 项目管理 禅道 JIRA 002 办公协同 钉钉 003 工作邮件 Foxmail OutLook 004 项目文档 MS Office Word Excel PowerPoint WPS 005 MD 笔记 Ty
  • openGL之API学习(六十九)水平同步 垂直同步

    垂直和水平是CRT中两个基本的同步信号 水平同步信号决定了CRT画出一条横越屏幕线的时间 垂直同步信号决定了CRT从屏幕顶部画到底部 再返回原始位置的时间 而恰恰是垂直同步代表着CRT显示器的刷新率水平 垂直同步打开 那么在游戏中 或许强劲
  • 用 LangChain 构建基于资料库的问答机器人(二):从资料源中提取文本信息

    大家好 我是学生大使 Jambo 这个系列的目标是做出一个根据资料回答问题的机器人 那么从资料源中提取文本信息就是一件必要的事 但我们的资料源格式是多样的 比如 PDF Word HTML PPT 等等 甚至有的资料源来自于网络 这些格式都
  • Android studio 怎样连接手机运行,Android studio连接手机调试

    今天百度了一下如何在在Android studio如何在真机上运行 比较复杂 看了很多 现在给大家总结一下 1 首先要将手机连接到电脑上 直接在电脑上安装一个应用宝 然后在手机上也安装一个应用宝 通过应用宝将手机连接到电脑上 2 打开手机的
  • Nacos下载安装与配置(windows)

    一 Nacos下载 外网不好下载以下提供了两个版本 官网地址 https nacos io zh cn 蓝奏云地址 nacos server 1 4 1 zip 蓝奏云 1 4 1 版本 windows nacos server 2 0 0
  • 像智能手机一样造车,可能吗?

    造车这件事有多火 从小鹏 理想等昔日 造车新势力 在互联网军团的入局浪潮中 都变成了 前浪 就可见一斑 春节前后 我们见证了一波波互联网企业在汽车领域的布局 百度与吉利组建合资公司 苹果传出与韩国现代合作 阿里与上汽的智己汽车注册不到20天
  • 2023年VSCode插件最新推荐(54款)

    本文介绍前端开发领域常用的一些VSCode插件 插件是VSCode最重要的组成部分之一 本文列出了我自己在以往工作经验中积累的54款插件 个人觉得这些插件是有用或有趣的 根据它们的作用 我粗略的把它们分成了代码管理 文本和图片处理 前端框架
  • 端到端学习在车辆测距中的探索与实践

    yolo车距1 订阅车距专栏获得源码 http t csdn cn sU3U6 随着深度学习技术的快速发展 端到端学习在计算机视觉领域取得了显著的成果 端到端学习是一种直接从输入数据到输出结果的模型训练方法 无需进行复杂的特征工程 在车辆测
  • 【Arduino学习】05.驱动4个数码管

    数码管介绍 如图 本次使用的数码管为共阴极 四个数码管有 12 个引脚 可以分为位选脚和段选脚 段选脚 8个引脚a b c d e f g 位选脚 4 个引脚 D1 D2 D3 D4 哪个数码管显示由片选脚决定 片选脚为高电平 则该数码管点
  • 九宫格人车识别

    一 原理 通过霍夫检测圆的个数来识别小人位置 二 过程 1 二值图像 2 去掉宫格内容 便于分割 3 对二值图填补 减少纹理 4 分割九宫格 依次检测每个宫格中圆个数 5 最终显示小人所在宫格图片 在img6 jpg中 详细程序运行结果 三
  • xshell连接提示Linux服务器发送了一个意外的数据包

    服务器发送了一个意外的数据包received 3 expected 20 打开需要连接的Linux主机 编辑vim etc ssh sshd config 在最后一行添加 KexAlgorithms curve25519 sha256 li
  • Java通过自定义类加载器模拟冰蝎免杀功能

    一 Java类加载器 类加载器属于JVM的一个重要知识点 也是Java安全里命令执行 webshell管理器编写的常用技术 类加载器简介 我们知道java源文件在运行前会被编译为class类文件 存放着编译后JVM虚拟机指令的二进制字节流
  • 字符编码悉知

    1 查看windows系统代码页 代码页是字符集编码的别名 也有人称 内码表 早期 代码页是IBM称呼电脑BIOS本身支持的字符集编码的名称 当时通用的操作系统都是命令行界面系统 这些操作系统直接使用BIOS供应的VGA功能来显示字符 操作
  • BrokenPipeError: [Errno 32] Broken pipe

    运行Pytorch tutorial代码报错 BrokenPipeError Errno 32 Broken pipe 源代码地址 Training a classifier CIFAR10 该问题的产生是由于windows下多线程的问题
  • QMap遍历(修改)

    方法一 STL风格的遍历器 个人较常用 直观易读 方便修改值 QMap
  • 解决 MDK keil 注册中出现 TOOLS.INI TOOLCHAIN NOT INSTALLED 办法

    MDK Keil 兼容 C51 Keil 我们的电脑有32位系统和64位系统 当keil出现这个错误时 可以按以下办法解决 有两种解决办法 第一种 同时安装MDK Keil 和 C51 Keil 有可能解决此问题 安装必须路径相同 第二种
  • leetcode-合并两个有序链表(详解)

    合并两个有序链表 前言 一 题链接 题意 题思路 题思路图解 题代码 总结 前言 路漫漫及修远兮 一 题链接 题意 将两个升序链表合并为一个新的 升序 链表并返回 新链表是通过拼接给定的两个链表的所有节点组成的 输入 l1 1 2 4 l2
  • 【车道线】TwinLiteNet 复现过程全纪录

    码字不易 喜欢的请点赞收藏 论文全文翻译 freespace TwinLiteNet An Efficient and Lightweight Model for Driveable Area and Lane Segmentation 莫
  • 虹软人脸识别 - ArcFace SDK介绍及使用注意事项

    很多朋友在开发人脸识别系统的时候 会遇到各种各样的问题 现在我们以安卓平台使用虹软的免费离线人脸识别SDK开发为例 给大家介绍一下如何开发一个带有图片的人脸检测 视频画面的人脸属性检测 人脸注册识别等功能的人脸识别系统 一 获取SDK 1
  • [rk3588]多种wifi模组兼容

    硬件部分 M 2接口 使用的wifi模组是PCIE接口的RTL8852BE和SDIO接口的AP6256 软件部分 M 2接口介绍 M 2接口是一种用于连接各种扩展设备的接口标准 它最初设计用于连接固态硬盘 SSD 但也广泛用于连接其他设备