2026-06-19
背景
APlayReceiver 是 APlay 项目里的 Linux AirPlay/RAOP 接收端。Apple 设备发现 AirPlay 接收端依赖 Bonjour,也就是 mDNS + DNS-SD。
这次问题的现象是:
昨天 Apple 设备可以发现 APlayReceiver。
晚上设备自动休眠,没有关机,第二天 Apple 设备的投屏设备列表找不到 APlayReceiver。
重启 Apple 设备后,又可以发现 AP…
2026-06-19
背景
在调试 AirPlay 投屏接收端时,最容易遇到一个反直觉现象:接收端日志里明明已经收到了 SETUP、RECORD、SET_PARAMETER 等 RTSP 请求,但 Wireshark 里使用下面的``rtsp`显示过滤器却是空的:
这很容易让人怀疑:
是不是根本没有抓到 RTSP?
是不是 AirPlay 使用的不是标准 RTSP?
日志中为什么会有多次SETUP请求?
本文基于一次实际 AirPlay 投屏抓包,整理一…
2026-06-17
很多公司的编译服务器都不能直接上外网。这很常见:服务器在机房、实验室、内网环境里,能访问代码仓库和构建依赖,但不能直接访问 OpenAI、GitHub、npm、pip 等外部服务。现在多了一个新需求:我们想在这台服务器上跑 Codex,让 AI 直接读代码、改代码、修 bug。
一开始我也尝试过另一种办法:把服务器上的 Android 源码通过 Samba 挂载到本地电脑,然后在本地电脑运行 Codex。这个思路看起来简单,因为本地电脑…
2026-06-17
在 Android TV 项目中,同一套系统源码经常要适配多个硬件 BOM。屏、背光、按键、音频通道、麦克风和功放数量等都可能不同。本文以Amlogic T966D5 项目里的远场语音麦克风配置为例,讲清楚如何用 DTBO overlay 在不改基础 DTS 的情况下,生成两套可烧录的设备树 overlay 镜像:
4mic_3amp_10ch_dtbo.img:四麦、三功放、10 通道配置
2mic_2amp_6ch_dtbo.im…
2026-06-08
背景
在把 UxPlay 的 DNS-SD/Avahi 依赖替换为内置 mDNS responder 时,PR review 里出现了一个很典型的双栈问题:
使用内置 mdnsd 时,AirPlay 客户端会先建立一个 IPv4 TCP 连接,然后很快又建立一个 IPv6 TCP 连接,前一个 IPv4 连接被替换;使用 Avahi 时,只看到 IPv6 连接。
问题背景来自 UxPlay PR:
https://github.c…