From 42aab25d257b65ad70675d35fb70261326870221 Mon Sep 17 00:00:00 2001 From: Henning Geinitz Date: Fri, 3 Sep 2004 14:06:19 +0000 Subject: [PATCH] Fixed firmware name for Mustek 1248 UB. Changed status to basic. Removed "unsupported" warning. Added workaround for shared memory compilation problem on Windows. It's now possible to add a new vendor/product id line to gt68xx.conf to test yet unsupported scanners without changing the source code. --- ChangeLog | 11 +++++++- backend/gt68xx.c | 49 +++++++++++++++++++++++++++----- backend/gt68xx.conf | 10 +++++++ backend/gt68xx_devices.c | 54 ++++++++++++++++++++++++++++++++++-- backend/gt68xx_low.h | 1 + backend/gt68xx_shm_channel.c | 8 ++++++ doc/descriptions/gt68xx.desc | 6 ++-- doc/gt68xx/gt68xx.CHANGES | 8 ++++++ doc/sane-gt68xx.man | 13 ++++++++- 9 files changed, 146 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2efc5782f..29c3480ad 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,7 +4,16 @@ 1600n. Removed Canon LiDE 35 (now in genesys.desc) and Epson Perfection 2480 (now in snapscan.desc). * doc/descriptions-external/genesys.desc: Added Canon LiDE 35. - + * backend/gt68xx.c backend/gt68xx.conf backend/gt68xx_devices.c + backend/gt68xx_low.h backend/gt68xx_shm_channel.c + doc/sane-gt68xx.man doc/descriptions/gt68xx.desc + doc/gt68xx/gt68xx.CHANGES: Fixed firmware name for Mustek 1248 + UB. Changed status to basic. Removed "unsupported" warning. + Added workaround for shared memory compilation problem on + Windows. It's now possible to add a new vendor/product id line + to gt68xx.conf to test yet unsupported scanners without changing + the source code. + 2004-09-02 Oliver Schwartz * backend/snapscan.c backend/snapscan-scsi.c backend/snapscan-options.c backend/snapscan.h backend/snapscan.conf doc/descriptions/snapscan.desc: diff --git a/backend/gt68xx.c b/backend/gt68xx.c index 021f24d5b..9c44296c7 100644 --- a/backend/gt68xx.c +++ b/backend/gt68xx.c @@ -48,7 +48,7 @@ #include "../include/sane/config.h" -#define BUILD 62 +#define BUILD 63 #define MAX_DEBUG #define WARMUP_TIME 60 #define CALIBRATION_HEIGHT 2.5 @@ -805,12 +805,20 @@ attach (SANE_String_Const devname, GT68xx_Device ** devp, SANE_Bool may_wait) if (!gt68xx_device_is_configured (dev)) { - DBG (4, "attach: device `%s' is not supported: %s\n", devname, - sane_strstatus (status)); - gt68xx_device_free (dev); - if (devp) - *devp = 0; - return status; + GT68xx_Model * model; + DBG (2, "attach: Warning: device `%s' is not listed in device table\n", devname); + DBG (2, "attach: If you have manually added it, use override in gt68xx.conf\n"); + gt68xx_device_get_model ("unknown-scanner", &model); + status = gt68xx_device_set_model (dev, model); + if (status != SANE_STATUS_GOOD) + { + DBG (4, "attach: couldn't set model: %s\n", sane_strstatus (status)); + gt68xx_device_free (dev); + if (devp) + *devp = 0; + return status; + } + dev->manual_selection = SANE_TRUE; } dev->file_name = strdup (devname); @@ -1313,6 +1321,33 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle) DBG (0, " scanner and what does (not) work.\n"); } + if (dev->manual_selection) + { + DBG (0, "WARNING: You have manually added the ids of your scanner \n"); + DBG (0, " to gt68xx.conf. Please use an appropriate override \n"); + DBG (0, " for your scanner. Use extreme care and switch off \n"); + DBG (0, " the scanner immediately if you hear unusual noise. \n"); + DBG (0, " Please report any success to \n"); + DBG (0, " henning@meier-geinitz.de. Please provide as many\n"); + DBG (0, " details as possible, e.g. the exact name of your\n"); + DBG (0, " scanner, ids, settings etc.\n"); + + if (strcmp (dev->model->name, "unknown-scanner") == 0) + { + GT68xx_USB_Device_Entry *entry; + + DBG (0, "ERROR: You haven't chosen an override in gt68xx.conf. Please use \n"); + DBG (0, " one of the following: \n"); + + for (entry = gt68xx_usb_device_list; entry->model; ++entry) + { + if (strcmp (entry->model->name, "unknown-scanner") != 0) + DBG (0, " %s\n", entry->model->name); + } + return SANE_STATUS_UNSUPPORTED; + } + } + /* The firmware check is disabled by default because it may confuse some scanners: So the firmware is loaded everytime. */ #if 0 diff --git a/backend/gt68xx.conf b/backend/gt68xx.conf index 89c6b5bcc..a540d3098 100644 --- a/backend/gt68xx.conf +++ b/backend/gt68xx.conf @@ -7,6 +7,16 @@ # scanner. For some scanners it's also necessary to change the name of the # firmware file. +############################################################################# +# For testing scanners that are not yet supported by this backend add the +# vendor and product ids in the usb line below. Also fill in the override +# and firmware lines. For more details, see: +# http://www.meier-geinitz.de/sane/gt68xx-backend/adding.html + +# usb vendor product +# override "something" +# firmware "path" + ############################################################################## # Autodetect Mustek BearPaw 1200 CU, 2400 CU, Mustek ScanExpress 1200 UB Plus, # Artec Ultima 2000, and several other GT-6801-based scanners diff --git a/backend/gt68xx_devices.c b/backend/gt68xx_devices.c index 78ef0fc3a..8efdc067b 100644 --- a/backend/gt68xx_devices.c +++ b/backend/gt68xx_devices.c @@ -164,6 +164,55 @@ static GT68xx_Command_Set plustek_gt6801_command_set = { gt68xx_generic_get_id }; +static GT68xx_Model unknown_model = { + "unknown-scanner", /* Name */ + "unknown manufacturer", /* Device vendor string */ + "unknown device -- use override to select", /* Device model name */ + "unknown", /* Name of the firmware file */ + SANE_FALSE, /* Dynamic allocation flag */ + + &mustek_gt6816_command_set, /* Command set used by this scanner */ + + 600, /* maximum optical sensor resolution */ + 1200, /* maximum motor resolution */ + 600, /* base x-res used to calculate geometry */ + 600, /* base y-res used to calculate geometry */ + 1200, /* if ydpi is equal or higher, use linemode */ + 1200, /* if ydpi is equal or higher, disable backtracking */ + SANE_FALSE, /* Use base_ydpi for all resolutions */ + + {600, 300, 150, 75, 50, 0}, /* possible x-resolutions */ + {1200, 600, 300, 150, 75, 50, 0}, /* possible y-resolutions */ + {8, 0}, /* possible depths in gray mode */ + {8, 0}, /* possible depths in color mode */ + + SANE_FIX (0.0), /* Start of scan area in mm (x) */ + SANE_FIX (13.0), /* Start of scan area in mm (y) */ + SANE_FIX (200.0), /* Size of scan area in mm (x) */ + SANE_FIX (280.0), /* Size of scan area in mm (y) */ + + SANE_FIX (9.0), /* Start of white strip in mm (y) */ + SANE_FIX (0.0), /* Start of black mark in mm (x) */ + + SANE_FIX (0.0), /* Start of scan area in TA mode in mm (x) */ + SANE_FIX (0.0), /* Start of scan area in TA mode in mm (y) */ + SANE_FIX (100.0), /* Size of scan area in TA mode in mm (x) */ + SANE_FIX (100.0), /* Size of scan area in TA mode in mm (y) */ + + SANE_FIX (0.0), /* Start of white strip in TA mode in mm (y) */ + + 0, 0, 0, /* RGB CCD Line-distance correction in pixel */ + 0, /* CCD distcance for CCD with 6 lines) */ + + COLOR_ORDER_BGR, /* Order of the CCD/CIS colors */ + {0x14, 0x07, 0x14, 0x07, 0x14, 0x07}, /* Default offset/gain */ + {0x157, 0x157, 0x157}, /* Default exposure parameters */ + SANE_FIX (2.0), /* Default gamma value */ + + SANE_TRUE, /* Is this a CIS scanner? */ + GT68XX_FLAG_NO_STOP /* Which flags are needed for this scanner? */ + /* Standard values for unknown scanner */ +}; static GT68xx_Model mustek_2400ta_model = { "mustek-bearpaw-2400-ta", /* Name */ @@ -571,7 +620,7 @@ static GT68xx_Model mustek_scanexpress1248ub_model = { "mustek-scanexpress-1248-ub", /* Name */ "Mustek", /* Device vendor string */ "ScanExpress 1248 UB", /* Device model name */ - "PS1Dfw.usb", /* Name of the firmware file */ + "SBSfw.usb", /* Name of the firmware file */ SANE_FALSE, /* Dynamic allocation flag */ &mustek_gt6816_command_set, /* Command set used by this scanner */ @@ -613,7 +662,7 @@ static GT68xx_Model mustek_scanexpress1248ub_model = { SANE_FIX (2.0), /* Default gamma value */ SANE_TRUE, /* Is this a CIS scanner? */ - GT68XX_FLAG_UNTESTED | GT68XX_FLAG_NO_STOP /* Which flags are needed for this scanner? */ + GT68XX_FLAG_NO_STOP /* Which flags are needed for this scanner? */ /* Completely untested, seems to use gt6816 CIS, details unknown */ }; @@ -1431,6 +1480,7 @@ static GT68xx_Model visioneer_onetouch_7300_model = { static GT68xx_USB_Device_Entry gt68xx_usb_device_list[] = { + {0x10000, 0x10000, &unknown_model}, /* used for yet unknown scanners */ {0x055f, 0x0218, &mustek_2400ta_model}, {0x055f, 0x0219, &mustek_2400taplus_model}, {0x055f, 0x021c, &mustek_1200cuplus_model}, diff --git a/backend/gt68xx_low.h b/backend/gt68xx_low.h index 50195ad4e..e4ef434cc 100644 --- a/backend/gt68xx_low.h +++ b/backend/gt68xx_low.h @@ -496,6 +496,7 @@ struct GT68xx_Device size_t read_bytes_in_buffer; size_t read_bytes_left; SANE_Byte gray_mode_color; + SANE_Bool manual_selection; #ifdef USE_FORK Shm_Channel *shm_channel; pid_t reader_pid; diff --git a/backend/gt68xx_shm_channel.c b/backend/gt68xx_shm_channel.c index e477b573f..bca742502 100644 --- a/backend/gt68xx_shm_channel.c +++ b/backend/gt68xx_shm_channel.c @@ -54,6 +54,14 @@ #include #include +#ifndef SHM_R +#define SHM_R 0 +#endif + +#ifndef SHM_W +#define SHM_W 0 +#endif + /** Shared memory channel. * */ diff --git a/doc/descriptions/gt68xx.desc b/doc/descriptions/gt68xx.desc index b1877361f..44c1fd100 100644 --- a/doc/descriptions/gt68xx.desc +++ b/doc/descriptions/gt68xx.desc @@ -1,5 +1,5 @@ :backend "gt68xx" -:version "1.0-62" +:version "1.0-63" :manpage "sane-gt68xx" :url "http://www.meier-geinitz.de/sane/gt68xx-backend/" :comment "Only the USB scanners mentioned below are supported. For other Mustek BearPaws, look at the Plustek and the MA-1509 backend." @@ -215,8 +215,8 @@ :model "ScanExpress 1248 UB" :interface "USB" -:status :untested -:comment "Is detected now but is completely untested. Please contact me if you own such a device." +:status :basic +:comment "Woeks but image quality is not perfect yet (stripes). Please contact me if you want to help fixing that." :model "ScanExpress A3 USB" :interface "USB" diff --git a/doc/gt68xx/gt68xx.CHANGES b/doc/gt68xx/gt68xx.CHANGES index 6015f9d93..f3eabc12a 100644 --- a/doc/gt68xx/gt68xx.CHANGES +++ b/doc/gt68xx/gt68xx.CHANGES @@ -1,5 +1,13 @@ gt68xx.CHANGES -*-text-*- +V 1.0.63 (2004-09-03) + +* Fixed firmware name for Mustek 1248 UB. Changed status to basic. Removed + "unsupported" warning. +* Added workaround for shared memory compilation problem on Windows. +* It's now possible to add a new vendor/product id line to gt68xx.conf to test + yet unsupported scanners without changing the source code. + V 1.0.62 (2004-08-08) * Added detection for Mustek ScanExpress 1248 UB. It's untested however and I diff --git a/doc/sane-gt68xx.man b/doc/sane-gt68xx.man index eb58d743c..ef7d0c369 100644 --- a/doc/sane-gt68xx.man +++ b/doc/sane-gt68xx.man @@ -1,4 +1,4 @@ -.TH sane-gt68xx 5 "4 Apr 2004" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy" +.TH sane-gt68xx 5 "3 Sep 2004" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy" .IX sane-gt68xx .SH NAME sane-gt68xx \- SANE backend for GT-68XX based USB flatbed scanners @@ -61,10 +61,16 @@ Mustek BearPaw 2448 CS Plus .br Mustek BearPaw 2448 TA Plus .br +Mustek Plug-n-Scan 2400 M +.br +Plug-n-Scan 2400 MT +.br Mustek ScanExpress A3 USB .br Mustek ScanExpress 1200 UB Plus .br +Mustek ScanExpress 1248 UB +.br Mustek ScanExpress 2400 USB .br Mustek ScanMagic 1200 UB Plus @@ -109,6 +115,11 @@ the USB vendor and device ids (e.g. from or syslog) to me. Even if the scanner's name is only slightly different from the models mentioned above, please let me know. .PP +If you own a scanner that isn't detected by the gt68xx backend but has a GT-6801 +or GT-6816 chipset, you can try to add it to the backend. Have a look at the +following web page: +.I http://www.meier-geinitz.de/sane/gt68xx-backend/adding.html +.PP .SH KERNEL ISSUES If libusb-0.1.6 or later is installed, this section can be skipped. The scanner should be found by sane-find-scanner without further actions. For