---
title: Plugin: Aver HID-ISP
---

## Introduction

The AVer HID In-System-Programming plugin is used for various products that can be updated using
a proprietary HID protocol.

## Firmware Format

The daemon will decompress the cabinet archive and load:

* HID: a `.tar.bz2` payload, typically with extension `.audio.dat`
* SafeISP: a zip archive containing the compressed payload files, e.g. `update/cx3uvc.img`

This plugin supports the following protocol IDs:

* `com.aver.hid2`
* `com.aver.safeisp2`

Versions of fwupd prior to 2.1.1 Aver HID expected the firmware payload to be composed of compressed
images inside an `archive.tar.bz2` themselves inside another `archive.tar.bz2`; these used the
protocol values of `com.aver.hid` and `com.aver.safeisp`.

## GUID Generation

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

* `USB\VID_2574&PID_09F0`

## Update Behavior

The device is updated using a HID request/response with a fixed size payload.

Once ready, the plugin can start the update with the `UVCX_UCAM_ISP_FILE_START` header.
After the device sends back the `UVCX_UCAM_ISP_FILE_START` packet, the PC process can send the
firmware file in chunks using `UVCX_UCAM_ISP_FILE_DNLOAD`.
After the last chunk, the plugin sends `UVCX_UCAM_ISP_FILE_END` packet and the device will check
whether the firmware is valid. If the firmware file is correct, the device will send
`UVCX_UCAM_ISP_START` to PC, and the plugin can continuously send `UVCX_UCAM_ISP_STATUS` to get
the ISP progress percentage.

If the firmware file is incorrect, the device sends `UVCX_UCAM_ISP_STOP` back to the plugin,
and the ISP progress should be terminated. The PC process should go back to `UVCX_UCAM_ISP_STATUS`
and restart the process if needed.

## Vendor ID Security

The vendor ID is set from the USB vendor, in this instance set to `USB:0x2574`

## External Interface Access

This plugin requires read/write access to `/dev/bus/usb`.

## Version Considerations

This plugin has been available since fwupd version `1.9.2`.
