AirPlay 投屏设备发现稳定性:mDNS 缓存一致性问题定位与修复

背景 APlayReceiver 是 APlay 项目里的 Linux AirPlay/RAOP 接收端。Apple 设备发现 AirPlay 接收端依赖 Bonjour,也就是 mDNS + DNS-SD。 这次问题的现象是: 昨天 Apple 设备可以发现 APlayReceiver。 晚上设备自动休眠,没有关机,第二天 Apple 设备的投屏设备列表找不到 APlayReceiver。 重启 Apple 设备后,又可以发现 AP…

Wireshark 分析 AirPlay 投屏

背景 在调试 AirPlay 投屏接收端时,最容易遇到一个反直觉现象:接收端日志里明明已经收到了 SETUP、RECORD、SET_PARAMETER 等 RTSP 请求,但 Wireshark 里使用下面的``rtsp`显示过滤器却是空的: 这很容易让人怀疑: 是不是根本没有抓到 RTSP? 是不是 AirPlay 使用的不是标准 RTSP? 日志中为什么会有多次SETUP请求? 本文基于一次实际 AirPlay 投屏抓包,整理一…

给不能上外网的编译服务器配置 Codex:让 AI 写代码、修 bug

很多公司的编译服务器都不能直接上外网。这很常见:服务器在机房、实验室、内网环境里,能访问代码仓库和构建依赖,但不能直接访问 OpenAI、GitHub、npm、pip 等外部服务。现在多了一个新需求:我们想在这台服务器上跑 Codex,让 AI 直接读代码、改代码、修 bug。 一开始我也尝试过另一种办法:把服务器上的 Android 源码通过 Samba 挂载到本地电脑,然后在本地电脑运行 Codex。这个思路看起来简单,因为本地电脑…

Android DTBO Overlay:远场语音多麦克风多功放动态配置实践

在 Android TV 项目中,同一套系统源码经常要适配多个硬件 BOM。屏、背光、按键、音频通道、麦克风和功放数量等都可能不同。本文以Amlogic T966D5 项目里的远场语音麦克风配置为例,讲清楚如何用 DTBO overlay 在不改基础 DTS 的情况下,生成两套可烧录的设备树 overlay 镜像: 4mic_3amp_10ch_dtbo.img:四麦、三功放、10 通道配置 2mic_2amp_6ch_dtbo.im…

AirPlay mDNS 双栈发现:A 和 AAAA 到底该怎么发

背景 在把 UxPlay 的 DNS-SD/Avahi 依赖替换为内置 mDNS responder 时,PR review 里出现了一个很典型的双栈问题: 使用内置 mdnsd 时,AirPlay 客户端会先建立一个 IPv4 TCP 连接,然后很快又建立一个 IPv6 TCP 连接,前一个 IPv4 连接被替换;使用 Avahi 时,只看到 IPv6 连接。 问题背景来自 UxPlay PR: https://github.c…