FreeBSD CURRENT and STABLE Binary Upgrades

"Because tracking CURRENT shouldn't be a rite of passage"


This proof-of-concept is not a publication of FreeBSD.

Description is a proof-of-concept of binary updates using freebsd-update(8) for FreeBSD 13.0-CURRENT and 12-STABLE to facilitate the exhaustive testing of FreeBSD and the bhyve hypervisor and OpenZFS 2.0, and to help elevate ARM64 to Tier 1 status. Updates are based on the SVN revisions of official FreeBSD Release Engineering weekly snapshots.


Upgrades use SSL to the extent possible and thus require the ca_root_nss package, certctl(8), or another certificate bundle to support the retrieval of two .ssl files. Note that an accurate system time and date may be required for proper SSL handling.

Upgrades can be performed on 12.1 RELEASE or updated systems, or with a provided disc1.iso or memstick image.


To upgrade from Official 13.0-ALPHA1 or later to Official 13.0-BETA* or 13.0-BETA*:

freebsd-update -r 13.0-BETA3 -s -k b82bddb79643d1fe02685dc81ef00c1182a93ea8fb319bf3cd7fb9b7eee4ce4e --currently-running 13.0-CURRENT-ALPHA1 upgrade

To upgrade to 12-STABLE r363433 from a 12.1 RELEASE or patch level system, specify the server and signature:

freebsd-update upgrade -r 12.1-STABLE-364849 -s -k b82bddb79643d1fe02685dc81ef00c1182a93ea8fb319bf3cd7fb9b7eee4ce4e
freebsd-update install
freebsd-update install

To upgrade to 13-CURRENT r363439 from a 12.1 system:

freebsd-update upgrade -r 13.0-CURRENT-364846 -s -k b82bddb79643d1fe02685dc81ef00c1182a93ea8fb319bf3cd7fb9b7eee4ce4e
(install, reboot, install)

Once on an train, the available upgrades can be listed with:

freebsd-update listupdates

To upgrade to a listed upgrade: freebsd-update upgrade -r 13.0-CURRENT-363439
(install, reboot, install)

To upgrade to an release from an official FreeBSD RE snapshot:

Identify a destination snapshot on
Identify the current running version with uname -r
Run the following upgrade command with the source and destionation versions:

freebsd-update upgrade -r <destination revision> -s -k b82bddb79643d1fe02685dc81ef00c1182a93ea8fb319bf3cd7fb9b7eee4ce4e --currently-running <current revision>

Install, reboot, install as normal.

Note however that /etc/freebsd-update.conf and /usr/sbin/freebsd-update will NOT be updated during this process. Manually replace them with the freebsd-update.conf and freebsd-update.

Packages and ports should work no differently than on the official snapshots but freebsd-update fetch is not supported due to the nature of freebsd-update(8) patch levels which are tied to security advisories.

Differences releases are different from the official FreeBSD CURRENT snapshots in the following ways:

Available Updates

freebsd-update listupdates retrieves the list of available-updates.txt

Installer Downloads

Changelists for Available Upgrades


Questions and Answers

Q: What is the long-term goal of this effort?
A: To be replaced by official FreeBSD binary updates for FreeBSD CURRENT and STABLE if the proof-of-concept proves successful, moving on to builds of bhyve-related reviews from

Q: How do I validate the thumbprint of the update server?
A: Verify that /etc/freebsd-update.conf includes KeyPrint b82bddb79643d1fe02685dc81ef00c1182a93ea8fb319bf3cd7fb9b7eee4ce4e

Q: How do I enable verbose output?
A: freebsd-update ... --debug

Q: Can these releases be used in production?
A: Only you can determine that but some official snapshots have failed to boot.

Q: What do I do if I get kernel mismatch and missing dependency errors with packages?
A: You will probably get the exact same errors with the official snapshots due to the dynamic nature of the CURRENT branch.

Q: Are these patch levels or releases?
A: They are releases because patch levels are tied to security advisories. We are investigating if the patch level facility would be usable.

Q: What platforms have the ARM64 snapshots been tested on?
A: On an OverDrive 1000. Note that the installer may have an issue with the vfs.zfs.min_auto_ashift sysctl.

Q: What if I receive No mirrors remaining, giving up. errors?
A: This indicates that we need to rebuild an upgrade payload after a storage upgrade and path change. Please report these by email if you encounter them.

Q: What if I receive Cannot upgrade from a version that is not a release if using an early "HEAD" build?
A: Add "HEAD" to the whitelist in the /usr/sbin/freebsd-update shell script. i.e. *-RELEASE | *-ALPHA* | *-BETA* | *-RC* | *-STABLE* | *-HEAD* | *-CURRENT*)

Q: How can I help?
A: 1. Test FreeBSD 2. Test this testing resource. 3. All hardware and network resources are provided out-of-pocket and you are welcome to contribute.



Thank you Conor Beh for co-developing this service and Colin Percival for developing freebsd-update(8). Thank you FreeBSD Release Engineering Team for maintaining the FreeBSD build(7) infrastructure. Thank you ScaleEngine for providing the bandwidth for this service. is developed by Michael Dexter

© 2020, 2021 Michael Dexter. "FreeBSD" is a trademark of the FreeBSD Foundation