[sane-devel] Konica Minolta magicolor 1690MF multi-function printer/scanner

Reinhold Kainhofer reinhold at kainhofer.com
Sat Jul 31 13:52:03 UTC 2010


Hi all,
I have a Konica Minolta magicolor 1690MF multi-function printer/scanner, which 
is currently not supported by sane.

The output of 'sane-find-scanner -v -v' is attached (it also detects the 
built-in webcam, so ignore that usb device).

I also did a network sniff of the scanning operation in Windows (in this case, 
it's a 150dpi preview scan in b/w). Does the description of the communication 
below ring a bell somewhere? Do you know any other scanner which uses a 
similar protocol (so the scanner might be supported by some existing backend). 
If not, how hard do you think would it be to try to write a backend driver? 
Unfortunately, konica minolta never responded to my request for more technical 
information (chipset, protocol, etc.) about the scanner.


Here are the results of my network sniff:

-) All communication sent to the scanner seems to be in 64-byte blocks, mostly 
padded with 00. Most of the commands seem to use only the first 3, 8, 16 or 20 
bytes.

-) Init sequence of a 150dpi preview scan b/w (indented lines are the response 
of the scanner) in hexadecimal:

    00000000  04 00 00                                         ...
00000000  04 01 00 89 20                                   .... 
    00000003  04 02 00                                         ...
00000005  03 09 01 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000015  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000025  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000035  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    00000006  00                                               .
00000045  03 09 01 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000055  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000065  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000075  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    00000007  00                                               .
00000085  03 0d 0b 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000095  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000000A5  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000000B5  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    00000008  ff 00 00 00 00 00 00 00  00 00 00                ........ ...
000000C5  03 09 01 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000000D5  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000000E5  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000000F5  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    00000013  00                                               .
00000105  03 09 01 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000115  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000125  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000135  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    00000014  00                                               .
00000145  03 0c 11 00 00 00 00 00  05 ff 00 00 00 00 f8 13 ........ ........
00000155  dc 20 00 00 00 00 00 00  00 00 00 00 00 00 00 00 . ...... ........
00000165  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000175  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000185  03 0b 08 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000195  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000001A5  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000001B5  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    00000015  00 10 37 08 fe 04 37 08                          ..7...7. 
000001C5  03 08 04 00 00 00 00 6e  10 00 01 00 00 00 00 00 .......n ........
000001D5  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000001E5  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000001F5  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000205  03 0e 04 00 00 00 00 fe  00 00 00 00 00 00 00 00 ........ ........
00000215  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000225  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000235  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........


-) After that, the scanner starts sending data, apparently the uncompressed 
image data (only 00, ff or maybe sometimes fe or f8 bytes).


-) After some time, the Windows driver sends some more 64-byte commands to the 
printer (for long scans, basically the same commands happen again and again, 
so it's probably some ACK message to the scanner to continue). These commands 
look like (only the first 16 byte, the rest is padded with 00 again, so I've 
removed it here0:


00000245  03 09 01 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    0000FE1D  00                                               .
00000285  03 12 0b 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    0000FE1E  00 00 00 00 00 00 00 00  00 00 00                ........ ...
000002C5  03 09 01 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    0000FE29  00                                               .
00000305  03 09 01 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    0000FE2A  00                                               .
00000345  03 0f 01 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    0000FE2B  00                                               .
00000385  03 0e 04 00 00 00 00 fe  00 00 00 00 00 00 00 00 ........ ........


-) After that, the scanner sends again some more data.


-) After all data has been sent, the communication is as follows (I have 
truncated the 64-byte packets sent to the scanner again to 16 bytes to make it 
easier to read):

00000A05  03 12 0b 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    00106E4A  00 00 00 00 00 00 00 00  00 00 00                ........ ...
00000A45  03 09 01 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    00106E55  00                                               .
00000A85  03 09 01 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    00106E56  00                                               .
00000AC5  03 0f 01 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    00106E57  00                                               .
00000B05  03 09 01 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    00106E58  00                                               .
00000B45  03 09 01 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    00106E59  00                                               .
00000B85  03 0d 0b 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
    00106E5A  ff 00 00 00 00 00 00 00  00 00 00                ........ ...
00000BC5  04 03 00                                         ...



Cheers,
Reinhold

-- 
------------------------------------------------------------------
Reinhold Kainhofer, reinhold at kainhofer.com, http://reinhold.kainhofer.com/
 * Financial & Actuarial Math., Vienna Univ. of Technology, Austria
 * http://www.fam.tuwien.ac.at/, DVR: 0005886
 * LilyPond, Music typesetting, http://www.lilypond.org
-------------- next part --------------
This is sane-find-scanner from sane-backends 1.0.20

  # sane-find-scanner will now attempt to detect your scanner. If the
  # result is different from what you expected, first make sure your
  # scanner is powered up and properly connected to your computer.

searching for SCSI scanners:
checking /dev/scanner... failed to open (Invalid argument)
checking /dev/sg0... failed to open (Invalid argument)
checking /dev/sg1... failed to open (Invalid argument)
checking /dev/sg2... failed to open (Invalid argument)
checking /dev/sg3... failed to open (Invalid argument)
checking /dev/sg4... failed to open (Invalid argument)
checking /dev/sg5... failed to open (Invalid argument)
checking /dev/sg6... failed to open (Invalid argument)
checking /dev/sg7... failed to open (Invalid argument)
checking /dev/sg8... failed to open (Invalid argument)
checking /dev/sg9... failed to open (Invalid argument)
checking /dev/sga... failed to open (Invalid argument)
checking /dev/sgb... failed to open (Invalid argument)
checking /dev/sgc... failed to open (Invalid argument)
checking /dev/sgd... failed to open (Invalid argument)
checking /dev/sge... failed to open (Invalid argument)
checking /dev/sgf... failed to open (Invalid argument)
checking /dev/sgg... failed to open (Invalid argument)
checking /dev/sgh... failed to open (Invalid argument)
checking /dev/sgi... failed to open (Invalid argument)
checking /dev/sgj... failed to open (Invalid argument)
checking /dev/sgk... failed to open (Invalid argument)
checking /dev/sgl... failed to open (Invalid argument)
checking /dev/sgm... failed to open (Invalid argument)
checking /dev/sgn... failed to open (Invalid argument)
checking /dev/sgo... failed to open (Invalid argument)
checking /dev/sgp... failed to open (Invalid argument)
checking /dev/sgq... failed to open (Invalid argument)
checking /dev/sgr... failed to open (Invalid argument)
checking /dev/sgs... failed to open (Invalid argument)
checking /dev/sgt... failed to open (Invalid argument)
checking /dev/sgu... failed to open (Invalid argument)
checking /dev/sgv... failed to open (Invalid argument)
checking /dev/sgw... failed to open (Invalid argument)
checking /dev/sgx... failed to open (Invalid argument)
checking /dev/sgy... failed to open (Invalid argument)
checking /dev/sgz... failed to open (Invalid argument)
  # No SCSI scanners found. If you expected something different, make sure that
  # you have loaded a kernel SCSI driver for your SCSI adapter.

searching for USB scanners:
checking /dev/usb/scanner... failed to open (Invalid argument)
checking /dev/usb/scanner0... failed to open (Invalid argument)
checking /dev/usb/scanner1... failed to open (Invalid argument)
checking /dev/usb/scanner2... failed to open (Invalid argument)
checking /dev/usb/scanner3... failed to open (Invalid argument)
checking /dev/usb/scanner4... failed to open (Invalid argument)
checking /dev/usb/scanner5... failed to open (Invalid argument)
checking /dev/usb/scanner5... failed to open (Invalid argument)
checking /dev/usb/scanner7... failed to open (Invalid argument)
checking /dev/usb/scanner8... failed to open (Invalid argument)
checking /dev/usb/scanner9... failed to open (Invalid argument)
checking /dev/usb/scanner10... failed to open (Invalid argument)
checking /dev/usb/scanner11... failed to open (Invalid argument)
checking /dev/usb/scanner12... failed to open (Invalid argument)
checking /dev/usb/scanner13... failed to open (Invalid argument)
checking /dev/usb/scanner14... failed to open (Invalid argument)
checking /dev/usb/scanner15... failed to open (Invalid argument)
checking /dev/usbscanner... failed to open (Invalid argument)
checking /dev/usbscanner0... failed to open (Invalid argument)
checking /dev/usbscanner1... failed to open (Invalid argument)
checking /dev/usbscanner2... failed to open (Invalid argument)
checking /dev/usbscanner3... failed to open (Invalid argument)
checking /dev/usbscanner4... failed to open (Invalid argument)
checking /dev/usbscanner5... failed to open (Invalid argument)
checking /dev/usbscanner6... failed to open (Invalid argument)
checking /dev/usbscanner7... failed to open (Invalid argument)
checking /dev/usbscanner8... failed to open (Invalid argument)
checking /dev/usbscanner9... failed to open (Invalid argument)
checking /dev/usbscanner10... failed to open (Invalid argument)
checking /dev/usbscanner11... failed to open (Invalid argument)
checking /dev/usbscanner12... failed to open (Invalid argument)
checking /dev/usbscanner13... failed to open (Invalid argument)
checking /dev/usbscanner14... failed to open (Invalid argument)
checking /dev/usbscanner15... failed to open (Invalid argument)
trying libusb:

<device descriptor of 0x1d6b/0x0001 at 005:001 (Linux 2.6.32-24-generic uhci_hcd UHCI Host Controller)>
bLength               18
bDescriptorType       1
bcdUSB                1.10
bDeviceClass          9
bDeviceSubClass       0
bDeviceProtocol       0
bMaxPacketSize0       64
idVendor              0x1D6B
idProduct             0x0001
bcdDevice             2.06
iManufacturer         3 (Linux 2.6.32-24-generic uhci_hcd)
iProduct              2 (UHCI Host Controller)
iSerialNumber         1 (0000:00:1d.3)
bNumConfigurations    1
 <configuration 0>
 bLength              9
 bDescriptorType      2
 wTotalLength         25
 bNumInterfaces       1
 bConfigurationValue  1
 iConfiguration       0 ()
 bmAttributes         224 (Self-poweredRemote Wakeup)
 MaxPower             0 mA
  <interface 0>
   <altsetting 0>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   0
   bAlternateSetting  0
   bNumEndpoints      1
   bInterfaceClass    9
   bInterfaceSubClass 0
   bInterfaceProtocol 0
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x81 (in 0x01)
    bmAttributes      3 (interrupt)
    wMaxPacketSize    2
    bInterval         255 ms
    bRefresh          0
    bSynchAddress     0

<device descriptor of 0x0a5c/0x2101 at 004:002 (Broadcom Corp Acer Module)>
bLength               18
bDescriptorType       1
bcdUSB                2.00
bDeviceClass          224
bDeviceSubClass       1
bDeviceProtocol       1
bMaxPacketSize0       64
idVendor              0x0A5C
idProduct             0x2101
bcdDevice             1.00
iManufacturer         1 (Broadcom Corp)
iProduct              2 (Acer Module)
iSerialNumber         0 ()
bNumConfigurations    1
 <configuration 0>
 bLength              9
 bDescriptorType      2
 wTotalLength         216
 bNumInterfaces       4
 bConfigurationValue  1
 iConfiguration       0 ()
 bmAttributes         224 (Self-poweredRemote Wakeup)
 MaxPower             0 mA
  <interface 0>
   <altsetting 0>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   0
   bAlternateSetting  0
   bNumEndpoints      3
   bInterfaceClass    224
   bInterfaceSubClass 1
   bInterfaceProtocol 1
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x81 (in 0x01)
    bmAttributes      3 (interrupt)
    wMaxPacketSize    16
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x82 (in 0x02)
    bmAttributes      2 (bulk)
    wMaxPacketSize    64
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 2>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x02 (out 0x02)
    bmAttributes      2 (bulk)
    wMaxPacketSize    64
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
  <interface 1>
   <altsetting 0>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   1
   bAlternateSetting  0
   bNumEndpoints      2
   bInterfaceClass    224
   bInterfaceSubClass 1
   bInterfaceProtocol 1
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x83 (in 0x03)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    0
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x03 (out 0x03)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    0
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
   <altsetting 1>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   1
   bAlternateSetting  1
   bNumEndpoints      2
   bInterfaceClass    224
   bInterfaceSubClass 1
   bInterfaceProtocol 1
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x83 (in 0x03)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    9
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x03 (out 0x03)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    9
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
   <altsetting 2>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   1
   bAlternateSetting  2
   bNumEndpoints      2
   bInterfaceClass    224
   bInterfaceSubClass 1
   bInterfaceProtocol 1
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x83 (in 0x03)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    17
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x03 (out 0x03)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    17
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
   <altsetting 3>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   1
   bAlternateSetting  3
   bNumEndpoints      2
   bInterfaceClass    224
   bInterfaceSubClass 1
   bInterfaceProtocol 1
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x83 (in 0x03)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    32
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x03 (out 0x03)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    32
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
   <altsetting 4>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   1
   bAlternateSetting  4
   bNumEndpoints      2
   bInterfaceClass    224
   bInterfaceSubClass 1
   bInterfaceProtocol 1
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x83 (in 0x03)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    64
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x03 (out 0x03)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    64
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
   <altsetting 5>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   1
   bAlternateSetting  5
   bNumEndpoints      2
   bInterfaceClass    224
   bInterfaceSubClass 1
   bInterfaceProtocol 1
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x83 (in 0x03)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    64
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x03 (out 0x03)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    64
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
  <interface 2>
   <altsetting 0>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   2
   bAlternateSetting  0
   bNumEndpoints      2
   bInterfaceClass    255
   bInterfaceSubClass 255
   bInterfaceProtocol 255
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x84 (in 0x04)
    bmAttributes      2 (bulk)
    wMaxPacketSize    32
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x04 (out 0x04)
    bmAttributes      2 (bulk)
    wMaxPacketSize    32
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
  <interface 3>
   <altsetting 0>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   3
   bAlternateSetting  0
   bNumEndpoints      0
   bInterfaceClass    254
   bInterfaceSubClass 1
   bInterfaceProtocol 0
   iInterface         0 ()

<device descriptor of 0x1d6b/0x0001 at 004:001 (Linux 2.6.32-24-generic uhci_hcd UHCI Host Controller)>
bLength               18
bDescriptorType       1
bcdUSB                1.10
bDeviceClass          9
bDeviceSubClass       0
bDeviceProtocol       0
bMaxPacketSize0       64
idVendor              0x1D6B
idProduct             0x0001
bcdDevice             2.06
iManufacturer         3 (Linux 2.6.32-24-generic uhci_hcd)
iProduct              2 (UHCI Host Controller)
iSerialNumber         1 (0000:00:1d.2)
bNumConfigurations    1
 <configuration 0>
 bLength              9
 bDescriptorType      2
 wTotalLength         25
 bNumInterfaces       1
 bConfigurationValue  1
 iConfiguration       0 ()
 bmAttributes         224 (Self-poweredRemote Wakeup)
 MaxPower             0 mA
  <interface 0>
   <altsetting 0>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   0
   bAlternateSetting  0
   bNumEndpoints      1
   bInterfaceClass    9
   bInterfaceSubClass 0
   bInterfaceProtocol 0
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x81 (in 0x01)
    bmAttributes      3 (interrupt)
    wMaxPacketSize    2
    bInterval         255 ms
    bRefresh          0
    bSynchAddress     0

<device descriptor of 0x1d6b/0x0001 at 003:001 (Linux 2.6.32-24-generic uhci_hcd UHCI Host Controller)>
bLength               18
bDescriptorType       1
bcdUSB                1.10
bDeviceClass          9
bDeviceSubClass       0
bDeviceProtocol       0
bMaxPacketSize0       64
idVendor              0x1D6B
idProduct             0x0001
bcdDevice             2.06
iManufacturer         3 (Linux 2.6.32-24-generic uhci_hcd)
iProduct              2 (UHCI Host Controller)
iSerialNumber         1 (0000:00:1d.1)
bNumConfigurations    1
 <configuration 0>
 bLength              9
 bDescriptorType      2
 wTotalLength         25
 bNumInterfaces       1
 bConfigurationValue  1
 iConfiguration       0 ()
 bmAttributes         224 (Self-poweredRemote Wakeup)
 MaxPower             0 mA
  <interface 0>
   <altsetting 0>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   0
   bAlternateSetting  0
   bNumEndpoints      1
   bInterfaceClass    9
   bInterfaceSubClass 0
   bInterfaceProtocol 0
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x81 (in 0x01)
    bmAttributes      3 (interrupt)
    wMaxPacketSize    2
    bInterval         255 ms
    bRefresh          0
    bSynchAddress     0

<device descriptor of 0x1d6b/0x0001 at 002:001 (Linux 2.6.32-24-generic uhci_hcd UHCI Host Controller)>
bLength               18
bDescriptorType       1
bcdUSB                1.10
bDeviceClass          9
bDeviceSubClass       0
bDeviceProtocol       0
bMaxPacketSize0       64
idVendor              0x1D6B
idProduct             0x0001
bcdDevice             2.06
iManufacturer         3 (Linux 2.6.32-24-generic uhci_hcd)
iProduct              2 (UHCI Host Controller)
iSerialNumber         1 (0000:00:1d.0)
bNumConfigurations    1
 <configuration 0>
 bLength              9
 bDescriptorType      2
 wTotalLength         25
 bNumInterfaces       1
 bConfigurationValue  1
 iConfiguration       0 ()
 bmAttributes         224 (Self-poweredRemote Wakeup)
 MaxPower             0 mA
  <interface 0>
   <altsetting 0>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   0
   bAlternateSetting  0
   bNumEndpoints      1
   bInterfaceClass    9
   bInterfaceSubClass 0
   bInterfaceProtocol 0
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x81 (in 0x01)
    bmAttributes      3 (interrupt)
    wMaxPacketSize    2
    bInterval         255 ms
    bRefresh          0
    bSynchAddress     0

<device descriptor of 0x132b/0x2089 at 001:086 (KONICA MINOLTA KONICA MINOLTA magicolor 1690MF scan)>
bLength               18
bDescriptorType       1
bcdUSB                2.00
bDeviceClass          0
bDeviceSubClass       0
bDeviceProtocol       0
bMaxPacketSize0       64
idVendor              0x132B
idProduct             0x2089
bcdDevice             1.00
iManufacturer         1 (KONICA MINOLTA)
iProduct              2 (KONICA MINOLTA magicolor 1690MF scan)
iSerialNumber         3 (13549)
bNumConfigurations    1
 <configuration 0>
 bLength              9
 bDescriptorType      2
 wTotalLength         85
 bNumInterfaces       3
 bConfigurationValue  1
 iConfiguration       0 ()
 bmAttributes         192 (Self-powered)
 MaxPower             2 mA
  <interface 0>
   <altsetting 0>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   0
   bAlternateSetting  0
   bNumEndpoints      3
   bInterfaceClass    255
   bInterfaceSubClass 255
   bInterfaceProtocol 255
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x03 (out 0x03)
    bmAttributes      2 (bulk)
    wMaxPacketSize    512
    bInterval         0 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x84 (in 0x04)
    bmAttributes      2 (bulk)
    wMaxPacketSize    512
    bInterval         0 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 2>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x85 (in 0x05)
    bmAttributes      2 (bulk)
    wMaxPacketSize    512
    bInterval         0 ms
    bRefresh          0
    bSynchAddress     0
  <interface 1>
   <altsetting 0>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   1
   bAlternateSetting  0
   bNumEndpoints      2
   bInterfaceClass    7
   bInterfaceSubClass 1
   bInterfaceProtocol 2
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x01 (out 0x01)
    bmAttributes      2 (bulk)
    wMaxPacketSize    512
    bInterval         0 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x82 (in 0x02)
    bmAttributes      2 (bulk)
    wMaxPacketSize    512
    bInterval         0 ms
    bRefresh          0
    bSynchAddress     0
  <interface 2>
   <altsetting 0>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   2
   bAlternateSetting  0
   bNumEndpoints      2
   bInterfaceClass    7
   bInterfaceSubClass 1
   bInterfaceProtocol 2
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x06 (out 0x06)
    bmAttributes      2 (bulk)
    wMaxPacketSize    512
    bInterval         0 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x87 (in 0x07)
    bmAttributes      2 (bulk)
    wMaxPacketSize    512
    bInterval         0 ms
    bRefresh          0
    bSynchAddress     0

<trying to find out which USB chip is used>
    checking for GT-6801 ...
    this is not a GT-6801 (bDeviceClass = 0)
    checking for GT-6816 ...
    this is not a GT-6816 (bcdUSB = 0x200)
    checking for GT-8911 ...
    this is not a GT-8911 (check 2, bcdUSB = 0x200)
    checking for MA-1017 ...
    this is not a MA-1017 (bDeviceClass = 0, bInterfaceClass = 255)
    checking for MA-1015 ...
    this is not a MA-1015 (bDeviceClass = 0)
    checking for MA-1509 ...
    this is not a MA-1509 (bDeviceClass = 0)
    checking for LM983[1,2,3] ...
    this is not a LM983x (bcdUSB = 0x200)
    checking for GL646 ...
    this is not a GL646 (bDeviceClass = 0, bInterfaceClass = 255)
    checking for GL646_HP ...
    this is not a GL646_HP (bDeviceClass = 0, bInterfaceClass = 255)
    checking for GL660+GL646 ...
    this is not a GL660+GL646 (bDeviceClass = 0, bInterfaceClass = 255)
    checking for GL84x ...
    this is not a GL841 (bDeviceClass = 0, bInterfaceClass = 255)
    checking for ICM532B ...
    this is not a ICM532B (check 1, bDeviceClass = 0, bInterfaceClass = 255)
    checking for PV8630/LM9830 ...
    this is not a PV8630/LM9830 (bcdUSB = 0x200)
    checking for M011 ...
    this is not a M011 (bDeviceClass = 0)
    checking for RTS8822 ...
    this is not a RTS8822 (bEndpointAddress = 0x3, bmAttributes = 0x2, wMaxPacketSize = 0x200, bInterval = 0x0)
    checking for rts8858c ...
    this is not a rts8858c (bcdUSB = 0x200)
    checking for SQ113 ...
    this is not a SQ113 (bEndpointAddress = 0x3, bmAttributes = 0x2, wMaxPacketSize = 0x200, bInterval = 0x0)
    checking for HP5550/5590/7650 chipset ...
    this is not a HP5550/5590/7650 chipset (bDeviceClass = 0)
    checking for rts8801/rts8891 ...
    this is not a rts8801/rts8891 (bcdUSB = 0x200)
<Couldn't determine the type of the USB chip (result from sane-backends 1.0.20)>

found USB scanner (vendor=0x132b [KONICA MINOLTA], product=0x2089 [KONICA MINOLTA magicolor 1690MF scan]) at libusb:001:086

<device descriptor of 0x046d/0x0896 at 001:085 (OEM Camera)>
bLength               18
bDescriptorType       1
bcdUSB                2.00
bDeviceClass          255
bDeviceSubClass       255
bDeviceProtocol       255
bMaxPacketSize0       64
idVendor              0x046D
idProduct             0x0896
bcdDevice             1.00
iManufacturer         1 (OEM)
iProduct              2 (Camera)
iSerialNumber         0 ()
bNumConfigurations    1
 <configuration 0>
 bLength              9
 bDescriptorType      2
 wTotalLength         193
 bNumInterfaces       1
 bConfigurationValue  1
 iConfiguration       0 ()
 bmAttributes         128 ()
 MaxPower             200 mA
  <interface 0>
   <altsetting 0>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   0
   bAlternateSetting  0
   bNumEndpoints      2
   bInterfaceClass    255
   bInterfaceSubClass 0
   bInterfaceProtocol 0
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x81 (in 0x01)
    bmAttributes      3 (interrupt)
    wMaxPacketSize    8
    bInterval         7 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x82 (in 0x02)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    0
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
   <altsetting 1>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   0
   bAlternateSetting  1
   bNumEndpoints      2
   bInterfaceClass    255
   bInterfaceSubClass 0
   bInterfaceProtocol 0
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x81 (in 0x01)
    bmAttributes      3 (interrupt)
    wMaxPacketSize    8
    bInterval         7 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x82 (in 0x02)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    128
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
   <altsetting 2>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   0
   bAlternateSetting  2
   bNumEndpoints      2
   bInterfaceClass    255
   bInterfaceSubClass 0
   bInterfaceProtocol 0
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x81 (in 0x01)
    bmAttributes      3 (interrupt)
    wMaxPacketSize    8
    bInterval         7 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x82 (in 0x02)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    512
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
   <altsetting 3>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   0
   bAlternateSetting  3
   bNumEndpoints      2
   bInterfaceClass    255
   bInterfaceSubClass 0
   bInterfaceProtocol 0
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x81 (in 0x01)
    bmAttributes      3 (interrupt)
    wMaxPacketSize    8
    bInterval         7 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x82 (in 0x02)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    1024
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
   <altsetting 4>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   0
   bAlternateSetting  4
   bNumEndpoints      2
   bInterfaceClass    255
   bInterfaceSubClass 0
   bInterfaceProtocol 0
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x81 (in 0x01)
    bmAttributes      3 (interrupt)
    wMaxPacketSize    8
    bInterval         7 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x82 (in 0x02)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    2816
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
   <altsetting 5>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   0
   bAlternateSetting  5
   bNumEndpoints      2
   bInterfaceClass    255
   bInterfaceSubClass 0
   bInterfaceProtocol 0
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x81 (in 0x01)
    bmAttributes      3 (interrupt)
    wMaxPacketSize    8
    bInterval         7 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x82 (in 0x02)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    3072
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
   <altsetting 6>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   0
   bAlternateSetting  6
   bNumEndpoints      2
   bInterfaceClass    255
   bInterfaceSubClass 0
   bInterfaceProtocol 0
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x81 (in 0x01)
    bmAttributes      3 (interrupt)
    wMaxPacketSize    8
    bInterval         7 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x82 (in 0x02)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    4992
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0
   <altsetting 7>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   0
   bAlternateSetting  7
   bNumEndpoints      2
   bInterfaceClass    255
   bInterfaceSubClass 0
   bInterfaceProtocol 0
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x81 (in 0x01)
    bmAttributes      3 (interrupt)
    wMaxPacketSize    8
    bInterval         7 ms
    bRefresh          0
    bSynchAddress     0
    <endpoint 1>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x82 (in 0x02)
    bmAttributes      1 (isochronous)
    wMaxPacketSize    5120
    bInterval         1 ms
    bRefresh          0
    bSynchAddress     0

<trying to find out which USB chip is used>
    checking for GT-6801 ...
    this is not a GT-6801 (bcdUSB = 0x200)
    checking for GT-6816 ...
    this is not a GT-6816 (bDeviceClass = 255, bInterfaceClass = 255)
    checking for GT-8911 ...
    this is not a GT-8911 (check 1, bDeviceClass = 255, bInterfaceClass = 255)
    checking for MA-1017 ...
    this is not a MA-1017 (bDeviceClass = 255, bInterfaceClass = 255)
    checking for MA-1015 ...
    this is not a MA-1015 (bcdUSB = 0x200)
    checking for MA-1509 ...
    this is not a MA-1509 (bcdUSB = 0x200)
    checking for LM983[1,2,3] ...
    this is not a LM983x (bcdUSB = 0x200)
    checking for GL646 ...
    this is not a GL646 (bDeviceClass = 255, bInterfaceClass = 255)
    checking for GL646_HP ...
    this is not a GL646_HP (bcdUSB = 0x200)
    checking for GL660+GL646 ...
    this is not a GL660+GL646 (bDeviceClass = 255, bInterfaceClass = 255)
    checking for GL84x ...
    this is not a GL841 (bNumEndpoints = 2)
    checking for ICM532B ...
    this is not a ICM532B (check 2, bcdUSB = 0x200)
    checking for PV8630/LM9830 ...
    this is not a PV8630/LM9830 (bDeviceClass = 255)
    checking for M011 ...
    this is not a M011 (bcdUSB = 0x200)
    checking for RTS8822 ...
    this is not a RTS8822 (bDeviceClass = 255)
    checking for rts8858c ...
    this is not a rts8858c (bDeviceClass = 255)
    checking for SQ113 ...
    this is not a SQ113 (bDeviceClass = 255)
    checking for HP5550/5590/7650 chipset ...
    this is not a HP5550/5590/7650 chipset (bNumEndpoints = 2)
    checking for rts8801/rts8891 ...
    this is not a rts8801/rts8891 (bDeviceClass = 255)
<Couldn't determine the type of the USB chip (result from sane-backends 1.0.20)>

found USB scanner (vendor=0x046d [OEM], product=0x0896 [Camera]) at libusb:001:085

<device descriptor of 0x1d6b/0x0002 at 001:001 (Linux 2.6.32-24-generic ehci_hcd EHCI Host Controller)>
bLength               18
bDescriptorType       1
bcdUSB                2.00
bDeviceClass          9
bDeviceSubClass       0
bDeviceProtocol       0
bMaxPacketSize0       64
idVendor              0x1D6B
idProduct             0x0002
bcdDevice             2.06
iManufacturer         3 (Linux 2.6.32-24-generic ehci_hcd)
iProduct              2 (EHCI Host Controller)
iSerialNumber         1 (0000:00:1d.7)
bNumConfigurations    1
 <configuration 0>
 bLength              9
 bDescriptorType      2
 wTotalLength         25
 bNumInterfaces       1
 bConfigurationValue  1
 iConfiguration       0 ()
 bmAttributes         224 (Self-poweredRemote Wakeup)
 MaxPower             0 mA
  <interface 0>
   <altsetting 0>
   bLength            9
   bDescriptorType    4
   bInterfaceNumber   0
   bAlternateSetting  0
   bNumEndpoints      1
   bInterfaceClass    9
   bInterfaceSubClass 0
   bInterfaceProtocol 0
   iInterface         0 ()
    <endpoint 0>
    bLength           7
    bDescriptorType   5
    bEndpointAddress  0x81 (in 0x01)
    bmAttributes      3 (interrupt)
    wMaxPacketSize    4
    bInterval         12 ms
    bRefresh          0
    bSynchAddress     0
  # Your USB scanner was (probably) detected. It may or may not be supported by
  # SANE. Try scanimage -L and read the backend's manpage.

  # Not checking for parallel port scanners.

  # Most Scanners connected to the parallel port or other proprietary ports
  # can't be detected by this program.

  # You may want to run this program as root to find all devices. Once you
  # found the scanner devices, be sure to adjust access permissions as
  # necessary.
done


More information about the sane-devel mailing list