[sane-devel] Visioneer 9450 added

Andyz Smith andyzsmith at yahoo.com
Thu Sep 10 02:45:34 UTC 2009


Hi All

Working from libsane Ubuntu (Karmic(1.0.20)) I have fixed several problems related to the Visioneer 9450 scanner.

Please see my notes below about "avision.c"

Other Notes:

Best Modes:
150, 300 dpi
Grey, Color

Document Feeder works.

Some resolutions are buggy.  Like in the 180 - 299 range.  Hangs the scanner, only sometimes.
High resolutions time - out and hang sometimes.  I went up to 600 dpi color and it work sometimes.


BEGIN "avision.c"

ln 914
The Visioneer 9450 is in here but either somebody didn't test it or there are different version of the chipset or firmware in different hardware production runs.
    { NULL, NULL,
      0x04a7, 0x0421,
      "Visioneer", "9450",
      AV_ADF_BGR_ORDER_INVERT /* AJS */
    
},


ln 2019
FUNCTION: Avision_Cmd
Not sure this is helping anything, but it is working anyway.
    /* may I vote for the possibility to use C99 ... */
#define min_usb_size 10
#define max_usb_size 512 * 1024 /* or 0x10000, used by AV Windows driver during background raster read, ... ? */ //ajs up max_usb_size to 512

line 3173
FUNCTION Get_Button_Status
Uh yeah.....bad bug for this scanner/firmware/chipset something
static SANE_Status
get_button_status (Avision_Scanner* s)
{
//ajs !!!!!!!!!!!!!!!!!!!!!!!!
return SANE_STATUS_GOOD;
   
ln 4220
FUNCTION: Send_Tune_Scan_Length
uh..bad bug for scanner firmware/chipset you get the idea
static SANE_Status
send_tune_scan_length (Avision_Scanner* s)
{
    return SANE_STATUS_GOOD;
//ajs !!!!!!!!!!!!!!!!!!!!!! 
 
ln 4549
FUNCTION:Set_Calib_Data
Yeah, somebody didn't test this or there are a lot of different chipset/firmwares running around labeled as Visioneer 9450.  I keep looking at the vertically striped output from color scans and it looked MOSTLY like a massive calibration error, not any other gamma/shading whatever whatever.
TO FIX: Visioneer 9450 cannot handle the 3 channel color calibration data in one burst. Only if we are doing 1 channel calibration for gray or lineart or whatever do we send all the data in one burst.  Otherwise we stream the calibration data separately for each color channel.

  memset (&scmd, 0x00, sizeof (scmd));
  scmd.opc = AVISION_SCSI_SEND;
  scmd.datatypecode = send_type;
.......................................................
  out_size = format->pixel_per_line * 2;
 
  /* send data in one command? */
  /* FR: HP5370 reports one-pass, but needs multi (or other format in single) */
  if (format->channels == 1) //ajs ||
//ajs       ( ( (dev->hw->feature_type & AV_ONE_CALIB_CMD) ||
//ajs      ! BIT(format->ability1, 0) ) &&
//ajs     ! (dev->hw->feature_type & AV_MULTI_CALIB_CMD) ) )
    /* one command (most scanners) */
...........................................................
  return SANE_STATUS_GOOD;
}

END "avision.c"



      



More information about the sane-devel mailing list