FreeBSD Status Report Second Quarter 2026

Here is the second 2026 status report, with 41 entries.

Thanks to all those who submit reports! Whether you are a first time reporter, a Google Summer of Code student, a member of some FreeBSD team or some other kind of author, your report is useful. It helps keeping the community informed and aware of what is going on, of the progress that are being made, of where their help might be needed etc.

If you are any kind of FreeBSD contributor, please consider writing one about your own contributions as well next quarter!

I would also like to thank Vladlen Popolitov for having implemented a long-requested feature: an RSS feed to track status reports.

Have a nice read!

Lorenzo Salvadore, on behalf of Status Team



FreeBSD Team Reports

Entries from the various official and semi-official teams, as found in the Administration Page.


FreeBSD Foundation

Contact: Deb Goodkin <deb@FreeBSDFoundation.org>

The FreeBSD Foundation is a 501(c)(3) non-profit dedicated to advancing FreeBSD through both technical and non-technical support. Funded entirely by donations, the Foundation supports software development, infrastructure, security, and collaboration efforts; organizes events and developer summits; provides educational resources; and represents the FreeBSD Project in legal matters.

Advocacy

In the second quarter of 2026, our advocacy work focused on expanding our educational video content, reaching more viewers than ever, bringing the community together for a productive Vendor Summit, and reflecting on the work that is helping sustain and grow interest in FreeBSD. Here are just a few of the ways the Foundation advocated for FreeBSD in Q2 2026:

Continuous Integration and Workflow Improvement

The Foundation supports a full-time staff member dedicated to improving the Project’s continuous integration system and test infrastructure.

Legal/FreeBSD IP

The Foundation owns the FreeBSD trademarks, and it is our responsibility to protect them. We also provide legal support for the core team to investigate questions that arise.

Go to https://freebsdfoundation.org to find more about how we support FreeBSD and how we can help you!


FreeBSD Release Engineering Team

Contact: FreeBSD Release Engineering Team <re@FreeBSD.org>

The FreeBSD Release Engineering Team is responsible for setting and publishing release schedules for official project releases of FreeBSD, announcing code freezes and maintaining the respective branches, among other things.

The Team managed 15.1-RELEASE, leading to the official RELEASE build and announcement in June. Planning has started for the upcoming 14.5-RELEASE, which is due to arrive in September.

The Release Engineering Team continued providing weekly development snapshot builds for the main, stable/15, and stable/14 branches; and also for the stable/13 branch until its End-of-Life at the end of April.


Cluster Administration Team

Contact: Cluster Administration Team <clusteradm@FreeBSD.org>
Contact: Philip Paeps <philip@FreeBSD.org>

FreeBSD Cluster Administration Team members are responsible for managing the machines the Project relies on to synchronize its distributed work and communications.

In this quarter, the team has worked on the following:

  • Regular support for FreeBSD.org user accounts.

  • Regular disk and parts support (and replacement) for all physical hosts and mirrors.

  • Cluster software refresh.

  • Coordinate community mirrors.

  • Additional support to the wiki-admin@ team.

  • Frequent interventions to thwart denial of service by bots.

Cluster refresh

Work continues to refresh the software running on FreeBSD.org cluster machines. We have started putting production workloads on stable/15. As part of this work some workloads are being moved around to different machines. This work is ongoing at the end of the quarter.

The clusteradm team refreshes the production package builders (circa 35 physical machines) on a roughly six- to eight-week cadence. These machines run FreeBSD current snapshots.

Other machines are upgraded on an as-needed basis, keeping up with security fixes depending on how exposed they are.

At the time of this writing there are 142 physical machines in the cluster. We have 42 machines on current, 21 on stable/15 and 73 on stable/14.

Most of the remaining stable/13 installations will be upgraded to stable/15.

 12.x: Regular   0, Jails   7
 13.x: Regular   6, Jails  31
 14.x: Regular  73, Jails 254
 15.x: Regular  21, Jails   4
 16.x: Regular  42, Jails   6
Total: Regular 142, Jails 302
Total installations: 444
Running -RELEASE|{-p*}: 0
Total geographic sites: 13

FreeBSD official mirrors

Current locations are Australia, Brazil, Japan (two full mirror sites), Malaysia, South Africa, Sweden, Taiwan and United States of America — California, Chicago, New Jersey, and Washington.

Our mirror site in Taiwan is experiencing an extended outage.

One of our mirror sites in Japan will get a complete hardware refresh in 2026Q3.

The hardware and network connection have been generously provided by:

New official mirrors are always welcome. We have noted the benefits of hosting single mirrors at Internet Exchange Points globally, as evidenced by our existing mirrors in Australia, Brazil, and South Africa. If you are affiliated with or know of any organizations willing to sponsor a single mirror server, please contact us. We are particularly interested in locations in Europe.

See generic mirrored layout for full mirror site specs and tiny-mirror for a single mirror site.

Supporting the wiki-admin@ team

The Cluster Administration Team assumed the role of the wiki-admin for most of this quarter while the position was vacant. A new wiki-admin team was recently installed. The Cluster Administration Team continues to support the wiki-admin team with necessary upgrades to the backend wiki infrastructure.

Large language model scraping

The FreeBSD Project’s infrastructure continues to be under constant attack from scrapers collecting training data for large language models ("AI"). The companies training these models have largely moved scraping operations from their own — easy to identify — infrastructure to botnets ("residential proxies"), making them difficult to block at the network edges without significant collateral damage. The Cluster Administration Team spent a considerable amount of time again this quarter mitigating these distributed denial of service attacks.

Sponsor: Anonymous individuals and companies
Sponsor: https://github.com/sponsors/ppaeps


Bugmeister Team

Contact: Bugmeister <bugmeister@FreeBSD.org>

In this quarter we have decreased the Problem Reports count.

Although we do continue to get patches for the src tree, the majority of patches we receive are for ports. This may be due to the auto-notifier customizations we have implemented.

For the src tree, in the last 180 days we have received 643 new Problem Reports and closed 844. For ports, the count was 3493 in and 4375 respectively.

We do not currently maintain statistics about how many of these actually generate commits, although we do believe the number to be non-trivial.

During the same 180-day period Mark Linimon and Torsten Zuehlsdorff continued to work to triage older Problem Reports. Mark’s work was partly funded by the FreeBSD Foundation in 2025. These results are visible from the last two dips in our Total Open Bugs Over Time graph.

As well, we seem to be getting more attention from various FreeBSD committers this year. Please contact bugmeister if you are interested in helping.

Of course, we still are doing better at triaging PRs than we are generating attention to the ones we already have. Suggestions welcome.

Mark Linimon has taken on the long-term project of making sure that the submitted patches all apply. However, he does not claim to be a QA person and to be able to evaluate their aptness by himself.

The general takeaway is that, with user education, we are getting better-quality Problem Reports this year. In particular, the ones with patches are being tested for applicability within a week or two of their arrival, and corrected if needed.

However, the farther back in time you go, the more problematic the PRs get, especially 2019 and earlier. I suppose this is to be expected. Mark continues to work on these in the background. The current count is 2611. Around 427 of these, mostly from 2019 and earlier, still need further work.

A problem with the setup of the upgrade to Bugzilla 5.2 has been fixed. Light testing showed no meaningful regressions. A bugfix version to 5.2.1 is imminent. Switching to this codebase is intended to be as soon at it is released. It was initially planned for earlier, however, it seemed inadvisable when the release engineering for FreeBSD 15.0 was ongoing, and then got further put off for 15.1.

"patchQA.py" still remains in beta. The patch application code is not up to its task and must be replaced.

The other problem known with patchQA.py is that it does not know the origins of files that are installed into /etc by installworld. There are external shell scripts that are in testing to help automate fixing the data. This may be simpler than trying to write more fragile Python code for this purpose.

We have created many new Bugzilla accounts by user request. The number of new-account requests has increased this year. So far in 2026 we are at 291, which is not quite 2 per day.

It is now a year since we started requiring emailed requests to create accounts, rather than allowing automated requests. By doing so, the spam flood has been reduced to nearly zero.

The other problem that we are monitoring is the huge number of http requests from crawlers. By now these requests far outnumber those from actual FreeBSD users. These are the cause for the sudden slowdowns our users object to. As none of us are professional sysadmins, we would welcome help from someone with professional experience dealing with them.

Thanks to Alexander Ziaee and the many others who have helped to bring us up to our current state.


Wiki-Admin Team

Mark Linimon stepped back from the wiki-admin role and two committers took over the wiki-admin role.

Short-term, the team will handle account requests etc.

Medium-term, the plan is to help in the structure of the wiki pages.

Long-term, the idea is to migrate away from MoinMoin Wiki to some other wiki software.


Projects

Projects that span multiple categories, from the kernel and userspace to the Ports Collection or external projects.


FreeBSD, CRA, EuroBSDCon, and Security Team

Contact: Pierre Pronchery <pierre@freebsdfoundation.org>

This quarter marked the beginning of my participation to Alpha-Omega’s new initiative around AI. The new wave of LLM-assisted disclosures of security vulnerabilities has been hard to miss, and Alpha-Omega is now assisting prominent Open Source ecosystems facing this challenge. This includes FreeBSD, and given the situation, I have volunteered and been accepted into FreeBSD’s security team. My objective there, besides helping with incoming reports where I can, is to understand existing processes and suggest improvements to facilitate and scale operations. This started with a new instance of RTIR, and with an experimental instance of Forgejo for CI/CD and possible leveraging of LLM integration with the security team’s workflow.

On a related note, and in an effort to facilitate compliance with the European Cyber Resilience Act (CRA), pkgconf was imported at version 2.9.93 in FreeBSD’s base system. This now includes spdxtool(1), which supports the generation of Software Bill of Material (SBOM) conforming to SPDX 3.0.1 specification. Together with Tuukka Pasanen, we are offering a framework for review to that effect in D56474, which still requires polishing before import unfortunately.

First, it should be updated to reflect the availability of spdxtool (a patch is already available). More importantly, finding the correct granularity for the amount of SBOM files to generate while fitting FreeBSD’s build system was not easy. This explains the metadata still missing in some cases; we are working on it for an approach as consistent as possible from the start. Lastly, I apologize in advance for the 1.000+ files added to the coming release; hopefully, this will be mitigated by the switch to pkgbase, with which we believe it will fit perfectly. The SBOM files are expected to be automatically provided in the corresponding packages installed, allowing subsequent SBOM tooling to function with the exact knowledge of the system’s status as installed.

In this context, I am glad to announce that Alice Sowerby, Peter Hansteen, and myself are teaming up to host a workshop about CRA compliance for BSD-based systems during the coming EuroBSDCon conference in Brussels, this September 2026. You are welcome to join us there for practical information about CRA compliance in our ecosystem!

Sponsor: Alpha-Omega, The FreeBSD Foundation


Cyber Resilience Act (CRA) Readiness Project

The Foundation is running a project through 2026 to actively prepare the FreeBSD Foundation, Project, and the community for the EU Cyber Resilience Act. There are six main areas of focus: Security and Vulnerability Handling, SBOM Toolchain, Public Documentation, Community Legislative Engagement, Public Project Repository, and Communications.

Over Q2 the project has made significant progress on its key goals.

Security efforts have focused on improving vulnerability handling and supply chain readiness through discussions with downstream vendors about reporting processes, Software Bill of Materials (SBOM) usage, and potential funding for compliance work.

The Foundation has also strengthened collaboration with the wider open source ecosystem by participating in Open Regulatory Compliance and OpenSSF activities, joining the OpenSSF as an associate member, attending Open Source Summit North America, and engaging with projects such as Zephyr to share CRA readiness strategies.

The SBOM toolchain work has advanced significantly and is now close to full end-to-end functionality. We plan to publish a technical blog once the remaining work is complete.

The Foundation also created draft CRA guidance for the FreeBSD community and we plan to publish this along with a dedicated section of the Foundation website providing permanent compliance information.

Transparency remained a priority, and the Foundation has published monthly public updates and meeting minutes on the repo linked above. There will be a full day CRA and SBOM tutorial at EuroBSDCon, which we invite you to attend!


FreeBSD Software Bill of Materials (SBOM)

Contact: Tuukka Pasanen <tuukka.pasanen@ilmi.fi>

The FreeBSD Software Bill of Materials (SBOM) effort has been continued during Q2 2026. This quarter’s focus has been reviewing and updating pkg-config .pc files and adding SPDX-License-Identifier to third-party projects included in the FreeBSD source. This effort will be continued in Q3.

As said, most of the quarter’s work has been dedicated to polishing pkg-config .pc, as these files are needed when generating SPDX 2.2 and SPDX Lite 3.0.1-compatible SBOM files. During this year Pierre Pronchery has been adding other crucial parts like pkgconf to the FreeBSD source. Currently, the biggest effort lead by him on the tooling side is the review of the SBOM generation part of the build, which holds .pc as part of the review. When the review is ready and the source is added to FreeBSD, SBOMs can be created during the building process.

Besides work on .pc, there has also been polishing of The FreeBSD Lua Tools for SBOM, which have been used to create the current set of .pc files and can be used for future updates. These scripts are still somewhat raw and complicated to use but are now in much better shape than before, and there is documentation on how to use them.

Adding SPDX-License-Identifier to third-party repositories is also a work in progress and will proceed in an order that aligns with project maintainers’ preferences. Why are license identifiers being added to third-party projects? There is no simple answer to this question, but the closest explanation is that machine-readable license identifiers help maintain SBOM information in the future.

If you want to help with this effort:

  • Review .pc files in Phabricator as part of the "Generate SBOM files as part of the build" review.

  • Assist in reviewing the pkgconf 3.0 import to the FreeBSD source.

Sponsor: FreeBSD Foundation


Full CPUID Control for bhyve

Contact: Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org>

Project Overview

Ongoing work on this project aims to integrate the existing proof-of-concept work into FreeBSD, and to add the following usability features:

  • a user-friendly configuration method to override individual bits, parts or even whole CPUID functions as needed, while keeping the rest of the host CPUID information or a pre-defined CPUID configuration

  • a user-friendly configuration method for the hypervisor signature reported by bhyve

  • a set of predefined CPUID configurations based on common x86 architecture levels, perhaps also including a set of CPUID data for a few real CPU models, and a user-friendly configuration method to choose one for a VM

Changes during the last quarter

Extensions to the bhyve configuration syntax

The existing bhyve configuration file syntax was limited to assignments to configuration nodes, which parsed into tree-structured set of nvlists internally.

In order to allow a more flexible configuration using pre-defined configuration file snippets, the bhyve configuration file syntax has been augmented with two new features:

  • A configuration node can be appended to with the += operator. If a value has already been assigned to the same configuration node, the new value is appended to the old value, separated by a comma.

  • Another configuration file can be included with an include directive. Absolute and relative paths are supported, but relative paths are understood as relative to the path of the configuration file the include directive appears in.

Yet more flexible CPUID configuration

The CPUID configuration mechanism has been extended to support symbolic feature names, where each name corresponds to a particular bit of a register for a CPUID function. This is particularly useful for individual instruction set extensions or other optional features that can be turned off or on at will.

So instead of configuring cpuid.0x00000001+=edx|=0x00040000, you can now simply write cpuid.enable+=psn. There is also a corresponding option cpuid.disable for symbolic features.

Using bit manipulation on CPUID register is of course still supported as not all CPUID features can be expressed in terms of individual feature bits.

Using x86 architecture levels

The x86 architecture levels are now implemented as a set of pre-defined configuration file snippets, each higher level building on top of the lower level.

To illustrate this, here’s what x86-64-v3.cfg looks now:

include x86-64-v2.cfg
cpuid.enable+=fma,movbe,osxsave,avx,f16c
cpuid.enable+=bmi1,avx2,bmi2
cpuid.enable+=abm

The CPU or architecture model can be selected either by including the corresponding configuration file from /usr/share/bhyve/cpu in the bhyve configuration file, or it can be specified on the command line as part of the vCPU configuration: bhyve […​] -c 16,model=x86-64-v1 […​]

CPUID constraints

In order to prevent accidentally enabling CPUID features for a guest CPU which the host CPU does not support, the CPUID configuration parser has been extended with a list of CPUID constraints, which are consulted when a particular CPUID register value is set or modified.

For any register in a CPUID function, a constraint can specify which bits are immutable and which may be cleared only.

The constraints are checked after the CPUID configuration has been applied.

Plans for next quarter

  • Implement overrides for CPUID constraints to ignore any constraints or to warn about violation of a constraint instead of failing VM setup.

  • Provide more pre-defined CPU configurations based on real-world CPUs.

  • Similar to setting a x86 architecture level, a mechanism will be implemented to override the hypervisor identification without requiring manually changing CPUID bits.

  • Get the whole wad reviewed and committed into FreeBSD.

Sponsor: The FreeBSD Foundation


Sylve — A Unified System Management Platform for FreeBSD

Contact: Hayzam Sherif <hayzam@alchemilla.io>

Sylve is a modern, unified system management platform for FreeBSD. It provides an integrated web interface for managing virtual machines (via Bhyve), Jails, the networking around them, and ZFS storage.

The backend is implemented in Go, while the frontend is built with Svelte. The project emphasizes a minimal system footprint. By default, it does not require any packages outside of the base system.

Optional runtime dependencies, required only when their respective features are used, include:

The port pulls in these dependencies for convenience to the user, but by itself, Sylve needs no dependencies to run.

Q2 Progress Highlights

Data Center / Cluster
  • Implemented ways for users to have highly available VMs and Jails, with automatic failover to a secondary/tertiary etc. node in the cluster with the help of ZFS replication (no live migration yet).

  • Made it easy to migrate VMs/Jails between nodes in a cluster without Quorum or HA, with a simple "Migrate" button in the UI.

  • Backups and Restore workflows have been improved significantly, with enhanced error handling and better user feedback, including the support for encrypted datasets.

Networking
  • Added support for adding network routes from the Web UI.

  • A PF based firewall is now implemented with full support for Traffic and NAT rules, including the ability to use objects within rules for things like lists of IPs, FQDNs, etc.

  • Added support for an intuitive WireGuard configuration UI, allowing users to easily set up and manage WireGuard tunnels.

Storage
  • smart(8) was vendored in as a dependency as an alternative to smartmontools

  • ZFS pool management now supports creating special VDEVs.

  • Samba now uses a built-in mDNS server instead of avahi

  • Initial iSCSI support was added, allowing users to create and manage iSCSI targets and initiators directly from the Web UI.

Virtual Machines & Jails
  • UI responsiveness and performance have been improved, especially for large clusters with many VMs/Jails.

  • Added support for VLAN tagging for Jails directly instead of requiring users to create a separate bridge for each VLAN.

  • A lot of manual command-line flags have now been converted into libvirt XML syntax for VMs, allowing easier management and better compatibility with libvirt-based tools.

  • Significant improvements have been made to the auto-start/stop processes for VMs and Jails.

General
  • Notifications system has been re-worked to add support discord webhooks, ntfy.sh and SMTP based transports, it now also supports multiple transports at once, and allows users to configure which events they want to receive notifications for.

Roadmap Update

  • All the road map items (except NFS shares from the previous quarter) have been completed, and we are now working on the next set of features for Q3:

  • NFS shares support, allowing users to create and manage NFS shares directly from the Web UI.

  • A simplified UI-mode aiming to make it easier for new users to get started with Sylve as a NAS appliance.

  • Podman and OCI container support, allowing users to run containers alongside VMs and (classic) Jails.

  • A mobile application for iOS and Android, allowing users to manage their clusters on the go.

  • App template library, allowing users to easily deploy popular applications (like Nextcloud, Plex, etc.) with a single click.

Sponsors: The FreeBSD Foundation, Alchemilla Ventures (Development), IPTechnics LLC (Infrastructure & Testing)


Hackathon 202606 — Halifax, Nova Scotia, Canada

Contact: Joe Mingrone <jrm@FreeBSD.org>

After BSDCan 2026 in Ottawa, some members of the community gathered for a hackathon at Dalhousie University in Halifax, Nova Scotia, Canada. Across the three repositories, 93 commits landed with the tag Event: Halifax Hackathon 202606.

Much of this work is described in separate report entries, but here is a high-level summary. The bulk of the src work focused on CPU power management. Most of it landed in hwpstate_intel(4), which received fixes for several MSR and uninitialized variable bugs, moved the energy performance preference to an 8-bit scale, and replaced thread_lock() and sched_bind() with IPIs. A new cpu_get_pcpuid() KPI was also added and adopted by both hwpstate_intel(4) and hwpstate_amd. A sweep through the ACPI code tightened the types of the sleep and wake event handlers, removed unused disable flags from acpi_cpu, acpi_hpet(4), and acpi_timer, and made the kernel refuse S4 when S4BIOS is not supported. For laptop support, a new hrfkill driver was committed for the airplane key on some Framework laptops, evdev reporting of the microphone mute key was added to acpi_ibm(4), and iichid(4) was changed to always release its interrupt resource. Other src commits touched libusb, libdtrace, libcxxrt, ifconfig(8), sched_ule, and a number of manual pages. In ports, the default Python was switched to 3.12, a new databases/py-oracledb port was added, and a sysutils/consolekit2 change enabled S0ix suspend on 16-CURRENT. The Emacs ports received various updates and improvements; the R, Jenkins, and some bioinformatics ports were updated. The documentation work added a Handbook section on ZFS native encryption, updated the geli encrypted swap instructions, and improved the FDP Primer guidance on generating patches with context.

Here are the raw hackathon commits across the doc, ports, and src repositories.

While most of the time was spent hacking, it was not all work, as the photos show. Participants spent some evenings and half a day on fun.

Sponsor: The FreeBSD Foundation (meal)


Parthenope — Current Status and Improvements

Contact: Alfonso Sabato Siciliano <asiciliano@FreeBSD.org>

Parthenope is a modular, two-step installer for FreeBSD, written in Lua.

During this quarter, the project was presented at BSDCan 2026, showcasing its current status, recent improvements, and future directions. The presentation also introduced several new ideas, mockups, and proof-of-concept implementations for future discussion and development, including an out-of-box experience and/or a post-installation configuration workflow.

Since the previous status report and the EuroBSDCon 2025 presentation, several core parts of the installer have been completely refactored or rewritten, including:

  • The configuration file;

  • The communication file used to exchange data between Step 1 and Step 2;

  • The installer subsystems, including internationalization, multi-mode support, and related infrastructure;

  • The Step 1 and Step 2 managers;

  • The component framework, where installation screens are now managed and invoked by the Step 1 Manager;

  • Multiple installer components and installation screens.

The Text User Interface (TUI) frontend is now close to feature-complete, bringing it close to supporting a complete FreeBSD installation. The remaining major components and screens are the partition editor, ZFS configuration, boot configuration, and the network manager.

While it is not yet possible to fully install FreeBSD using Parthenope, development is progressing rapidly toward a functional release. The next steps are:

  • Complete the remaining TUI installer components and screens.

  • Implement the Command Line Interface (CLI) frontend to improve accessibility.

  • Develop the Web frontend to enable installation via a web browser.

Parthenope started as a personal project, but it continues to grow thanks to community ideas, feedback, and feature requests, which are always welcome.


Native S.M.A.R.T. data retrieval in FreeBSD

Contact: Chuck Tuffli <chuck@freebsd.org>

FreeBSD has imported a native Self-Monitoring, Analysis, and Reporting Technology (S.M.A.R.T.) utility, smart(8), into the base system, providing lightweight, built-in disk health monitoring capabilities without requiring third-party packages. It was inspired by the diskctl(8) framework proposed at AsiaBSDCon 2016 to create a permissively-licensed S.M.A.R.T. utility addressing licensing and functionality gaps in existing tools.

The utility provides a unified interface for retrieving S.M.A.R.T. data across multiple storage protocols, including ATA, NVMe, and SCSI. It focuses on ease of integration with monitoring tools, providing multiple output formats (tab-delimited fields, JSON, XML) via libxo(3) and allowing users to query specific health attributes.


Userland

Changes affecting the base system and programs in it.


Process Descriptor API completion 2

Contact: Konstantin Belousov <kib@FreeBSD.org>

Following the addition of pdwait(2) and pdrfork(2) system calls, I looked at the other missing features that are requested by application programmers. The largest feature asked for seems to be an ability to obtain a process descriptor for an existing process.

Currently only one file descriptor may reference an internal struct procdesc in kernel, which in part explains why the interface to open the process by pid is not yet done. The work added the ability for procdescs to be pointed to by more than one file. Attributes controlling the procdesc behavior, e.g. the daemon (closing the file does not terminate the process) were moved from procdesc to the file.

This change allowed to extend the procdesc internal interfaces to implement the man:pdopenid(2) system call.

A facility implemented e.g. by the Linux pidfd descriptors is the pidfd_getfd() system call, that duplicates specified file descriptor from the target process, into the caller. The implementation of it for FreeBSD, named man:pddupfd(2) is relatively straightforward once we get the fget_remote(9) helper.

A problem with it started when the algorithm to check for privileges required to allow the operation was developed. The kernel checks the result of p_candebug() to see if something should be allowed that directly accesses programming resources of the remote process. But p_candebug() result is only valid while the target process lock is owned. Besides, p_candebug() denies actions if the target process changes the executing program with man:execve(2), which might change the privileges of the process if the image is set-uid or set-gid. Overall, this makes the plain check with p_candebug() inadequate, because we cannot own the process lock over fget_remote().

For that, a facility was developed that provides mutual exclusion for execing in the target process vs. the caller, called execblock. Also, helpers to reference the current vmspace for a process were added, to avoid using execblock when only a consistent target address space is required for the action, like reading of the process strings or copying the process memory. Existing places in system that are affected by the race were identified, and the usage of execblock or vmspace referencing interfaces applied as needed.

Then, the man:pddupfd(2) was implemented with the help of fget_remote() and execblock.

Sponsor: The FreeBSD Foundation


Scheduler

Contact: Olivier Certner <olce@FreeBSD.org>

Ongoing work is happening in the area of schedulers along multiple axes.

We are working on solutions to long-standing shortcomings in the ULE scheduler such as unfairness for non-interactive threads in certain particular circumstances and the very weak effect of nice values. It seems difficult to solve the first in full with ULE’s current design, so in parallel we have been sketching a new design with the following additional aims:

  1. More stable and predictable behavior.

  2. Separately controllable latency and allocated CPU.

  3. Enabling new features like scheduling on hybrid CPUs, power-aware scheduling, hierarchical scheduling, etc. while retaining fairness.

We have also been reviewing the 4BSD and ULE schedulers in detail, leading to some bug fixes, such as:

  • Priority conflation of differently-niced CPU-bound threads (4BSD)

  • Priority diminishing too slowly when consuming CPU, because of some obsolete SMP scaling (4BSD)

  • Fix off by one in preempt_thresh parameter definition (ULE)

  • Fix selecting lowest priority thread early in some corner cases (ULE)

  • Stop consuming memory linearly with MAXCPU for local runqueues (4BSD; by Minsoo Choo).

A presentation was done at BSDCan 2026’s Developer Summit on these matters (see link at the top).

On the hybrid scheduling front, a number of reviews have been created by Koine Yuusuke with code to support Intel Hardware Feedback Interface (HFI) and Thread Director (ITD), and a common infrastructure for capacities and scores was proposed by Minsoo Choo. We will review and shepherd these submissions.

Sponsor: The FreeBSD Foundation


Kernel

Updates to kernel subsystems/features, driver support, filesystems, and more.


Suspend/Resume Improvements

Contact: obiwac <obiwac@FreeBSD.org>

Suspend-to-idle and support for S0ix sleep is in the process of being added to FreeBSD.

This will allow modern Intel and AMD laptops, some of which do not support ACPI S3 sleep, to enter low power states to increase battery life.

Mostly, the status is the same as the previous quarter — work is still ongoing on narrowing down the NVMe resume issues and fixing up the D-state issues.

The generic power management interface has been committed and zzz(8) has been rewritten to make use of it. You are now expected to use the kern.power.supported_stype sysctl to list supported generic sleep types and set the kern.power.suspend sysctl to the sleep type you would like zzz(8) to use.

A bunch of small fixes and improvements were made to the acpi_spmc driver.

Generic USB4 NHI support has also been committed. The only thing left to commit for the USB4 support required for S0i3 entry is the suspend routine itself. The thunderbolt(4) manpage has been updated to be clearer on the fact that this is only intended to support S0i3 entry.

A manpage has been written for amdsmu(4) to better explain how to diagnose S0i3 entry.

Sponsor: The FreeBSD Foundation


Hibernate (aka Suspend-to-disk)

Contact: Olivier Certner <olce@FreeBSD.org>
Contact: Konstantin Belousov <kib@FreeBSD.org>

Work is ongoing to have FreeBSD support hibernate (suspend-to-disk), without BIOS/firmware assistance to save the current machine state, for amd64 UEFI-booted machines. See also the previous report.

After a pause of almost two months, we fixed some bugs in the image saving prototype, rebased it on recent code, and revised the interface between the kernel and the resume EFI loader, requiring some changes on both sides. This lead to a number of changes in ACPI general suspend/resume code and in-passing fixes. Work is in progress in the EFI loader (stage 1). A sketch of the kernel resume part (stage 2) was devised.

Some more discussion happened about how to save the system image while preserving its consistency, as the dump operation itself modifies kernel memory. The aim is to narrow down which components can interfere with the dump, and how to prevent that interference. In particular, it appears that low-level DMA and IOMMU code could perform memory allocations in certain circumstances, and it is yet unclear if that could happen during a dump. Once determined, we will pursue eliminating these circumstances if possible, else will work on a snapshot-like mechanism. Beyond that aspect, a live snapshot mechanism could be beneficial as it allows to use any kernel facility without restriction to perform the dump, and in particular alleviates the need to have one dump routine per disk driver.

We presented the current status of this work, associated challenges and possible implementation of a snapshot-like mechanism at BSDCan in June, and will do so again at EuroBSDCon in September.

Sponsor: The FreeBSD Foundation


Collaborative Processor Performance Control (CPPC)

Contact: Olivier Certner <olce@FreeBSD.org>
Contact: ShengYi Hung <aokblast@FreeBSD.org>

Collaborative Processor Performance Control (CPPC) is a standard introduced by ACPI to allow the OS to manage performance and efficiency levels of CPUs thanks to an abstract performance scale in general uncorrelated to, and more fine-grained, than mere frequency levels.

Work is ongoing again after another kickoff during the Halifax Hackathon at the end of June.

In the works are:

  • New minimum, maximum and desired performance knobs for the Intel driver (hwpstate_intel(4)).

  • Teach powerd(8) about these knobs, and provide basic policies around them.

  • A knob to set the EPP (Efficiency/Performance Preference) for all CPUs at once, and probably similar ones for the minimum, maximum and desired performance values.

  • Conditional enablement of the CPPC functionality of the AMD driver (hwpstate_amd(4)) on ACPI’s _CPC table presence. A knob will allow users to bypass this check, and possibly also whether the CPPC features are reported by CPUID.

  • A global profile knob with predefined values (such as "Balanced", "Performance", etc.), which sets all other more fine-grained knobs. Setting a fine-grained knob explicitly will switch the profile to "Custom".

A number of preliminary cleanups and fixes were committed at the end of June.

Sponsor: The FreeBSD Foundation


Audio Stack Improvements

Contact: Christos Margiolis <christos@FreeBSD.org>

I have been working on the audio stack since 2024Q1. Below is a list of the previous status reports:

Important work since last report:

You can also follow the development process on the FreeBSD Foundation’s status-updates repository, where I post weekly reports.

Sponsor: The FreeBSD Foundation


LinuxKPI 802.11 and Native Wireless Update

Contact: Bjoern A. Zeeb <bz@FreeBSD.org>
Contact: The FreeBSD wireless mailing list <wireless@FreeBSD.org>

This report focuses on the efforts using permissively licensed Linux wireless drivers, mostly unmodified, on FreeBSD, as well as preparing the native net80211 stack for support of newer standards.

15.1-RELEASE

Due to real life some of the changes I had hoped to have in 15.1-RELEASE did not make it anymore (see below). In the end I only updated the man pages for the various drivers shipping. We also updated the firmware ports as a change in src.git main had prevented them from building anyway. With that fwget(8) was also updated for more PCI Ids. Finally I helped making sure the already fantastically prepared release notes had some extra notes on known issues.

Driver updates

All LinuxKPI based wireless drivers were updated to Linux v7.0 in main and stable/15. This was not planned originally but it turned out that it was little churn so it could be done in a good work day. The update includes

  • the shipping drivers Intel iwlwifi(4) mvm/mld, Realtek rtw88(4) and rtw89(4),

  • the Mediatek mt76 driver which is a work in progress,

  • the three Qualcomm Atheros drivers ath10k, ath11k, and ath12k, which are TODO, as well as

  • the Broadcom brcmfmac, which compiles and loads firmware but is lacking the cfg80211 compat shim and some netdev work.

LinuxKPI based 802.11 suspend and resume

With drm-kmod 6.12 allowing one of my laptops to suspend and resume I could finally debug the last bits of LinuxKPI 802.11 suspend and resume and I am happy to announce that automatic suspend and resume for iwlwifi(4) is in main and stable/15. Feedback, so far, has been overwhelmingly positive. Sadly I missed the cut for 15.1-RELEASE so try stable or stay tuned for December.

LinuxKPI 802.11 adjustments

As underlying ground works for Realtek and Mediatek various LinuxKPI 802.11 implementation details were improved:

  • chandef / chanctx rework: these are definitions on which channel we are operating. Rework chandef emulation and how the contexts are updated; prepare for multiple chanctx, etc.

  • TX hardware crypto: the mt7921 would happily work with software crypto but once hardware crypto offload was enabled we would only receive some packets but not TX any correct frames anymore. It turned out that depending on key type the driver would user a different path to the keys and we would set both keys the same way, essentially overwriting the 1st with the 2nd. Fixed the argument passed down on the set key call to avoid this problem. This may also help rtw8x where we had seen occasional problems related to MC packets but validation is still pending.

  • rates: started to fill in and update most of the LinuxKPI 802.11 rate fields (but one which would only be needed for mt7615). Part of this work was originally done for rtw8x end of last year with a lot of it supplemented for Mediatek.

  • Fixed a compatibility ordering problem: it turned out that some of the order of events we had implemented did not fully match the expectations of some drivers. While we were setup and synched various rate related parts from net80211 to LinuxKPI 802.11 to the driver, one update came too late, leaving mt7921 with basic rates. Simply moving the code to be called in a different order solved the problem to get us 11n and 11ac throughput.

LinuxKPI changes:

In addition to the 802.11 parts in LinuxKPI, there is also general LinuxKPI infrastructure which needs adjustments.

  • PAGE_IS_LKPI_PAGE: this is a project to convert an early day shortcut that a Linux struct page is 1:1 mapped to a native vm_page into a proper Linux struct page with a vm_page backing. This is mostly needed for some Mediatek mt76 drivers, but also drm-kmod can finally undo some FreeBSD specific hacks after this lands.

  • LinuxKPI PCI detach (cleanup) functions: the Mediatek driver would cause a kernel panic on unload or shutdown. It turned out that the various LinuxKPI PCI cleanup routines were not fully correct as a comment had already hinted for one part. We fixed this and also cleaned up some of the file. At the time of writing the reviews are still pending but we hope to have at least the essential parts committed soon.

  • The LinuxKPI IDR code is used by some Mediatek mt76 drivers but is also shared with drm-kmod and a bunch of semi-native drivers. Unfortunately the framework has known problems (as some history showed) and does not match current expectations anymore. Rewriting this is somewhat tricky due to the larger impact but we hope have it ready in early 26Q3.

  • Improved and added some lindebugfs(4) code in order to be able to use debugfs for mt7921 debugging.

Realtek rtw8x support

After the updates to Linux v7.0 the problems we had with some chipsets not being able to associate increased. Both rtw88(4) and rtw89(4) now show various issues. One additional problem was discovered in that the rtw88(4) driver for at least one chipset would go off for 6s seconds, essentially letting authentication run into timeouts. It is not understood yet under which circumstances this will not happen, as it clearly does not seem to be a problem under Linux. Sadly it was not possible to debug this in time for 15.1-RELEASE. We hope to look into this in early 26Q3 in order to evaluate if a EN code be issued before 15.0 becomes EOL and fix the regressions.

Mediatek mt76 support

Work is ongoing to support multiple of the Mediatek mt76 drivers, foremost the mt7921 and mt7925. After several of the LinuxKPI and LinuxKPI 802.11 improvements I can say that mt7921 passes packets with acceptable throughput for the first cut. mt7925 does so equally but at least the outstanding LinuxKPI IDR work leads to instabilities. mt7915 likewise needs needs IDR, but also seems to not support hardware scan offloading, which means we do have to fix software scanning for good, which will equally help rtw8x, which have the weird software scan fallback in case hardware scan is not available. Further chipsets will be tested once these land and are fully enabled in main.

In addition to the LinuxKPI works, we debugged one driver-triggered panic. It turned out that the drivers would re-schedule some work during detach (shutdown) but then free the underlying memory. This left a callout being scheduled and once we tried to walk the callout list, we caused a panic.

LinuxKPI USB support

In Q1 we reported about a blocker for this. I am happy to announce that half of the blocker got sorted, that is the compiler option I originally wanted to add was now completely removed from the source tree in main and stable/15. LLVM by now has a newer option which is only a subset of what the problematic original allowed, which will be nice to move to in a year or two once a newer LLVM release and GCC are shipping with it. This now leaves me with finding a minimalistic solution to re-introduce it again, rather than spreading it over the entire kernel or a gazillion of individual files. There is hope that it will be sorted some time during 26Q3.

Native net80211 updates (tech debt)

  • Some work last year discovered issues in the way we are presenting RSSI to user space. Due to a possible double wraparound the values may not be correct. The driver and net80211 parts of this problem were fixed. The user space API is not fixed yet in order to avoid breakage (incl. major web browsers).

  • Talks have resumed during the last week of June in order to get ports fixed using lib80211, which will help us to move forward on various issues without constantly breaking user space.

Final note

It recently got quiet on issues despite more people using wireless on FreeBSD again. I am not sure this is a good sign or not.

We appreciate all the feedback and problem reports we get and if they come in on bugzilla we also try to categorize them into specific groups (see link). Some may seem to fall through the cracks but we generally try not to let that happen. Sometimes larger works are planned dedicated to the area of your problem and so may not see immediate help, sometimes other things may be ahead of the queue. If the issues are properly documented it will be easier to get back to them at a later time. If you have any issues with (LinuxKPI based) wireless please try to use the official channels: check open PRs, send a note to the wireless mailing list, if needed drop me a private email (e.g., if you have a core dump with possible private information), or open a new PR if the issue is not yet known (or seems to fall through the cracks as then it is up for public tracking).

Sponsor: The FreeBSD Foundation


DRM drivers

Contact: Jean-Sébastien Pédron <dumbbell@FreeBSD.org>

DRM drivers are kernel drivers for integrated and discrete GPUs. They are maintained in the Linux kernel and we port them to FreeBSD. As of this report, we take the AMD and Intel DRM drivers only (NVIDIA FreeBSD drivers are proprietary and provided by NVIDIA themselves).

We port them one Linux version at a time. This allows us to ship updates more often and it eases porting and debugging because we have a smaller delta compared to a bigger jump skipping several versions.

This quarter, we finished the porting of DRM drivers from Linux 6.12 LTS in time for the release of FreeBSD 15.1-RELEASE. Because this is an LTS version, we will track changes from the Linux 6.12.x patches. Currently, we are at 6.12.81 and work is underway to continue to bump to the latest patch. These drivers are available from the Ports tree and as packages.

As part of the work on 6.12 drivers, several bugs or regressions were fixed for already supported GPUs. Some newer GPUs started to work as well.

We still have several instabilities to fix in both the i915 and the amdgpu drivers.

We also continued to port DRM drivers from following Linux versions: * The update to Linux 6.13 is under review and testing. * The update to Linux 6.14 is ready as well and will be reviewed after the 6.13 update.

This work is kindly sponsored by the FreeBSD Foundation as part of the Laptop and Desktop Project.

Sponsor: The FreeBSD Foundation


GENEVE Tunnel

Contact: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org>

Since the last report, I have committed the geneve(4) driver and it is now available on CURRENT.


Series of IPv6 Improvements

Contact: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org>

For the past 6 months, I have worked on refreshing our IPv6 stack and implementing pending RFCs in our stack, and they are now available on CURRENT.

So far, I have added the support for:

  • RFC 9131 and RFC 9898 Section 3.9: Support for Gratuitous Neighbor Discovery (GRAND).

  • RFC 8781 (Section 5): Ability to have multiple PREF64 options.

  • RFC 4861 (Section 7.2.6 - 7.2.8): Support for delayed Neighbor Advertisement for both anycast and proxy addresses.

  • RFC 4191: Support for Route Information option in Router Advertisement.

  • Removed the support for DRAFT_IETF_6MAN_IPV6ONLY_FLAG to replace it with RFC 8925.

Ongoing works:

  • RFC 8925: IPv6-Only Preferred Option For DHCPv4 (D56637)

  • RFC 4429: Add support for Optimistic DAD. (D55229)

I want to specially thanks Gleb Smirnoff for his timeless guidance and help on these works.


Support for Routing Metric

Contact: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org>

I have been working on the metric implementation since 2026Q1. Routing metrics are configuration values used by a router to make routing decisions. Router metrics help the routing stack to choose the best route among multiple feasible routes to a destination. The route will go in the direction of the gateway with the lowest metric. Support for metric in our routing stack is implemented and available in CURRENT. Metric support requires numerous updates to both kernel and userland.

These are some highlights that were added:

  • Support for metric in rtsock via rmx_metric.

  • RTA_PRIORITY support for metric in netlink.

  • The upper 8-bit weight reservation for metric has been removed.

  • route(8) now shows the metric value.

  • netstat(1) now shows the metric value of each route when -w is used.

You can also leverage metric using net/bird for your routing protocols.


Native MPLS Support for FreeBSD

Contact: Subhash Murmu <subhashmurmujsr2511@gmail.com>

This project adds native Multiprotocol Label Switching (MPLS) support to the FreeBSD kernel as part of Google Summer of Code 2026, mentored by Bruce Simpson and Alexander Chernikov. MPLS is widely deployed for label-switched forwarding in production networks, but FreeBSD has no MPLS data plane in the base system, so MPLS-capable routing daemons have no kernel forwarding path to program. The work is built bottom-up, from wire-level encapsulation through the control plane, and integrates with the existing FreeBSD network stack rather than sitting beside it.

Phases 1 through 3 are complete and pushed as a five-commit layered history on the mpls branch of the Codeberg fork. Phase 1 adds link-layer encapsulation and netisr(9) dispatch for EtherType 0x8847. Phase 2 ports OpenBSD’s ldpd(8) to FreeBSD, where it now builds and runs. Phase 3 adds the forwarding engine and a per-VNET Label Information Base, with end-to-end LSP transit verified under tcpdump between VNET jails over epair(4).

The series has not yet been submitted to Phabricator. Work continues on kernel route programming for ldpd.

Sponsor: Google Summer of Code 2026


Bluetooth HID drivers

Links:

Contact: Majed Alkhaleefah <majed@FreeBSD.org>

I have been working on two drivers to enable support for HID drivers for Bluetooth devices as part of GSoC 2026.

The primary goal of this project is to register connected Bluetooth HID devices as Newbus devices via two new drivers: bthidbus and bthid. bthidbus acts as the parent bus that manages the creation and attachment of bthid child devices. bthid serves as the transport layer, spawning a hidbus device and routing all received packets to it once they are stripped of their headers. The short-term goal here is to enable support for wireless HID connections. The longer-term goal is to begin setting the foundation that allows others to write drivers for devices that can only connect via Bluetooth.

What has been accomplished:

  • bthidbus can successfully open a connection to a Bluetooth device via sockets.

  • bthid can receive and manage sockets handed down from bthidbus via ivars.

  • bthid can send the report descriptor to hidbus, which successfully spawns the correct HID device and driver. (e.g., a gamepad connected over Bluetooth spawns an hgame device and an evdev node.)

  • Input from Bluetooth devices is successfully received by hidbus and evdev.

Current issues and planned changes:

  • The actual report descriptors, Bluetooth addresses, etc, have to be hardcoded into bthidbus. I initially considered adding the querying/listening logic to bthidbus to make it act like a pseudo-server, but I worried this would risk bloating and scope creep. The approach I will be going with instead is to rely on the bthidd daemon’s existing querying logic and have it send new connection information to bthidbus via an ioctl. This would remove bthidbus 's current role as the connection-initiator and instead have it only manage connections that have already been opened.

  • There is significant input latency when monitoring via evtest. I have two different working hypotheses. The first is that the issue lies in bthid and how it manages interrupts via taskqueues. The second is that it lies in the Networking stack, as Bluetooth packets are piped between multiple different Netgraph nodes before being received by bthid. This could also very well be an issue with evtest; I still have to look into this.

All testing so far has been done with the Nintendo Switch Pro Controller.


NTSYNC(9)

Contact: Konstantin Belousov <kib@FreeBSD.org>

Recently there was a stream of articles hyping the Linux driver ntsync which implemented a helper for Wine to accelerate Windows NT synchronization primitives. The substrates to implement semaphores, mutexes, and events from the Win32 land are provided by it. The driver represents each NT object as a file descriptor, which has the set of the ioctls defined that directly map into the Win32 operations.

The project implemented the driver providing the compatible ntsync interface as specified in the Linux 7.0-rc3 document Documentation/userspace-api/ntsync.rst. Both native FreeBSD interface, and the Linux ABI compatibility layers, are written.

To test the driver, a minimal version of the Linux kernel test harness was ported. FreeBSD driver follows the interface details as encoded by the tests, when a discrepancy between Linux documentation and tests was found.

Both the driver and its man page ntsync(4) were written from scratch, without consulting the Linux source code.

Sponsor: The FreeBSD Foundation


Architectures

Updating platform-specific features and bringing in support for new hardware platforms.


Raspberry Pi Imager FreeBSD Port

Contact: Jim Chen <jim.chen.1827@gmail.com> Contact: Nimish Jain <njain15@protonmail.com>

The Raspberry Pi Imager is a convenient graphical tool developed by the Raspberry Pi Foundation that allows users to easily configure and flash operating system images to storage cards for the Raspberry Pi Zero and Raspberry Pi 1-5 series single-board computers.

Our goal in porting this app to FreeBSD is to continue lowering barriers to entry. We want users unfamiliar with the command line to easily flash operating systems to their Raspberry Pi.

Currently, the upstream project supports only Linux, MacOS, and Windows. We have created a FreeBSD port that uses native I/O, disk, and network APIs and links against pre-packaged FreeBSD libraries.

The main blocker for this project is currently upstream uncertainty. The maintainers have requested buy-in from FreeBSD developers to help with the long-term maintenance of the FreeBSD-specific code. If you are a committer or a contributor invested in Raspberry Pi tooling on FreeBSD, please let us know or join the discussion on the GitHub pull request!

If this work is accepted upstream, a Makefile for the FreeBSD Ports repository is ready for review as PR 296480 (https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=296480).

If you’re interested, please do try out a local release by cloning the Ports tree and applying the patch in the PR mentioned above, and let us know if you have any issues!

Sponsor: The FreeBSD Foundation


Enhancing Arduino and ESP32 Development Ecosystem on FreeBSD

Contact: Deepan Sai <skdeepan.sai@gmail.com>

Project Overview

I am working on adding the Arduino CLI package to the FreeBSD Ports Collection. The Arduino CLI is a command line tool that helps users work with Arduino boards. By adding it to FreeBSD I want to make it easier for developers to use.

Importance of the Work

A lot of people use Arduino CLI for embedded systems and automation. Having it on FreeBSD as a port makes it easy to install and update the software. This helps keep FreeBSD in line with tools that hardware and embedded developers use.

Progress This Period

This time I worked on getting the new port ready to be reviewed. I wrote the Makefile and made sure the package built correctly. I found a problem where a test was failing because it did not have the settings for FreeBSD. I fixed this. The test now works.

I did all the checks for a new port like making sure the files are in the right place and that the tests run correctly. I also fixed some issues that people found when they reviewed my work. The port is now much closer to being ready to be added to the FreeBSD Ports Collection.

Sponsor: Google Summer of Code


FreeBSD Driver Development for BananaPi-R64/R2-PRO

Contact: Martin Filla <freebsd@sysctl.cz>

Contributors are welcome. If you are interested in helping with this project, testing the current implementation, or contributing code, please contact me.

R64 Introduction

The Banana Pi R64 is a MediaTek MT7622-based development board (ARM Cortex-A53, dual-core ~1.35 GHz) featuring 4× Gigabit LAN, 1× Gigabit WAN, Wi-Fi (4×4n), Bluetooth 5.0, and multiple peripheral interfaces (UART, SPI, I²C, GPIO, SATA, mini-PCIe, eMMC, etc.).

Current State of FreeBSD Support R64

Implemented so far:

  • UART driver

  • Clock management (clocks)

  • Pinctrl

  • Storage controllers (eMMC/SD/MMC) driver

  • Ethernet Switch mt7531 driver

  • Ethernet mt7622 driver

  • XHCI driver

  • Watchdog driver

  • RTC driver

  • RNG driver

  • Pciecfg driver

  • SysIRQ driver

  • USB3

  • T-PHY

Development roadmap R64

Implement missing drivers:

  • SATA / AHCI

  • Wi-Fi (likely MediaTek MT7615)

  • GPIO subsystems

  • I2C

  • SPI

  • PWM

  • PCIE

R2-PRO Introduction

The Banana Pi BPI-R2 Pro is the next generation smart router development board. It is powered by Rockchip RK 3568 processor. Onboard 2GB LPDDR4 memory and 16GB eMMC storage, and supports 2 USB 3.0 interface, 5 gigabit network port. M.2 key-E and mini PCIe interface, 2 mipi DSI interface (one can change to LVDS by software), 1 CSI camera interface, 1 HDMI output.

Current State of FreeBSD Support R2-PRO

Implemented so far:

  • UART driver

  • Clock management (clocks)

  • Pinctrl

  • GPIO

  • Storage controllers (eMMC/SD/MMC) driver

  • XHCI driver

  • Watchdog driver

  • PCIE driver

Development roadmap R2-PRO

Implement missing drivers:

  • HDMI

  • MIPI

  • USB3

  • SATA


Framework Laptop support

Contact: Daniel Schaefer <dhs@frame.work>
Contact: Li-Wen Hsu <lwhsu@FreeBSD.org>
Contact: Sheng-Yi Hong <aokblast@FreeBSD.org>

Framework Computer Inc. continues to support the FreeBSD Project in many ways. This includes providing engineering samples and development hardware to the FreeBSD Foundation, helping with hardware testing, and working with FreeBSD developers on compatibility improvements.

The Foundation continues to improve overall laptop support. Framework laptops are among the target platforms of the Laptop Support and Usability Project.

During 2026Q2, Daniel updated the sysutils/framework-system port to version 0.6.2 and later to version 0.6.4. This package provides Framework-specific system and firmware management tools for FreeBSD users.

Framework also hosted a small hackathon at its Taipei office during the quarter. FreeBSD developers tested newly announced hardware, including the Intel Panther Lake-based Framework Laptop 13 Pro and the 10GbE adapter.

Li-Wen is working on FreeBSD support for the 10GbE adapter, which uses a Realtek RTL8159 controller.

Support for Intel Panther Lake systems also progressed through development and testing on Framework hardware, including pre-release systems made available by Framework during the Taipei hackathon. Daniel added PCI IDs for Panther Lake I2C and SMBus controllers, and Sheng-Yi committed the work to FreeBSD. A follow-up correction removed an ID for an SPI flash controller that had been incorrectly identified as an SPI bus controller.

In June, Li-Wen also started testing and debugging the Linux 6.12-based DRM drivers from the graphics/drm-612-kmod port, which was added during the quarter. He investigated display-related problems on Framework systems and suspected that some of them might be the same as, or related to, the external-display hot-plug problem tracked in the Laptop Support and Usability Project. The investigation was still in progress at the end of the quarter and continued into Q3.

Power and performance management continued to improve on both Intel and AMD systems. Framework systems were among the development and test platforms used for this work. Some systems were provided by Framework, while FreeBSD developers also carried out development and testing on their own Framework hardware.

Sheng-Yi disabled Intel HWP package-control mode on hybrid-core CPUs. Without this change, a request from an efficiency core could limit all cores to its performance level and cause a significant loss of performance.

Other HWP and CPPC improvements completed during the quarter include:

Work also progressed on suspend and resume support for the Framework Laptop 12. Devin Teske developed and tested a proposed ACPI fix for a wake-up issue that could cause the system to suspend again immediately after resume. Daniel investigated the laptop’s ACPI and embedded-controller firmware behavior, while Warner Losh and Olivier Certner provided technical review and helped improve the implementation.

Sponsor: The FreeBSD Foundation for Li-Wen and Sheng-Yi’s work
Sponsor: Framework Computer Inc. for Daniel’s work and for hardware and space provided to the project


ROCm support on FreeBSD

Contact: Sourojeet Adhikari <siri@racha.ca>

ROCm is the compute platform used by AMD for their GPUs. As of now, FreeBSD does not support ROCm at all, neither at the toolchain level nor at the driver level. I am working to change that and upstream the required changes.

To my knowledge, on FreeBSD there are a few ways to run compute loads (like AI/ML, graphics, etc) on the GPU; those ways, to my knowledge, are Vulkan and OpenGL. Both Vulkan and OpenGL are fairly good for compute workloads, namely in graphics and sometimes machine learning loads too. But sometimes there are tasks which are not well-suited for Vulkan and OpenGL, and are instead done in ROCm/CUDA because ROCm and CUDA give the developer a lot more control over how the task is done. So I am trying to introduce ROCm support to FreeBSD so we can run ROCm code/programs on FreeBSD. There are a few things we need working to get ROCm working. The first is AMD’s LLVM fork, which I have patched, gotten working, and have upstreamed the patches. Next are the ROCm runtimes, which have been patched, and I am currently working on upstreaming the patches. Finally is the amdkfd driver, which I am working on patching, and am upstreaming some of the LinuxKPI-related patches back to the FreeBSD kernel.

As of late, I have upstreamed changes to AMD’s LLVM fork allowing the compilation of their fork on FreeBSD so you can build their ROCm toolchain. Beyond that, I have worked on getting a series of patches into LinuxKPI to slowly bring in amdkfd support.

Sponsor: The FreeBSD Foundation


Cloud

Updating cloud-specific features and bringing in support for new cloud platforms.


FreeBSD on EC2

Contact: Colin Percival <cperciva@FreeBSD.org>

FreeBSD is available on both amd64 (Intel and AMD) and arm64 (Graviton) EC2 instances.

An issue causing the ena(4) driver to drop packets when receiving jumbograms has been fixed. The fix was present in 15.1-RELEASE (June) and will be present in 14.5-RELEASE (September). This fix improved single-TCP-stream network performance on some EC2 instances from 110 Mbps to 9.5 Gbps and also significantly improved multiple-TCP-stream throughput.

An issue causing the ena(4) driver to launch taskqueues on the wrong CPU(s) on NUMA systems has been identified. The fix should be present in 14.5-RELEASE (September) and produces a 2x increase in multiple-TCP-stream throughput on c8gn.48xlarge instances.

Sponsor: Amazon
Sponsor: https://www.patreon.com/cperciva


FreeBSD on Microsoft HyperV and Azure

Contact: Microsoft FreeBSD Integration Services Team <bsdic@microsoft.com>
Contact: freebsd-cloud Mailing List
Contact: The FreeBSD Azure Release Engineering Team <releng-azure@FreeBSD.org>
Contact: Wei Hu <whu@FreeBSD.org>, <weh@microsoft.com>
Contact: Li-Wen Hsu <lwhsu@FreeBSD.org>

Publishing the 15.1-RELEASE image to Azure Marketplace is in progress. It is expected to become publicly available early in the third quarter.

Li-Wen is investigating the technical details needed to support Azure Trusted Launch.

Wei and Li-Wen, together with other Microsoft engineers, are investigating an issue preventing mana(4) from working correctly on AMD-based Azure VMs. The mana(4) device is present on the latest v7-generation Azure VMs.

Work in progress tasks:

  • Automating the image publishing process and merging it into src/release/.

  • Making the process of publishing to Azure Marketplace smoother.

  • Supporting FreeBSD in Azure VM utilities.

Open tasks:

Sponsor: Microsoft for people in Microsoft, and for resources for the rest
Sponsor: The FreeBSD Foundation for everything else


Documentation

Noteworthy changes in the documentation tree, manual pages, or new external books/documents.


The FreeBSD Russian Documentation Project

Contact: Andrey Zakhvatov <andy@FreeBSD.org>
Contact: Vladlen Popolitov <vladlen@FreeBSD.org>

The FreeBSD Russian Documentation Project’s current goal is to provide up-to-date Russian translations of the most important parts of the FreeBSD documentation (FAQ, Handbook, website content). It is essential to support Russian-speaking users with high-quality official technical materials and to increase the adoption of the operating system worldwide. We hope this initiative will gain support within the Russian-speaking FreeBSD community and lead to an increase in translated materials.

During the last quarter:

  • 100% of the text in Weblate has been translated.

  • The Russian language section of www.FreeBSD.org/ru has been fully translated, with 100% of its pages now available in Russian.

  • For the FreeBSD 15.1 release, the complete set of release documentation (release notes, errata, etc.) has been translated into Russian in a timely manner alongside the English originals.

  • The project to translate FreeBSD man pages has been initiated and is in its very early stages. Preliminary examples can be found at GitHub.

Plan for the next quarter:

  • Continue the ongoing efforts to translate FreeBSD man pages.

Check the official translation guide if you would like to help.

We would appreciate your assistance with translating the following materials:

  • Web pages

  • Man pages


Ports

Changes affecting the Ports Collection, whether sweeping changes that touch most of the tree, or individual ports themselves.


Dockerbox

Contact: Chun-Cheng Yeh <leafoliage@FreeBSD.org>

Dockerbox is a virtualized Docker daemon. Although the Docker daemon is not natively available on FreeBSD, Dockerbox runs it inside a Debian Bhyve virtual machine to provide access to it. Dockerbox supports common Docker features such as Docker Compose, port publishing, and bind mounts. This project aims to facilitate non-production Docker usage on FreeBSD.

  • freebsd-dockerbox
    Provides Docker on FreeBSD by running dockerd inside a Linux Bhyve VM. This service manages the lifecycle of the Dockerbox guest, along with its network and storage settings.
    v0.2.5 — ported.

  • dockerbox-broker
    A child service of Dockerbox that handles port forwarding from the host to the Dockerbox guest when a container requests port publishing.
    Not yet ported.

  • freebsd-dockerbox-debian
    Codebase used to generate Dockerbox’s disk image.
    Not ported.

  • docker-cli
    The Docker CLI tool.
    v29.4.2 — ported.

  • docker-compose
    A Docker CLI plugin for defining and running multi-container applications.
    v5.1.3 — ported.

  • docker-buildx
    A Docker CLI plugin providing extended build capabilities via BuildKit.
    v0.34.1 — ported.

sysutils/dockerbox, sysutlis/docker-cli, sysutils/docker-compose, and sysutils/docker-buildx are now available in the FreeBSD Ports Collection and via pkg.

Sponsor: The FreeBSD Foundation


KDE on FreeBSD

Contact: KDE on FreeBSD Mailing List <kde@FreeBSD.org>

The KDE on FreeBSD project packages CMake, Qt, and software from the KDE Community, for the FreeBSD ports tree. The software includes a full desktop environment called KDE Plasma (for both X11 and Wayland) and hundreds of applications that can be used on any FreeBSD machine. The KDE team is part of desktop@, building the software stack to make FreeBSD beautiful and usable as a daily driver graphical desktop workstation.

Infrastructure

CMake was updated to 3.31.12.

Qt6 and PySide6 were updated to 6.11.1. PyQt6 was updated to 6.11.0.

Qt5 and PySide2 were updated to 5.15.19 KDE patch collection. Upstream standard support for Qt5 is officially over. This is the final update for Qt5.

KDE Stack

KDE Frameworks, Plasma, and Gear release happen very regularly. KDE team lands these updates shortly after their upstream release.

  • KDE Frameworks ports were updated to 6.28.0.

  • KDE Plasma Desktop was updated to 6.6.6.

  • KDE Gear was updated to 26.04.3.

A number of new KDE ports have been added. Amarok, the classic KDE music player, has been reinstated and updated to 3.3.3.

Sunsetting Qt5 ports

Qt5 is still used by approximately 350 ports. Although Qt5 is deprecated there is no definite date for its removal from the ports tree yet. Still, the port for Qt5WebEngine which is based on very old Chromium with multiple vulnerabilities is scheduled for removal just before 2026Q4. KDE team encourages maintainers to migrate their ports to Qt6, remove Qt5 flavors, and remove abandoned Qt5 software.


GCC on FreeBSD

Contact: Lorenzo Salvadore <salvadore@FreeBSD.org>

Two new ports have been created: lang/gcc16 and lang/gcc17-devel.

PR 294062 about arm64 build failures has been fixed. More precisely, in 2026Q2 lang/gcc16-devel and lang/gcc17-devel have been fixed, while lang/gcc16 has been fixed in the beginning of 2026Q3 (at the time this report is written the patch still needs to be forwarded to the ports quarterly branch). Unfortunately, the solution is local to the FreeBSD ports tree and cannot be upstreamed directly. Discussion for an upstream solution can be found in the upstream bugzilla. Thanks to all those who have helped, in particular to Mark Millard.

I have not worked personally on the process to get GCC_DEFAULT=15 this quarter, but some work is being done in the associated PRs, so this is getting forward as well. Moreover, minor version updates to lang/gcc13, lang/gcc14 and lang/gcc15 are planned.

As I continue to work on the GCC ports, I realize that I am having less time and less energy to put into them. These ports are important, I prefer not to leave them unmaintained at least until I am able to deal with them, even if slowly. But if there is someone who would like to take them, please stand up and I would be glad to transfer maintainership.


Improve OpenJDK on FreeBSD

Contact:
Harald Eilertsen <haraldei@FreeBSD.org>
FreeBSD Java mailing list <freebsd-java@lists.freebsd.org>

The goal of this project is to improve OpenJDK support for FreeBSD/amd64 and FreeBSD/arm64.

Java is an important runtime environment for many high performance, critical enterprise systems. Making sure Java based applications run correctly and efficiently on FreeBSD is important to ensure that FreeBSD will continue to be a viable and attractive platform for enterprises, as well as businesses and organizations of all sizes.

This quarter has been spent mostly on getting the upstreaming process properly going. We submit patches to a separate repository under the OpenJDK org on GitHub, and make sure that each PR is reviewed by at least one upstream reviewer. This way, when we get to the point where we want to merge our port into the upstream mainline, all commits should already be reviewed by someone in the project.

This is a fairly slow process, as we depend on upstream reviewers having time. We also encounter that some of the changes that has been living in our port for a long time is rejected. Then we have to rework them, or if not strictly needed, just throw them out. I feel this is a useful correction, but sometimes causes quite a bit of work.

In this quarter the following issues/milestones were reached:

In addition, these tasks are still ongoing, or waiting for review:

Other notes:

Sponsor: The FreeBSD Foundation


FreeBSD HPC Ports Modernization: Slurm 26.05, UCX 1.20 Upstreaming, and MPI-Parallel File Utilities

Contact: Generic Rikka <rikka.goering@outlook.de>

This report continues the FreeBSD HPC Ports Modernization initiative. Previous quarters focused on bringing the Slurm + PMIx + PRRTE + UCX stack up to date and filling gaps in the surrounding ecosystem. This quarter’s work centered on three things: keeping the core scheduler and communication libraries current against fast-moving upstream releases, upstreaming the FreeBSD portability fixes accumulated while maintaining these ports so the local patchsets keep shrinking, and adding a new port for MPI-parallel file utilities that are common on large HPC filesystems.

Work completed

  • Updated sysutils/slurm-wlm twice this quarter, from 25.11.4 to 25.11.5 and then from 25.11.5 to 26.05.1, tracking the latest upstream releases.

  • Fixed several FreeBSD-specific runtime issues in net/ucx: hardened async thread state handling, corrected UCM relocation handling, fixed mm signal socket binding, and resolved other FreeBSD runtime portability issues.

  • Updated net/ucx from 1.20.0 to 1.20.1, and separately fixed a libucm early-init panic together with several gtest suite failures uncovered while validating the update.

  • Added sysutils/mpifileutils as a new port, along with its dependency stack: devel/libcircle, devel/lwgrp, and devel/dtcmp. These provide MPI-parallel file utilities (copy, remove, checksum, etc.) commonly used on large HPC filesystems.

  • Updated benchmarks/py-reframe-hpc twice this quarter to track upstream releases of the regression testing framework.

  • Upstreamed "UCS/TYPE: Portability fixes for non-glibc/Clang environments" to UCX, which was reviewed and merged.

  • Opened "UCS/SYS: portability fixes for non-Linux platforms" against UCX, covering hostname buffer sizing, MAC address retrieval via getifaddrs()/AF_LINK, shared-memory error reporting, mmap/munmap-based reallocation, and cpuset_getaffinity()-based thread affinity queries; currently addressing review feedback.

  • Opened a portability PR against mpifileutils guarding Linux-only APIs for FreeBSD and other non-Linux builds; currently in review.

  • Collaborated with SchedMD on a Slurm configure-time probe for H5PTopen, used to detect the HDF5 high-level library, which was merged upstream.

Work in progress

  • Addressing reviewer feedback on the open UCX and mpifileutils portability pull requests to get them merged upstream and reduce the FreeBSD ports' local patchsets further.

  • Continuing collaboration with SchedMD to upstream additional portability fixes discovered while maintaining sysutils/slurm-wlm on FreeBSD, including BSD socket-handling improvements.

  • Evaluating a proctrack/freebsd_reaper Slurm plugin design, made possible by recently landed FreeBSD kernel support for exposing reaper metadata in process information.

  • Continuing to track upstream Slurm, UCX, and PMIx/PRRTE releases closely to keep the FreeBSD ports current with minimal local patching.

Future plans

  • Land the outstanding UCX and mpifileutils upstream pull requests, and continue identifying further portability issues to upstream rather than patch locally.

  • Prototype and submit the Slurm proctrack/freebsd_reaper plugin once the underlying kernel interface work is finalized.

  • Continue expanding the HPC software ecosystem available in the FreeBSD Ports Collection and reduce local patchsets across the stack wherever upstream acceptance is possible.

  • Document a reference Slurm + OpenMPI + PMIx + PRRTE + UCX deployment on FreeBSD to lower the barrier for new sites experimenting with FreeBSD in an HPC context.


Improve libvirt support for bhyve hypervisor

Contact: Roman Bogorodskiy <novel@FreeBSD.org>

Completed work

  • libvirt/bhyve driver:

    • virtio-console device support added.

    • QEMU Guest Agent support added.

    • Implemented a few features based on the QEMU Guest Agent, such as graceful reboot and shutdown, managing guest OS time, SSH keys, users passwords, etc.

    • Added memory tuning and block I/O tuning based on rctl(8).

  • Work in progress on extend libvirt CI to test against FreeBSD-CURRENT snapshot VM images.

Plans for the next quarter

  • Add support for boot order configuration.

  • Add support for TPM devices.

  • Complete suspend/resume support.

  • Continue implementing features based on the QEMU Guest Agent.

  • Continue extending CI, cover the new guest agent based features with new tests.

Sponsor: The FreeBSD Foundation


Last modified on: July 27, 2026 by Lorenzo Salvadore