Plugin: FocalTech Fingerprint Sensor

Introduction

This plugin updates firmware for FocalTech Match-On-Chip (MOC) fingerprint sensors over USB bulk transfer.

The communication protocol is derived from the reference UpgradeTool source code provided by FocalTech Systems Co., Ltd.

Firmware Format

The daemon decompresses the cabinet archive and extracts a flat binary firmware blob. No additional wrapping is expected. The plugin computes a CRC32 over the full image, sends it in the SHO header, then streams the image in 1 KiB STX blocks followed by a zero-padded EOT block for any remainder.

This plugin supports the following protocol ID:

  • com.focal.moc

GUID Generation

These devices use the standard USB instance ID values such as USB\VID_2808&PID_XXXX.

Update Behavior

The firmware is deployed when the device is in normal runtime mode. The plugin first switches the device to bootloader (IAP) mode (detach), then streams the firmware image using the 3-phase SHO/STX/EOT protocol. The device reboots automatically after the final ACK; the plugin then issues a return-to-app command (attach) in case the device has not yet rebooted. The device re-enumerates after each mode switch.

Both modes use the same USB product ID, so the mode is taken from the _APP_ or _IAP_ marker in the version string reported by the device. A device left in bootloader mode by an interrupted update is detected as such, and an update can start without another mode switch.

Vendor ID Security

The vendor ID is set from the USB vendor ID, in this instance USB:0x2808.

External Interface Access

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

Version Considerations

This plugin has been available since fwupd version 2.1.8.