Thoughts, stories and ideas.

最新

蓝牙功放连接与音量异常排查记录

环境 笔记本运行 Ubuntu,桌面为 KDE Plasma Wayland,蓝牙栈为 BlueZ 加 PipeWire 1.6.2 加 WirePlumber,音频设备为一台 TVCTO 蓝牙功放,通过 A2DP 播放。 现象 三个问题同时存在。 第一,功放与电脑连接不稳定,表现为 Connection refused 111 与 Connection timed out 110 交替出现,重试若干次后可以连上。 第二,蓝牙日志中持续出现 Hands-Free Voice gateway 相关报错,A2DP 媒体流频繁断开重连。 第三,连接恢复后,系统音量调节异常。音量键只在

By bakamake

躺姿笔记本看视频的硬件与系统调优

问题背景 床头挡板与墙之间存在约三指宽的缝隙,笔记本竖直卡入其中,依靠开合角支撑。躺于床尾观看视频时,屏幕法线朝向下前方,与躺姿视线方向不一致。开合角已达机械上限,微调垫片只能改变数度,属于机构层面的约束,无法通过摆放优化解决。 一、视角问题的方案评估 方案:整机倒挂配合屏幕旋转。若开合角支持一百八十度,将键盘朝上放置,屏幕反向展开,屏幕平面朝向天花板,与躺姿视线一致。系统内将内屏旋转一百八十度即可正常显示。零硬件成本,前置条件为开合角达到一百八十度,且需接受键盘与触控板镜像。 二、KWin Wayland 下的屏幕旋转 图形界面路径为系统设置,显示与监视器,选中内屏,方向选翻转。配置由 KScreen 持久化。 命令行使用 kscreen-doctor: kscreen-doctor -o kscreen-doctor output.eDP-1.rotation.inverted kscreen-doctor

By bakamake

ros 工具怪癖

rqt 启动之后要关闭D符号debug,才能看到数据 2d pose estimate not working head frame 需要是map 才能接收2d pose estimate ,但是这部分是amcl处理数据来收敛的, ros2 wtf ,刚刚发现这个东西还挺好用的 要看到蓝→红渐变,必须订阅带 inflation layer 的 costmap topic,例如: * /local_costmap/costmap * /global_costmap/costmap /map 节点切换到 costmap 也只能看到洋红色的障碍物,因为/map里100是障碍物,以及0和-1,costmap接受的范围是0~255

By bakamake

iwd 提高 Wi-Fi 断连容错能力

iwd(iNet wireless daemon)负责 Linux 系统中的 Wi-Fi 连接管理。对于偶发断连、连接恢复较慢或漫游异常等问题,可以通过调整扫描、漫游和网络配置相关选项提高连接的容错能力。 配置 配置文件: /etc/iwd/main.conf 示例配置: [General] EnableNetworkConfiguration=true [Scan] DisablePeriodicScan=false [Network] EnableRoaming=true 修改配置后重启 iwd: sudo systemctl restart iwd 日志排查 发生断连时,可以实时查看 iwd 日志: journalctl -u iwd -f 重点关注以下错误: 4-Way Handshake failed

By bakamake

使用 systemd + NetworkManager 保持 USB Wi-Fi 网卡连接到固定 BSSID

目标 系统使用 NetworkManager,并以 iwd 作为 Wi-Fi 后端。 对于一张可热插拔 USB Wi-Fi 网卡,需要保证: * USB 网卡插入后自动恢复连接; * NetworkManager 始终管理该接口; * 固定连接指定 SSID; * 固定连接指定 BSSID,避免连接到同 SSID 的其他 AP; * 连接断开后能够自动恢复; * 不干扰系统中的其他 Wi-Fi 接口; * 不直接操作 iwd,而由 NetworkManager 统一管理连接状态。 本文配置如下: Interface: wlxe0e1a9101c1c MAC: xx:xx:xx:xx:xx:xx Driver: mt76x2u Connection:

By bakamake

comprehensive some mod and net tip show

今天玩了一下modinfo,主要是一直对linux内核裁剪有兴趣,但是没什么条件熟悉这一块的外围。 lsmod | Select-Object -Skip 1 | ForEach-Object { $m=$_.Split()[0] $info=modinfo $m [PSCustomObject]@{ Module=$m Description=($info | Select-String "^description:" | ForEach-Object {$_.Line -replace "description:\s*",""}) Depends=($info | Select-String "^depends:" | ForEach-Object {$_.Line -replace "depends:\s*

By bakamake