---
title: Supported Hardware
sidebar_label: Supported Hardware
---

import HardwareList from "@site/src/components/hardware-list";
import Metadata from "@site/src/data/hardware-metadata.json";

import Heading from "@theme/Heading";

import { groupedMetadata } from "@site/src/components/hardware-utils";

export const toc = [
  {
    value: "Onboard Controller Keyboards",
    id: "onboard",
    level: 2,
  },
  {
    value: "Composite Keyboards",
    id: "composite",
    level: 2,
  },
  ...Object.values(groupedMetadata(Metadata).interconnects)
    .filter((ic) => ic.interconnect !== undefined)
    .map(({ interconnect }) => ({
      value: `${interconnect.name} Interconnect`,
      id: interconnect.id,
      level: 3,
    })),
  {
    value: "Other Hardware",
    id: "other-hardware",
    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,
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](development/hardware-integration/index.mdx#boards--shields) that have been implemented and tested by the ZMK contributors, listed below.

:::note

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.

:::

<HardwareList items={Metadata} />

{/* prettier-ignore */}
<Heading as="h2" id="other-hardware">Other Hardware</Heading>

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.

{/* prettier-ignore */}
<Heading as="h2" id="contributing">Contributing</Heading>

If you'd like to add support for a new keyboard shield, head over to the [New Keyboard Shield](development/hardware-integration/new-shield.mdx) documentation and note the [clean room design requirements](development/contributing/clean-room.md).
