docs: reorganise supported hardware page (#3363)

* docs: supported hardware structure changes

Added a few links to hardware intergration pages to provide clearly signal to reader "you can make your own".
Removed "Contributing" section since it's not really relavent anymore.

* docs: move unsupported boards section out of metadata

* address review comments

* fix broken link

* board variants, interconnect, fix link, move unsupported section

* Apply suggested change

Co-authored-by: Nicolas Munnich <98408764+nmunnich@users.noreply.github.com>

---------

Co-authored-by: Nicolas Munnich <98408764+nmunnich@users.noreply.github.com>
This commit is contained in:
Genteure 2026-06-08 00:45:31 +08:00 committed by GitHub
parent 773dec58ea
commit ff09f2d0c9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 54 additions and 41 deletions

View file

@ -9,10 +9,6 @@ description: |
natural extension, once there were many shields designed for it, many other *boards* began to be developed natural extension, once there were many shields designed for it, many other *boards* began to be developed
that were compatible to leverage the extensive available shields. Today, many dev kits come with Uno that were compatible to leverage the extensive available shields. Today, many dev kits come with Uno
headers to make it easy to work with them. headers to make it easy to work with them.
Note: ZMK doesn't support boards with AVR 8-bit processors, such as the ATmega32U4, because Zephyr™ only
supports 32-bit and 64-bit platforms. As a result, boards like the original Arduino Uno Rev3 itself are
*not* supported by ZMK.
node_labels: node_labels:
gpio: arduino_header gpio: arduino_header
i2c: arduino_i2c i2c: arduino_i2c

View file

@ -6,12 +6,8 @@ url: https://www.sparkfun.com/products/12640
manufacturer: SparkFun manufacturer: SparkFun
description: | description: |
The SparkFun Pro Micro grew popular as a low cost ATmega32U4 board with sufficient GPIO and peripherals The SparkFun Pro Micro grew popular as a low cost ATmega32U4 board with sufficient GPIO and peripherals
to work for many keyboard needs. Since the original Pro Micro, many pin compatible boards have appeared, to work for many keyboard needs. Since the original Pro Micro, many pin compatible boards have appeared
with various changes or improvements, such as the Elite-C w/ USB-C, nice!nano with nRF52840 wireless. with various changes or improvements.
Note: ZMK doesn't support boards with AVR 8-bit processors, such as the ATmega32U4, because Zephyr™ only
supports 32-bit and 64-bit platforms. As a result, controllers like the SparkFun Pro Micro and the Elite-C
are *not* supported by ZMK.
node_labels: node_labels:
gpio: pro_micro gpio: pro_micro
i2c: pro_micro_i2c i2c: pro_micro_i2c

View file

@ -11,11 +11,6 @@ import Heading from "@theme/Heading";
import { groupedMetadata } from "@site/src/components/hardware-utils"; import { groupedMetadata } from "@site/src/components/hardware-utils";
export const toc = [ export const toc = [
{
value: "Onboard Controller Keyboards",
id: "onboard",
level: 2,
},
{ {
value: "Composite Keyboards", value: "Composite Keyboards",
id: "composite", id: "composite",
@ -28,25 +23,33 @@ export const toc = [
id: interconnect.id, id: interconnect.id,
level: 3, level: 3,
})), })),
{
value: "Onboard Controller Keyboards",
id: "onboard",
level: 2,
},
{ {
value: "Other Hardware", value: "Other Hardware",
id: "other-hardware", id: "other-hardware",
level: 2, level: 2,
}, },
{
value: "Contributing",
id: "contributing",
level: 2,
},
]; ];
With the solid technical foundation of Zephyr™ RTOS, ZMK can support a wide diversity of hardware targets, With the solid technical foundation of Zephyr™ RTOS, ZMK can support a wide variety of hardware targets,
including but not limited to Nordic nRF52, Raspberry Pi RP2040/RP2350, most ST STM32 MCUs, and Microchip SAMD21. including but not limited to Nordic nRF52, Raspberry Pi RP2040/RP2350, most ST STM32 MCUs, and Microchip SAMD21.
That being said, there are specific [boards / shields](hardware-integration/index.mdx#boards--shields) that have been implemented and tested by the ZMK contributors, listed below. ZMK has the potential to run on any hardware supported by Zephyr™, such as those on
the [Zephyr™ supported boards](https://docs.zephyrproject.org/4.1.0/boards/index.html) page, though you may need to do some additional work to configure them for ZMK.
That being said, there are specific boards that have been tested and pre-configured by the ZMK contributors, denoted by the `zmk` board variants below.
:::note Designing a new keyboard? Check out the [Hardware Integration](hardware-integration/index.mdx) section
for more information on how to configure ZMK to run on your custom hardware.
With the [upgrade to Zephyr 4.1](/blog/2025/12/09/zephyr-4-1#zmk-board-variant), the ZMK project has moved all in-tree boards to use a `zmk` [board variant](https://docs.zephyrproject.org/4.1.0/glossary.html#term-variant), for consistency when distinguishing from stock boards that are actually in upstream Zephyr. :::info[Boards, Board Variants, and Shields]
ZMK uses the Zephyr concepts of "boards" and "shields" to refer to different parts of a keyboard build that are then combined during a firmware build.
Please see the [explainer on boards & shields](hardware-integration/index.mdx#boards--shields) for more details.
Zephyr boards come with minimal configuration. ZMK board variants add the necessary configuration to make the board usable out of the box with ZMK.
::: :::
@ -58,7 +61,6 @@ With the [upgrade to Zephyr 4.1](/blog/2025/12/09/zephyr-4-1#zmk-board-variant),
In addition to the basic keyboard functionality, there is also support for additional keyboard hardware such as encoders, RGB underglow, backlight and displays. In addition to the basic keyboard functionality, there is also support for additional keyboard hardware such as encoders, RGB underglow, backlight and displays.
Please see pages under the "Features" header in the sidebar for details. Please see pages under the "Features" header in the sidebar for details.
{/* prettier-ignore */} ZMK doesn't support boards with AVR 8-bit processors, such as the ATmega32U4, because Zephyr™ only
<Heading as="h2" id="contributing">Contributing</Heading> supports 32-bit and 64-bit platforms. As a result, controllers like the SparkFun Pro Micro, Elite-C,
and Arduino Uno Rev3 are **NOT** supported by ZMK.
If you'd like to add support for a new keyboard shield, head over to the [New Keyboard Shield](hardware-integration/new-shield.mdx) documentation and note the [clean room design requirements](development/contributing/clean-room.md).

View file

@ -84,6 +84,34 @@ function HardwareList({ items }: HardwareListProps) {
return ( return (
<> <>
<section>
<Heading as="h2" id="composite">
Composite Keyboards
</Heading>
<p>
Composite keyboards are composed of two main PCBs: a small controller{" "}
<strong>board</strong> with exposed pads, and a larger keyboard PCB (a{" "}
<strong>shield</strong>, in ZMK lingo) with switch footprints. The
board and shield share the same <strong>interconnect</strong>{" "}
standard, which defines the physical and electrical specifications for
the PCB-to-PCB connection.
</p>
<p>
Boards and shields that share the same interconnect are usually
compatible with each other but not always. Check hardware
compatibility before connecting them.
</p>
<p>
Designing a custom composite keyboard with an off-the-shelf controller
board? Check out the{" "}
<a href="/docs/hardware-integration/new-shield">
New Keyboard Shield
</a>{" "}
guide.
</p>
{Object.values(grouped.interconnects).map(mapInterconnect)}
</section>
<section> <section>
<Heading as="h2" id="onboard"> <Heading as="h2" id="onboard">
Onboard Controller Keyboards Onboard Controller Keyboards
@ -93,6 +121,10 @@ function HardwareList({ items }: HardwareListProps) {
the components of a keyboard, including the controller chip, switch the components of a keyboard, including the controller chip, switch
footprints, etc. footprints, etc.
</p> </p>
<p>
Designing a custom keyboard with an onboard controller? Check out the{" "}
<a href="/docs/hardware-integration/new-board">New Board</a> guide.
</p>
<ul> <ul>
{grouped["onboard"] {grouped["onboard"]
.sort((a, b) => a.name.localeCompare(b.name)) .sort((a, b) => a.name.localeCompare(b.name))
@ -101,19 +133,6 @@ function HardwareList({ items }: HardwareListProps) {
))} ))}
</ul> </ul>
</section> </section>
<section>
<Heading as="h2" id="composite">
Composite Keyboards
</Heading>
<p>
Composite keyboards are composed of two main PCBs: a small controller
board with exposed pads, and a larger keyboard PCB (a shield, in ZMK
lingo) with switch footprints and a location where the controller is
added. This location is called an interconnect. Multiple interconnects
can be found below.
</p>
{Object.values(grouped.interconnects).map(mapInterconnect)}
</section>
</> </>
); );
} }