Skip to content

feat: switch to CX40 dongle board and ZMK main (v0.4) - #32

Open
perrwa wants to merge 22 commits into
mainfrom
perrwa/add-cx40-zmk04-changes
Open

feat: switch to CX40 dongle board and ZMK main (v0.4)#32
perrwa wants to merge 22 commits into
mainfrom
perrwa/add-cx40-zmk04-changes

Conversation

@perrwa

@perrwa perrwa commented May 20, 2026

Copy link
Copy Markdown
Owner

Replaces #10 (couldn't reopen with new head branch).

Test branch combining CX-40 dongle support with ZMK main (upcoming v0.4). Rebased on perrwa/cx40 and points all ZMK references at main branch.

  • build.yaml: Board names updated for ZMK v0.4 HWMv2 (nice_nano_v2nice_nano//zmk, raytac_mdbt50q_rxmdbt50q_cx_40)
  • config/west.yml: ZMK v0.3main, raytac dongle perrwa/add-cx40perrwa/fix-ram-overflow
  • Workflows: Reusable workflow ref @v0.3@main in both build.yml and release.yml
  • Docs: README and copilot-instructions updated for CX-40 board, perrwa fork, and release trigger change

Release workflow trigger

release.yml now triggers on push to main (auto-builds firmware on merge) plus manual workflow_dispatch with an optional tag input for versioned releases. This replaces the previous tag-push (v*) trigger.

⚠️ All refs pinned to main — intentional for testing. Pin to v0.4 tags once ZMK cuts a release.

perrwa and others added 21 commits April 11, 2026 16:14
Swap board from raytac_mdbt50q_rx to raytac_mdbt50q_cx_40 and point
zmk-component-raytac-dongle to perrwa fork with CX40 support.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- build.yaml: raytac_mdbt50q_rx → raytac_mdbt50q_cx_40
- config/west.yml: zmk v0.3 → main, raytac dongle rschenk/v0.3 → perrwa/main
- workflows: reusable workflow @v0.3 → @main

Agent-Logs-Url: https://github.com/perrwa/zmk-config/sessions/74bb02a0-3a79-4f40-9a3a-15d2aa6edbfc

Co-authored-by: perrwa <7255333+perrwa@users.noreply.github.com>
- nice_nano_v2 → nice_nano//zmk (revision-based naming + ZMK variant)
- raytac_mdbt50q_cx_40 → mdbt50q_cx_40 (vendor prefix is now directory, not board name)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Zephyr 4.1's BLE controller + USB stack exceeds 256 KB RAM on this
board without tuning. Disable logging, shrink BLE buffers, and reduce
stack/heap sizes to fit within nRF52840 SRAM.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add mdbt50q_rx + corne_dongle and mdbt50q_rx + settings_reset to
build matrix to determine if Zephyr 4.1 RAM overflow affects all
standalone nRF52840 boards or only CX-40.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
RX test complete — both boards need the extend variant fix.
RX fails with Missing ZMK Compat (not RAM overflow).
Results documented in perrwa/zmk-component-raytac-dongle#5.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update build.yaml board name: mdbt50q_cx_40 → raytac_mdbt50q_cx_40_dongle//zmk
Point west.yml to perrwa/fix-ram-overflow branch for testing.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Upstream Zephyr board raytac_mdbt50q_cx_40_dongle doesn't exist in
ZMK's Zephyr fork (v4.1.0+zmk-fixes). Reverting to standalone board
with ZMK_BOARD_COMPAT + RAM tuning in the dongle component.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Dongle: MDBT50Q-RX → MDBT50Q-CX-40, rschenk → perrwa fork
- Board names: raytac_mdbt50q_rx → mdbt50q_cx_40, nice_nano_v2 → nice_nano//zmk
- Release trigger: tag push v* → push to main
- West manifest: ZMK v0.3 → ZMK main (v0.4)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
unified board (nRF52840). Keep CX40 dongle as BLE central with
corne_dongle shield unchanged.

Changes:
- Add boardsource/wireless-corne_zmk_config as west module
- Update raytac dongle pin to latest main
- Add blecorne.keymap wrapper (#include corne.keymap)
- Add blecorne.conf symlink to corne.conf
- Update build.yaml: blecorne_left/right with central=n override

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Symbol was removed in ZMK 0.4. RGB underglow=n is sufficient to
disable LED driver.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@perrwa perrwa self-assigned this May 20, 2026
The dongle overlay included 5column.dtsi before 6column.dtsi, while the
blecorne board definition includes them in the opposite order. ZMK's
physical layout system enumerates layouts by DTS definition order, so
when the central sends its selected layout INDEX to peripherals, the
peripheral resolves a different layout.

Dongle (was): layouts[0]=5col, layouts[1]=6col → selects 6col → sends idx 1
Blecorne:     layouts[0]=6col, layouts[1]=5col → receives idx 1 → selects 5col!

This caused the peripheral to use the 5-column transform (stride 10)
instead of the 6-column transform (stride 12), scrambling every key
position sent to the central.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@perrwa perrwa added enhancement New feature or request firmware Firmware configuration changes ci CI/CD workflow changes do not merge Not ready — do not merge labels May 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci CI/CD workflow changes do not merge Not ready — do not merge enhancement New feature or request firmware Firmware configuration changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants