Skip to content

[ZSA - Moonlander] Fixed compatibility with latest Moonlander Hardware changes#26090

Open
ZacharyLefebvre wants to merge 1 commit intoqmk:masterfrom
ZacharyLefebvre:moonlander-revb-fixes
Open

[ZSA - Moonlander] Fixed compatibility with latest Moonlander Hardware changes#26090
ZacharyLefebvre wants to merge 1 commit intoqmk:masterfrom
ZacharyLefebvre:moonlander-revb-fixes

Conversation

@ZacharyLefebvre
Copy link
Copy Markdown

Description

Since December 2025, ZSA has sold new versions of their Moonlander. The chip, Product ID and Bootloader are now different. They now differenciate the two versions 'reva' and 'revb' where revb (revision B) is the newer version handling the bootloader and such. I basically checked the code from their Fork (https://github.com/zsa/qmk_firmware) and took everything needed to get my new Moonlander working with the QMK original repo. I also have an old Moonlander so I confirmed I could still compile and flash on the first version (revA) using QMK CLI.

Types of Changes

  • Core
  • Bugfix
  • New feature
  • Enhancement/optimization
  • Keyboard (addition or update)
  • Keymap/layout (addition or update)
  • Documentation

Issues Fixed or Closed by This PR

  • Moonlanders sold in 2026 could not be flashed anymore

Checklist

  • Replaced deprecated RGB_* with UG_* equivalents
  • Replaced deprecated KC_MS_* and KC_BTN* with MS_* equivalents
  • Updated GPIO API calls (setPin → gpio_*)
  • Added ZSA modules in the modules folder at the root (maybe should it be somewhere else ? I basically replicated ZSA tree from their repo)
  • Fixed missing module includes for zsa/defaults
  • Fixed formatting (using QMK format cmd)
  • Added common and ergodox_ez keyboards in the zsa list (couldn't test the ergodox keyboard as I don't own one)
  • Added oryx keymap
  • Introduced reva and revb folders as explained above
  • Added ZSA most recent readme

Note 1 : I added ergodox_ez from the ZSA fork but couldn't test it so you might want to remove it from here if you think it's not valuable.
Note 2 : I had to add the zsa modules in order to get the compiling working but I left it where it was in the ZSA repo (modules/zsa/...), I'm not sure if it's the right place to put it but it is mandatory somewhere for compiling.
Note 3 : This is my first open-source contribution ! I'm glad to be part of that community and sorry if I made beginner mistakes. Let me know if there's s anything wrong I did.

…test versions of the Moonlander hardware

Since December 2025, ZSA has sold new versions of their Moonlander. The chip, Product ID and Bootloader are now different. They now differenciate the two versions 'reva' and 'revb' where revb (revision B) is the newer version handling the bootloader and such. I basically took the code from their Fork (https://github.com/zsa/qmk_firmware) and took everything needed to get my new Moonlander working with the QMK original repo.
I also have an old Moonlander so I confirmed I could still compile and flash on the first version (revA) using QMK CLI.

List of changes :
- Replaced deprecated RGB_* with UG_* equivalents
- Replaced deprecated KC_MS_* and KC_BTN* with MS_* equivalents
- Updated GPIO API calls (setPin → gpio_*)
- Added ZSA modules in the modules folder at the root (maybe should it be somewhere else ? I basically replicated ZSA tree from their repo)
- Fixed missing module includes for zsa/defaults
- Fixed formatting (using QMK format cmd)
- Added common and ergodox_ez keyboards in the zsa list (couldn't test the ergodox keyboard as I don't own one)
- Added oryx keymap
- Introduced reva and revb folders as explained above
- Added ZSA most recent readme
@drashna
Copy link
Copy Markdown
Member

drashna commented Mar 19, 2026

Each keyboard should be broken out into a separate PR (this helps to keep things manageable for reviews, and helps get them reviewed and merged faster).

Modules are highly unlikely to be merged as the intent behind them is to allow code to live outside of the firmware repo. The current modules included in the repo are all examples of some of the functionally added by/to the repo.

QMK Modules:

Community Modules are a feature within QMK which allows code to be implemented by third parties, making it available for other people to import into their own builds.

Eg, the ZSA modules should stay in a ZSA controlled repo, and the boards PR here should be able to be compiled without needing the modules.

Comment on lines +155 to +163
setPinOutputPushPull(A9);
setPinOutputPushPull(A8);
writePinHigh(A9);
writePinHigh(A8);
wait_ms(500);
writePinLow(A9);

NVIC_SystemReset();
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
setPinOutputPushPull(A9);
setPinOutputPushPull(A8);
writePinHigh(A9);
writePinHigh(A8);
wait_ms(500);
writePinLow(A9);
NVIC_SystemReset();
}
gpio_set_pin_output_push_pull(A9);
gpio_set_pin_output_push_pull(A8);
gpio_write_pin_high(A9);
gpio_write_pin_high(A8);
wait_ms(500);
gpio_write_pin_low(A9);
NVIC_SystemReset();
}

@drashna drashna removed the duplicate label Apr 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants