Skip to content

Instantly share code, notes, and snippets.

@nucular
Created December 14, 2018 23:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nucular/84e78d201929671544eaacb2d89ec41f to your computer and use it in GitHub Desktop.
Save nucular/84e78d201929671544eaacb2d89ec41f to your computer and use it in GitHub Desktop.

es570

Effort to reverse-engineer an unknown EgisTech/LighTuning fingerprint sensor

Message format

Request

E G I S CMD A B

Commands

  • 0x00: Read register
    • A: Register
    • B: 0x80 (unknown)
    • Response:
      • A: Register
      • B: Value
      • C: 0x01
  • 0x01: Write register
    • A: Register to write to
    • B: Value to write
    • Response:
      • A: Register
      • B: Value
      • C: 0x01
  • 0x02: Unknown, writes huge amount of data and then crashes
  • 0x03: Unknown, seems to have no effect
    • A: Unknown
    • B: Doesn't matter
    • Response:
      • A: A from before
      • B: 0x10
      • C: 0x01
  • 0x06: Capture(0x00, 0xFE)
    • A: Nothing
    • B: Seems to influence frame size and delay until response

Registers

  • 0x00: Finger detection, in the range 0xBE - 0xFE, 64 steps
  • 0x01: Unknown, resets to 17
  • 0x02: Seems to determine internal state, default 46
  • 0x03: Works with 0, 4, 128, 132, otherwise varying shades of gray, default 128
  • 0x04: Can be 0 - 3, default 0
  • 0x05: Can be 0 - 16, default 8
  • 0x06: Seems to determine gain in 37 repeating steps (antiproportional), default 0
  • 0x07: Stronger gain in 4 repeating steps, default 0
  • 0x08: Can be 0 - 64, default 0
  • 0x09: Another gain, 0 - 16, default 11
  • 0x0A: Switches between 9 weird sensor modes, 0 - 16, default 0
  • 0x0B: Seems to do nothing, default 0
  • 0x0C: Seems to do nothing, default 255
  • `0x0D - 0x0F": Seems to do nothing, default 0
  • 0x10: "Border" per frame (subtracted from 57), default 0
  • 0x11: Capture height per frame, default 56
  • 0x12: Capture "border" (subtracted from 114), default 0
  • 0x13: Capture width, default 113
  • 0x14: Looks like brightness, 0 - 63, default 1
  • 0x15: Switches between normal and black, 0 - 3, default 0
  • 0x16: From complete white to complete dark, 0 - 255, default 62
  • 0x17 - 0x1B: Nothing, default 255
  • 0x1C - 0x1F: Fixed to 0
  • 0x20 - 0x58: Row brightness calibration, 0 - 255
  • 0x59 - 0xD1: Column brightness calibration, 0 - 255, default 0
  • 0xD1 - 0xFF: Fixed to 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment