From e4fb39d4a6514fe90d44b1570f908bddc5df0ad2 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Fri, 20 Mar 2026 01:51:46 -0600 Subject: [PATCH] fix(studio): Allow setting UART RPC thread priority (#3290) To ensure we can tune things when other threads may have priority, preventing UART processing in time for the studio UI requirements, adjust our default UART thread priority, and allow overriding as needed. --- app/src/studio/Kconfig | 14 ++++++++++++++ app/src/studio/uart_rpc_transport.c | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/src/studio/Kconfig b/app/src/studio/Kconfig index d7d3d4114..1f4da6d3a 100644 --- a/app/src/studio/Kconfig +++ b/app/src/studio/Kconfig @@ -59,11 +59,20 @@ config ZMK_STUDIO_TRANSPORT_UART select RING_BUFFER default y if $(dt_chosen_enabled,$(DT_CHOSEN_ZMK_STUDIO_RPC_UART)) +if ZMK_STUDIO_TRANSPORT_UART + config ZMK_STUDIO_TRANSPORT_UART_RX_STACK_SIZE int "RX Stack Size" depends on !UART_INTERRUPT_DRIVEN default 512 +config ZMK_STUDIO_TRANSPORT_UART_RX_PRIORITY + int "RX Thread Priority" + depends on !UART_INTERRUPT_DRIVEN + default 9 + +endif + config ZMK_STUDIO_TRANSPORT_BLE bool "BLE (GATT)" select RING_BUFFER @@ -71,9 +80,12 @@ config ZMK_STUDIO_TRANSPORT_BLE depends on ZMK_BLE default y + config BT_CONN_TX_MAX default 64 if ZMK_STUDIO_TRANSPORT_BLE +if ZMK_STUDIO_TRANSPORT_BLE + config ZMK_STUDIO_TRANSPORT_BLE_PREF_LATENCY int "BLE Transport preferred latency" default 10 @@ -81,6 +93,8 @@ config ZMK_STUDIO_TRANSPORT_BLE_PREF_LATENCY When the studio UI is connected, a lower latency can be requested in order to make the interactions between keyboard and studio faster. +endif + endmenu config ZMK_STUDIO_RPC_THREAD_STACK_SIZE diff --git a/app/src/studio/uart_rpc_transport.c b/app/src/studio/uart_rpc_transport.c index d4a4de832..6dcac6d1d 100644 --- a/app/src/studio/uart_rpc_transport.c +++ b/app/src/studio/uart_rpc_transport.c @@ -65,7 +65,7 @@ static void uart_rx_main(void) { } K_THREAD_DEFINE(uart_transport_read_thread, CONFIG_ZMK_STUDIO_TRANSPORT_UART_RX_STACK_SIZE, - uart_rx_main, NULL, NULL, NULL, K_LOWEST_APPLICATION_THREAD_PRIO, 0, 0); + uart_rx_main, NULL, NULL, NULL, CONFIG_ZMK_STUDIO_TRANSPORT_UART_RX_PRIORITY, 0, 0); #endif