Fuchsia F29 版本資訊

日期:2026 年 1 月 7 日

版本:F29

音訊

智慧螢幕的音訊功能已進行下列平台更新:

  • 擴大 AudioCore 和 Driver Inspect 的可觀測性。「檢查資料」現在包含 RoleManager 錯誤,可更妥善診斷過去的失敗情形、追蹤每個環形緩衝區的最小/最大/總和/溢位/欠位指標,並保留最近的工作記錄。

其他產品的平台更新如下:

  • 提升音訊裝置登錄 (ADR) 的效能和穩定性。ADR 執行緒現在會使用排程器設定檔,在負載下提升串流建立效能。此外,ADR 現在支援不含環形緩衝區的拓撲、暫時性環形緩衝區建立失敗時的重試,以及正確計算環形緩衝區記憶體報告中的驅動程式庫整體配置。

  • 提升 ffx audio 工具功能。ffx audio device play 指令現在會使用排程器設定檔和較大的環形緩衝區,確保播放驗證不會發生故障。此外,這項工具現在也會在裝置清單中顯示 ADR token_id,並修正計算下溢問題。

  • 更新信號處理拓撲規則。SDK 現在允許 DAI_INTERCONNECT 元素在拓撲中自我參照,支援獨立的 DAI 設定。

藍牙

藍牙更新內容如下:

  • 擴充免持聽筒設定檔 (HFP) 功能並提升穩定性。新增支援「查詢目前通話」(AT+CLCC) 程序,以及處理 HF 發起的通話轉移。改善互通性:剖析非標準的 iOS 回應欄位,並透過 SCO 設定重試、修正連線中斷追蹤,以及處理轉碼器更新期間的競爭條件,提升連線穩定性。

  • 實作 A2DP 卸載支援和組裝設定。啟用 A2DP 硬體卸載功能 (偏好 44.1kHz),讓控制器或音訊子系統處理音訊編碼。將 A2DP 設定遷移至平台組件,新增覆寫特定產品供應商版本的功能,並清除來源建構工具。

  • 新增對 LE Audio 同步 (ISO) 通道的支援。更新 UART 驅動程式庫,支援 ISO 資料通道,並實作 Core Host,支援連線等時群組 (CIG) 和串流 (CIS)。這項技術是低功耗音訊功能的基礎。

  • 推出週期性廣告同步支援功能。新增主機端支援,可同步處理定期廣告列車,包括新的 FIDL 介面 (SyncToPeriodicAdvertising) 和內部管理類別,以處理同步要求和掃描作業。

  • 強化藍牙指令列工具。新增 ffx bluetooth controller listshow 指令,提升裝置管理效率。更新bt-le-central:支援音量控制服務 (VCS) 和已發布的音訊功能服務 (PACS),並推出新的bt-broadcast-assistant工具,可控制 LE Audio 廣播。

  • 更新 Broadcom 韌體和初始化邏輯。SYN4381 韌體已升級至 1195.1225 版。新增安全檢查,防止系統在無法讀取 MAC 位址時初始化驅動程式,並修正 Android 供應商擴充功能廣告行為。

  • 改善快速配對設定路徑。改用「快速配對」供應商專用的設定能力,判斷可用性,取代套件解析邏輯,減少錯誤並簡化系統路徑。

  • 擴充 Pandora 測試介面功能。在 Pandora 測試架構中新增多項功能,包括 GATT 服務註冊、配對事件佇列、探索控制項、連線設定,以及改善廣告逾時處理方式。

建構

「建構」已進行下列更新:

  • fx build 支援實驗性 Bazel。fx build 新增實驗功能,可直接叫用主機目標的 Bazel。這項更新導入三種建構模式 (GN (預設)、Bazel 和 Fint),並新增引數驗證和叫用記錄功能。

  • 移除 macOS 主機建構支援。建構規則、IDK 和設定檔已移除使用 macOS 做為主機 OS 建構 Fuchsia 的支援功能。

  • 建構記錄的新根位置。所有建構記錄現在都會儲存在 out/.build_logs 中,方便整理及進行偵錯。新增了 fx build-logs 指令,可管理這個目錄結構。

  • 建構效能最佳化功能。針對 RBE 下載和本機動作實作 xattr 雜湊,以略過不必要的重新雜湊,並在 Ninja 中新增邊緣權重提示,以最佳化長時間執行的動作排程。

  • 視需求產生 GSYM 符號。更新 export_last_build_debug_symbols,支援使用 --with-gsym-symbols 旗標,視需要產生 GSYM 符號。

  • 自動剖析建構資源。現在,建構系統預設會以 1 Hz 的間隔收集 CPU 使用率和網路資料,協助偵錯建構效能緩慢的問題。

  • 強制執行 sdk_shared_library 的標題結構。定義為 sdk_shared_library 的目標現在必須將公開標頭放在嚴格定義的目錄結構中 (通常位於 include/ 下方)。

鈷豔藍

Cobalt 的更新內容如下:

  • Java 指標 ID 類型更新:Java 來源產生器現在會將 uint32 指標 ID 宣告為 int,而非 long。這與 Cobalt 記錄 API 一致,且不需要在用戶端程式碼中進行明確轉換。

  • 事件記錄器驗證更新:事件記錄器現在可接受包含不可能的 bucket 零計數的直方圖。這樣一來,如果取樣器產生的密集向量包含不可能的 bucket,且計數為零,系統就不會拒絕。

元件架構

元件架構已進行下列更新:

  • 重構 Realm Builder 的字典 API,改用 DictionaryRef這項功能可統一字典的路由語法,使作業與 CML 模式保持一致,並提升直覺性。

  • Realm Builder 和 SDK 中擴充的儲存空間功能。StorageAdmin 通訊協定已升級為 fuchsia.component,可供 SDK 存取,且 Realm Builder 新增了 AddStorage 函式,可進行程式輔助式儲存空間路徑設定和佈建。

  • 更輕鬆地找到ffx component explore所需工具。這項工具現在會使用 fuchsia.dash.launcher-tool-urls 構面,在探索期間自動將元件專屬工具載入 PATH

  • 改善 cmc 錯誤回報功能。編譯器現在會抑制失敗時的內部回溯,並在合併的輸出內容中加入來源檔案路徑,方便進行偵錯。

  • 修正 fuchsia.component/Controller.Destroy 中的競爭狀況。這項作業現在可確保銷毀工作擁有回應器,避免在元件完全銷毀前過早傳回成功回應。

  • 提升服務連線可靠性。服務代理程式現在會使用 wait_for_first_instance 處理暫時性執行個體,並正確地將服務目錄轉換為閒置狀態。

  • 新增 fidl_next_services 的 Rust 繫結。使用 fuchsia_next 繫結時,新增函式至 fuchsia_component,以便連線至服務並提供服務。

診斷

「診斷」頁面已進行下列更新:

螢幕

多媒體廣告已進行下列更新:

驅動程式架構

Driver Framework 已進行下列更新:

  • Rust 驅動程式 (fdf) 中的非同步讀取取消邏輯已強化,可避免競爭條件。現在,實作項目會正確處理同步和非同步調度器上的讀取取消作業,並確保通道會在註冊等待時延後關閉,避免發生使用後釋放或競爭情況。

  • 強化 ffx driver node graph:更新 ffx driver node graph 以支援篩選、服務路徑視覺化、驅動程式代管程序分組,以及產生互動式 HTML 圖表。

  • NodeAddArgs 支援字典NodeAddArgs 新增 offers_dictionary,讓驅動程式能透過字典 (而非父項的傳出目錄) 向子節點提供服務。

  • Rust 繫結中的安全非同步取消:針對調度器上的管道等待實作安全非同步取消,以防止捨棄含有待處理回呼的管道時發生競爭狀況。

  • DriverStartArgs 中的自訂 VMAR 支援DriverStartArgs 中新增 vmar,允許傳遞非根 VMAR,並在驅動程式庫程式元件中新增 VMAR 存取子。

  • 節點控制器中的 WaitForDriver 方法:在節點控制器中新增 WaitForDriver,讓用戶端等待驅動程式庫在節點或複合父項上啟動。

  • Rust 繫結中的驅動程式傳輸支援:在 Rust 繫結中實作驅動程式庫傳輸的權杖轉移通訊協定和連線邏輯。

  • Driver Manager 已更新為使用暫時性集合。與元件架構的互動已重構為使用暫時性集合,並搭配屬性儲存空間最佳化功能,以減少記憶體用量。

  • MetadataServer 程式庫重構:重構 MetadataServer,簡化初始化作業、淘汰舊版設定器、支援條件式中繼資料服務,並接受服務目錄以進行測試。

  • 改善驅動程式記錄功能:新增以 std::format 為基礎的驅動程式管理器記錄 API、在 ffx driver (非 TTY) 中啟用 PID 列印功能,並改善 sys_driver FIDL 錯誤記錄功能。

  • 驅動程式執行階段和傳輸更新:新增同步權杖轉移接收器、強制執行調度器關閉回呼、最佳化輪詢停滯,以及在 SDK C++ 繫結中啟用早期控制代碼轉移。

  • 移除已淘汰的 API (26 級別以前):從音訊驅動程式庫介面和一般驅動程式庫 SDK 中,移除 26 以前 SDK 版本中已淘汰的 API。

FIDL

FIDL 的更新內容如下:

  • 導入 FIDL 的 Bazel 建構規則。fidl_libraryfidl_irfidl_summary 巨集新增至 Bazel 建構系統,以便直接在 Bazel 專案中定義 FIDL 程式庫、產生 IR,以及建立 API 摘要。

  • 提升 Rust 繫結的人體工學和功能。從通訊協定定義衍生預設傳輸作業、導入 RespondRespondErr 特徵以簡化回應處理作業、為陣列啟用 WireVector 編碼,以及新增 IntoNatural 以利類型轉換,藉此提升開發人員人體工學。

  • 改善 Rust 繫結驗證和正確性。加強執行階段驗證,確保連線格式正確無誤,包括檢查結構體填補、字串和向量限制,以及封包標記。此外,也改善了對不明互動和空白結構體的處理方式。

  • Rust 繫結中的專用控制代碼子類型。更新 Rust 繫結,以產生特定控制代碼子型別 (例如 zx::Channel) 而非一般zx::Handle型別,提升 FIDL 通訊協定的編譯時間型別安全。

  • 重構 Rust 繫結的非同步和傳輸處理作業。全面翻新非同步基礎架構,導入 TwoWayFuture 以支援可分割的 Future、簡化連線關閉處理程序、將內部用戶端/伺服器概念重新命名為調度器,以及為端點產生作業新增執行器特徵。

  • C++ 繫結清理和功能偵測。將 C++ 功能偵測整合到 lib/fidl/cpp/features.h 中,並移除對 std::aligned_storage 的依附元件,以符合現代 C++ 標準。

  • FIDL Rust 繫結已大幅改善人體工學和型別安全。我們導入了 IntoNatural 特徵,讓型別轉換更清楚,並透過 RespondRespondErr 特徵改善回應人體工學。Fuchsia 控制代碼子類型現在會以更具體的方式處理。寄件者和調度員已重新命名並重組,且已移除 EncodableEncodeRef 特徵,完成遷移至新編碼方法的程序。

意見回饋

我們對意見回饋功能進行了下列更新:

  • 新增關機動作的追蹤功能。LastRebootInfoProvider 通訊協定現在包含 action 欄位,可區分特定關機類型 (例如 'REBOOT' 與 'POWEROFF'),並支援遷移至 JSON 儲存空間和 ShutdownWatcher 持久性。
  • 記憶體用量最佳化。縮短 JSON 序列化物件的生命週期,並在記錄串流停止且元件閒置時強制清除 Scudo 記憶體,減少記憶體用量。
  • 移除已淘汰的 API。移除 GetScreenshot 通訊協定 (已在 F26 中淘汰),並將 annotations 欄位替換為 annotations2,為用戶端強制執行較高的限制。
  • 改善當機報告上傳邏輯。如果急切上傳作業成功,即表示網路可連線,系統會立即嘗試上傳先前快取的報表。
  • 重構設定和組裝。flash_ts_feedback_id_component_url遷移至 feedback_id_component_url,新增缺少的 i18n/鑑識路徑,並移除 DisableWaitForInitialInterest 解決方法。

韌體

韌體已進行下列更新:

  • 開機測試產品組合現在包含並正確設定復原 (R 插槽) 映像檔。現在啟動測試套件會明確包含 R 插槽圖片,以支援需要這些圖片的開發板。此外,這些映像檔現在會使用正確的復原主機板設定,而非標準設定,確保映像檔產生作業有效。

  • 已修正恢復原廠設定 TEE 通訊協定的路由邏輯。factory_reset 使用的 tee 通訊協定現在會將路徑導向 void,前提是 tee_manager 未公開這些通訊協定,這樣可防止元件初始化期間發生轉送錯誤。

圖像和 GPU

以下是「圖形和 GPU」的更新內容:

  • 將 Goldfish Pipe 驅動程式庫遷移至 Driver Framework v2 (DFv2)。這項大規模更新包括將 ddk::IoBuffer 替換為 dma_bufferfzl::OwnedVmoMapper、將 Bus 通訊協定處理作業移至父項 PipeDevice,以更準確地反映硬體拓撲,以及強制執行更嚴格的 PipeChildDevice 角色分離。
  • 將編譯時間 PAGE_SIZE 常數替換為執行階段判斷。為配合 RFC 0016 並支援開機時的分頁大小設定,SDK、Graphics 和 UI 元件已移除 ZX_PAGE_SIZEPAGE_SIZE 常數,因此用戶端必須在執行階段查詢分頁大小。
  • 在 UI 堆疊中新增 PowerModeVsyncSource 通訊協定。PowerMode API 會以精細的微眠狀態資訊取代二進位開關,而 VsyncSource 則可讓用戶端直接訂閱顯示器硬體的垂直同步信號。
  • 已從 Intel Vulkan ICD 轉換為 x64 上的 Lavapipe。為簡化維護作業,我們已移除 Intel Vulkan ICD,現在 Lavapipe 軟體點陣化工具會處理 x64 設定的 Vulkan 工作負載。
  • virtio-gpu 中啟用 Blob 資源支援功能。這項強化功能可讓驅動程式庫使用 Blob 資源,直接從訪客記憶體執行掃描輸出作業,進而省去使用 Lavapipe 緩衝區時不必要的複製作業。
  • 已將 ARM Mali 驅動程式更新至 r54 版。這項驅動程式庫更新支援 Vulkan 1.4。
  • 改善 msd-vsi-vip 的穩定性和重設邏輯。修正內容包括在重設期間停用脈衝清除器、確保適當的等待時間,以及解決測試週期期間觀察到的硬體停止運作問題。

I18n

我們已對 I18n 進行下列更新:

  • 新增 ICU 77.1 的 Rust 繫結。更新 rust_icu_sys,支援整合及推出 ICU 77.1 版。

物聯網、Matter 和 Thread

我們對物聯網、Matter 和 Thread 進行了下列更新:

  • Thread 遙測功能強化:擴充 telemetry.fidl 和「檢查」功能,納入 extended_pan_id 進行網路識別,以及 multi_ail_detected 回報與多個相鄰基礎架構連結的連線。

  • OpenThread 堆疊升級:將 OpenThread 程式庫、RCP 映像檔和 Rust-C 繫結更新至 2025 年 10 月 1 日版本,並實作 otPlatDnsIsUpstreamQueryAvailable,以改善 DNS 解析器狀態追蹤功能。

  • 廣告 Proxy 和服務探索修正:解決 mDNS 發布結果未回報的問題、修正服務刪除的 UpdateId 處理方式,以及修正 Border Agent TXT 記錄格式。

  • TREL 和 MeshCoP 優先順序:修改 TREL 位址選取方式,優先使用專屬連結本機位址,而非全域單點播送位址 (GUA),並更新 MeshCoP,優先處理供應商 TXT 項目。

網路堆疊

網路堆疊已進行下列更新:

  • Socket Diagnostics API 和 fuchsia.net.matchers 新增 fuchsia.net.sockets FIDL 程式庫,提供 Socket 診斷功能,並導入 fuchsia.net.matchers,統一封包篩選和診斷 API 的比對器類型。

  • Netstack3 TCP 效能和 RFC 規範遵循度提升:實作 TCP 緩衝區的延遲分配功能,減少記憶體用量。強制執行 216 的最小 MSS、隨機化 TCP 時間戳記偏移、在空間允許時無條件傳送 TCP 選項,以及修正時間區間更新期間的 SACK 區塊處理,進一步提升 RFC 相容性。

  • Netlink 穩定性和安全性強化:透過強制執行 CAP_NET_ADMIN 進行 NETLINK_ROUTE 作業,並驗證 IFA_CACHEINFO 等屬性的緩衝區大小,強化 Netlink 安全性。延後剖析郵件,並修正因不明郵件或路徑移除競爭條件而導致的恐慌,提升穩定性和相容性。

  • 強化路徑和介面管理功能:更新 netcfg,透過 Netlink 支援介面本機路徑表,並為本機佈建的裝置安裝規則。移除 copy_routes_to_main_table 解決方法、修正 Netlink 中的 default_metric 填入項目,並調整 WLAN 介面行為,使其在連線中斷時仍保持管理狀態。

  • 改善 DHCP 用戶端和鄰居探索功能:允許重複選項,並防止錯誤格式的 DHCPRELEASE 封包發生恐慌,藉此提升 DHCP 用戶端穩定性。透過捨棄無效要求、處理缺少連結層位址的廣告,以及正確管理廣告和 ARP 回覆的覆寫旗標,強化鄰居探索功能。

  • 可連線性計算更新:修正可連線性計算,正確區分閘道和預設路徑偵測的 IPv4 和 IPv6 通訊協定專屬路徑。介面移除後,可防止出現錯誤的狀態更新。

  • 安全性和可靠性修正:強制執行 user_id 驗證,限制將通訊埠重複用於同一使用者擁有的通訊端。SO_REUSEPORT在乙太網路裝置上啟用 MAC 多點傳播過濾功能,提早捨棄不必要的影格,並修正 ICMP 迴響錯誤處理常式中的當機問題。

平台驅動程式

平台驅動程式的更新內容如下:

  • SDHCI 驅動程式庫已遷移至 FIDL SDMMC 通訊協定。這項現代化更新會使用目前的 FIDL 標準更新驅動程式庫,取代舊版介面。請注意,這個模式目前不支援頻內中斷。

  • 提升 SDHCI 驅動程式庫穩定性,以處理停止序列和中斷。 現在,驅動程式會在 PrepareStop 期間等待待處理的要求完成,藉此避免 BTI 錯誤,並優先處理傳輸完成中斷,而非資料逾時,藉此避免競爭情況。

  • 修正 USB CDC 函式驅動程式中的資料停滯問題。現在停用端點時,系統會正確取消待傳輸的交易,避免交易無限期停留在待處理清單中。

  • 針對多個製作人和封包標頭,提升 usb_vsock 的可靠性。修正項目包括在多重製作人情境中正確喚醒所有感興趣的喚醒器,解決懸掛連線問題,以及修正暫停封包中的酬載長度,防止標頭損毀。

  • DWC3 USB 驅動程式庫現在可穩定處理 VBUS 信號和核心重設。 驅動程式會主動管理支援平台上的 VBUS 有效信號,並在開機期間切換核心重設,確保正確初始化。

  • 新增複合 USB 周邊裝置設定。我們現在提供新的複合裝置設定檔,支援 CDC、ADB 和 Fastboot 功能。

  • GPIO 和 I2C 核心驅動程式現在會轉送 PowerTokenService這項更新會將服務從父項實作驅動程式庫轉送至子項節點,進而改善電源管理整合。

電源管理

電源管理功能已進行下列更新:

  • 電池管理工具重新架構和工具:電池管理工具已重新啟動,可透過 FIDL 橋接驅動程式庫程式,集中提供電池資訊。本次更新推出 batteryutil CLI 工具、用於充電控制的新 FIDL API,以及 BatteryInfo 中的 average_current 欄位。行為變更包括在裝置充電時封鎖暫停,以及根據關機偏移量調整電池電量。

  • Power Broker API 整合:系統已移除 LevelControl API 和 ElementSchema,因此所有整合項目都必須遷移至 ElementRunner。這項做法可簡化電源元素管理作業的 API 介面。此外,也解決了相關聲明聲明排序的競爭狀況。

  • 可觀測性和狀態記錄器 SDK:新的狀態記錄器程式庫 (C++ 和 Rust) 已移至 SDK,可標準化數值和離散電源狀態記錄。透過將喚醒原因 (包括 Koid) 向上傳播至呼叫堆疊、在 fuchsia.hardware.power.suspend 中新增喚醒來源報告,以及追蹤檢查資料中長期持有的喚醒租約,大幅改善系統暫停偵錯。

  • API 淘汰與移除:已移除 ActivityGovernorListener 介面,完成遷移至 SuspendBlocker 的程序。此外,fuchsia.power.systemmode FIDL 程式庫已正式淘汰。

  • 全新熱感應器管理 API:在 power-manager 中實作 fuchsia.thermal.SensorManager API,讓用戶端探索熱感應器,並注入覆寫溫度以進行政策測試。熱感 sysfs 目錄也新增了對 emul_temp 的支援。

  • 核心和驅動程式電源功能:新增了執行階段處理器電源管理 (RPPM) 的設定功能,並將其路徑設為基本驅動程式。通用快閃儲存裝置 (UFS) 驅動程式已更新,可使用標準暫停/繼續註冊功能,並移除舊版喚醒要求行為。

  • 關機原因傳播:在 shutdown-shimAdmin 通訊協定中新增 Shutdown 方法,讓用戶端指定不同的關機原因和動作 (例如重新啟動與關機)。此外,我們也修正了critical-services在關機程序中過早停止的問題。

  • Power CLI 和平台設定:推出新的 powerutil CLI 工具,並遷移 ffx power 以使用其導入項目。新增了 fuchsia.power.cpu.BoostEnabled 和 Android 電源提示的平台設定,並重新設計儲存空間電源管理啟用功能,使其適用於特定主機板。

  • 電源管理更新:在檢查資料中新增對長期喚醒租用的閾值支援、定義時脈/PMIC 和 CPU OPP 的 pdev 介面,以及改善暫停阻斷程式邏輯。

荒漠油廠

Rust 的更新內容如下:

  • fuchsia-async 新增了插樁掛鉤,並最佳化記憶體用量。 支援巨集和 AtomicFuture 的可插入式檢測掛鉤,可在停用時提供更完善的診斷功能,且不會造成額外負擔。此外,程式庫也以自訂實作項目取代了以 crossbeam 紀元為基礎的延遲執行,大幅減少記憶體用量。

  • 舊版 fuchsia-async 工作建立方法已移除或內部化。這項變更會完成工作建立和執行 API 的建構工具模式遷移作業,因此仍使用舊方法的程式碼必須更新。

  • 移除 fx rustfmt/fx rustdoc 後,Rust 建構工作流程已變更,並啟用發布符號。已移除淘汰的 fx 指令,改用標準工具鍊工作流程。根據預設,發布二進位檔現在會保留偵錯符號,方便您對發布版本進行符號化和偵錯。

軟體交付

軟體交付服務的更新內容如下:

  • 強化 Android 復原和側載功能。復原系統現在支援直接從 ADB 側載讀取資訊清單簽章和更新網址、處理相對 Blob 基準網址,以及在更新期間正確掛接系統 Blob。

  • 改善系統更新安全性和設定。系統更新程式現在會使用透過組裝設定的公開金鑰,驗證 OTA 資訊清單簽章,並支援無封裝更新的選用簽章參數。

  • 套件解析器最佳化和診斷。pkg-cache 現在允許為基本套件釘選解析度,以減少記憶體用量。此外,為減少垃圾內容,系統現在會將成功解析的項目記錄在檢查中,而非系統記錄中,且 system-updater 檢查現在會包含進行中的更新嘗試 ID。

  • 更新 Paver 和 Moonflower 主機板支援。新增合併「super」和「userdata」分區的支援功能,在 Moonflower 上鋪設任意分區,並修正重要的 A/B/R GUID 同步錯誤。已移除 Moonflower 的舊版 A/B 支援,並改善分割區表重設的錯誤處理機制。

  • 可設定的 Blob 網路逾時。現在可透過設定功能覆寫 pkg-resolver 中的 Blob 網路標頭和主體逾時,且復原作業的預設逾時時間已延長,以提升可靠性。

  • 更新通知程式現已可供探索。fuchsia.update/Notifier 會標示為可探索,以便與可託管的元件搭配使用,方便在結束時轉移至元件管理服務。

  • 改善套件資訊清單工具。套件資訊清單現在會以經過美化的 JSON 格式編寫,方便進行差異比較,並在 fuchsia-pkg 中新增 set_name API,允許動態變更名稱。

  • 支援錨定套件。已在套件管理程式庫和組裝工具中新增錨定套件的初步支援,並使用 BTreeMaps 確保可決定序列化。

Starnix

Starnix 已進行下列更新:

  • SELinux 強制執行功能已取得重大進展,可檢查 Binder、Netlink 和檔案系統權限。包括強制執行 binder (呼叫、轉移、模擬)、netlink 擴充權限 (nlmsg)、ptracegetcap/setcap 的權限,以及各種檔案/插座存取檢查 (file_receivesocket_acceptgetattr)。

  • 已實作 SELinux 稽核架構,包括支援 audit_access 虛擬權限。這可透過 dontaudit 規則抑制稽核記錄垃圾內容、以十六進位編碼記錄中的特殊字元,以及透過核心指令列進行設定。

  • 改善 ARM 解除堆疊功能。新增對 ARM EHABI、ARM.extabARM.exidx 和 sigreturn 解除堆疊的支援。實作 32 位元/64 位元轉換影格的處理程序,以支援 Starnix 設定檔。

  • 現在支援 PTRACE_POKEDATAPTRACE_POKETEXT,追蹤器可藉此修改追蹤記憶體。這項功能可讓 Linux 偵錯工具 (例如 LLDB) 在 Starnix 執行的程式中設定軟體中斷點。

  • io_uring 支援範圍已擴大,現在可選取 recvmsg 緩衝區和額外的設定標記。IORING_OP_RECVMSG 現在支援 IOSQE_BUFFER_SELECT,並為 IORING_SETUP_DEFER_TASKRUNIORING_SETUP_SINGLE_ISSUERIORING_REGISTER_RING_FDS 新增了存根或實作項目。

  • 已為 clone()/clone3() 實作 CLONE_PIDFD,並改善 pidfd_open 行為。這項功能可讓您在建立子項程序時,接收代表該程序的檔案描述元,並修正 pidfd_open 處理廢止程序的問題。

  • 已新增 ffx starnix kill 指令。使用者可透過這項工具,從主機終止 Starnix 容器中的程序。

  • timerfd 已新增對 TFD_TIMER_CANCEL_ON_SET 的支援。這個標記可監控世界標準時間軸的非連續變更 (例如透過 clock_settime)。

  • 檔案描述元表 (FdTable) 已遷移至使用 Read-Copy-Update (RCU)。這項功能可讓多個執行緒同時讀取檔案描述元,不必封鎖,因此可提升並行作業效能。

  • 直接參照 MemoryManager,提升 /proc/<pid>/mem 的安全性。這可確保檔案描述元在開啟時連結至特定位址空間,防止在 exec() 呼叫變更工作記憶體配置和憑證後,發生未經授權的存取行為。

  • eBPF 現在支援 LPM (最長前置字串比對) Trie 對應。這會新增BPF_MAP_TYPE_LPM_TRIE地圖類型,通常用於網路工作。

  • 網路功能已擴充,新增 SO_BINDTODEVICE 檢查和執行階段通用 Netlink 支援。這項功能會新增插座裝置繫結的能力檢查,並允許在執行階段新增 Genetlink 系列。

  • KGSL 驅動程式庫現在支援 32 位元應用程式。本次更新可改善 32 位元 Android 圖形工作負載的相容性。

  • Starnix 支援功能:計時器現在支援 TFD_TIMER_CANCEL_ON_SET,可監控世界標準時間軸的變化。在 ARM 架構的信號堆疊框架中填入錯誤位址,並在偵錯/平衡建構中新增追蹤信號來源的邏輯,藉此強化偵錯功能。

  • Starnix VFS 效能和記憶體用量已最佳化。檔案描述元表 (FdTable) 現在會使用「讀取-複製-更新」(RCU) 同步處理機制進行並行讀取,而掛接中繼資料字串現在會使用 FlyByteString,以減少大量掛接工作負載的記憶體負擔。

儲存空間

儲存空間服務已進行下列更新:

  • 區塊伺服器現在支援驅動程式端解壓縮,並由 Blobfs 使用。這樣可避免使用外部解壓縮器,並啟用日後可能以驅動程式庫為基礎的網頁要求處理程序,進而提升效能。

  • 在記憶體壓力下,Fxfs 髒頁面清理作業現在更有效率。 現在 Fxfs 只會選擇性清除含有髒頁的檔案,而不會在重要記憶體壓力期間封鎖 ZX_PAGER_VMO_DIRTY 要求時,檢查所有檔案的中繼資料。

  • Fxfs 現在支援透過新的 VolumeInstaller 通訊協定,以原子方式安裝磁碟區。這有助於在檔案系統層級安裝新的系統映像檔,並以不可分割的方式取代現有磁碟區。

  • 唯讀 Ext4 檔案系統現在會公開擴充屬性。列出及查詢擴充屬性的 API 已移至 Directory 介面,以便在 ext4readonly 中支援這項實作。

  • 新增對資料磁碟區加密的 Keymint 支援。新的 keymint 政策可讓 fshost 使用 Keymint 密封資料磁碟區的金鑰,並將金鑰保留在金鑰儲存區中,以便在適用的情況下,透過 TEE 支援的金鑰管理功能管理金鑰。

  • UFS 驅動程式已大幅改善。包括實作 fuchsia_hardware_ufs::Ufs 通訊協定、新增支援功能,將 SCSI 指令傳送至 UFS 裝置,以及移除喚醒要求行為,改用標準暫停/繼續掛鉤,藉此最佳化電源管理。

  • Fxfs 安全性和密碼學功能已獲得提升。變更包括在開啟時驗證 fsverity merkle 樹狀結構根雜湊,防止未經授權的修改;支援硬體允許的內嵌加密;以及支援 lblk32 金鑰。

  • Blobfs 已遷移至第 10 版,支援混合 Merkle 版面配置。這項功能會導入 inode 和超級區塊標記,以判斷 merkle 格式,方便在格式之間遷移,不必立即變更磁碟配置。

  • 提升 SDMMC 和 RPMB 驅動程式庫的可靠性。現在系統會根據裝置支援情況,將大型 RPMB 寫入作業分成多個區塊,且如果調整失敗,eMMC 初始化作業會改用高速或 DDR52 模式,避免在有問題的硬體上發生啟動失敗情形。

  • 多個儲存空間驅動程式已遷移至 Driver Framework v2 (DFv2)。這項現代化作業包括 nandram-nandnandpartbootpart 驅動程式。

測試

測試版已進行下列更新:

  • 擴充 fx test 標記和開發人員功能。新增 --[no-]fail-by-group,可切換測試群組的重試次數;新增 --previous failed-tests,可產生重新執行失敗測試的指令;新增 test_filters 標記。現在列出測試時,工具會自動啟動套件伺服器,支援搜尋遠端建構工具測試,使用 --use-existing-debugger 條件式產生偵錯工具,以及重新整理裝置測試的套件清單。

  • 新增實驗性 ResultStore 整合功能。透過 fx resultstore 將串流建構結果傳送至 ResultStore,並新增 Ninja 包裝函式 (rsninja.sh) 和用戶端工具 (rsclient),以改善建構資料的視覺化效果。

  • 已將 Antlion 遷移至 fuchsia.git將 Antlion 存放區從 //third_party/antlion 移至 //src/testing/end_to_end/antlion,簡化開發人員工作流程,並提升測試撰寫速度。

  • 更新 Honeydew (Lacewing) API。wlan 負擔重新命名為 wlan_core,以區別政策 API,新增 USB 支援 PowerBAT 暫停/繼續,導入系統介面查詢,並為本機主機目標互動啟用目標名稱。

  • 重構測試輸出內容剖析基礎架構。從一般剖析器中移除網路一致性測試剖析作業,將 Rust 和 Go 測試剖析邏輯分成不同的工具,並更新測試執行元件,嚴格要求輸出摘要結構定義中的 TestResult

  • 實作主機目標測試的 mDNS 解析器。新增裝置解析器,利用 botanist 的 mDNS 封包檢查器追蹤目標,不必依賴 ffx 進行解析。

  • 更新 sockscripter 公用程式。新增 log-error 指令,可讀取 SO_ERROR 插座選項,並啟用傳送緩衝區長度的設定。

  • 擴大 tefmocheck 記錄檔分析範圍。新增根據記錄檔行接近程度偵測失敗模式的支援功能,以便在附近的檢查中略過測試,並偵測 ADB 伺服器重新啟動。

  • 已從「fxtest」中移除「get-ssh-address」。已淘汰並移除 get-ssh-address 子指令,使用者現在必須使用 ffx -t target target list --format addresses

  • 導入邊緣觸發音訊擷取支援。audio_recording 元件已導入新的擷取方法,可讓用戶將未來的擷取作業排入佇列,並在偵測到無聲狀態時立即停止錄音,相較於固定時間長度的錄音作業,這項方法可提高可靠性和速度。

計時

我們對「時間記錄」進行了以下更新:

  • 新增以世界標準時間為準的鬧鐘支援功能。Timekeeping 子系統和 Wake Alarms Manager 現在支援在 UTC 時間軸上排定鬧鐘,為 Starnix 啟用即時時鐘功能。這會介紹 SetAndWaitUtc,這是一種 FIDL 方法,使用暫止式取得模式來滿足容器電源管理需求。

  • 強化鬧鐘排程和時間長度邏輯。修正鬧鐘管理中的多個極端情況,確保可靠性:零刻度喚醒鬧鐘現在會填補至 1 個刻度,以確保通訊協定執行;負數時間長度預設為最小時間單位;重新排程邏輯現在會正確取消過時的計時器;並修正 TimerNode 比較邏輯。

  • 防止在截止時間附近發生錯誤的 UTC 更新。系統現在會根據建構後擋時間驗證 UTC 更新,並拒絕後擋時間一小時內的任何值,以防 Real Time Clock (RTC) 硬體故障導致系統時間無效。

  • 在 Zircon 時鐘轉換中強制使用非零速率。如果提供零速率,transform_clock 函式和 ClockTransformation 方法現在會進行判斷並引發恐慌,確保立即偵測到無效的時脈速率設定。

  • 具名的世界標準時間時鐘控制代碼。UTC 時鐘控制代碼現在會指派名稱 utc-clock (和 utc-clock-vendor),協助追蹤及偵錯控制代碼來源。

工具

工具的更新內容如下:

ffx

ffx 已進行下列更新:

  • ffx trace 已重新架構,移除了追蹤記錄 Daemon 通訊協定。 這項工具現在會直接連線至目標 (透過 SessionManagerProxyProvisionerProxy),而不是透過精靈路由。此外,也新增了開機時追蹤設定和解碼 FIDL 訊息主體的支援功能。

  • 導入了新的 ffx target discover 指令和快取機制。這會填入探索快取,避免在每次叫用指令時進行完整網路掃描,讓 ffx 在快取有效時幾乎能立即解析目標。

  • ffx 已實作主機端 USB 驅動程式庫支援。新的 usb_driver 指令和相關聯的精靈邏輯現在會處理主機端的 USB 連線,改善長時間連線的程序隔離。

  • 已從 ffx 和 Zircon 建構規則中移除對 macOS 的支援。 這些工具不再支援 MacOS 主機平台。

  • 新增了 ffx target log-message 指令。使用者現在可以將任意訊息寫入裝置的記錄檔,方便在手動測試期間標記事件。

  • ffx driver 現在支援以主機/驅動程式庫分組生成圖表。 ffx driver node graph 現在可以依驅動程式庫主機和元件將節點分組,並視需要顯示服務路徑。

  • ffx target get-ssh-address 已淘汰。使用者應遷移至 ffx target list --format addresses

  • 強化遙控器服務。這項服務現在會透過通訊埠 9797 提供 authorized_keys,並支援透過 VSOCK 提供 FDomain。

fx

fx 的更新內容如下:

  • fx build 現在支援直接建構 Bazel 目標。新的實驗模式可讓您使用 --config=NAME 叫用 Bazel 執行主機目標,與現有的 GN 建構作業並行執行。

  • zxdb 修正了 unwinder 回呼中的使用釋放後記憶體異常終止問題。這項修正解決了競爭狀況,避免在並行 stackTrace 要求期間,DAP 伺服器發生間歇性 SIGSEGV 停止運作的問題。

zxdb

zxdb 已進行下列更新:

  • zxdb 現在支援遞迴工作專用篩選器。這可讓偵錯工具附加至元件領域內的所有程序 (例如測試領域),以便在逾時或失敗時擷取所有元件的回溯。

  • zxdb 符號載入作業進行了大幅記憶體最佳化。 偵錯工具現在會在建立索引後清除 LLVM DWARF 程式庫快取,大幅減少常駐記憶體用量,大型偵錯符號的用量可減少約 50%。

  • 改善 zxdb 和 DAP 中的堆疊追蹤顯示方式。偵錯工具現在會省略較不相關的堆疊框架 (例如 Rust 測試斷言和非同步執行器內部),著重於使用者程式碼,並向 VS Code 等 DAP 用戶端正確回報框架計數。

追蹤

我們對追蹤功能進行了以下更新:

  • 架構更新:直接連線裝置並移除精靈。ffx trace 現在會透過 TraceManagerSessionManager 直接連線至目標裝置,略過 ffx daemon。這項架構變更可啟用「真正閒置」追蹤功能,讓工作階段持續存在,不必維持有效的主機連線。

  • 新增開機追蹤功能。這項新指令可將追蹤設定寫入裝置,讓 trace_session_manager 在元件啟動時自動啟動追蹤功能。資料會透過 ffx trace stop 指令擷取。

  • 擴充核心 IPC 追蹤和 FIDL 解碼功能。核心現在會記錄 kernel:ipc 類別下的初始管道訊息資料 (位元組和控制代碼)。此外,ffx trace 也已更新,可解碼這些 FIDL 訊息主體,以進行更深入的檢查。

  • 新增事件篩選功能,可追蹤轉換工具。trace2json 工具和程式庫現在支援透過 --pattern 進行以規則運算式為基礎的事件篩選。這項更新可確保即使篩除特定事件,執行緒和核心物件中繼資料仍會保持完整。

  • 為 Profiler 專屬記錄類型新增 FXT 支援。Fuchsia 追蹤格式 (FXT) 讀取器和序列化程式現在支援 ModuleMmapBacktrace 記錄,可有效儲存剖析器資料。

  • 改善ffx trace可用性和輸入驗證。強化功能包括下載進度指標、自動從引數中移除智慧引號,以及防止 --background--output 之間發生衝突。現在,如果追蹤資料缺少要求的類別,這項工具也會發出警告。

  • 全面開放使用核心鎖定爭用追蹤功能。kernel:contention類別現已適用於所有設定,不再受建構標記限制,因此只要啟用追蹤,即可存取鎖定爭用資料。

  • 提升追蹤效能並收集指標。TraceFs 現在會使用直接記憶體對應來寫入事件,減少複製負擔。新指標包括 GPU 使用率,且 Starnix 執行緒 ID 現在會正確對應至 Fuchsia koid,以便在 Perfetto 中改善視覺化效果。

UI

UI 方面有以下更新:

  • 推出 display::CoordinatorProxy,可最佳化螢幕設定。這個新的 Proxy 層會快取結果並篩除多餘的狀態更新,盡量減少對顯示器協調器的 FIDL 呼叫,進而降低 Flatland 和 Scenic 的負擔並提升效能。
  • 在 Flatland 中實作 BlendMode::STRAIGHT_ALPHA這項新增內容可讓 Flatland 算繪引擎中的非預先相乘像素格式,正確組成顏色。
  • 導入 TrustedFlatlandFactory 通訊協定。這個新介面可讓授權客戶略過標準 Scenic 額外負荷,針對特定信任的使用案例提供最佳化效能路徑。

影片

影片已更新下列內容:

  • 執行階段頁面大小判斷。媒體和攝影機驅動程式現在會在執行階段查詢頁面大小,而非依賴 ZX_PAGE_SIZE 編譯時間常數,因此可根據 RFC 0016 提升不同系統設定的相容性。

  • 遷移至 C++ MMIO SDK。媒體和攝影機驅動程式現在使用 //sdk/lib/driver/mmio/cpp 進行記憶體對應 I/O,可簡化程式碼並取代舊版實作項目。

  • 所有影片解碼器內部緩衝區現在都會透過 sysmem 分配。這可減少實體片段化,並降低找不到足夠長度的實體頁面執行次數。zx_vmo_create_contiguous

WLAN 和連線

WLAN 和連線功能有以下更新:

  • 實作 SAR 和傳輸功率控制 API。WLAN 堆疊已新增對特定吸收率 (SAR) 和傳輸功率情境的支援,確保符合法規並安全運作。包括 WlanPhyImplDeviceMonitor 的新 FIDL API、wlanix 的實作項目 (可動態控制 WifiChip 電源電平),以及相關的遙測記錄。

  • 支援強化安全防護通訊協定 (WPA3/SAE 和 WEP)。擴大安全防護功能,支援新舊標準。新增功能,支援 WPA3 Hash-to-Element 驗證的 SAE 密碼設定和 RSNXE 剖析。此外,wlanix 現在支援儲存 WEP 憑證和設定 WEP 金鑰索引。

  • 提升 WLAN 復原和穩定性。提升系統穩定性及自我修復能力。現在,系統會在一般作業失敗時重新啟用 PHY 重設復原功能,並依介面名稱為 Supplicant 提供服務,以便重新啟動程序。此外,如果啟動失敗,晶片現在會明確關閉電源,且非 DFS 裝置會停用主動式 5 GHz 掃描,以提升連線穩定性。

  • 漫遊邏輯和指標強化功能。最佳化漫遊行為和可觀測性。漫遊邏輯現在會懲罰 RSSI 極高的 BSS (高於 -30 dBm),以避免無線電飽和。我們已修正漫遊成功率指標的問題,並補齊缺少的漫遊失敗記錄,以提供準確的效能資料。

  • API 和通訊協定更新。推出新的 API 並更新通訊協定定義,以利提升標準相容性和控制能力。新增 GetSignalReport API,並將 ieee80211::StatusCode 更新為彈性型別,以支援 802.11-2020。此外,SetScanModeSetBtCoexistenceMode API 已透過堆疊管道傳輸。

  • 韌體、遙測和維護更新。一系列硬體支援和內部改善措施。Broadcom SYN4381 韌體已升級至 1195.1225,並新增「00」(全球) 國家/地區代碼支援。內部變更包括移除 RFC 0016 的執行階段使用情形、修正 PHY 重設期間的溢位錯誤,以及新增電池充電狀態和時間序列訊號報表的遙測功能。ZX_PAGE_SIZE

  • 網路政策死結解決方案。解決網路管理中的競爭狀況和死結。DefaultNetwork 依附元件的方向性已反轉,因此 netcfgsocket-proxy 之間的連線為單向,可確保狀態轉換可靠。

  • 重構 Windowed Stats 特徵。TimeMatrixStatistic 特徵已重構 (將 Interpolator 重新命名為 TimeMatrixTickMatrixSampler 重新命名為 TimeMatrixFold),以簡化型別界限、提升語意清晰度,並支援 NoSample 等新插補類型。