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

分享

问题背景

床头挡板与墙之间存在约三指宽的缝隙,笔记本竖直卡入其中,依靠开合角支撑。躺于床尾观看视频时,屏幕法线朝向下前方,与躺姿视线方向不一致。开合角已达机械上限,微调垫片只能改变数度,属于机构层面的约束,无法通过摆放优化解决。

一、视角问题的方案评估

方案:整机倒挂配合屏幕旋转。若开合角支持一百八十度,将键盘朝上放置,屏幕反向展开,屏幕平面朝向天花板,与躺姿视线一致。系统内将内屏旋转一百八十度即可正常显示。零硬件成本,前置条件为开合角达到一百八十度,且需接受键盘与触控板镜像。

二、KWin Wayland 下的屏幕旋转

图形界面路径为系统设置,显示与监视器,选中内屏,方向选翻转。配置由 KScreen 持久化。

命令行使用 kscreen-doctor:

kscreen-doctor -o
kscreen-doctor output.eDP-1.rotation.inverted
kscreen-doctor output.eDP-1.rotation.normal

旋转由合成器按输出管理,外接鼠标光标方向不受影响。键盘键序镜像,躺姿场景通常使用外设,可忽略。触控板方向反转是已知问题,详见下节。

三、触控板反置的边界

屏幕旋转只作用于显示输出与绝对坐标设备。触摸屏通过 udev 校准矩阵自动跟随旋转,触控板作为相对坐标设备,其坐标系不随单屏旋转,方向整体反转。

libinput 对相对设备不暴露轴向配置项,KWin 亦无对应设置。X11 会话下可用 xinput 的 Coordinate Transformation Matrix 反置坐标,但 XWayland 只作用于 X 应用,对原生 Wayland 应用无效。整条链路在 Wayland 架构下没有可行的反置手段。

结论:Wayland 会话中触控板反置不可实现。可选替代为外接鼠标、空中飞鼠、或 KDE Connect 虚拟触控板。使用空中飞鼠时,建议在旋转模式下禁用内置触控板以避免误触。

四、蓝牙断连的分层诊断

症状分层

症状一,鼠标间歇断续后自动重连。指向控制器省电策略,候选机制为 USB autosuspend 对蓝牙控制器的整体休眠。

症状二,音响闲置一段时间后断连。指向音频会话挂起。PipeWire 会话管理器在 sink 空闲数秒后挂起节点,蓝牙设备挂起即释放 A2DP profile,连接随之断开。

症状三,切换音频输出至其他功放时蓝牙断开。与症状二同因,profile 释放导致。

三者相互独立,分别处理。

诊断流程

确认音频栈与控制器身份:

pactl info | grep "Server Name"
lsusb | grep -i bluetooth
bluetoothctl show

复现阶段双终端并行抓日志:

journalctl -b -f -u bluetooth
sudo btmon

断连瞬间依据 reason code 分型:

  • Local User Terminated:本机协议栈主动断开,属音频侧问题。
  • Connection Timeout:链路层超时,属控制器省电或射频干扰。
  • Remote User Terminated:对端主动断开,属音响行为。

修复

音频侧,创建 ~/.config/pipewire/pipewire.conf.d/00-disable-suspend.conf:

context.properties = {
    session.suspend-timeout-seconds = 0
}

重启生效:

systemctl --user restart pipewire wireplumber

控制器侧,通过 udev 规则将蓝牙设备 power/control 钉为 on,或在 TLP 配置中排除该设备。

另需留意 WiFi 与蓝牙的射频共存。AX 系列二合一卡中二者共用2.4GHz天线与射频前端。大流量 WiFi 传输期间蓝牙掉线概率升高、btmon 中出现大量重传,即属此类。共存问题不可通过软件参数根治,隔离手段见下节。

五、外接蓝牙适配器

外接 USB 蓝牙适配器将蓝牙链路整体迁出内置 AX 卡,WiFi 独占射频前端,同时规避共存干扰。

选型以 Realtek RTL8761B 芯片为首选,支持蓝牙五点一,固件随 linux-firmware 分发。CSR8510 免驱但仅支持蓝牙四点零。杂牌高版本型号固件来源不可靠,予以排除。预算允许时选择外置天线款。

接入与切换:

lsusb
hciconfig -a
sudo hciconfig hci0 down
sudo hciconfig hci1 up

配对信息存储于控制器侧,更换 hci 后需重新配对。永久禁用内置控制器可写 udev 规则。确认流量走向:

btmon -i hci1

阅读更多

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

环境 笔记本运行 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

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