Cs9711 Fingerprint Driver -

Score: 3/5 It is important to note that the driver is only as good as the hardware shell it powers.

Analysis and Implementation of a Linux Kernel Fingerprint Driver: A Case Study of the CS9711 Sensor

From reverse‑engineered traces, the CS9711 uses a 3‑wire SPI variant (SDIO shared) with:

Command: [OPCODE (1 byte)] [ADDR (2 big‑endian)] [LEN (1 byte)] [CRC8]
Response: [STATUS (1 byte)] [DATA (LEN bytes)] [CRC16]

Common opcodes:

When a finger is detected (interrupt), the driver reads raw grayscale image (160×160 pixels, 8‑bit). Optimized transfer:

static int cs9711_capture_image(struct cs9711_dev *dev, u8 *buffer) 
    // Command: capture image (blocks ~100 ms)
    cs9711_send_cmd(dev, CMD_CAPTURE, NULL, 0);
    msleep(80);  // empirical delay
// Read rows with burst SPI transfer
for (int row = 0; row < CS9711_HEIGHT; row++) 
    cs9711_write_reg(dev, REG_ROW_ADDR, row);
    spi_read(dev->spi, &buffer[row * CS9711_WIDTH], CS9711_WIDTH);
return 0;

Optimization: Use SPI DMA transfers for all rows in one transaction if the chip supports burst read from a start address.

This is the weakest link for the CS9711 driver.

Biometric data is sensitive:

Official standalone drivers are hard to find. Instead, use these reliable sources:

  • Driver packs (Snappy Driver Installer Origin)
    Use SDIO – it includes CS9711 in its “Biometric” pack. Only download from official source.

  • Goodix or Elan generic drivers
    Sometimes the CS9711 works with Goodix fingerprint driver (version 2.x or 3.x). Install via “Have Disk” method in Device Manager. cs9711 fingerprint driver

  • ⚠️ Avoid random “driver download” websites — many serve malware, not the actual CS9711 driver.