Fuchsia F28 版本说明

日期:2025 年 10 月 9 日

版本:F28

已实现以下更改:

音频

针对音频进行了以下更新:

  • 使用新的 FIDL API(使用 Zircon 套接字进行主机驱动的测试)对 audio_recording 服务进行了现代化改造,并对其进行了重构,以提高可靠性和简洁性。
  • 增强了音频驱动程序 signalprocessing 协议的测试覆盖范围。 这包括为拓扑、元素和状态管理添加全面的验证,以及更新虚拟音频测试驱动程序以促进这些更严格的测试。
  • 改进了 ffx audio 开发者工具,使其具有更强大的 play 命令、用于诊断的数据路径跟踪功能,以及更直观的 device info 命令输出。
  • 通过在测试用例后添加延迟来缓解间歇性 ZX_ERR_ALREADY_BOUND 失败,从而提高了 audio_driver_admin_tests 的可靠性。
  • 更新了音频驱动程序测试,以验证仅支持立体声 DaiFrameFormats(例如,I2S)正确通告仅立体声支持。

蓝牙

针对蓝牙进行了以下更新:

  • 对免触摸操作配置文件 (HFP) 免触摸角色进行了重大改进
  • 通过以下方式改进了 RFCOMM 的稳定性和性能:实现反压机制、分离 RX/TX 数据路径,以及优化信用水位,以防止在高吞吐量场景中出现数据包丢失问题。
  • 引入了新的测试功能库和 bt-affordances-server 组件,允许通过 ffx bluetooth 控制蓝牙。
  • 重构了蓝牙主机初始化,以动态方式向特定 bt-host 组件提供 HCI 驱动程序,而不是公开共享设备目录,从而提高了安全性和灵活性。
  • 添加了新的 FIDL API,以允许客户端与 LE 定期广播序列同步。
  • 在启动时启用低功耗模式,以减少总体功耗。
  • 通过允许更多并行测试执行,加快 A2DP 源集成测试速度
  • 修复并启用了之前停用的 AT 命令测试,以确保这些测试作为持续集成检查的一部分运行。
  • 修正了测试 HostServerWatchState 的行为,使其能够作为挂起 Get 正常运行,从而提高了 GAP 测试的可靠性。
  • 启用 bt-snoop-from-snapshot 工具以处理来自 Starnix bug 报告的数据

构建

针对 build 进行了以下更新:

  • 使用 Bazel 而不是 GN 构建 Fuchsia IDK(可集成开发者套件),这是构建系统迁移过程中的一个重要里程碑。此变更包括移除旧版 meta.json 生成脚本,并为 SDK Atom 类别、API 区域和头文件添加新的验证。
  • 修复了因 Clang 工具链版本文件跟踪方式不正确而导致增量 Bazel build 失败的严重 bug
  • 通过将多线程 Rust 和 C++ ThinLTO 链接作业定向到更大的工作器并提高缓存命中率,改进了远程构建执行 (RBE) 性能
  • 通过在单个简化的操作中执行图片组装和产品包创建,提高了产品的 build 性能
  • 更新了 build 再生器,以打印缓慢步骤的时序,帮助识别性能回归,并修复了导致每个 build 上不必要再生的 bug。
  • 为 RISC-V build 启用了帧指针,现在在 LTO build 期间正确使用原子(“A”)ISA 扩展。

钴蓝

针对 Cobalt 进行了以下更新:

  • 通过将 SetSoftwareDistributionInfo 函数替换为更直接的 SetChannel简化了渠道设置逻辑
  • 在报告定义中引入了 Cookie 桶支持,用于计算置信区间。此更改还通过将 COOKIE_BUCKET_ID 重命名为 COOKIE_BUCKET 来明确命名。

组件框架

针对组件框架进行了以下更新:

  • 添加了一个新的内置调度程序组件,该组件可以动态启动工作器组件以响应功能请求。
  • fuchsia.component.Realm 协议添加了 GetChildOutput 函数,允许父级使用基石 API 访问子级的输出字典。
  • 通过优化(例如更高效的 moniker 数据表示、延迟对象实例化和按需请求生成),显著减少了 component_manager 中的内存使用量。
  • 改进了开发者工具和可观测性。ffx component doctor 命令现在可以检查字典内容,可以为组件启用堆转储插桩,并且组件实例 ID 现在通过检查公开。
  • 修复了以下崩溃问题:当组件向不同来源(例如 parentframework)公开两个具有相同目标名称的功能时,会发生崩溃。
  • 将从 bootfs 创建的 VMO 标记为不可调整大小,从而提高效率并防止映射失败。
  • 使 fuchsia.time.UtcClock 可进行内存映射,以便从对性能敏感的组件(如 Starnix)更高效地读取时钟。
  • 更新了组件管理器的沙盒实现,以使用现代 fuchsia.io/Directory.Open 方法,从而提高了与最新 fuchsia.io 服务器的兼容性。
  • full-resolver 组件合并到了 pkg-resolver 中。此合并通过从核心集中移除一个组件来减少 eng build 的内存占用。

诊断

针对“诊断”功能进行了以下更新:

  • 通过以下方式改进了 Archivist 的可靠性和性能:使用新的 panic 钩子、为内部日志缓冲区使用更高效的 IOBuffer,以及将串行日志写入移至专用线程以防止阻塞。
  • 为日志记录服务实现了一个新的 Flush 方法,以确保写入所有缓冲的日志,同时还解决了 Archivist 中潜在的终止问题。
  • 增强了读取检查数据的功能,使其能够更好地应对无响应的组件。 现在,超时会应用于延迟节点的各个 FIDL 连接,从而防止单个缓慢节点阻塞整个快照。

显示

展示广告方面进行了以下更新:

  • ti-lp8556vim3-pwm-backlight 驱动程序迁移到 DFv2,用已公布的 FIDL 服务替换了 devfs 节点,以改进组件交互。
  • 通过以下方式提高了显示屏协调器的稳定性:统一其线程处理模型,确保同步客户端拆解以防止出现释放后使用错误,并修复了映像清理竞态条件。
  • 通过引入多个 FIDL 适配器(EngineListenerDisplayEngine)和一个统一的 EngineListener 接口来抽象化底层协议,进一步推进了从 Banjo 到 FIDL 的显示驱动程序接口迁移。
  • 通过重命名不明确的类型(例如将 DisplayMode 重命名为 DisplayTiming)、移除冗余的 BufferId 结构体以及简化 CheckConfig() 方法,简化了显示 FIDL 和 Banjo API
  • 通过以下方式增强了 VSync 处理:要求所有显示驱动程序的所有 VSync 事件都具有有效的配置戳记,并移除了客户端在启用 VSync 后选择停用 VSync 的未使用功能。
  • 通过拒绝空配置、强制执行驱动程序声明的 max_layer_count 并添加对为颜色层指定 display_destination 的支持,加强了配置验证
  • 通过向众多显示 API 类型添加 std::format 支持,并使用更好的类型安全性和转换模式对内部 api-types C++ 库进行现代化改造,改善了开发者体验

驱动程序框架

针对驱动程序框架进行了以下更新:

  • 通过移除许多已弃用的 DDK 函数和元数据 ID,继续从 DFv1 迁移。这包括移除 device_add_metadataconfigure_auto_suspend 和旧版元数据常量(例如 DEVICE_METADATA_WIFI_CONFIG)。
  • 修复了驱动程序节点稳定性方面的问题,方法是确保在驱动程序宿主意外关闭时,驱动程序节点能够得到妥善隔离。
  • 继续将驱动程序迁移到 DFv2,包括 aml-pwmaml-nnaaml-meson-poweri2c-channel 库也已更新为与 DFv2 兼容的版本,以支持新式驱动程序。
  • 启用驱动程序组件以实现新的 Suspendable 特征,从而添加可选的挂起和恢复生命周期钩子。
  • 通过移除多个已弃用的子命令(包括 devicelspcilsusbrun-tool)并添加一个符合人体工程学的新 node 子命令,简化了 ffx driver 插件
  • 通过以下方式增强了 Rust 驱动程序生态系统:使用新的 PlatformDevice 特征来改进对伪平台设备的测试;使用辅助方法来解析启动实参中的驱动程序配置;使用 mock-mmio crate 来支持模拟 MMIO 操作。
  • 通过主动生成新线程来检测和缓解停滞线程,以确保向前进展,并将停滞计时器检查与实际停滞时长对齐。
  • 修复了平台总线驱动程序中默认 IRQ 模式未正确配置的问题,该问题可能会导致电平触发中断失败。
  • 为互连引入了新的核心驱动程序和 FIDL 库。该系统可管理和汇总来自多个客户端的带宽请求,并将其发送给单个供应商驱动程序,从而简化硬件交互。

反馈

我们针对反馈功能进行了以下更新:

FIDL

针对 FIDL 进行了以下更新:

  • 通过将生成的函数正文移出头文件并移入单个源文件,优化了 C++ FIDL 代码生成,以缩短构建时间。此更改可显著加快 C++ 目标的编译速度。
  • 扩展了 ABI 兼容性检查器,使其可针对所有类别的 SDK FIDL 库运行,从而提高 API 稳定性保证。

固件

固件进行了以下更新:

  • 实现了一种用于传递引导加载程序文件的标准机制。现在,可以使用 /chosen/google/bootloader-files devicetree 节点将引导加载程序文件(例如 SSH 密钥)传递给 Fuchsia。一项相关修复可确保这些文件的暂存区得到正确对齐。

GPU 和图形

针对 GPU 和图形进行了以下更新:

  • 为 GPU 客户端引入了可信路径,允许 Scenic 等可信组件请求更高的 GPU 调度优先级。这包括新的 fuchsia.vulkan.loader.TrustedService、可信的 Magma FIDL 协议,以及用于简化设备发现的新 magma_enumerate_devices API。
  • 在整个图形堆栈中添加了对 STRAIGHT_ALPHA 混合模式的支持,从而可以渲染未与 Alpha 预乘的源像素。这包括 Flatland 中的新 BlendMode2 和对 Vulkan 命令缓冲区流水线的更新。
  • 通过将 msd-arm-mali 驱动程序迁移到 ElementRunner 协议并在 Magma sys_driver 中创建通用电源管理器来处理电源状态请求,改进了 GPU 驱动程序的电源管理
  • 为 Vulkan 交换链添加了对立即呈现模式的支持,该模式允许客户端以渲染帧的速度推送帧,因此非常适合用于基准比较。
  • 更新了预构建的 Arm Mali ICD,以纳入各种改进,包括支持 VK_FORMAT_A2B10G10R10_UNORM_PACK32 格式和其他稳定性修复。
  • 通过修复 use-after-free bug 并添加逻辑来主动取消反复导致硬件错误的客户端连接,提高了 msd-arm-mali 驱动程序的稳定性
  • 已迁移 Magma 驱动程序测试以使用标准驱动程序测试夹具fdf::AddOwnedChild(),从而使测试更易于编写和读取。

本地化

针对 I18n 进行了以下更新:

  • 更新了 Fuchsia 的本地化导出。

IoT、Matter 和 Thread

针对 IoT、Matter 和 Thread 进行了以下更新:

  • 着陆低 pan ePSKc(用于调试的增强型预共享密钥)已更改,包括更新 OpenThread 依赖项、添加 Rust 绑定和与 FeatureConfig 服务集成。不会为 F28 启用该功能。
  • 更新了 LoWPAN 无线电平台以处理 OpenThread 状态变化,并启用了 CSL(协调采样监听)发射器功能。
  • 通过在发布服务失败时实现重试机制,提高了 LoWPAN 边界代理的可靠性
  • 通过将 Weave 中的虚假目录文件设为只读来提高安全性

内核

针对内核进行了以下更新:

  • 增强了 ARM64 上的 CPU 暂停和恢复功能。通过与 PSCI CPU_SUSPEND 接口集成,并为 GICv3 中断控制器和平台计时器添加挂起/恢复钩子,引入了对 CPU 挂起的支持。为了改进诊断,引入了一个用于报告系统唤醒源的新 API。
  • 引入了更高效的压缩网页存储系统。VmTriPageStorage 实现替换为新的基于 slot 的系统,该系统可将内存存储开销从约 24% 大幅减少到约 5%。

Netstack

针对 Netstack 进行了以下更新:

  • 针对 IPv4 实现了重复地址检测 (DAD)。DHCP 客户端现在使用此功能来防止新获取的地址发生 IP 冲突。
  • 引入了 fuchsia.net.settings FIDL API,用于动态配置网络设置,例如接口默认值和套接字缓冲区大小。
  • 在 Netstack3 中为入站和出站数据包启用了 eBPF 过滤条件支持,从而可以进行高级数据包检查和操作。
  • 将 socket-proxy 组件设为关键组件,导致设备在终止时重新启动,以确保套接字可用性和系统稳定性。
  • 添加了用于管理接口本地路由表的 FIDL 支持,从而实现更精细的路由控制。
  • 在 Netstack3 中实现有序关闭路径,以确保组件干净可靠地终止。
  • 在 Netstack3 中为非关键传输协议引入了动态序列化程序,显著缩短了编译时间并减小了二进制文件大小。
  • 为 json5 配置文件启用了 Netcfg 支持,通过注释和尾随逗号等功能提高了可读性和可维护性。
  • 阻止 Netstack3 转发具有链路本地地址的 IPv6 数据包,符合 RFC 4291。
  • 修正了 TCP 窗口大小计算中的一个 bug,该 bug 可能会导致出现窗口大小过大的 panic。
  • 修复了快速停止和启动重复地址检测时可能导致出现紧急状况的竞态条件。
  • 增强了 Netlink 子系统,以支持非受管的接口本地路由表。现在,当添加 IP 地址时,它不再安装 /0/32 子网路由,从而更贴近 Linux 行为。

平台驱动程序

平台驱动程序进行了以下更新:

  • 将 DWC3 USB 驱动程序大幅重构为单线程模型,以简化锁定并接收端点状态跟踪方面的修复。添加了对互连资源上的调节器绑定和投票的支持。
  • 引入了新的核心互连驱动程序,用于管理和汇总总线带宽请求。还改进了时钟和中断的 Devicetree 访问者,以实现更强大的硬件发现功能并支持可唤醒的中断。

电源管理

针对电源管理进行了以下更新:

  • 迁移了多个电源驱动程序和组件以使用 ElementRunner 协议,该协议反转了与 Power Broker 的客户端/服务器关系,从而简化了电源电平管理。这包括 UFS、msd-arm-mali、aml-sdmmc、sdmmc 和 timekeeper 组件。
  • 增强了电源管理和暂停功能,新增了用于报告系统唤醒源的 API,通过 PSCI 支持更深层次的省电状态,并实现了更精细的 CPU 电源控制。为了改进诊断,系统活动调节器现在会跟踪累计暂停时间。
  • 改进了 SDMMC 驱动程序,以实现更好的电源管理和暂停/恢复处理。它现在可以发送关机通知、正确探测 eMMC 设备并在恢复时重置总线设置,并且 aml-sdmmc 驱动程序已迁移到 ElementRunner 电源管理协议。
  • 对驱动程序电源管理库进行了重构,以显著改进唤醒租用,从而提高清晰度、正确性和易用性。这包括重命名类、明确手动租约和基于超时的租约之间的责任,以及修复与暂停/恢复周期中的租约失效相关的 bug。
  • 通过向 Inspect 添加更多数据,增强电源管理可观测性和诊断能力。这包括历史温度传感器读数、Starnix 唤醒锁定的来源和有效 epoll 计数,以及 FSH 驱动程序的启动/单调时钟偏差。
  • 引入了新的 poweroff_for_shutdown 配置,以允许电源管理器在关机过程中关闭设备,而不是重新启动。
  • 使存储电源管理依赖于 fuchsia::suspending_token,以防止设备进入不可挂起状态。

Rust

Rust 进行了以下更新:

  • fuchsia-async 进行了重大改进,包括用于创建执行器的新构建器模式、对 Scope 中协同取消的支持,以及用于处理硬件中断的 OnInterrupt 流。将任务取消方法从 cancel() 重命名为 abort(),以与新的取消语义保持一致。
  • 增强型工具fx clippy 现在接受 glob 模式和额外的标志,并且主机端 Rust 测试在失败时会生成符号化回溯,以便更轻松地进行调试。

软件交付

我们针对软件交付进行了以下更新:

  • 启用了一种新的“无软件包”无线下载 (OTA) 更新流程。系统更新程序现在可以从 HTTP/S 网址提取清单,以下载、暂存和提交更新,从而无需使用传统的更新软件包。
  • 在软件包清单assembled_system.json 中添加了 ABI 修订版本,以便更轻松地识别哪些软件包使用了哪些 ABI 修订版本。
  • pkg-cache 内存用量优化了 690 KiB 以上。这是通过切换到更节省内存的内部数据结构并避免不必要的数据复制来实现的。
  • 引入了新 API,以便更直接地控制 Blob。pkg-cachepkg-resolver 组件现在具有新的 API(RetainedBlobsWriteBlobsFetchBlob),可更直接地控制 blob 提取和垃圾回收。

Starnix

针对 Starnix 进行了以下更新:

  • 为崩溃报告引入了节流机制,以减少崩溃循环进程造成的系统负载。如果某个进程在 8 分钟内崩溃超过 8 次,后续报告将受到节流限制。
  • 添加了对 io_cancel 系统调用的支持,从而实现异步 I/O 取消。
  • FileObject 上针对 get-memorymmap 强制执行了 noexec 装载选项。
  • 针对 FsNode 访问检查实现了 CAP_DAC_READ_SEARCH 功能
  • 通过为众多操作(包括信号继承 (siginh)、文件系统装载 (mounton) 以及各种套接字和 binder 操作)实现权限检查,加强了 SELinux 执行
  • 修正了与 syslog 相关的操作(/dev/kmsg/proc/kmsgsyslog(2))的权限检查,以与现代 Linux 行为保持一致。
  • 为私有匿名内存启用了 VMO 优化。还修复了 smaps 生成,以支持此功能,从而提高内存效率。
  • 通过多项更改提高了性能并改进了内存使用情况,包括启用链接时优化 (LTO)、减小内部 Mapping 结构的大小,以及添加 clean_stack 函数以取消提交未使用的堆栈页面。
  • 更新了 devpts 文件系统,以支持多个独立实例,每个实例都使用 newinstance 装载选项拥有自己的一组伪终端。
  • 通过基于启动时间轴(包括在挂起状态下花费的时间)来报告 /proc/uptime 中的系统正常运行时间,使其与 Linux 行为保持一致。
  • 增强了 eBPF 支持,并添加了多项新功能,包括 32 位内存操作、UDP 发送/接收钩子、套接字选项钩子和多项新的辅助函数。
  • 修复了 binder 错误回复的罕见问题,即这些回复可能会被无序处理,导致从堆栈中弹出错误的事务。
  • 通过在单个 ioctl 调用中收集所有要返回的写入内容,优化了远程 Binder 通信,从而减少了 FIDL 流量。
  • 更新了任务优先级和 nice 值处理,以更好地与 Linux 行为保持一致,包括适当的 RLIMIT_RTPRIO 强制执行,现在默认值为零。
  • fastrpcdmaheap 添加了新模块,以向 Starnix 应用提供跨处理器 RPC 功能。

存储

存储空间进行了以下更新:

测试

以下是针对测试进行的更新:

  • 对 Honeydew 端到端测试框架进行了多项增强,包括用于控制 USB 电源的 UsbPowerHub 设备、用于测量电源的重命名 powerserver 库、新的音频和场景功能、改进的会话清理机制,以及在修复了不稳定性来源后重新启用了屏幕截图断言。
  • 对调试器端到端测试进行了多项改进,以提高稳定性,包括改进命令-输出同步、支持无序输出匹配、添加更多日志记录,以及暂时停用 DebugAgent 集成以减少日志垃圾内容。
  • 添加了新的 Lacewing 端到端测试,以验证设备在收到重启指令时是否会以预期原因重启。
  • 添加了新的 IPC 基准,用于比较传输大型消息的不同方法,包括 BatchStream 的特定基准。

计时

针对时间管理功能进行了以下更新:

  • 引入了唤醒闹钟模拟,以便在缺少硬件支持的平台上提供一致的 fuchsia.time.alarms API。
  • 添加了 WakeAlarms.Set() API,该 API 使用监听器模式作为 SetAndWait 的替代方案,以更好地支持可托管的组件安排唤醒。
  • 更新了 Timekeeper 以使用网络可达性服务,从而避免在没有网络连接时尝试同步时间,进而减少耗电量。
  • 通过修改 SetAndWait 签名来改进唤醒租约管理,并移除了未使用的 GetPropertiesCancelSync 方法,更新了 fuchsia.time.alarms.Wake API
  • 通过修复潜在的计时器比较溢出问题、确保 Timekeeper 等待 hrtimer 枚举以及防止因时钟 ID 重复而导致的启动失败,提高了时间和闹钟服务的稳健性
  • 启用了从已供电的外围设备获取启动时间的功能,从而允许时间在重新启动后保持不变。
  • 将 Timekeeper 迁移到新的 ElementRunner 协议,以改进电源管理集成。

工具链

针对工具链进行了以下更新:

工具

针对工具进行了以下更新:

ffx

针对 ffx 进行了以下更新:

  • 通过 -d--direct 标志启用了一种新的直接连接模式,从而允许许多命令在没有守护程序的情况下连接到目标。这包括改进了 ffx target list 的行为,并针对特定于守护程序的命令进行了适当的错误处理。
  • 添加了用于管理窗口的新 ffx wm 工具,其中包含用于 listfocuscycleset_order 窗口的子命令。
  • 更新了 ffx target flash 命令以显示进度指示器,并向 ffx target snapshot 添加了新的 --upload 选项,以将快照上传到 GCS 存储分区。
  • 移除了用于管理默认目标的旧版方法,并废弃了 ffx target default {set, unset} 命令和 fx -d 标志。
  • 修复了多个稳定性问题,包括并发 SSH 连接可能出现的死锁以及等待远程控制代理时出现的超时问题。
  • 移除了 ffx agis 命令。

fx

针对 fx 进行了以下更新:

  • 增强了用于管理产品套装的 set-main-pb 工具,提供基于文本的用户界面 (TUI),以便更轻松地进行选择,并按字母顺序对套装列表进行排序。
  • 启用 fx 以针对输入错误的命令提供实用建议。
  • 添加了新的命令行标志,包括 fx build--quietfx create-pb-zip 的压缩级别标志 (-c) 以及用于在 fx qemu 中跳过 SSH 密钥修补的选项。
  • 使用预构建版本的 jq 并修复了 fx rbe auth 的身份验证问题,使 fx 环境更加可靠。
  • 移除了 fx create 的已弃用标志 --with-base
  • 改进了开发者工作流程:在 fx serve 中实现了自动端口转发,并提供了一个共享库来消除打包工具之间重复的网址提取逻辑。

zxdb

针对 zxdb 进行了以下更新:

  • 改进了 zxdb 调试器,添加了对 std::span 的 PrettyType 支持,并修复了 display 命令以遵循配置的整数格式。

跟踪记录

以下是针对跟踪功能进行的更新:

  • 针对流式模式显著优化了 ktrace_provider,可减少延迟时间、实现更一致的轮询、加快启动速度,并更高效地读取内核缓冲区,从而提高轨迹数据可靠性。
  • 通过 ffx trace 为流式跟踪记录启用设备端缓冲,以便在会话结束时传输数据,从而减少收集期间的 CPU 开销。
  • 为 FXT 轨迹格式添加了新的 blob 实参类型,用于嵌入不透明数据。此外,还提供了一个新的 fxtdump 主机工具,用于检查和调试 FXT 文件。
  • 优化了 trace2json 工具,使其通过采用双遍读取方法和缓冲输出流,可显著减少内存使用量并提高高达 40% 的运行速度。
  • 通过启用实参内部化来减小轨迹大小,并通过优化锁使用来缩短 ATrace 事件的写入时间,提升了 Rust 轨迹记录性能
  • 更新了轨迹引擎,以使用新的、更正确且可测试的滚动缓冲区实现,从而修复竞态条件。

界面

界面方面进行了以下更新:

  • 显著改进了 Scenic 的性能和诊断功能。 这包括新的跟踪工具(scenic_session_presentrun_graphics_metrics)、针对直接显示故障的更出色的诊断功能、对帧预测逻辑的修复,以及通过增加 Escher 的清理间隔来提升性能。
  • 添加了对新 Vulkan 映像格式的支持。Scenic 现在支持 A2B10G10R10UnormPack32R8Unorm
  • 为 Flatland 添加了帧计数器叠加层,以便进行可视化调试。可以通过组件配置或设置 visual_debugging_level 来启用该功能。
  • 将 Scenic 支持的硬件显示层数量上限从 1 增加到硬件支持的上限,因为之前的软件限制已得到解决。
  • 通过从后台线程发出信号,修复了 Escher 外部信号量测试中的死锁,从而提高了 Lavapipe 和 Goldfish 上的测试可靠性。

视频

视频功能进行了以下更新:

  • 移除了对已弃用的 ulib/syslog 的依赖项。

WLAN 和连接

针对 WLAN 和连接进行了以下更新:

  • 对 WLAN PHY 重置和恢复机制进行了重大改进,现在允许 wlancfg 在系统处于降级状态时触发重置,从而提高整体稳定性。
  • 引入了对 WLAN PHY 关闭和开启的支持。这包括用于电源管理的新 FIDL 方法,以及确保驱动程序在启动后正确重新初始化。
  • 启用 netcfg 以通过新的 fuchsia.net.policy.properties FIDL API 向 socket-proxy 报告网络状态,包括默认网络更改和 DNS 配置。
  • 通过使用正确的信道带宽来减少 NO_NETWORK 失败,并使用更有效的取消身份验证命令来清除失败后的连接状态,改进了 Broadcom Wi-Fi 驱动程序的连接稳定性
  • 修复了导致 Wi-Fi 扫描在繁忙环境中无法正常运行的 bug。 扫描结果现在以 VMO 形式发送,以避免达到 FIDL 消息大小限制。
  • 通过过滤潜在的漫游目标来确保兼容的安全保护,并修复了阻止漫游到 WPA1/WPA2 混合模式网络的 bug,使 WLAN 漫游更加可靠
  • 显著增强了 WLAN 遥测功能,可记录更详细的指标,包括断开连接原因、扫描性能、连接时长、RX/TX 统计信息和恢复事件。