Zymbit Documentation
Welcome to Zymbit’s Documentation Site! Here, you will find all the resources you need to learn about and to use all Zymbit hardware and software.
Recent Updates
October 2026:
- Release of Zymbit Driver Package 2.0. This is the first overall update to all of the Zymbit Driver Packages since 2025. Consider it a migration, not a routine update. Major feature changes:
Adds support for the production ZYMKEY5 (no Bootware support)
Adds support for Ubuntu 26.04 (resolute) (no Bootware support)
Completely re-vamped packaging and installation; no longer uses install_zk_sw.sh script method. Installation is purely apt package based. Running apt upgrade on a device still using zk-sw-repo will not move it to 2.0.
Deprecates support for Ubuntu 22.04 (jammy), Debian 11 (bullseye) and 32-bit ARM.
Details: October 2026 Update
June/July 2026:
- Added trixie support for Zymbit Driver Package (not Bootware)
- Minor update to Bootware 1.3.2 (stable)
- 1.3.2-4: Issue #211 Add ability to set wake_pin for Bootware via zbconfig.
February 2026:
- Release of Bootware 2.0 Beta - limited platform support (Pi5 only), not for production use.
- Integration with Pi’s Secure Boot
- Full boot artifact isolation
- Bootware bug fixes
- Update to Zymbit Driver Package
- PKCS11 bug fix for 64-bit OS builds
Latest STABLE Platform and OS Support
| SEN-500/CM5 | SEN-400/CM4 | Pi4 | Pi5 | |
|---|---|---|---|---|
| Zymbit HSMs: | Zymkey,HSM60 | Zymkey,HSM60,SCM | Zymkey | Zymkey |
| Raspberry Pi OS Trixie (64-bit) | ||||
| Raspberry Pi OS Bookworm (64-bit) | ||||
| Raspberry Pi OS Bullseye (64-bit) | 1 | 1 | ||
| Ubuntu 26.04 LTS Resolute (64-bit) | ||||
| Ubuntu 24.04 LTS Noble (64-bit) | ||||
| Ubuntu 22.04 LTS Jammy (64-bit) | 1 | 1 |
Full Bootware 1.3.2 Support
Bootware Not Supported
NOTICE: Changes from the Pi foundation to the Pi5/CM5 firmware are incompatible with Bootware. Symptom is Bootware Updates cannot access USB Endpoints to get images. You won’t see the problem with the 11/19 release. The 11/19 release can be downloaded from here: Pi5 Raspberry Pi OS Lite 64-bit 2024-11-19
Contact support for PiZero 2W.
October 2026 Details
Zymbit Driver Package 2.0
The installation of the Zymbit Driver Package 2.0 is a migration, not a routine update. It moves devices from the heterogeneous, distribution-specific legacy APT repositories to a common new APT repository, renames and splits several packages. Running apt upgrade on a device still using zk-sw-repo will not move it to 2.0.
Before you upgrade a device:
- Check that it runs a supported distribution.
- On devices set up with
install_zk_sw.sh, back up/var/lib/zymbit. - Plan to rebuild applications built against the old Zymkey API libraries.
Then follow the install steps below.
What’s New?
Zymbit Driver Package 2.0 makes Zymbit software install and update like any other package on your system: one signed apt repository, production ZYMKEY5 support, and Ubuntu 26.04 LTS out of the box.
- Install and update with with a unified apt process. Add the Zymbit repository once, and every Zymbit package installs and stays current through standard apt commands, alongside the rest of your system. No more
install_zk_sw.shscript. - Install only what you need. The Zymkey app utilities API is split into separate runtime, development and Python packages. Production devices need no longer install development headers and utilities.
- Production-ready ZYMKEY5. Production ZYMKEY5 adapters now identify as zymkey5, replacing the pre-production hsm6 name. Zymbit Driver Package 2.0 is required for adapters identifying as zymkey5, and is backwards compatible with adapters identifying as hsm6.
- Ready for Ubuntu 26.04 LTS. zkifc supports the new GPIO character-device interface that replaces sysfs GPIO in Ubuntu 24.04, so you can move your fleet to the latest LTS.
- Python API as a native package. python3-zku installs with apt like everything else and automatically replaces the old pip package.
- Build your apps the standard way. Native libraries now install to standard multiarch-aware locations with versioned names, and ship with pkg-config and CMake helpers. Applications built against the old libraries need a rebuild; see Known Issues.
Supported Distributions
Zymbit Driver Package 2.0 supports 64-bit ARM (arm64/aarch64) only. 32-bit ARM (armhf) packages are no longer built. If you are using an older distribution, we recommend you stick with the existing legacy packages.
| Distribution | Codename | Status |
|---|---|---|
| Ubuntu 26.04 LTS | resolute | New |
| Ubuntu 24.04 LTS | noble | Supported |
| Ubuntu 22.04 LTS | jammy | Dropped |
| Debian 13 | trixie | Supported |
| Debian 12 | bookworm | Supported |
| Debian 11 | bullseye | Dropped |
Ubuntu 22.04 (jammy) and Debian 11 (bullseye) are no longer supported because the packages require glibc 2.36 or newer. Devices on 22.04 should stay on the zk-sw-repo packages or upgrade to Ubuntu 24.04. Devices on bullseye should stay on the zk-sw-repo packages or upgrade to Debian 12 (bookworm).
Zymbit Driver Package 2.0 Versions
All packages now come from one common, signed repository, https://zk-repo.s3.amazonaws.com/debian/ (suite stable), shared by every supported distribution. Zymbit Driver Package 2.0 names this set of packages as a whole. Each package keeps its own version number, listed below. Previous versions are the newest from the legacy zk-sw-repo repository.
| Package | Previous version | New version | Notes |
|---|---|---|---|
| zymbit-repo | — | 1.0-1 | New. Configures the APT source and installs Zymbit GPG signing key. |
| zkifc | 1.2-38 | 2.0.0-2 | Now includes libzk; replaces the libzk package. |
| libzk | 1.1-26 | — | Removed; merged into zkifc. |
| zkapputilslib | 1.1-27 | — | Removed; split into the following four libzkapputils* packages. |
| libzkapputils | — | 1.2.0-11 | New. C library.. Needed to run user-built programs which utilize the Zymkey API. |
| libzkapputils-c++ | — | 1.2.0-11 | New. C++ library, replaces zkapputilslib. Needed to run user-built programs which utilize the C++ bindings to the Zymkey API. |
| libzkapputils-dev | — | 1.2.0-11 | New. C headers. Only necessary on systems being used to build programs with the Zymkey API. |
| libzkapputils-c++-dev | — | 1.2.0-11 | New. C++ headers. Only necessary on systems being used to build programs with the C++ bindings to the Zymkey API. |
| python3-zku | — | 1.2.0-11 | New. Python bindings to the Zymkey API. Replaces the pip zku package. |
| libzymkeyssl | 1.0-13 | 2.0.0-2 | OpenSSL engine 3.x support only. OpenSSL 4.x not supported. |
| zkbootrtc | 1.1-16 | 1.1.17-6 | Zymbit real-time clock synchronization service. |
| zkpkcs11 | 1.0-4 | 1.3.0-7 | PKCS#11 softhsm-util style utility using the HSM for additional security. |
| zksaapps | 1.0-18 | 2.0.0-2 | Standalone apps used for LUKS encryption process |
What’s new
| Package | Changes |
|---|---|
| zymbit-repo | New. Adds the Zymbit apt source (/etc/apt/sources.list.d/zymbit.sources) and signing key, and removes the legacy zk-sw-repo source. Offers an opt-in beta channel. |
| zkifc | Supports Ubuntu 26.04, where sysfs GPIO is removed. Includes libzymkey, so the separate libzk package is no longer installed. Service and udev rules now install under /usr/lib/systemd/system and /usr/lib/udev/rules.d. |
| libzkapputils, libzkapputils-c++ | Replace zkapputilslib. Libraries are in /usr/lib/aarch64-linux-gnu with versioned names: libzk_app_utils.so.1 and libzkAppUtilsClassCPP.so.1. |
| libzkapputils-dev, libzkapputils-c++-dev | New development packages with headers, pkg-config files (zkapputils, zkapputils-c++) and CMake packages (zkAppUtils, zkAppUtilsCXX). |
| python3-zku | Replaces the zku pip package (removes it zku when installed). Example scripts move to /usr/share/zymkey/examples. |
| libzymkeyssl | The OpenSSL 3.x engine is now /usr/lib/aarch64-linux-gnu/libzymkey_ssl.so, linked into the OpenSSL engines directory as libzymkey_ssl.so. It was previously copied there as zymkey_ssl.so. |
| zkpkcs11 | The module is now /usr/lib/aarch64-linux-gnu/libzk_pkcs11.so. Adds /etc/zk_pkcs11.conf.sample and a zk_pkcs11 system group for token access. |
| zksaapps | Standalone apps used for encryption. Tools install to /usr/sbin. |
| zkbootrtc | Real time Clock sync service. Service installs under /usr/lib/systemd/system. |
Install and Upgrade
Installing the zymbit-repo package switches a device to the new repository; after that, every Zymbit package installs and updates through APT. This works the same for new installs and for devices already using zk-sw-repo.
Pull down the installation package,
zymbit-repo. The-Joption tellscurlto automatically save the file under the version name reported by the download server; e.g.:zymbit-repo_1.0-1_all.deb:curl -fsSLOJ https://zk-repo.s3.amazonaws.com/zymbit-repo.debInstall the repository package. This will configure APT sources and import Zymbit’s GPG signing key. By default, it installs without asking anything and leaves beta updates off. Removing this package later will remove Zymbit’s repository from APT and clear the GPG key from the system’s trusted keyring, but will leave behind any other Zymbit packages that have been installed on the system. Those must be removed explicitly.
sudo apt install ./zymbit-repo_*_all.debThe beta-updates question is asked only at debconf priority medium or lower. To be asked, install with:
sudo DEBIAN_PRIORITY=medium apt install ./zymbit-repo_*_all.debTo opt in without a prompt, for example in unattended installs, set the answer before installing:
sudo debconf-set-selections <<< "zymbit-repo zymbit-repo/enable-beta-updates boolean true"To change the answer later, run
sudo dpkg-reconfigure zymbit-repo, which always asks.This adds
/etc/apt/sources.list.d/zymbit.sourcesand the Zymbit signing key, and removes the old zk-sw-repo entry from/etc/apt/sources.list.d/zymbit.list.Refresh the package lists:
sudo apt updateIn order to communicate with the Zymkey, the host’s I2C interface must be enabled. On Ubuntu, this is the case by default. On Debian (Raspberry Pi OS), this can be done via the following command:
sudo raspi-config nonint do_i2c 0 sudo rebootInstall the packages needed for the intended use case. Necessary dependencies from Zymbit and the OS distribution will be automatically installed. On a device previously configured via the legacy
install_zk_sw.sh, backup/var/lib/zymbitbefore proceeding. New devices, or devices that do not have this file, do not need to take any action.For base functionality of the Zymkey, including disk encryption, install the following packages, then reboot.
sudo apt install zkifc zksaappsTo use the Zymkey’s OpenSSL engine backend and SoftHSM, run
sudo apt install zkifc libzymkeyssl zkpkcs11To use the python bindings, run
sudo apt install zkifc python3-zkuTo run programs linked against Zymbit’s zkapputils library, run
sudo apt install zkifc libzkapputils # OPTIONAL: to make use of the C++ API, run # sudo apt install zkifc libzkapputils-c++To build programs using libzkapputils, install the
-devvariants of the abovelibzkapputilspackages. Container and/or cross-compilation environments will likely need to skip the automatic installation ofzkifc, which fails without access to a Pi’s hardware I2C bus.sudo apt install zkifc libzkapputils[-c++]-dev # to skip zkifc installation, run sudo apt install --no-install-recommends libzkapputils[-c++]-dev
The new packages replace the old ones themselves: when applicable, apt removes libzk and zkapputilslib as part of the install and python3-zku removes the zku package installed with pip.
Known issues
- Applications built against zkapputilslib must be rebuilt. The old libraries had unversioned names (
libzk_app_utils.so,libzkAppUtilsClassCPP.so). Rebuild against the new packages.
- Update PKCS#11 configurations that name old paths. Configurations that load the PKCS#11 module from
/usr/lib/libzk_pkcs11.somust point to the new names in/usr/lib/aarch64-linux-gnu/libzk_pkcs11.so. (zk_pkcs11-utildoes this automatically.) - Back up your PKCS#11 configuration before upgrading. The token directory stays at
/var/lib/zymbit/zk_pkcs11/tokens/, so existing tokens carry over. As a precaution, keep a copy of/etc/zk_pkcs11.confand your tokens before upgrading. - libzymkeyssl. Only supports OpenSSL ENGINE using the EC_KEY_METHOD interface; runs on OpenSSL 3.0 through 3.x. Not supported on OpenSSL 4.0. Support for 3.5 LTS runs to 2030.