From c321cef3527dbcca4e404ae1090bcc0adb3089b8 Mon Sep 17 00:00:00 2001 From: Nicolas Munnich Date: Fri, 5 Sep 2025 19:47:28 +0000 Subject: [PATCH 1/3] feat(shields): Enable wired split for ergodash Also adjusts the way the nice!view adapter is defined. --- app/boards/blackpill_f401cc.overlay | 2 ++ app/boards/blackpill_f401ce.overlay | 2 ++ app/boards/blackpill_f411ce.overlay | 2 ++ app/boards/shields/ergodash/ergodash.dtsi | 9 +++++++++ .../nice_view_adapter/boards/bluemicro840_v1.overlay | 4 ++++ .../shields/nice_view_adapter/boards/mikoto.overlay | 4 ++++ .../shields/nice_view_adapter/boards/nice_nano.overlay | 4 ++++ .../nice_view_adapter/boards/nice_nano_v2.overlay | 4 ++++ .../shields/nice_view_adapter/boards/nrfmicro_11.overlay | 4 ++++ .../nice_view_adapter/boards/nrfmicro_11_flipped.overlay | 4 ++++ .../shields/nice_view_adapter/boards/nrfmicro_13.overlay | 4 ++++ .../nice_view_adapter/boards/puchi_ble_v1.overlay | 4 ++++ 12 files changed, 47 insertions(+) diff --git a/app/boards/blackpill_f401cc.overlay b/app/boards/blackpill_f401cc.overlay index 6ed4c3cf844..a9b5c1bed24 100644 --- a/app/boards/blackpill_f401cc.overlay +++ b/app/boards/blackpill_f401cc.overlay @@ -48,3 +48,5 @@ blackpill_i2c: &i2c1 {}; blackpill_spi: &spi1 {}; blackpill_serial: &usart1 {}; + +&blackpill_serial { status = "disabled"; }; diff --git a/app/boards/blackpill_f401ce.overlay b/app/boards/blackpill_f401ce.overlay index 54e360a393e..3672c6b3778 100644 --- a/app/boards/blackpill_f401ce.overlay +++ b/app/boards/blackpill_f401ce.overlay @@ -49,3 +49,5 @@ blackpill_i2c: &i2c1 {}; blackpill_spi: &spi1 {}; blackpill_serial: &usart1 {}; + +&blackpill_serial { status = "disabled"; }; diff --git a/app/boards/blackpill_f411ce.overlay b/app/boards/blackpill_f411ce.overlay index 54e360a393e..3672c6b3778 100644 --- a/app/boards/blackpill_f411ce.overlay +++ b/app/boards/blackpill_f411ce.overlay @@ -49,3 +49,5 @@ blackpill_i2c: &i2c1 {}; blackpill_spi: &spi1 {}; blackpill_serial: &usart1 {}; + +&blackpill_serial { status = "disabled"; }; diff --git a/app/boards/shields/ergodash/ergodash.dtsi b/app/boards/shields/ergodash/ergodash.dtsi index b6ef7fc41c2..c313c3a1672 100644 --- a/app/boards/shields/ergodash/ergodash.dtsi +++ b/app/boards/shields/ergodash/ergodash.dtsi @@ -57,5 +57,14 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,6) RC(4,13) RC(4,12 , <&pro_micro 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> ; }; + + wired_split { + compatible = "zmk,wired-split"; + device = <&pro_micro_serial>; + }; +}; + +&pro_micro_serial { + status = "okay"; }; diff --git a/app/boards/shields/nice_view_adapter/boards/bluemicro840_v1.overlay b/app/boards/shields/nice_view_adapter/boards/bluemicro840_v1.overlay index 706cffbebea..4f0b3009ff7 100644 --- a/app/boards/shields/nice_view_adapter/boards/bluemicro840_v1.overlay +++ b/app/boards/shields/nice_view_adapter/boards/bluemicro840_v1.overlay @@ -33,3 +33,7 @@ nice_view_spi: &spi0 { &pro_micro_i2c { status = "disabled"; }; + +&pro_micro_serial { + status = "disabled"; +}; diff --git a/app/boards/shields/nice_view_adapter/boards/mikoto.overlay b/app/boards/shields/nice_view_adapter/boards/mikoto.overlay index e00b599c61c..67770abb17d 100644 --- a/app/boards/shields/nice_view_adapter/boards/mikoto.overlay +++ b/app/boards/shields/nice_view_adapter/boards/mikoto.overlay @@ -33,3 +33,7 @@ nice_view_spi: &spi0 { &pro_micro_i2c { status = "disabled"; }; + +&pro_micro_serial { + status = "disabled"; +}; diff --git a/app/boards/shields/nice_view_adapter/boards/nice_nano.overlay b/app/boards/shields/nice_view_adapter/boards/nice_nano.overlay index 45ba34dedeb..77ec56bea01 100644 --- a/app/boards/shields/nice_view_adapter/boards/nice_nano.overlay +++ b/app/boards/shields/nice_view_adapter/boards/nice_nano.overlay @@ -33,3 +33,7 @@ nice_view_spi: &spi0 { &pro_micro_i2c { status = "disabled"; }; + +&pro_micro_serial { + status = "disabled"; +}; diff --git a/app/boards/shields/nice_view_adapter/boards/nice_nano_v2.overlay b/app/boards/shields/nice_view_adapter/boards/nice_nano_v2.overlay index 45ba34dedeb..77ec56bea01 100644 --- a/app/boards/shields/nice_view_adapter/boards/nice_nano_v2.overlay +++ b/app/boards/shields/nice_view_adapter/boards/nice_nano_v2.overlay @@ -33,3 +33,7 @@ nice_view_spi: &spi0 { &pro_micro_i2c { status = "disabled"; }; + +&pro_micro_serial { + status = "disabled"; +}; diff --git a/app/boards/shields/nice_view_adapter/boards/nrfmicro_11.overlay b/app/boards/shields/nice_view_adapter/boards/nrfmicro_11.overlay index 706cffbebea..4f0b3009ff7 100644 --- a/app/boards/shields/nice_view_adapter/boards/nrfmicro_11.overlay +++ b/app/boards/shields/nice_view_adapter/boards/nrfmicro_11.overlay @@ -33,3 +33,7 @@ nice_view_spi: &spi0 { &pro_micro_i2c { status = "disabled"; }; + +&pro_micro_serial { + status = "disabled"; +}; diff --git a/app/boards/shields/nice_view_adapter/boards/nrfmicro_11_flipped.overlay b/app/boards/shields/nice_view_adapter/boards/nrfmicro_11_flipped.overlay index 5b5dbfb1c3b..b39e3c0a5a7 100644 --- a/app/boards/shields/nice_view_adapter/boards/nrfmicro_11_flipped.overlay +++ b/app/boards/shields/nice_view_adapter/boards/nrfmicro_11_flipped.overlay @@ -33,3 +33,7 @@ nice_view_spi: &spi0 { &pro_micro_i2c { status = "disabled"; }; + +&pro_micro_serial { + status = "disabled"; +}; diff --git a/app/boards/shields/nice_view_adapter/boards/nrfmicro_13.overlay b/app/boards/shields/nice_view_adapter/boards/nrfmicro_13.overlay index 706cffbebea..4f0b3009ff7 100644 --- a/app/boards/shields/nice_view_adapter/boards/nrfmicro_13.overlay +++ b/app/boards/shields/nice_view_adapter/boards/nrfmicro_13.overlay @@ -33,3 +33,7 @@ nice_view_spi: &spi0 { &pro_micro_i2c { status = "disabled"; }; + +&pro_micro_serial { + status = "disabled"; +}; diff --git a/app/boards/shields/nice_view_adapter/boards/puchi_ble_v1.overlay b/app/boards/shields/nice_view_adapter/boards/puchi_ble_v1.overlay index 706cffbebea..4f0b3009ff7 100644 --- a/app/boards/shields/nice_view_adapter/boards/puchi_ble_v1.overlay +++ b/app/boards/shields/nice_view_adapter/boards/puchi_ble_v1.overlay @@ -33,3 +33,7 @@ nice_view_spi: &spi0 { &pro_micro_i2c { status = "disabled"; }; + +&pro_micro_serial { + status = "disabled"; +}; From 8c2f000e4ae4aa0f1807ee424d117828eaae28d4 Mon Sep 17 00:00:00 2001 From: Nicolas Munnich Date: Fri, 5 Sep 2025 20:10:09 +0000 Subject: [PATCH 2/3] docs: document the enabling of UART devices for wired split Also document the circumstances under which one may want to disable the device again --- .../hardware-integration/new-shield.mdx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/docs/development/hardware-integration/new-shield.mdx b/docs/docs/development/hardware-integration/new-shield.mdx index 1cbc079d96b..96d9109046f 100644 --- a/docs/docs/development/hardware-integration/new-shield.mdx +++ b/docs/docs/development/hardware-integration/new-shield.mdx @@ -530,9 +530,19 @@ If testing the experimental [wired split](../../features/split-keyboards.md) sup }; ``` -See the [wired split](../../config/split.md#wired-split) configuration for more details. +Your shield should also ensure that the UART device used in `zmk,wired-split` is enabled, as we disable the predefined UART devices by default. -For wireless split keyboards, this step should be skipped, especially since the UART pins on your controller might already be in use for other functionality. +```dts +&pro_micro_serial { + status = "okay"; +}; +``` + +Note that enabling the UART device will prevent its pins from being used for any other purpose. For split shields to be used by both BLE-capable and BLE-incapable boards, you should setup the wired split. If a BLE-capable board is selected, the split interconnect will default to BLE, otherwise it will fall back to the wired split transport. +If you have an optional hardware add-on that makes use of the UART pins when used wirelessly, define said add-on in a separate shield and have that shield disable the UART device. +The in-tree `nice_view_adapter` is an example of such a shield, disabling the UART device so that one of the pins can be used for SPI instead. + +See the [wired split](../../config/split.md#wired-split) configuration for more details. From 05a194cb67c25eb0c1fc0767f06b90f808602170 Mon Sep 17 00:00:00 2001 From: Nicolas Munnich Date: Fri, 5 Sep 2025 20:24:59 +0000 Subject: [PATCH 3/3] fix(boards): Set a speed for puchi BLE UART Necessary for potential usage with wired split --- app/boards/arm/puchi_ble/puchi_ble_v1.dts | 1 + 1 file changed, 1 insertion(+) diff --git a/app/boards/arm/puchi_ble/puchi_ble_v1.dts b/app/boards/arm/puchi_ble/puchi_ble_v1.dts index 9f3194e036f..67a4c9ac5e6 100644 --- a/app/boards/arm/puchi_ble/puchi_ble_v1.dts +++ b/app/boards/arm/puchi_ble/puchi_ble_v1.dts @@ -66,6 +66,7 @@ &uart0 { compatible = "nordic,nrf-uarte"; + current-speed = <115200>; pinctrl-0 = <&uart0_default>; pinctrl-1 = <&uart0_sleep>; pinctrl-names = "default", "sleep";