Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
4b28faa
nrf: update sysbuild presets workaround with upstream
benedekkupper Sep 26, 2025
f3f78d9
move c2usb interfacing code under the right sources
benedekkupper Nov 19, 2025
75e7cf9
split vscode to two workspaces, one for nrfsdk and one for mcuxsdk de…
benedekkupper Nov 19, 2025
e3fa77e
right: integrate c2usb into the build, without any effect
benedekkupper Nov 19, 2025
ff9693e
tooling configuration update
benedekkupper Nov 25, 2025
7f0318d
major refactoring of UHK60 right USB interface
benedekkupper Feb 5, 2026
0056e70
Fix PID in west_agent.py
kareltucek Feb 10, 2026
b74a408
Handle uhk60 debug builds in build.sh.
kareltucek Feb 10, 2026
00be8f5
Add vscode build variants.
kareltucek Feb 17, 2026
79bca89
Log and reconnect on repeated report send fails.
kareltucek Feb 17, 2026
5b20021
Check hogp health. Disconnect if it doesn't look good.
kareltucek Feb 10, 2026
7efae26
release with debug info
benedekkupper Feb 14, 2026
1a81ec4
scripts: add west vscode command
benedekkupper Feb 18, 2026
f84f4cf
Fix healthcheck compilation.
kareltucek Feb 18, 2026
f058569
Use system build environment in build.sh.
kareltucek Feb 18, 2026
628510f
DOCS: add uhk80 vscode debugging stuff.
kareltucek Feb 19, 2026
f6e529f
agent doesn't support report ID on UHK60
benedekkupper Feb 21, 2026
933876d
uhk60: make debugging possible with bootloader+app flashing
benedekkupper Feb 23, 2026
ffe1150
c2usb fixes
benedekkupper Feb 23, 2026
c38fe5f
ci: use latest zephyr SDK
benedekkupper Feb 24, 2026
1b7cd72
uhk60: restore suspend and resume handling
benedekkupper Feb 24, 2026
f66708e
assume high resolution scrolling when enumerated on Windows
benedekkupper Feb 24, 2026
362892e
uhk60: fix buspal USB
benedekkupper Feb 24, 2026
6d82f77
set manifest path at workspace loading
benedekkupper Mar 6, 2026
bb8ea6b
c2usb integration update
benedekkupper Mar 7, 2026
fddebb4
Revert c2usb input interceptor removal -> fix pairing screen.
kareltucek Mar 23, 2026
57cafba
Fix serial number length. And consequent memory corruption.
kareltucek Mar 25, 2026
b811b9c
Implement proper retry handling on dongle.
kareltucek Mar 27, 2026
0d520c6
Revert "Implement proper retry handling on dongle."
kareltucek Mar 30, 2026
ccb551f
Block/retry for dongle usb transports.
kareltucek Mar 30, 2026
36494b8
Fix shell log filtering.
kareltucek Apr 7, 2026
66431d5
Remove some aggressive reconnection attempts.
kareltucek Apr 7, 2026
63ba0d5
fix debugging with west vscode generated config
benedekkupper Apr 7, 2026
7db08da
c2usb zephyr USB handling update
benedekkupper Apr 7, 2026
c9d733d
don't advertise NUS by name, as it's not used at scanning
benedekkupper Apr 7, 2026
f6f972a
Hid transport: Adjust error logging.
kareltucek Apr 8, 2026
94bb8e0
Update dongle scroll multipliers.
kareltucek Apr 9, 2026
596856d
fixup! c2usb zephyr USB handling update
benedekkupper Apr 10, 2026
38eb730
fix hogp report sending getting stuck in busy error
benedekkupper Apr 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,5 @@ AllowShortFunctionsOnASingleLine: Inline
AllowShortLambdasOnASingleLine: Inline
ShortNamespaceLines: 1
FixNamespaceComments: true
InsertNewlineAtEOF: true
KeepEmptyLinesAtEOF: true
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ on:

jobs:
release:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
timeout-minutes: 25
env:
ARM_GCC_DIR: /usr
Expand Down Expand Up @@ -42,7 +42,7 @@ jobs:
app-path: firmware
manifest-file-name: west_nrfsdk.yml
toolchains: arm-zephyr-eabi
sdk-version: 0.16.8
sdk-version: 0.17.4

- name: Git user setup
run: |
Expand Down
51 changes: 17 additions & 34 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,10 @@
"isDefault": true
},
"options": {
"cwd": "${workspaceFolder}"
"cwd": "${workspaceFolder:firmware}"
},
"type": "process",
"command": "west",
"args": [
"config",
"manifest.file",
"west_nrfsdk.yml"
]
"type": "shell",
"command": "west config manifest.file west_nrfsdk.yml && west config manifest.path firmware"
},
{
"label": "Select McuXpresso SDK",
Expand All @@ -25,49 +20,37 @@
"isDefault": true
},
"options": {
"cwd": "${workspaceFolder}"
"cwd": "${workspaceFolder:firmware}"
},
"type": "process",
"command": "west",
"args": [
"config",
"manifest.file",
"west_mcuxsdk.yml"
]
"type": "shell",
"command": "west config manifest.file west_mcuxsdk.yml && west config manifest.path firmware"
},
{
"label": "West update",
"label": "West update and patch",
"group": {
"kind": "none",
"isDefault": true
},
"options": {
"cwd": "${workspaceFolder}"
"cwd": "${workspaceFolder:firmware}"
},
"type": "process",
"command": "west",
"args": [
"update"
]
"type": "shell",
"command": "west update && west patch",
},
{
"label": "West patch",
"label": "Select SDK by vscode workspace",
"group": {
"kind": "none",
"isDefault": true
},
"options": {
"cwd": "${workspaceFolder}"
"cwd": "${workspaceFolder:firmware}"
},
"type": "process",
"command": "west",
"args": [
"patch"
],
"dependsOrder": "sequence",
"dependsOn": [
"West update"
]
"runOptions": {
"runOn": "folderOpen"
},
"type": "shell",
"command": "west config manifest.file west_${config:firmware.startupSdk}.yml && west config manifest.path firmware"
}
]
}
8 changes: 3 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ BUILD_DIR=device/build/uhk-80-right; west flash --build-dir $BUILD_DIR

It is recommended to start development in the IDE once a successful build is available, as the build parameters
aren't trivial to pass to the IDE, but it does pick up existing build configurations.
To get started, choose *Open Workspace from File...*, then select the `firmware.code-workspace` file.
To get started, choose *Open Workspace from File...*, then select either the `mcuxsdk.code-workspace` (for UHK60 and modules) or the `nrfsdk.code-workspace` (for UHK80 and dongle) file.
Install the recommended extensions or pick the one for your single device depending on the SDK.

> Note that using *MCUXpresso for VS Code* extension currently overwrites the `mcux_includes.json` file,
Expand All @@ -217,12 +217,10 @@ On a first try, this error might manifest:
> Could not start GDB. Check that the file exists, and it can be manually started.
Error: Error: spawn $env{ARM_GCC_DIR}/bin/arm-none-eabi-gdb ENOENT

There are two problems to solve:
1. The arm-none-eabi package doesn't ship with gdb by default.
This is due to the arm-none-eabi apt package not shipping with gdb by default.
You can follow [this guide](https://interrupt.memfault.com/blog/installing-gdb#binaries-from-arm)
to get a full toolchain installed.
2. The extension doesn't expand the environment variable, so you'll need to modify the `.vscode/mcuxpresso-tools.json` file,
to have a hardcoded `toolchainPath` variable. (Don't push this change into the repository, obviously.)


### Releasing

Expand Down
10 changes: 6 additions & 4 deletions boards/ugl/uhk-60-right/Kconfig.board
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
# Copyright (c) 2018, Prevas A/S
# SPDX-License-Identifier: Apache-2.0
config BOARD_UHK_60_RIGHT_V1
bool "UHK 60 v1"
depends on SOC_SERIES_KINETIS_K2X
select SOC_PART_NUMBER_MK22FN512VLH12

config BOARD_UHK_60_RIGHT
bool "UHK 60 right"
config BOARD_UHK_60_RIGHT_V2
bool "UHK 60 v2"
depends on SOC_SERIES_KINETIS_K2X
select SOC_PART_NUMBER_MK22FN512VLH12
8 changes: 1 addition & 7 deletions boards/ugl/uhk-80/Kconfig.defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -25,28 +25,22 @@ endif # BT_DIS && BT_DIS_PNP
if BOARD_UHK_80_LEFT
config USB_DEVICE_PRODUCT
default "UHK 80 left half bootloader" if MCUBOOT
default "UHK 80 Left USB"
config USB_DEVICE_PID
default 0x0006 if !BT
default 0x0007
default 0x0006 if MCUBOOT
endif # BOARD_UHK_80_LEFT

if BOARD_UHK_80_RIGHT
config USB_DEVICE_PRODUCT
default "UHK 80 right half bootloader" if MCUBOOT
default "UHK 80 Right USB"
config USB_DEVICE_PID
default 0x0008 if MCUBOOT
default 0x0009
endif # BOARD_UHK_80_RIGHT

if BOARD_UHK_DONGLE
config USB_DEVICE_PRODUCT
default "UHK dongle bootloader" if MCUBOOT
default "UHK dongle"
config USB_DEVICE_PID
default 0x0004 if MCUBOOT
default 0x0005
endif # BOARD_UHK_DONGLE

if BT
Expand Down
7 changes: 2 additions & 5 deletions boards/ugl/uhk-80/board.cmake
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
# Copyright (c) 2021 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

board_runner_args(jlink "--device=nrf52" "--speed=4000")
board_runner_args(jlink "--device=nRF52840_xxAA" "--speed=4000")
board_runner_args(pyocd "--target=nrf52840" "--frequency=4000000")

set(OPENOCD_NRF5_SUBFAMILY "nrf52")

include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
include(${ZEPHYR_BASE}/boards/common/nrfutil.board.cmake)
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)
include(${ZEPHYR_BASE}/boards/common/openocd-nrf5.board.cmake)
35 changes: 15 additions & 20 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -158,17 +158,23 @@ function dealiasDeviceZephyr() {
}

function dealiasDeviceMcux() {
if [ "$DEBUG" == "1" ]; then
BUILD_TYPE="debug"
else
BUILD_TYPE="release"
fi

case $DEVICE in
uhk-60v1-right|rightv1|right)
DEVICE="uhk-60v1-right"
VARIANT="v1-release"
VARIANT="v1-$BUILD_TYPE"
BUILD_DIR="right/build/$VARIANT"
DEVICE_DIR="right"
USBDEVICEARG="--vid=0x37a8 --pid=1"
;;
uhk-60v2-right|rightv2|right)
DEVICE="uhk-60v2-right"
VARIANT="v2-release"
VARIANT="v2-$BUILD_TYPE"
BUILD_DIR="right/build/$VARIANT"
DEVICE_DIR="right"
USBDEVICEARG="--vid=0x37a8 --pid=3"
Expand Down Expand Up @@ -315,33 +321,22 @@ function performZephyrAction() {
case $ACTION in
build)
# reference version of the build process is to be found in scripts/make-release.mjs
nrfutil toolchain-manager launch --shell --ncs-version $NCS_VERSION << END
unset PYTHONPATH
unset PYTHONHOME
ZEPHYR_TOOLCHAIN_VARIANT=zephyr west build \
--build-dir "$ROOT/device/build/$DEVICE" "$ROOT/device" \
--pristine \
-- \
--preset $DEVICE
exit $?
END
ZEPHYR_TOOLCHAIN_VARIANT=zephyr west build \
--build-dir "$ROOT/device/build/$DEVICE" "$ROOT/device" \
--pristine \
-- \
--preset $DEVICE
exitOnFail $?
createCentralCompileCommands
;;
make)
nrfutil toolchain-manager launch --shell --ncs-version $NCS_VERSION << END
west build --build-dir $ROOT/device/build/$DEVICE device
exit $?
END
west build --build-dir $ROOT/device/build/$DEVICE device
exitOnFail $?
;;
flash)
export BUILD_DIR="$ROOT/device/build/$DEVICE"
export DEVICE="$DEVICE"
nrfutil toolchain-manager launch --shell --ncs-version $NCS_VERSION << END
west flash --softreset --build-dir $BUILD_DIR $DEVICEARG $OTHER_ARGS
exit $?
END
west flash --softreset --build-dir $BUILD_DIR $DEVICEARG $OTHER_ARGS
exitOnFail $?
;;
flashUsb)
Expand Down
39 changes: 6 additions & 33 deletions device/.vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,8 @@
"options": {
"cwd": "${workspaceFolder}"
},
"type": "process",
"command": "west",
"args": [
"build",
"--build-dir",
"${cwd}/build/uhk-80-left",
"${cwd}",
"--",
"--preset",
"uhk-80-left"
],
"type": "shell",
"command": "west build --build-dir ${cwd}/build/uhk-80-left ${cwd} -- --preset uhk-80-left",
"problemMatcher": [
"$gcc"
]
Expand All @@ -34,17 +25,8 @@
"options": {
"cwd": "${workspaceFolder}"
},
"type": "process",
"command": "west",
"args": [
"build",
"--build-dir",
"${cwd}/build/uhk-80-right",
"${cwd}",
"--",
"--preset",
"uhk-80-right"
],
"type": "shell",
"command": "west build --build-dir ${cwd}/build/uhk-80-right ${cwd} -- --preset uhk-80-right",
"problemMatcher": [
"$gcc"
]
Expand All @@ -58,17 +40,8 @@
"options": {
"cwd": "${workspaceFolder}"
},
"type": "process",
"command": "west",
"args": [
"build",
"--build-dir",
"${cwd}/build/uhk-dongle",
"${cwd}",
"--",
"--preset",
"uhk-dongle"
],
"type": "shell",
"command": "west build --build-dir ${cwd}/build/uhk-dongle ${cwd} -- --preset uhk-dongle",
"problemMatcher": [
"$gcc"
]
Expand Down
Loading
Loading