Fuchsia F26 release notes

Date: April 8, 2025

Version: F26

The following changes have been implemented:

A11y

The following updates have been made for A11y:

  • Added a new configuration that allows products to remove A11y View from the scene graph, this provides more flexibility while keeping the default enabled for platform code.

Audio

The following updates have been made for Audio:

  • Enhanced audio stream management with new usage enums and flexible protocols: Introduced AudioRenderUsage2 and AudioCaptureUsage2 enums, along with the Usage2 union, to improve audio stream categorization and management. This includes a new ACCESSIBILITY stream usage for screen readers and internal migration of AudioCore to use these new types. Related protocols and methods were also converted to flexible for increased adaptability.
  • Added real-time audio device notifications: In the Rust shared support library, added AudioDeviceRegistry device event subscriptions, enabling Rust clients to be notified of audio device additions and removals.
  • Fixed various bug and made several improvements: Resolved issues related to VMO size calculation in the aml-g12 driver, improved stability of Inspect ordering in audio tests, updated build target visibility for correctness, and addressed stricter LLVM checks on temporary array references.
  • Removed unused audio driver: Deleted the unused aml-dsp driver and library to simplify the codebase and avoid future refactoring conflicts.

Bluetooth

The following updates have been made for Bluetooth:

  • Updated the ffx bluetooth peer subtool to include list, list --details, and show commands, replacing functionality previously in bt-cli.
  • Improved the splitting of large snoop backlogs into smaller chunks to respect FIDL message size limits.
  • Updated the Uuid type to derive Eq and Hash, making set operations and comparisons easier.
  • Updated the fuchsia-bluetooth target to be available on host, enabling ffx access to required types.
  • Fixed a build error due to vec! misuse.
  • Updated bt-transport-uart to only queue one read task, preventing issues with multiple HciTransport connection requests.
  • Updated solicitation UUID to be available as part of the scan filter list.
  • Updated the UART flag for BCM4381 to be configured correctly, enabling UART traffic.
  • Updated the firmware loading in bt-hci-broadcom to avoid potential stack overflows.

Build

The following updates have been made for Build:

  • Added support for bazel_test_package_group and per-API level .ifs files for shared libraries were introduced. These changes enhance modularity in testing and enable iterative interface development.
  • Improved the build system's robustness and made progress on the preparation for Bazel integration. Refactoring workspace logic and generating remote_services.bazelrc during fx gen contribute to these improvements.
  • Added profile support to Rust build configurations. A profile-rust variant and including profile paths in rustc inputs are now available, enhancing performance analysis capabilities.
  • Fixed serialization issues: This fix improves the stability and usability of the build system.
  • Streamlined the SDK build processes. Requiring SDK areas for all categories, relocating toolchain definitions, adding metrics-logger configuration to assembly, and removing emu_dimensions improve the SDK build experience.
  • Improved linkmap feature: Fixed issues in generate_linkmap, including flag and naming corrections.

Cobalt

The following updates have been made for Cobalt:

  • Switched Cobalt to Rust log: Cobalt's fake uses Rust log instead of tracing for logging.
  • Improved config validator testing: Added tests for metrics with reports in the config validator.
  • Introduced prototype STRUCT metric registry, validation, and observation, including example usage for defining struct metrics with fields, types, and reports for data aggregation.
  • Improved testing for integer histogram reports by switching to parameterized tests.
  • Implemented floating point step multiplier and validated step_multiplier to be greater than 1.
  • Updated Tink, Abseil-cpp, Protobuf, and Protobuf-gn submodules, and addressed deprecated Tink API usage.
  • Added tests for metrics with reports in config validator to improve test coverage.

Component Framework

The following updates have been made for Component Framework:

  • Updated Component Manager to be able to find the trace capability from its exposed-root directory.
  • Improved clarity of error messages for duplicate offers.
  • Fixed unreachable pattern lints in component debug and clippy lints in the Component Framework.
  • Corrected the handling of on_terminate=reboot for clean stops, and improved capture by repeating pending shutdown logs.
  • Updated Component Manager to use LogSink from the diagnostics dictionary, and incoming_integration_test has been improved with common Echo server code.

Diagnostics

The following updates have been made for Diagnostics:

Display

The following updates have been made for Display:

  • The display driver stack is being migrated to modern Fuchsia Platform infrastructure, such as DFv2 and FIDL.

Driver Framework

The following updates have been made for Driver Framework:

  • Added RestartWithDictionary FIDL method to driver manager to restart nodes with custom capabilities.
  • Added support for bus topology in driver manager, allowing clients to query bus segments.
  • Expanded the SDK with fake-bti and fake-object components for enhanced driver development.
  • Enabled on_terminate: reboot for driver_index for clean component exits.
  • Improved driver component manifest validation during build time.

FIDL

The following updates have been made for FIDL:

Firmware

The following updates have been made for Firmware:

  • Added "slot-unbootable-reason" fastboot variable for NUC and VIM3, which indicates the reason why a slot was marked unbootable

GPU

The following updates have been made for GPU:

  • Improved logging and error handling in multiple areas. Added more logging to HangRecovery for clearer function behavior, set default test status to NOT_FOUND in MagmaTestDriverBase to catch missing tests, and improved Magma error logs to display status strings instead of numbers.
  • Streamlined Magma components and revised command buffer submission. Removed the unused CachePolicy parameter and the magma::ZirconPlatformDevice class. Added context APIs and semaphore import/release functions to msd_c.h. Revised command buffer submission to support a variable number of command buffers and fix zero-resource handling.
  • Improved Vulkan and Swapchain implementations. Migrated flatland_view to new C++ bindings, added shards for Vulkan swapchain layers, and modified vkcube to use common swapchain shards.
  • Fixed crashes and flakes. Disabled ForceQuit and AcquireZeroTimeout tests in non-hermetic and emulator environments for image-pipe-swapchain-tests to resolve crashes. Re-added mistakenly removed unit tests for the DFv2 driver. Increased the shutdown timeout for msd-arm-mali to 10 seconds to mitigate flakes. Reduced zx_bit_pin chunk size to 32Mb to avoid errors when pinning memory.
  • Added and updated Magma platform tests. Added tests to the Mali test driver, including a large mappings test, and updated profiler and MMIO tests.

IOT, Matter, and Thread

The following updates have been made for IOT, Matter, and Thread:

Kernel

The following updates have been made for Kernel:

  • Introduced a new framework for measuring memory stalls, providing insights into system performance bottlenecks. This includes the addition of ZX_INFO_MEMORY_STALL to zx_object_get_info and a dedicated stall resource for managing stall measurement syscalls.

Platform Drivers

The following updates have been made for Platform Drivers:

Power Management

The following updates have been made for Power Management:

  • Added Inspect integration to drivers, including the element runner and attempt time logging for power drivers, and a new test to verify driver inspect exposure.
  • Added support in USB endpoints for optional wake leases and leases tied to completion, improving power management.
  • Implemented a fake power sensor for testing, simulating ODPM behavior on devices without integrated ODPMs.
  • Implemented the new Admin.PerformReboot API for initiating device reboots, while maintaining support for the deprecated Admin.Reboot.
  • Improved power management debugging and metrics with inspect integration for element runners and new multi-step suspend/resume latency metrics.
  • Enhanced power management by disabling lease taking optimization.
  • Simplified the SDMMC driver by using higher-level power methods.

Rust

The following updates have been made for Rust:

Starnix

The following updates have been made for Starnix:

Storage

The following updates have been made for Storage:

  • Added support for Get/SetFlags2 to the Virtual Filesystem (VFS), and SetFlags was changed to use io2 flags. Trait methods were renamed from update_flags to set_flags, and fuchsia.io/Flags replaced OpenFlags.
  • Enhanced UFS Driver: Added the UFS service to the UFS driver, introduced write protect and background operations support.
  • Updated VFS: Implemented Get/SetFlags2 support in VFS (Rust) and updated SetFlags to use io2 flags.
  • Improved blob and chunk handling: Fxblob now records corrupted delivery blob data for analysis and fixed ChunkedArchiveError root cause mapping.
  • Enhanced Fxfs and fixed bugs: Enabled fallocate, improved overwrite extent handling on truncate, and addressed reservation alignment issues and calculation errors.
  • Updated FVM and Fshost: Resolved FVM volume removal race, improved FVM matching in fshost, and fixed CML configurations for storage-host.
  • Improved storage and benchmarking: Storage benchmarks now run in a dedicated realm with storage-host support.

Testing

The following updates have been made for Testing:

Timekeeping

The following updates have been made for Timekeeping:

  • Implemented the new fuchsia.time.alarms FIDL API for managing wake alarms, utilizing the hrtimer device as a backend. This includes requesting hrtimer access, configuring conditional serving of the API for Starnix, and integrating it with the vim3 board. The wake alarm manager also received integration fixes, including GetProperties() and temporary CancelSync() FIDL APIs, and the alarms crate was factored out for better testing. Added tracing to the wake alarms service and resolved an issue with long sleep durations by implementing a resolution fix in the hrtimer driver. Also added details about max_ticks to hrtimer FIDL and corrected hrtimer configuration for broader platform support.
  • Refactored timekeeper's persistent state to accommodate future data expansion.

Tools

The following updates have been made for Tools:

ffx

The following updates have been made for ffx:

  • Enhanced the emulator with UEFI support for full disk GPT image booting and OTA testing. The ffx emu start --uefi flag enables this feature.
  • Added support in ffx log for fuzzy searching component monikers and URLs. Use the --component flag (replaces the deprecated --moniker flag).
  • Improved emulator MAC address derivation for UEFI OTA testing consistency. Emulators with names like fuchsia-5254-X-Y derive their MAC address directly from the name.
  • Increased ffx target wait timeout. ffx target wait now has a 6-second timeout for better handling of slow devices.
  • Improved error handling and environment variable processing in ffx tools. More informative error messages for ffx product downloads. Stricter environment variable handling in ffx config.
  • Fixed check-goldens and ffx emu bugs. check-goldens no longer emits a GN path warning. ffx emu now assigns host ports correctly when using QEMU v9+.

fx

The following updates have been made for fx:

  • Fixed fx flash-kola product bundle selection. fx flash-kola correctly selects product bundles in multi-product builds.

UI

The following updates have been made for UI:

Video

The following updates have been made for Video:

  • Relocated MPSC queue: The MPSC queue container has been moved to a common directory to be utilized in multiple Scenic components.
  • Updated media logging: Logging within media components now utilizes Rust log instead of tracing for improved logging capabilities.

WLAN

The following updates have been made for WLAN:

  • Improved scan result information by adding detailed incompatibility details to Inspect and providing incompatibility information directly in scan results.
  • Improved robustness and error handling across WLAN components. Added lints to prevent panics, fixed potential unwrap errors in Fullmac and during client interface recovery, and improved error tracking and reporting in PhyManager. WLAN device monitor and configuration now panic on errors to trigger reboot behavior.
  • Improved watcher service and DeviceMonitor through architectural simplification and enhanced functionality. Simplified watcher service architecture, enforced client limits for DeviceWatchers, adopted idiomatic style for DeviceMonitor server, consolidating new interface handling, and refactored CreateIface request/response formats.
  • Roaming foundational work. Roam monitors can now specify active or passive scans, and updating roam syslogs and SME proxy for roaming
  • Implemented miscellaneous enhancements across the WLAN stack. These include switching to Rust log, removing unnecessary WPA3 support checks, adding scan backoff between separate connection attempts, using LastSample fill policy for telemetry counters, fixing ffx wlan argument ingestion, adding SYN4381 chip support, and new APIs for country code settings.
  • Added support in Devicetree for serial device composite nodes and iommu name properties, which improves device management.
  • Added simulated tests for band capability verification for the BRCMFMAC driver.
  • Updated the BRCMFMAC driver to conditionally set the RSNE IE, fixing a bug in association indication.