记录:排查create_ap偶发无法开启自发AP的问题

背景说明
系统:Xubuntu16.04;内核:4.14;无线网卡:EDIMAX EW-7822UAC
关于无线网卡的驱动安装和create_ap配置参考博文:Xubuntu16.04系统中使用EDIMAX EW-7822UAC无线网卡开启5G自发AP

目录

  • 问题记录
  • 排查过程
  • 解决办法

问题记录

  最近新买了一个EDIMAX EW-7822UAC无线网卡,安装了驱动,配置了create_ap,设置了5g的AP模式,当时无线网卡可以正常发射5g WIFI,外部设备也可以正常连接。今天我重启设备之后,突然就搜不到WIFI,赶紧排查了下驱动、网卡、createa_ap服务是否正常:

  • lsmod:查看驱动挂载
$ lsmod | grep 88
8821au               2142208  0
cfg80211              643072  1 8821au
kvm_intel             217088  0
aesni_intel           188416  0
hid                   114688  3 i2c_hid,usbhid,hid_penmount

可以看到8821au的驱动已经挂载

  • ifconfigiwconfig看下网卡是否还在,系统能否识别到
    ifconfig(Interface Configuration)是一个用于配置和显示网络接口的命令。
    iwconfig(Wireless Configuration)是一个用于配置和显示无线网络接口的命令。
    在这里插入图片描述
    可以看到无线网卡也被正确识别了
  • 查看create_ap服务是否正常:systemctl status create_ap
    先给出之前正常启动AP模式的create_ap服务状态,如下图:
    在这里插入图片描述
    但当搜不到WIFI后,此时再查看create_ap服务状态,如下图:
    在这里插入图片描述
    显示当前的假设是5G信号频率,信道超过了14,这就很奇怪了,因为要开启5G,我create_ap配置文件中设置的是165信号,iw list 查看当前网卡是支持165信道的。
    既然日志说了超过14信道,那就修改下 /etc/create_ap.conf 配置文件,信道改成8试下,改完后重启了下create_ap,再次查看create_ap服务状态,如下图:
    在这里插入图片描述
    此时create_ap日志又显示警告指出你的适配器不完全支持AP虚拟接口,这就有问题了。。。

排查过程

  • 插拔无线网卡实时监控系统的内核消息:dmesg -wH
  • 查看create_ap服务的日志:journalctl -u create_ap
  • 查看create_ap程序状态,发现cpu占用率为0,说明create_ap未启动或被阻塞住
htop -p `pgrep create_ap
  • 根据create_ap的服务状态,可以看到通过指令启动:/usr/bin/create_ap --config /etc/create_ap.conf
    在这里插入图片描述
  • 查看/usr/bin/create_ap,发现create_ap是由shell脚本所写,剩下的就是代码debug了,根据/usr/bin/create_ap --config /etc/create_ap.conf输出的终端信息,在/usr/bin/create_ap中增加打印信息,不断运行调试,最终发现服务未启动的原因是卡在了一个while循环里面,如下:
    在这里插入图片描述
    具体是卡在了networkmanager_iface_is_unmanaged函数里面,继续查看这个函数
    在这里插入图片描述
networkmanager_iface_is_unmanaged( )  {
	is_interface "$1" ll return 2
	networkmanager_knows_iface "$1" l| return 0
	(nmcli -t -f DEVICE,STATE d 2>&1 | grep -E "^$1:unmanaged$" > /dev/null 2>&1) || return 1
}

$1表示无线网卡名称,结合while循环中的内容可知,只有当networkmanager_iface_is_unmanaged函数中匹配到无线网卡的状态是"unmanaged"状态,才会退出while循环。

  • 至此 create_ap 服务未启动的原因已经找到,是当前无线网卡的状态不对,可通过nmcli -t -f DEVICE,STATE d指令来查看,(这个指令是用于显示网络设备的状态。具体来说,-t选项表示使用制表符作为字段分隔符,-f选项指定要显示的字段,DEVICE表示设备名称,STATE表示设备的状态。因此,这个指令将会以制表符分隔的格式显示网络设备的名称和状态。)
root@bossdog-2177018234:~# nmcli -t -f DEVICE,STATE d
enp1s0:connected
enp2s0:connecting (getting IP configuration)
wlx08beac134a56:disconnected
lo:unmanaged
# 上面这些信息是使用nmcli命令获取的网络设备状态。具体来说,它显示了四个网络设备的状态:
# enp1s0:已连接
# enp2s0:正在连接(正在获取IP配置)
# wlx08beac134a56:已断开连接
# lo:未受管控
# 其中,enp1s0表示有线网络接口1,enp2s0表示有线网络接口2,wlx08beac134a56表示无线网络接口,lo表示本地环回接口。这些状态信息显示了每个网络设备的连接状态和管理状态。
  • 可以看到,当前无线网卡wlx08beac134a56的状态是disconnected未连接的状态,而不是unmanaged未受管控的状态,需要查一下原因。
    查询资料可知:
    wlx08beac134a56显示为disconnected,而不是unmanaged。这是因为disconnected表示无线网卡已经被管理,但当前未连接到任何网络。
    unmanaged状态表示网络设备未由NetworkManager管理。这通常发生在用户手动配置网络设备或者使用其他网络管理工具的情况下。
    因此,区别在于disconnected表示设备已被NetworkManager管理,但当前未连接到任何网络;而unmanaged表示设备未由NetworkManager管理。

  • 最终问题转化为如何让无线网卡不被NetworkManager管理

解决办法

如何让无线网卡不被NetworkManager管理

  • 查询相关资料,要将当前的无线网卡设备设置为未由NetworkManager管理,可以使用以下命令:
    在这里插入图片描述
sudo nmcli dev set wlx08beac134a56 managed no

这条命令告诉NetworkManager停止管理指定的无线网卡设备。将"wlx08beac134a56"替换为你的无线网卡设备名称。执行此命令后,NetworkManager将不再管理该设备,而设备将变为未受管控状态。

执行上面命令后会在/etc/NetworkManager/NetworkManager.conf文件的在[keyfile]部分下方生成一个配置项。

PS:但实际操作后发现重启设备之后无线网卡还是被NetworkManager管理了,于是改用无线网卡的MAC地址。
操作
将/etc/NetworkManager/NetworkManager.conf里面的文件在[keyfile]部分下方添加一行unmanaged-devices=mac:<无线网卡的MAC地址>,其中<无线网卡的MAC地址>是要设置为不被管理的无线网卡的MAC地址。可以使用ip addr命令查找无线网卡的MAC地址,或者ifconfig查看MAC地址。重新启动NetworkManager服务sudo systemctl restart NetworkManager,以使更改生效。

最终问题解决,只要无线网卡处于未受管控的状态,则create_ap可以正常启动AP模式。。。

在这里插入图片描述

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

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

相关文章

【Linux笔记】自定义一个简单的shell

一、命令行解释器shell的原理 我们已经知道Linux给我们提供了一系列由exec开头的系统调用接口&#xff0c;可以让我们在自己所写的程序中调用各种指令或者我们自己写的其他程序&#xff1a; 而我们的shell命令行解释器也是接收用户输入的指令&#xff0c;然后执行&#xff1a;…

Java 实现单链表

文章目录 节点类定义单链表类总结 单链表是一种常用的数据结构&#xff0c;它由若干个节点&#xff08;Node&#xff09;组成&#xff0c;每个节点包含两部分&#xff1a;一部分是数据域&#xff0c;用于存储数据&#xff1b;另一部分是指针域&#xff0c;用于指向下一个节点。…

spring常见漏洞(1)

简介 Spring的英文翻译为春天&#xff0c;可以说是给Java程序员带来了春天&#xff0c;因为它极大的简化了开发。得出一个公式&#xff1a;Spring 春天 Java程序员的春天 简化开发。最后的简化开发正是Spring框架带来的最大好处。 Spring是一个开放源代码的设计层面框架&a…

使用RNN完成IMDB电影评论情感分析

使用RNN完成IMDB电影评论情感分析 任务描述一、环境设置二、数据准备2.1 参数设置2.2 用padding的方式对齐数据2.3 用Dataset与DataLoader加载三、模型配置四、模型训练五、模型评估六、模型预测 任务描述 本示例教程演示如何在IMDB数据集上使用RNN网络完成文本分类的任务。IM…

react native中使用tailwind并配置自动补全

使用的第三方库是tailwind-react-native-classnames&#xff0c;同类的也有tailwind-rn&#xff0c;但是我更喜欢前者官方demo&#xff1a; import { View, Text } from react-native; import tw from twrnc;const MyComponent () > (<View style{twp-4 android:pt-2 b…

51-12 多模态论文串讲—BLIP 论文精读

视觉语言预训练VLP模型最近在各种多模态下游任务上获得了巨大的成功&#xff0c;目前还有两个主要局限性: (1) 模型角度: 大多数方法要么采用encoder模型&#xff0c;要么采用encoder-decoder模型。然而&#xff0c;基于编码器的模型不太容易直接转换到文本生成任务&#xff0…

爬虫之牛刀小试(四):爬取B站番剧的简介

今天爬取的是b站。 如何爬取b站中的番剧呢&#xff1f; 首先我们来到番剧索引中&#xff0c;随便点开一部动漫&#xff0c;检查代码。 每个作品对应一个链接: https://www.bilibili.com/bangumi/play/ss…&#xff08;ss后面的数字称为ss号&#xff09; 发现关于动漫的信息…

HTML--超链接

超链接 作用&#xff1a;点击跳转到相应位置 a标签 语法&#xff1a; <a href"链接地址">文本或图片</a>范例&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"/><title>跳转到百度</t…

程序员如何弯道超车?周末有奇效

作为一名程序员&#xff0c;不断提升自己的技能和知识是至关重要的。然而&#xff0c;在繁忙的工作日常中&#xff0c;很难有足够的时间和精力来学习新技术或深入研究。因此&#xff0c;周末成为了一个理想的时机&#xff0c;可以专注于个人发展和技能提升。所以程序员如何利用…

部署Tomcat及其负载均衡

简介 在前面已经学习了Nginx服务器的安装配置&#xff0c;本章主要采用案例课的形式介绍Tomcat及NginxTomcat负载均衡群集。Tomcat案例首先介绍其应用场景&#xff0c;然后重点介绍Tomcat的安装配置&#xff0c;NginxTomcat负载均衡群集案例是应用于生产环境下的一套可靠的Web站…

006集 正则表达式 re 应用实例—python基础入门实例

正则表达式指预先定义好一个 “ 字符串模板 ” &#xff0c;通过这个 “ 字符串模 板” 可以匹配、查找和替换那些匹配 “ 字符串模板 ” 的字符串。 Python的中 re 模块&#xff0c;主要是用来处理正则表达式&#xff0c;还可以利用 re 模块通过正则表达式来进行网页数据的爬取…

NUS CS1101S:SICP JavaScript 描述:三、模块化、对象和状态

原文&#xff1a;3 Modularity, Objects, and State 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 变化中安宁 &#xff08;即使它在变化&#xff0c;它仍然保持不变。&#xff09; ——赫拉克利特 变化越大&#xff0c;越是相同。 ——阿方斯卡尔 前面的章节介绍了构…

C++学习笔记——友元、嵌套类、异常

目录 一、友元 一个使用友元的示例代码 输出结果 二、嵌套类 一个使用嵌套类的示例代码 输出结果 三、异常 一个使用异常处理的示例代码 输出结果 四、结论 五、使用它们的注意事项 上一篇文章链接&#xff1a; C中的继承和模板是非常强大和灵活的特性&#xff0c;它…

C++学习笔记——标准模板库

目录 一、简介 二、STL概述 2.1STL是什么&#xff1f; 2.2STL的优势 三、容器&#xff08;Containers&#xff09; 3.1序列式容器&#xff08;Sequence Containers&#xff09; 3.2关联式容器&#xff08;Associative Containers&#xff09; 3.3容器适配器&#xff08;…

轻松批量重命名不同路径文件:从1到N的单独编号指南

在处理大量文件时&#xff0c;有时要批量重命名这些文件。整理、归档或是进行其他类型的处理。但不同的文件可能位于不同的路径下&#xff0c;增加了批量重命名的复杂性。下面来看云炫文件管理器如何批量重命名不同路径下的文件&#xff0c;从1到N单独编号的方法。 不同路径文件…

考研经验总结——目录

文章目录 一、写作顺序二、个人情况说明三、读评论四、一些小牢骚五、一些注意事项&#xff08;持续更新&#xff09; 一、写作顺序 我将准备从三个阶段开始介绍吧 考研前考研中考研后&#xff08;也就是现在我的这种情况&#xff09; 考研前我会分为&#xff1a;数学、专业…

三轴加速度计LIS2DW12开发(3)----检测活动和静止状态

e2studio开发三轴加速度计LIS2DW12.3--检测活动和静止状态 概述视频教学样品申请源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user_uart_callback ()…

vue3+vite开发生产环境区分

.env.development VITE_APP_TITLE本地.env.production VITE_APP_TITLE生产-ts文件中应用 console.log(import.meta.env.VITE_APP_TITLE)在html中应用&#xff0c;需要安装 html 模板插件 pnpm add vite-plugin-html -Dvite.config.ts中 import { createHtmlPlugin } from v…

python|切片

切片的语法格式 object[start_index:end_index:step] &#xff08;1&#xff09;step步长&#xff1a;有正负&#xff0c;正表示正着走&#xff0c;负表示负着走&#xff0c;步长的绝对值代表一步走的距离。 &#xff08;其中&#xff0c;在深度学习中卷积也有步长的说法&…

从比特币、以太坊生态,到AI与新公链复兴,谁将接棒2024年的主流叙事?

2023年10月份至今&#xff0c;现货比特币ETF一直都是促使市场反弹的核心叙事之一&#xff0c;如今靴子终于落地&#xff0c;那在ETF预期尘埃落定的大背景下&#xff0c;接下来的加密市场有哪些赛道值得关注&#xff1f; 泛比特币生态 2023年比特币生态浪潮中&#xff0c;OKX等赢…