Repository navigation
NanoKVM OS v3.3.0 · Image v1.5
⚡ NanoKVM OS v3.3.0 — Faster Starts. Smarter Updates.
📦 Applications v3.3.0 · 💾 Image v1.5
Less waiting at boot. Smaller future updates. A new home for your packages. NanoKVM OS now updates the bootloader alongside the system, keeps unchanged components in place, and delivers signed packages through GitHub Pages. Existing installations get these improvements through the usual update — no SD-card reflash required.
🏁 A faster path from power-on to Linux
The boot chain has been streamlined from U-Boot to the compressed kernel:
- No default three-second countdown. U-Boot starts the system immediately. If you need a serial-console window, set
bootdelay=1in/boot/uEnv.txt. - Faster kernel decompression. The boot image uses LZ4, with optimized fixed-size copies in U-Boot's decoder.
- Less boot-time overhead. Kernel and initramfs FIT checks use CRC32; the device-tree check retains SHA-256. These internal checks detect corruption and were never secure-boot signatures. APK signatures and published SHA-256 checksums remain in place.
- A leaner bootloader. Unused U-Boot features and verbose boot banners have been removed.
uEnv.txtsupportsbootdelayand extra kernel arguments, including files saved with Windows line endings.
⚡ Before → Now: nearly 10× faster through the bootloader
Faster SD reads, CRC32 checks, optimized LZ4 decompression and no countdown add up to a dramatic reduction:
| Boot stage | Before | Now |
|---|---|---|
| Default autoboot countdown | 3.00 s | 0 s |
| Read the boot image, check it and unpack the kernel | 4.34 s | ~0.75–0.77 s |
| Combined time | ~7.3 s | ~0.76 s — nearly 10× faster |
SD reads in U-Boot rose from 2.9 to ~23 MiB/s. The new path combines approximately 455 ms of SD loading, 157 ms of FIT checks and console output, and 142–156 ms of LZ4 decompression.
Based on the sum of boot-stage measurements on a NanoKVM PCIe development unit, comparing the old SD-loading bootloader and zstd/SHA-256 image with the optimized configuration. This covers the countdown, loading, checking and decompression; it excludes other firmware initialization and Linux/service startup, so it is not a power-on-to-video measurement. Results depend on the board and SD card. SD loading: #252, CRC32: #253, LZ4: #254, bootloader optimizations: #256.
📦 Bootloader improvements, delivered by ordinary updates
The new nanokvm-bootloader-sg2002 package carries FSBL, OpenSBI and U-Boot. Existing installations can now receive bootloader improvements without reflashing their cards — including the faster SD loading introduced with Image v1.4.
Activation writes and checks the new file on the card, retains /boot/fip.prev for recovery, and requests a reboot. Detected activation failures attempt to restore the previous file and report the error. This is not automatic boot fallback: the ROM does not boot fip.prev, and FAT writes cannot guarantee recovery from every power interruption. Keep power connected while updating. How it works and recovery.
🔄 Update what changed
Starting with this release, each component keeps its version until its contents change. Future updates can replace just the affected packages instead of downloading the entire NanoKVM package set again.
nanokvm-release identifies the overall release and requires its selected component versions. Seeing different version numbers for the server, web interface and system packages is therefore normal.
v3.3.0 is the starting point: all 13 core packages receive 3.3.0-r0 once. Optional add-ons keep their own versions and remain optional. RustDesk stays available through Software → Add-ons and is not bundled into the SD image.
🌐 A new home for signed packages
The official APK repository moves to GitHub Pages. Installing the updated nanokvm-keys package switches the official repository address automatically and installs the public signing keys. Custom repository entries and Alpine repository choices are preserved.
Releases are built and signed in GitHub Actions. The published release carries the package manifest, source archive and checksums; Pages serves the same signed indexes and package files.
The previous nkos.pesin.pro repository will remain available at 3.3.0 during the transition. Devices still using it can obtain this release and move to Pages; subsequent releases will be published on Pages.
🧩 Alpine community, when you need it
New installations enable Alpine main by default. Software → Packages now has a switch for community, so its larger index is loaded only when needed.
- Installing Tailscale or NetBird enables community automatically.
- Turning it off is refused while installed packages still need it, with those packages listed.
- Existing installations retain community if their installed software needs it. The migration waits if it cannot reliably determine that.
🛠️ Connection fixes and everyday polish
- RustDesk add-on improvements: fewer socket writes and wakeups, buffered reads, more responsive touch/pointer handling, bounded pre-login reads and better reconnect backoff. The add-on remains optional and keeps its own package version.
- Update the patched Pion DTLS to v3.1.14, including certificate selection, ALPN, cookie, replay and session-authentication fixes, while retaining NanoKVM's cipher preferences.
- Improve Czech translations, including clearer update and network terminology. Thank you to our translators and Hosted Weblate.
- Remove unused development tools, obsolete C906-overlay build recipes and outdated internal documents. Existing overlay-to-stock migration support is retained.
🚀 Update or install
Already running NanoKVM OS v2.0-a2 or newer? Use Settings → System → Updates, or run as root:
apk update
apk upgrade
rebootSettings, user data and separately installed packages are retained. Reboot to activate the new kernel boot image and bootloader. The kernel release string remains 7.2.10-nanokvm-os-r5; package versions identify the changed boot files. Local APK file pins and experimental C906 overlays may need the documented migration steps.
Fresh installation: verify SHA256SUMS and flash NanoKVM-OS-Image-v1.5-apps-v3.3.0.img.zip to an SD card of at least 2 GB. Flashing replaces the card's contents. For future installations, use the image download page: patch releases may contain packages without a new image.
Support: releases before 3.3 no longer receive fixes. Upgrade compatibility from those releases remains in 3.4 and 3.5; removal is planned for 3.6.
Cube, Lite and PCIe users — please share your upgrade experience! Boot, automatic repository migration, video/control and add-on installation reports are especially useful.