Ovear's Blog

I'am Ovear,Ovear is me.

Theme Refrain made by Eiko

Proudly powered by WordPress

月度归档: 2024年7月

解决PipeWire无法切换到Redmi电脑音箱的问题

前言

前两个月在滚Arch的时候,发现滚完之后就无法将Redmi电脑音响设置为默认设备了,一番查找之后发现是PipeWire更新导致的。检查升级记录之后,确认从PipeWire 1.0.5开始就会出现这个问题,不管是用KDE的GUI设定为默认设备,还是通过PipeWire和WirePlumber的CLI都不行。

因为一直没空寻找具体原因,也就直接采用降级大法解决,但是经常会出现开机时初始化PipeWire卡死的问题,还是有点不方便;这两天终于抽空彻底排查了以下。

原因

既然确定了出现问的版本,接下来的事情就很简单了。通过在git提交中搜寻,最终确定了引入该问题的commit是这个cc841a76

查找的方法使用算法里面经典的图书管理员秘法之二分查找,最开始的时候还是手动二分查找的,后来想到vcs八成有自带这个功能,一搜发现是git bisect;果然大佬们早就想到这个排查bug的方法,今天又学到了新知识很开心,几次搜索之后就将出现问题的commit找到了。

解决方法

既然找到了引入问题的commit,在提交官方处理的同时,revert这个commit就自然成为目前的dirty workaround了。

将pipewire打包项目从Arch仓库中clone下来,引入下面这个patch,之后在PKGBUILD中应用就大功告成了,具体方法:把下面的patch文件拷贝到仓库所在的文件夹中,在PKGBUILDprepare方法中使用git apply ../0001-Revert-acp-add-more-properties-for-the-card.patch

0001-Revert-acp-add-more-properties-for-the-card

最后使用pacman -U安装pipewire-audio这个包就足够了;无意中发现pipewire拆成多个包之后,不同的版本搭配其实也是可以用的,比如说pipewire-audio可以用老点的版本(最新版把我小主机内置音响更没了,虽然不常用吧,但是还是能用用的;等官方处理完这个问题再看看好了没吧,没好再去发个issue看看;主要是遇到了PipeWire的大版本更新,整个设备结构和Profile都变了,估计没这么好查了),其他包用最新版,除了开机时偶尔会卡死无法正常初始化,但是成功之后没有用出什么太大问题。

尾巴

希望能够快点解决吧,这里留一个issue连接作为记录。

使用tcpdump抓取DHCP/DHCPv6封包

最近在诊断一些ICMP/DHCP问题,使用wireshark的display filter可以直接使用icmp6 or dhcpv6,但是如果是capture filter就不支持dhcpv6这样的语法了。

查询官网文档后发现,wireshark的display filter和capture filter还不一样,前者是wireshark自己解析的高级语法,后者是pcap语法,和tcpdump一样,只支持一些基础过滤。

ICMP/ICMPv6的过滤pcap直接支持,DHCP/DHCPv6使用固定的udp端口,所以可以通过端口过滤实现。

DHCP:56、57
DHCPv6:546、547

比如想过滤DHCPv6和ICMPv6的数据包,则过滤语法为icmp6 or (udp port 546 or 547 )

修改802.1p解决宽带丢包

发生了什么

群里的Lihz菊苣最近在使用广州联通的时候遇到了宽带ICMP丢包/前几个包必丢的问题,经过一番研究确认了是光猫中802.1p的设定值的问题。

802.1p标记用于标记业务优先级,取值为0-7,优先级最低为0,最高为7,优先级越高,保障等级越高,具体可以参考Wiki。

修改方式

如果是使用的光猫,通过超级管理员账号进入光猫后台,在WAN设置中找到Internet那一条WAN,编辑设置中的802.1p就可以了。

猫棒得看对应固件中支持否有相关选项,如果不支持的话可能暂时就无法修改。

找到对应设置的地方后,设置优先级为最高,即802.1p为7就没再出现问题。初步猜测原因可能是运营商设备设置错误(Lihz菊苣使用的广州联通还下发的是/64的IPv6 PD,很明显还没经过改造,不符合工信部最新的文件中关于IPv6二次下发的要求),直接使用了来自设备端的802.1p值0,即默认为最低优先级;在网络尖峰期,设备资源不足的时候因优先级不足而丢弃;按照通常配置该值一般都会被运营商覆盖掉。

备份记录

这里记录一下默认值,因为都是使用了原厂/非对应运营商的光猫所以该值仅供参考。

广东电信(MA5671原厂固件):0
广东联通(HS8145C5/2584.A/2021电信版):0
广东联通(HS8145C5/180F.A/2019电信版):0

PS:其他业务WAN的默认802.1p值
TR069:7
OTHER/IPTV:5

OpenWrt中降低preferred_time和valid_time增加IPv6的稳定性

前言

2024年的今天,在各方积极的推动下,大陆IPv6的覆盖率已经非常高了;三大运营商新开的家庭宽带已经默认开通了IPv6,现存的宽带也通过改造、下发配置、设备更新的方式在迅速的推进中;而移动端则更是激进,在4G部署时就已经是按照双栈网路配置,可以说是完全覆盖,连二级热点都已经做足了充分的兼容。

就在几天前,工信部还发了一份《两部门关于开展“网络去NAT”专项工作 进一步深化IPv6部署应用的通知》的文件,其中的目标是在进一步的推进IPv6的积极应用的同时,开始为IPv4的NAT网路去除做准备(目前阶段主要关注NAT44设备规模停止增长),同时也提出了IPv6子网标准化要求,要求对IPv6网路的二次分发功能做好兼容。

Ovear自己家的网络在大约五六年前,三大运营商开通IPv6基本厘清大陆内的交换路由后,就实装进来了,也算是见过IPv6早期混乱路由的资深用户了(笑)。

© 2024 Ovear's Blog All rights reserved.