#### Plugin: Novatek Touchscreen

## Introduction

This plugin allows updating Novatek touchscreen controllers. Devices are enumerated using HIDRAW.

## Firmware Format

The daemon will decompress the cabinet archive and extract the firmware blob.

This plugin expects a raw binary payload with an end flag of `NVT` and a maximum size of 320KB.

This plugin supports the following protocol ID:

- `tw.com.novatek.ts`

## GUID Generation

These devices use the standard DeviceInstanceId values, e.g.

- `HIDRAW\VEN_0603&DEV_F203`

An additional instance ID is added which corresponds to the PID read from flash:

- `HIDRAW\VEN_0603&PJID_60AA`

## Update Behavior

The device is updated after switching into idle mode, where the touchscreen is nonfunctional. The firmware is written using GCM commands with erase, program, and verify, and the device is reset back to normal runtime mode on success.

## Vendor ID Security

The vendor ID is set from the HID vendor, e.g. `HIDRAW:0x0603`

## External Interface Access

This plugin requires ioctl access to `HIDIOCSFEATURE` and `HIDIOCGFEATURE` and read/write access to `/dev/hidraw`.