The USB-KW24D512 is an evaluation board in a convenient USB dongle form factor based on the NXP MKW24D512 System-in-Package (SiP) device (KW2xD wireless MCU series). MKW24D512 wireless MCU provides a low-power, compact device with integrated IEEE 802.15.4 radio. The board can be used as a packet sniffer, network node, border router or as a development board.


  • Kinetis KW2xD-2.4 GHz 802.15.4 Wireless Radio Microcontroller (50 MHz, 512 KB flash memory, 64 KB RAM, low-power, crystal-less USB)
  • USB Type A Connector
  • Two blue LEDs
  • One user push button
  • One reset button
  • Integrated PCB Folded F-type antenna
  • 10-pin (0.05”) JTAG debug port for target MCU

For more information about the KW2xD SiP and USB-KW24D512 board:

Supported Features

The USB-KW24D512 board configuration supports the following hardware features:

Interface Controller Driver/Component
NVIC on-chip nested vector interrupt controller
SYSTICK on-chip systick
PINMUX on-chip pinmux
GPIO on-chip gpio
I2C on-chip i2c
SPI on-chip spi
WATCHDOG on-chip watchdog
UART on-chip serial port-polling; serial port-interrupt
FLASH on-chip soc flash
USB on-chip USB device

The default configuration can be found in the defconfig file:


Other hardware features are not currently supported by the port.

Connections and IOs

The KW2xD SoC has five pairs of pinmux/gpio controllers.

Name Function Usage
PTB10 SPI1_PCS0 internal connected to MCR20A
PTB11 SPI1_SCK internal connected to MCR20A
PTB16 SPI1_SOUT internal connected to MCR20A
PTB17 SPI1_SIN internal connected to MCR20A
PTB19 GPIO internal connected to MCR20A (Reset)
PTB3 GPIO internal connected to MCR20A (IRQ_B)
PTC0 GPIO internal connected to MCR20A (GPIO5)

System Clock

USB-KW24D512 contains 32 MHz oscillator crystal, which is connected to the clock pins of the radio transceiver. The MCU is configured to use the 4 MHz external clock from the transceiver with the on-chip PLL to generate a 48 MHz system clock.

Serial Port

The KW2xD SoC has three UARTs. One is configured and can be used for the console, but it uses the same pins as the JTAG interface and is only accessible via the JTAG SWD connector.


The KW2xD SoC has a USB OTG (USBOTG) controller that supports both device and host functions. Only USB device function is supported in Zephyr at the moment. The USB-KW24D512 board has a USB Type A connector and can only be used in device mode.

Programming and Debugging

Currently only the J-Link tools and the Segger J-Link debug probe are supported. The J-Link probe should be connected to the JTAG-SWD connector on the USB-KW24D512 board. To use the Segger J-Link tools, follow the instructions in the Segger J-Link page.


The Segger J-Link firmware does not support command line flashing, therefore the usual flash build target is not supported.


This example uses the Hello World sample with the Segger J-Link tools. This builds the Zephyr application, invokes the J-Link GDB server, attaches a GDB client, and programs the application to flash. It will leave you at a gdb prompt.

# On Linux/macOS
cd $ZEPHYR_BASE/samples/hello_world
mkdir build && cd build

# On Windows
cd %ZEPHYR_BASE%\samples\hello_world
mkdir build & cd build

# Use cmake to configure a Ninja-based build system:
cmake -GNinja -DBOARD=usb_kw24d512 ..

# Now run ninja on the generated build system:
ninja debug

In a second terminal, open telnet:

$ telnet localhost 19021
Connected to localhost.
Escape character is '^]'.
SEGGER J-Link V6.16j - Real time terminal output
SEGGER J-Link ARM V6.0, SN=xxxxxxxx
Process: JLinkGDBServer

Continue program execution in GDB, then in the telnet terminal you should see:

***** BOOTING ZEPHYR OS v1.8.99 - BUILD: Jul 26 2017 15:39:04 *****
Hello World! arm