FwupdPlugin – 1.0: Plugin: Nordic HID
Description: Reference for FwupdPlugin-1.0: Plugin: Nordic HID

## Introduction

This plugin is able flash the firmware for the hardware supported by `nRF52-Desktop`. Tested with the following devices:

- nrf52840dk development kit
- nRF52840 Dongle
- nRF52840 Gaming Mouse
- nRF52832 Desktop Keyboard

The plugin is using Nordic Semiconductor HID config channel to perform devices update.

## Firmware Format

The cabinet file contains ZIP archive prepared by Nordic Semiconductor. This ZIP archive includes 2 signed image blobs for the target device, one firmware blob per application slot, and the `manifest.json` file with the metadata description. At the moment only nRF Secure Immutable Bootloader aka “B0” is supported and tested.

This plugin supports the following protocol ID:

- Nordic HID Config Channel: `com.nordic.hidcfgchannel`

## GUID Generation

For GUID generation the standard HIDRAW DeviceInstanceId values are used with the addition of the target board and bootloader name:

- `HIDRAW\VEN_1915&DEV_52DE&BOARD_nrf52840dk&BL_B0` -> 22952036-c346-5755-9646-7bf766b28922
- `HIDRAW\VEN_1915&DEV_52DE&BOARD_nrf52840dk&BL_MCUBOOT` -> 43b38427-fdf5-5400-a23c-f3eb7ea00e7c

## Quirk Use

This plugin uses the following plugin-specific quirks:

### NordicHidBootloader

Explicitly set the expected bootloader type: “B0” or “MCUBOOT” This quirk must be set for devices without support of `bootloader variant` DFU option.

## Update Behavior

The firmware is deployed when the device is in normal runtime mode, and the device will reset when the new firmware has been written.

## Vendor ID Security

The vendor ID is set from the HID vendor ID, in this instance set to `HIDRAW:0x1915`.

## External Interface Access

This plugin requires ioctl `HIDIOCSFEATURE` and `HIDIOCGFEATURE` access.