Releases: UltimateHackingKeyboard/firmware
Release list
17.2.0
Device Protocol: 4.18.1 | Module Protocol: 4.3.0 | Dongle Protocol: 1.0.2 | User Config: 14.0.0 | Hardware Config: 1.0.0 | Smart Macros: 3.15.0
- Update SDKs.
- Don't blink leds in sfjl mode when keys are continually pressed.
- Show ' unavailable' when giving up connection attempt to a host.
- Make the test suite work on uhk60.
- Finish basic uhk60 logging support.
- Adjust bluetooth advertising behavior towards aggressive hosts.
- Make bluetooth reconnection delay configurable via
set bluetooth.minAdvertisingDelay 500.SMARTMACROS:MINOR - Fix: resolve hogp not working after dongle pairing.
- Fix: resolve bluetooth schedule clashes with multiple dongles.
- Fix: macro scheduler bug that would make uhk lock up on macros of a certain length.
SMARTMACROS:PATCH - Fix: make ifPlaytime return true when the value exactly equals.
SMARTMACROS:PATCH
17.1.3
Device Protocol: 4.18.1 | Module Protocol: 4.3.0 | Dongle Protocol: 1.0.2 | User Config: 14.0.0 | Hardware Config: 1.0.0 | Smart Macros: 3.14.0
- Fix: upstream bug that made battery-included uhk80 freeze every few hours of operation.
- Fix: more bt scheduling adjustments.
- Fix: dongle connection, due to failing allow list.
17.1.2
Device Protocol: 4.18.1 | Module Protocol: 4.3.0 | Dongle Protocol: 1.0.2 | User Config: 14.0.0 | Hardware Config: 1.0.0 | Smart Macros: 3.14.0
- Fix: make modules restart after a firmware update correctly. This was broken between 17.0.0 to 17.1.1, and made uhk60 need manual restart after firmware upgrade.
- Fix: one possible cause of event scheduler freezes.
- Fix: generalize native kboot implementation to correctly handle all modules.
DEVICEPROTOCOL:PATCH - Fix: add full vt100 zephyr shell support. (Needs Agent support.)
DEVICEPROTOCOL:PATCH
17.1.1
Device Protocol: 4.18.0 | Module Protocol: 4.3.0 | Dongle Protocol: 1.0.2 | User Config: 14.0.0 | Hardware Config: 1.0.0 | Smart Macros: 3.14.0
- Fix: caps lock led on uhk60
- Fix: make uhk80 respect reenumeration type, and consequently not die during pairing procedures that request reboot.
- Fix: decrease the dongle interval to actual 7.5ms, instead of scheduling-forced 11ms
- Fix: increase advertising interval when not actively connecting, to reduce dongle mouse jitter
17.1.0
Device Protocol: 4.18.0 | Module Protocol: 4.3.0 | Dongle Protocol: 1.0.2 | User Config: 14.0.0 | Hardware Config: 1.0.0 | Smart Macros: 3.14.0
- Fix: update numlock/capslock/scrolllock immediately on change.
- Fix: don't clog usb hubs by too fast usb retries.
- Fix: change resending logic to allow up to 1024ms long usb hub stalls without loosing reports, and make usb retries back off exponentially.
- Fix: in case of failed report sends, always send up-to-date state once the connection is alive again. Should fix remaining stuck key issues present since v12.0.0 firmware.
- Fix: enable I2C glitch filter to reject EMI above 2 MHz.
- Fix: bit-shift typo in UHK60v2 led backlight driver configuration.
- Fix: make uhk80 not freeze on deadlocked semaphores - just report these conditions.
- Fix: deduplicate Hid vs Dongle connections - prevent issues with dongle getting treated as a ble hid device (and consequently not working), getting written into host config multiple times, etc.
- Ble: disconnect bluetooth between halves when bridge cable is connected.
- Macros: add
ifAlreadyRunning/ifNotAlreadyRunningto simplify reentry guarding.SMARTMACROS:MINOR - Macros: validate macro event names.
SMARTMACROS:PATCH
17.0.0
Device Protocol: 4.18.0 | Module Protocol: 4.3.0 | Dongle Protocol: 1.0.2 | User Config: 14.0.0 | Hardware Config: 1.0.0 | Smart Macros: 3.13.2
- Move new Typing Behavior configurations into the native UserConfig section.
USERCONFIG:MAJOR - Schedule usb report dispatch - lowers bluetooth latency.
- Implement module-flashing for uhk80. (Agent support is yet needed.)
DEVICEPROTOCOL:MINOR - Don't report battery levels over bluetooth when the keyboard is sleeping. It tends to wake up MacOs hosts.
- Fix module unbricking procedure for modules listening on the default address. (Agent support is yet needed.)
- Fix sticky key integration with macros - macros would break sticky key sequences by a brief release before first macro command is executed.
SMARTMACROS:PATCH - Fix stuck layer hold when replaceLayer is triggered from macro after layer release.
SMARTMACROS:PATCH
16.3.0
Device Protocol: 4.17.0 | Module Protocol: 4.3.0 | Dongle Protocol: 1.0.2 | User Config: 13.0.0 | Hardware Config: 1.0.0 | Smart Macros: 3.13.1
Features:
- Second tap on a host switch action cancels it.
Fixes and maintenance:
- Refactor: port uhk60 onto c2usb in order to increase codebase maintainability.
- Refactor: rewrite usb stack integration.
- Fix: rework usb-report send failure handling.
- Fix: increase bluetooth reliability - bluetooth hid interfaces should no longer stop functioning randomly.
- Fix: implement workaround for slow scrolling on microsoft hosts.
- Fix: preprocess input during usb report send retries.
- Fix: don't accumulate mouse coordinates during usb report send retries to prevent cursor jumps.
16.2.1
Device Protocol: 4.17.0 | Module Protocol: 4.3.0 | Dongle Protocol: 1.0.2 | User Config: 13.0.0 | Hardware Config: 1.0.0 | Smart Macros: 3.13.1
General:
- Implement new zephyr backends for shell and logging.
- Refactor doubletap handling.
Macro fixes:
- Fix backlight update after overlayLayer, overlayKeymap, replaceLayer, replaceKeymap commands.
SMARTMACROS:PATCH - Fix macro crashes (main thread stack overflows) on too deeply nested expressions.
SMARTMACROS:PATCH - Fix a 16.2.0 macro parser benevolence: e.g., parser wouldn't accept
if(due to missing space.SMARTMACROS:PATCH - Fix some key release scenarios in postponed nested local scopes.
SMARTMACROS:PATCH
16.2.0
Device Protocol: 4.17.0 | Module Protocol: 4.3.0 | Dongle Protocol: 1.0.2 | User Config: 13.0.0 | Hardware Config: 1.0.0 | Smart Macros: 3.13.0
General:
- Fix: UHK 60 I2C scheduling caused various issues with modules and left half during 16.1.0 and 16.1.1.
- Fix: BLE reliability: always exchange MTU right after the connection is established.
- Fix: Macro key release detection that caused subtle timing bugs with advanced macros.
- Use a fixed keymap for the BLE pairing PIN flow.
Macro behaviors:
- Validate all macros in general context. In 16.1.x, unmapped macros weren't validated.
SMARTMACROS:PATCH - Lower default
ifGesturetimeout to 500ms.SMARTMACROS:MINOR - Add
notifycommand.SMARTMACROS:MINOR - Global doubletap detection:
- Doubletaps are now detected globally at the beginning of keypress lifecycle. Separate
secondaryRole.advanced.doubletapTimehas been deprecated.SMARTMACROS:MINOR - Macros will now remember and reuse secondary role resolutions for the rest of their runtime, regardless of key events
- Fix: secondary role could incorrectly trigger doubletaps
- Fix: macros could incorrectly trigger doubletaps
- Doubletaps are now detected globally at the beginning of keypress lifecycle. Separate
- Secondary Role keys (HRM):
- Added
secondaryRole.advanced.timeoutType { active | passive }option to postpone timeout action until release.SMARTMACROS:MINOR - Made Trigger by mouse subject to minimum hold time to prevent vibration on key press from triggering secondary role when using a trackball module.
SMARTMACROS:PATCH - Made Trigger by mouse reliably trigger secondary role immediately.
SMARTMACROS:PATCH - Fixed a number of edge cases related to safety margin where secondary role keys would not trigger in a timely manner.
SMARTMACROS:PATCH
- Added
Minor changes and refactors:
- Improve macro performance: use GNU perfect hashing for main macro switch.
- Refactor USB logging backend.
- Refactor event scheduler to use binary heap.
- Improve status buffer rolling.
- Fix shell initialization: logging levels and sometimes entire shell initialization would fail due to timing and thread priority issues.
- Lower some compiled-in logging levels, but set them manually to higher levels by default.
- Fix setting Zephyr log levels via
zephyr log enable inf Bt.
16.1.1
Device Protocol: 4.17.0 | Module Protocol: 4.3.0 | Dongle Protocol: 1.0.2 | User Config: 13.0.0 | Hardware Config: 1.0.0 | Smart Macros: 3.12.0
- Fix: fix Bluetooth issues caused by returning bad disconnect reasons: failing OOB pairing, connected but otherwise unhandled connections.
- Fix: when the same dongle is switched to multiple times, it now remains green instead of turning blue.
- Fix: exempt pairing scenarios from exponential advertising delay backoff.
- Fix: adjust the advertising exponential backoff.
- Fix: make sure that the dongle doesn't cause the pairing screen to pop up.
- Make it possible to gather logs from a disconnected UHK:
zephyr uhk logs 1now allows turning on the log buffer from a macro.zephyr uhk snaplogallows dumping the log into the status buffer and later retrieval from Agent.- when logging is enabled via the logs variable, logs are also shown on the OLED display.