Skip to content

Get all buttons work on CanoScan LiDE 400

CanoScan LiDE 400 (ID 04a9:1912 Canon, Inc. LiDE 400) is recognized as pixma device on my system.

$ scanimage -L
device `pixma:04A91912_46710F' is a CANON CanoScan LiDE 400 multi-function peripheral

There are 5 front buttons (https://ij.manual.canon/ij/webmanual/ScanUtility/All/LiDE%20400/1.0/EN/SU/screens/su129_c.gif), left to right:

  • [Scan start]
  • [Finish]
  • [Auto scan]
  • [Copy]
  • [Send]

Scanbd/sane is interpreting those as:

  • [Scan start] - recognized as Button-1 (PIXMA_EV_BUTTON1 - color scan)
  • [Finish] - recognized as Button-2 (PIXMA_EV_BUTTON2 - b/w scan)
  • [Auto scan] - recognized as Button-1 (PIXMA_EV_BUTTON1 - color scan)
  • [Copy] - recognized as Button-1 (PIXMA_EV_BUTTON1 - color scan)
  • [Send] - recognized as Button-1 (PIXMA_EV_BUTTON1 - color scan)

That means that the buttons are overlapping and instead of 5 buttons one can effectively use only 2. This is what I see when capturing USB packets with usbmon module loaded and polling active.

cat /sys/kernel/debug/usb/usbmon/3u:

 - [Scan start] - 0:1024 32 = 00000000 01000000 00000000 00000000 00000005 00000000 00000000 00000000
 - [Finish] - 0:1024 32 = 00000000 01000000 00000000 00000000 00000006 00000000 00000000 00000000
 - [Auto scan] - 0:1024 32 = 00000000 01000000 00000000 00000000 00000002 00000000 00000000 00000000
 - [Copy] - 0:1024 32 = 00000000 01000000 00000000 00000000 00000001 00000000 00000000 00000000
 - [Send] - 00000000 01000000 00000000 00000000 00000003 00000000 00000000 00000000

Would it be possible to add definitions for all buttons based on the information above?

A few information about my system:

Arch Linux x86_64 (kernel 5.13.6-arch1-1), sane 1.0.32-3, scanbd 1.5.1-5

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information