CagedBird's Lab

Systems, Android, networks, and useful tools

这台笔记本的休眠问题拖了一年多。

它不是那种“点一下没反应”的简单故障,而是每往前推进一步,就暴露下一层问题:先是 systemd 直接拒绝休眠,然后是 NVIDIA 恢复路径出错,再后来是镜像明明写进去了,机器却黑屏、键盘亮、风扇转,死活不真正断电。

最后真正稳定工作的状态反而很朴素:

1
2
3
4
5
6
7
8
Arch Linux
KDE Plasma Wayland
2560x1600 @ 240Hz
独立 swap 分区
resume=UUID=<swap-uuid>
HibernateMode=platform
NVIDIA 走 systemd/procfs sleep 路径
NVIDIA 不进 initramfs

这篇记录一下完整判断过程。重点不是照抄某个配置,而是把“休眠失败”拆成几个阶段来看。

阅读全文 »

昔年玩軟路由,常有一惑:若 Clash TUN 接管全家流量,smartdns 又當如何優選?

DNS 欲優選,須見真網;TUN 欲接管,則要攔流。二者若不分道,smartdns 所見,已非底層網路,而是代理之後的影子。以影測形,必生玄學。

今日終於想明白:問題不在 TUN 與 smartdns 不可共存,而在控制面與數據面混作一處。

阅读全文 »

这次遇到的是一个很离谱但又很典型的问题:一个明明有 Linux 原生版本的 Steam 游戏,在 Arch Linux 上切到中文后,主菜单按钮框还在,文字却空了;反而用 Steam Legacy Runtime / Wine 跑 Windows 版时中文正常。

最后修好以后,结论不是“Linux 没装中文字体”,而是更具体的一类坑:老 Unity Linux 原生版在 Steam Runtime 里直接读了 DejaVu 字体,绕开了宿主系统的 CJK fallback

阅读全文 »

我最开始只是想做一件很朴素的事情:让手机和电脑稳定互联。

不是那种“在同一个 Wi-Fi 下面互相发现”的互联,而是无论手机在移动数据、电脑在家里、笔记本在公司,所有设备都能通过一个统一的 tailnet 相互访问。最好 Android 上也不要同时跑 Tailscale、Clash、KDE Connect、各种代理和后台服务。我希望 sing-box 既负责代理,也负责 tailnet,而 KDE Connect 只要相信这个 tailnet 就行。

听起来很合理。

真正做起来以后,我才发现,这里面藏着几个非常典型的现代网络软件陷阱:UI 状态不等于数据面状态,ping 通不等于 TCP 走对了路,抓包看到 100.64.x.x 不等于应用层也能看到 100.64.x.x。最后这个问题甚至一路挖到了 KDE Connect Android 的源码,并被整理成了 KDE Bugzilla 和 KDE Invent Merge Request。

阅读全文 »

这次记录一场非常典型、也非常折磨人的开发板无线网络排障:Orange Pi 5 Pro 在 Joshua-Riek/ubuntu-rockchip 系统上,开机后短暂能连 5GHz,但几分钟内就会掉回 WORLD / 只剩 2.4GHz,最终断网。

最后真正的解法,不是继续在路由器、DFS、DNS、翻墙环境上兜圈子,而是把这块板子的 Wi‑Fi 驱动路径从 brcmfmac 切到 bcmdhd_sdio

阅读全文 »

引子:告别“纯手工”时代

如果你也是一名 Android 玩机爱好者,你一定经历过这样的痛苦:

  1. 机场订阅更新了,得手动去复制链接、更新配置、重启服务。
  2. 想要微调一个分流规则,得在手机那个局促的编辑器里改几十行 JSON。
  3. 换了台手机,所有的分流逻辑又要重写一遍。

在 CagedBird-Lab 的世界里,这种低效的操作是不被允许的。既然我们已经有了准时的调度(MiceTimer)和高质量的数据(FCM-Hosts-Next),那么最后一步就是:将 Sing-box 运行环境彻底基础设施化。

今天我们要聊的是:如何用 Infrastructure as Code (IaC) 的思想,重构 Android 端的网络治理。

阅读全文 »

引子:域名再美,数据不活也是徒劳

在上一篇《MiceTimer 诞生记》中,我们解决了 Android 端的“执行确定性”问题。但很快,另一个更底层的问题浮出水面:如果你的 Hosts 数据本身就是腐烂的,那么再准时的唤醒也只是在搬运垃圾。

市面上大多数 FCM 优化方案都死在了“数据源”上:要么是几个月更新一次的静态文件,要么是简单粗暴的全局 Ping 扫描。

在 CagedBird-Lab 的哲学里,数据不应该是“捡”来的,而应该是“炼”出来的。今天我们拆解这套全自动化的数据工厂:FCM-Hosts-Next

阅读全文 »
0%