plustek@linuxhacker.org

plustek@linuxhacker.org


Subject: Need guide to add Cacnon D660U support to plustek-usbdevs.c
From: Alexander Leidinger
Date: Tue, 25 Nov 2003 16:11:09 +0100

Hi,

I'm trying to add support for an Canon CanoScan D660U to
sane-backends-1.0.13.

http://www.sane-project.org/unsupported/canon-d660u.html told me it may
be possible to have it working by modifying the plustek backend. So I've
tried the attached patch (just a copy and paste from other Canon parts
in the file with a little bit of modification), but sane-find-scannner
tells me:
---snip---
<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 (bNumEndpoints = 3)
    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] ...
  Couldn't access LM983x registers.
    checking for GL646 ...
    this is not a GL646 (bDeviceClass = 0, bInterfaceClass = 255)
    checking for GL660+GL646 ...
    this is not a GL660+GL646 (bDeviceClass = 0, bInterfaceClass = 255)
<Couldn't determine the type of the USB chip>

found USB scanner (vendor=0x04a9, product=0x2208) at libusb:/dev/usb0:/dev/ugen0
  # Your USB scanner was (probably) detected. It may or may not be supported by
  # SANE. Try scanimage -L and read the backend's manpage.

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

Now I need some guide how to proceed further.

Bye,
Alexander.

-- 
Actually, Microsoft is sort of a mixture between the Borg and the Ferengi.

http://www.Leidinger.net                       Alexander @ Leidinger.net
  GPG fingerprint = C518 BC70 E67F 143F BE91  3365 79E2 9C60 B006 3FE7


--- backend/plustek-usbdevs.c.orig	Tue Nov 25 14:46:00 2003
+++ backend/plustek-usbdevs.c	Tue Nov 25 14:53:59 2003
@@ -641,6 +641,25 @@
     _WAF_MISC_IO_LAMPS | _WAF_BLACKFINE, _NO_MIO
 };
 
+/* Canon CanoScan D660U
+ */
+static DCapsDef Cap0x04A9_0x2208_0 =
+{
+        {{ 0, 90}, 35, 10, {2550, 3508}, {75, 75}, COLOR_GRAY16 },
+    {{ 0,  0},  0,  0, {0, 0}, { 0, 0 }, 0 },
+    {{ 0,  0},  0,  0, {0, 0}, { 0, 0 }, 0 },
+    {{ 0,  0},  0,  0, {0, 0}, { 0, 0 }, 0 },
+    {1200, 1200},
+    0,
+    SENSORORDER_rgb,
+    8,                 /* sensor distance                         */
+    2,                  /* number of buttons                       */
+    kCIS670,           /* use default settings during calibration */
+    0,                  /* not used here...                        */
+    _WAF_MISC_IO_LAMPS | _WAF_BLACKFINE, _NO_MIO
+};
+
+
 /* Canon N670U/N676U/LiDE20
  */
 static DCapsDef Cap0x04A9_0x220D_0 =
@@ -1959,6 +1978,74 @@
     MODEL_CANON1200
 };
 
+/** Canon 660 */
+static HWDef Hw0x04A9_0x2208_0 =
+{
+    0.86,   /* dMaxMotorSpeed (Max_Speed)                    */
+    0.243,  /* dMaxMoveSpeed (Max_Speed)                     */
+    100,    /* dIntegrationTimeLowLamp                       */
+    100,    /* dIntegrationTimeHighLamp                      */
+    1200,   /* wMotorDpi (Full step DPI)                     */
+    512,    /* wRAMSize (KB)                                 */
+    3.75,   /* dMinIntegrationTimeLowres (ms)                */
+    5.75,   /* dMinIntegrationTimeHighres (ms)               */
+       0,   /* wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)       */
+       0,   /* wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)      */
+
+    0x15,   /* bSensorConfiguration (0x0b)                   */
+    0x4c,   /* sensor control settings (reg 0x0c)            */
+    0x2f,   /* sensor control settings (reg 0x0d)            */
+    0x00,   /* sensor control settings (reg 0x0e)            */
+
+            /* mono & color (reg 0x0f to 0x18) the
+                           same for CIS devices                          */
+
+        {0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x00, 0x00, 0x00, 0x05},
+        {0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x00, 0x00, 0x00, 0x05},
+
+        (_BLUE_CH | _ONE_CH_COLOR),     /* bReg_0x26 color mode       */
+
+        0x00,   /* bReg 0x27 color mode                           */
+        2,      /* bReg 0x29 illumination mode (runtime)          */
+                        /* illumination mode settings
+      */
+        { 3,  0,    0, 23, 1300,  0,   0 },
+        { 2, 23, 4000, 23, 2600, 23, 850 },
+
+    1,      /* StepperPhaseCorrection (reg 0x1a + 0x1b)       */
+    0,      /* bOpticBlackStart (reg 0x1c)                    */
+    0,      /* bOpticBlackEnd (reg 0x1d)                      */
+    89,     /* ? wActivePixelsStart (reg 0x1e + 0x1f)         */
+    6074,   /* wLineEnd (reg 0x20 + 0x21)                     */
+
+    23,     /* red lamp on    (reg 0x2c + 0x2d)               */
+    4000,   /* red lamp off   (reg 0x2e + 0x2f)               */
+    23,     /* green lamp on  (reg 0x30 + 0x31)               */
+    2600,   /* green lamp off (reg 0x32 + 0x33)               */
+    23,     /* blue lamp on   (reg 0x34 + 0x35)               */
+    850,    /* blue lamp off  (reg 0x36 + 0x37)               */
+
+    3,      /* stepper motor control (reg 0x45)               */
+    0,      /* wStepsAfterPaperSensor2 (reg 0x4c + 0x4d)      */
+    0x3f,   /* steps to reverse when buffer is full reg 0x50) */
+    0xfc,   /* acceleration profile (reg 0x51)                */
+    0,      /* lines to process (reg 0x54)                    */
+    0x0f,   /* kickstart (reg 0x55)                           */
+    0x08,   /* pwm freq (reg 0x56)                            */
+    0x1f,   /* pwm duty cycle (reg 0x57)                      */
+
+    0x05,   /* Paper sense (reg 0x58)                         */
+
+    0x66,   /* misc io12 (reg 0x59)                           */
+    0x16,   /* misc io34 (reg 0x5a)                           */
+    0x91,   /* misc io56 (reg 0x5b)                           */
+    0x01,   /* test mode ADC Output CODE MSB (reg 0x5c)       */
+    0,      /* test mode ADC Output CODE LSB (reg 0x5d)       */
+    0,      /* test mode (reg 0x5e)                           */
+    _LM9832,
+        MODEL_CANON600
+};
+
 /** Canon 670/676/LiDE20 */
 static HWDef Hw0x04A9_0x220D_0 =
 {
@@ -2157,6 +2244,7 @@
 	/* CANON... */
 	{"0x04A9-0x2206",   &Cap0x04A9_0x2206_0, &Hw0x04A9_0x2206_0, "N650U/N656U" },
 	{"0x04A9-0x2207",   &Cap0x04A9_0x2207_0, &Hw0x04A9_0x2207_0, "N1220U"      },
+	{"0x04A9-0x2208",   &Cap0x04A9_0x2208_0, &Hw0x04A9_0x2208_0, "D660U"       },
 	{"0x04A9-0x220D",   &Cap0x04A9_0x220D_0, &Hw0x04A9_0x220D_0, "N670U/N676U/LiDE20"
},
 	{"0x04A9-0x220E",   &Cap0x04A9_0x220E_0, &Hw0x04A9_0x220E_0, "N1240U/LiDE30"     
},
 	


plustek@linuxhacker.org