Changelog
What changed in each release of JetKVM firmware and software.
JetKVM 0.5.9
Experimental Audio Support
Host HDMI audio is captured through a UAC1 USB audio gadget and streamed to the browser over the existing WebRTC session. Off by default, gated by a new USB Audio permission under USB Devices, and the gadget stays attached to the host when streaming is toggled off #1475, #1479, #1499, #1596
120 Hz Video Support
Capture and stream at 120 Hz refresh rates #1452
Mobile Trackpad Mode
AnyDesk-style relative trackpad input for phones and tablets #1494
Non-destructive USB Recovery
USB recovery no longer wipes gadget configuration, avoids needless rebinds, fixes a mass storage kernel oops, and restores every USB function during recovery and forced eject #1563, #1579, #1582, #1599
Explicit USB Wake Control
A new "Try to wake" button on the no-signal overlay sends a dedicated wake-only HID signal, while regular keyboard and mouse input no longer wakes a suspended host #1471
Idle Host Display Setting
Optionally hide JetKVM as a monitor from the host when no remote session is active and restore it on reconnect #1476
Turkish Localization
Added the Turkish (tr) UI translation #1557
Smaller Firmware Image
Embedded static assets shrunk from 9.4 MB to 1.4 MB #1565
Signaling Refactor
Introduced a signaling adapter interface and dropped legacy HTTP session signaling #1569
Video & HDMI improvements
Input & HID improvements
- Mouse jiggler now uses tiny random movement near the current position #1424
- Forward mouse X1/X2 buttons to the remote host #1473
- Send keyboard macros to the device in chunks #1585
- Allow brief HID write backpressure without dropping reports #1598
- Fixed mouse button state across reconnects #1591
- Fixed delayed macro cancellation stopping its replacement #1602
Network & security
- Client IP is no longer taken from untrusted proxy headers #1492
- Cap TLS serial numbers at 128 bits for Apple clients #1453
- Align static IPv4 validation with live network state #1593
- Stop leaking the DHCP lease label update timer #1592
- Send X-Device-SKU on the cloud signaling connection #1568
- Added a Save & Disconnect button when disabling MQTT #1486
Fixes
- Fixed a WebRTC session shutdown race #1468
- Fixed native failsafe activation #1507
- Validate URL mounts before mounting #1508
- Reap the shell spawned for the terminal channel #1581
- Copy log buffers before asynchronous stream delivery #1597
- Recreate serial and CDC-ACM console channels per peer connection #1571
Other changes
- Removed the version-based UI feature flag mechanism #1575
- Extracted the cloud UI bundle version selection #1577
- Reduced time sync log noise #1506
- E2E test improvements: S3 wake test version gate, remote agent diagnostics, input stabilization, post-update mouse check, optional shell access, RPC-based upload and serial verification, capability-based skips, spec split by area, hardware input capture and audio routing, and codec retry coverage #1458, #1457, #1477, #1580, #1587, #1588, #1589, #1590, #1595, #1601
JetKVM 0.5.8
JetKVM 0.5.6
- Prevent modifier key auto-release during typing (#1386) #1387
- Prevent double wheel scroll by sending to only one HID device #1390
- Add S3 suspend/wake tests via USB remote wakeup #1392
- Add space before 'root' in SSH default user message #1398
- Add log level selector in Troubleshooting Mode #1395
- Use relative mouse wake for S3 suspend #1402
- Reset troubleshooting log level after reboot #1404
JetKVM 0.5.5
- Add Welsh (Cymraeg) localization #1294
- Sanitize filename in rpcMountBuiltInImage #1292
- Persist session token to disk on login #1293
- Redact secrets from diagnostics ZIP export #1291
- Enforce bcrypt 72-byte password length limit #1290
- Use consistent name for KVM terminal across action bar and panel #1286
- Use consistent @/ import path for ru_RU keyboard layout #1285
- Add Hungarian keyboard layout (hu_HU) #1284
- Enable scrolling on cloud devices page #1282
- Skip mouse reports when mouse device is disabled #1283
- Add warning when SSH public key is empty in developer mode #1280
- Prevent space bar from pausing video in fullscreen #1278
JetKVM 0.5.4
- Rate limit login access #1185
- Make install-deps work on arm64/aarch64 #1217
- Feature: Add custom serial buttons extension #821
- Signed Releases #1188
- Fix case issue with Dell IDRAC EDID #1252
- Add .nvmrc for Node.js version management #1250
- Add Russian translations and update locale names #1243
- Add Russian keyboard layout (ru_RU) #1248
- Fix/ota signature bypass #1254
JetKVM 0.5.3
- Reduce log noise #1142
- Fix nil pointer dereference in handleSerialChannel #1141
- Add Japanese translation #1152
- Adding pt-BR translations #1157
- Add Traditional Chinese localization #1159
- Enhance synctrace logging #980
- Add missing languages and correct translations of languages. #1161
- Fix cloud WebRTC stability #1192
- Prevent overscroll bounce on Safari #1196
- Missing PWA icon on macOS Safari & MSEdge cased by no "any" purpose icons in the web manifest #1194
- Fix flaky e2e tests #1197
JetKVM 0.5.2
- Add sl_SI (Slovenian) keyboard layout #1064
- Add OTA Update E2E Tests #1106
- Fix assigning static IPv6 address to network address (#1082) #1089
- Fix TLS server to obey LocalLoopbackOnly setting (#1090) #1091
- Prevent mDNS queries by ICE when mDNS is disabled in config (#1094) #1095
- Fix DNS configuration always flagged as changed when applying configuration (#1100) #1101
- Fix flaky E2E OTA test #1107
- When adding/removing routes, honor scope and protocol and manage gateways correctly #984
- Fix microsoft ime input #1058
- Bump actions/upload-artifact from 5 to 6 #1109
- Bump actions/cache from 4 to 5 #1111
- Fix: Timeout Diagnostics #1132
JetKVM 0.5.1
- Improve prod release creation in gh #1046
- Enable versioned UI builds in cf deployment script #1047
- Add Japanese 106/109 key minimum mappings and extend HID usage range #1036
- Fix AltGr handling for Windows clients #995
- Custom domain not being shown in the form #1016
- Correct Chinese translation errors in zh.json #1052
- Basic automated e2e test #1050
- Handle versioned cloud URLs in reboot flow #1048
- Improve E2E tests #1063
- Swap keys for 'y' and 'z' in nb_NO layout #1068
- Add Japanese keyboard layout (ja_JP) #1065
- Applies ESLint code formatting #962
JetKVM 0.5.0
Network Stack Rewrite
Localization
Client/browser UI is now fully localizable using inlang paraglide-js, with expanded translations and automatic sorting #864, #899, #902
Failsafe Mode Enhancements
Added a more robust failsafe mode with improved handling, detailed failure reasons, and max-restart safeguards #959, #991
Wake-on-LAN Web Endpoint
Added a web route for sending WOL packets #945
Native Process Separation
Moved the native component into a separate process (again) for improved stability #964
Enhanced DHCP Client
Improved timeout/retry logic and switched the default client to
udhcpc#908, #990
Video & HDMI improvements
OTA improvements
Fixes
- Fixed null pointer in
wakeDisplay#907 - Improved JSON-RPC robustness and connection timing #915, #963
- Fixed accented/Spanish character detection in the paste modal #976
- Ensured correct redirection and page reload behavior #909
- UI: Fixed async sleep usage #946
- Fixed downgrade navigation parameters #992
- Enhanced reboot state management, health checks, and redirect handling #994
- Fixed HID RPC handshake packet to send only once #969
Other changes
JetKVM 0.4.9
cgo Migration
The JetKVM native component has been rewritten and replaced with cgo #635
Faster Paste Performance
Improved paste speed in the UI #824
HDMI Sleep Mode
Added HDMI sleep support to reduce power consumption #881
Podman Support
Added support for Podman as an alternative to Docker #875
Danish Keyboard Layout
Added
da_DKkeyboard layout #839
Fixes
Other changes
JetKVM 0.4.8
Keyboard stack rewrite
- HID RPC Channel HID events now use a customized binary protocol, significantly reducing bandwidth usage and improving performance #755
- Reworked keyboard management and improved Virtual Keyboard handling (CapsLock, Shift, styling, keypress reports)
IPv6 Control
Added option to disable IPv6 #803
DHCP NTP Servers
Time sync now supports DHCP-provided and custom NTP servers #625
Custom Jiggler
Scheduler added via crontab and improved with timezone support #316, #742
HTTP Proxy Option
Added support for configuring an HTTP proxy #521
Performance Improvements
Faster loading and serving of pre-compressed static files #746, #793
DC Power Enhancements
Added power restore mode, Prometheus metrics, and related improvements #672, #556
Fixes
- Base USB configuration defaults fixed #610
- Ensure RPC messages are processed sequentially #744
- Jiggler settings now save correctly #786
- Goroutine leak in cloudBlink resolved #801
- Time sync reliability improved with fallbacks and repolling #609
- Security-key backed SSH keys are now supported #807
- UI fix: prevent rendering a button inside another button #782
Other changes
JetKVM 0.4.6
Fixes
Other changes
JetKVM 0.4.5
Keyboard LED Sync
Now syncs the keyboard LED status with the host #502
Video Enhancements
Saturation, Brightness and Constrast can now be adjusted #557
Scroll Throttling
Can now be configured #544
Loopback Mode
Webserver can now be configured to listen on localhost only #560
Prometheus Metrics
Metric naming has been updated to match the best practices #602
Fixes
- Default the keyboardLayout to en-US if not set #512, #633
- The screen will now dim and turn off after a period of inactivity #540
- Fullscreen keyboard lock logic #535, #631
- Supress repeated logging when using a web terminal #550
- Absolute mouse no longer advertises itself as a boot device #616
- Ensure the mDNS mode is set every time network state changes #624
- Restart jetkvm_native automatically #629
- Supress duplicate error logs from usbgadget #630
Other changes
- MAC address can now be copied from the device page #506
- Hide the pressed key events on the status bar #518
- Remove unused DeviceSettingState #496
- Clean UI warnings #536
- Update metric naming #602
- Allow the versions in the makefile to be overwritten with ENV variables #619
- Add VSCode extensions for improved development environment #509
JetKVM 0.4.4
- Fix: Timesync would hang forever if all HTTP endpoints were unreachable
JetKVM 0.4.3
- Upgrade Pion version (CVE-2025-49140)
- Use pure Go DNS resolver instead of the native (CGO) resolver
JetKVM 0.4.1
JetKVM 0.4.0
TLS Support
Now supports both self-signed and custom TLS certificates for secure connections.
Mount as Disk
In addition to CD/DVD mounting, JetKVM now supports disk mode.
Network Settings Page
A new dedicated page to configure and manage network settings.
Relative Mouse Mode
Now out of beta.
Pointer & Keyboard Lock
Enables full input capture for seamless remote interaction.
Improved Mouse Wheel Scrolling
Display Orientation
Added support for changing the screen's display orientation. #400
Keyboard Macros
Create and manage macros for automated key sequences. #305
JetKVM 0.3.9
In this release, we've exclusively focused on improving the connection to the JetKVM, both on the cloud and locally.
Some edge network cases may still cause issues, but we’re now much better equipped to track them down.
- Rewritten the connection stack and improving debuggability
- Migrated to web sockets for WebRTC signaling, instead of hybrid http/ws signaling approach
- Better retry mechanism
- Proper failure modes for known connection issues, like the ones in our docs.
- Informative Loading screens, with real connection information. No more "Loading video stream…"
- Improved logging to pinpoint exactly where things fail.
JetKVM 0.3.8
Notable changes
- Relative Mouse (Beta)
- Override USB Info
- Override USB Devices
- Override Cloud API & APP URLs for easier self-hosting
- Improve scrolling and add scroll sensitivity setting
- New Settings page
- Fix Terminal compatibility issue in Firefox
- Prevent pausing in full-screen mode when clicking space
All changes
- Add extra logging and tune timeout settings for cloud #167
- Use npx and update dev_device.sh to accept IP address as a argument #169
- Add full dark mode support to FieldLabel component #173
- Should return defaultConfig when config file doesnt exist #174
- Simplify backlight settings handling #175
- Improve video playback and keyboard handling in WebRTCVideo #176