From 6e9c41a892ed0e0da326e0278b3221ce3f5713b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Mon, 6 Oct 2014 14:00:40 +0200 Subject: Initial import of sane-backends version 1.0.24-1.2 --- doc/teco/teco1.txt | 193 ++++++++++++++++++++++++++++++++++++++ doc/teco/teco2.txt | 267 +++++++++++++++++++++++++++++++++++++++++++++++++++++ doc/teco/teco3.txt | 166 +++++++++++++++++++++++++++++++++ 3 files changed, 626 insertions(+) create mode 100644 doc/teco/teco1.txt create mode 100644 doc/teco/teco2.txt create mode 100644 doc/teco/teco3.txt (limited to 'doc/teco') diff --git a/doc/teco/teco1.txt b/doc/teco/teco1.txt new file mode 100644 index 0000000..d555e9e --- /dev/null +++ b/doc/teco/teco1.txt @@ -0,0 +1,193 @@ + + BACKEND TECO1 + + + +Relisys RELI 2412 (no ADF, no transparency adapter) +single pass scanner - 300*1200 dpi - 8.5*14 +Inquiry: + 000: 06 00 02 02 30 00 00 10 52 45 4c 49 53 59 53 20 ....0...RELISYS + 016: 56 4d 33 35 33 30 2b 20 20 20 20 20 20 20 20 20 VM3530+ + 032: 31 2e 30 38 31 2e 30 38 02 00 54 45 43 4f 20 56 1.081.08..TECO V + 048: 4d 33 35 33 41 M353A +Inquiry page 0x82 + 000: 06 82 00 12 11 54 45 43 4f 20 56 4d 33 35 33 41 .....TECO VM353A + 016: 20 56 31 2e 30 36 V1.06 + +AVEC Colour 2412 +three pass scanner - 300*600 dpi - 8.5*14 + 000: 06 00 02 02 30 00 00 10 20 20 20 20 20 20 20 20 ....0... + 016: 49 6d 61 67 65 20 53 63 61 6e 6e 65 72 20 20 20 Image Scanner + 032: 31 2e 30 38 31 2e 30 38 02 00 54 45 43 4f 20 56 1.081.08..TECO V + 048: 4d 33 35 32 41 M352A + +Avec Color Office 2400 (no ADF, no transparency adapter) +three pass scanner - 300*600 dpi - 8.5*14 +Inquiry: + 000: 06 00 02 02 30 00 00 10 20 20 20 20 20 20 20 20 ....0... + 016: 49 6d 61 67 65 20 53 63 61 6e 6e 65 72 20 20 20 Image Scanner + 032: 32 2e 30 34 32 2e 30 34 02 00 54 45 43 4f 20 56 2.042.04..TECO V + 048: 4d 33 35 32 30 M3520 +Inquiry page 0x82 + 000: 06 82 00 12 11 54 45 43 4f 20 56 4d 33 35 32 30 .....TECO VM3520 + 016: 20 56 32 2e 30 34 V2.04 + +RELI 4830 (no ADF, with transparency adapter) + 000: 06 00 02 02 30 00 00 10 52 45 4c 49 53 59 53 20 ....0...RELISYS + 016: 52 45 4c 49 20 34 38 33 30 20 20 20 20 20 20 20 RELI 4830 + 032: 31 2e 30 33 31 2e 30 33 02 00 54 45 43 4f 20 56 1.031.03..TECO V + 048: 4d 34 35 34 32 M4542 +Inquiry page 0x82 + 000: 06 82 00 12 11 54 45 43 4f 20 56 4d 34 35 34 32 .....TECO VM4542 + 016: 20 56 31 2e 30 33 V1.03 + +Dextra DF-600P - VM3510 + 000: 06 00 02 02 24 00 00 10 44 46 2D 36 30 30 4D 20 ....$...DF-600M + 016: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 + 032: 31 2E 31 37 31 2E 31 37 02 1.171.17. + + +/*--------------------------------------------------------------------------*/ + +SCSI commands supported by the RELISYS VM3530+: + +TEST UNIT READY +00 00 00 00 00 00 + +REQ SENSE +03 00 00 00 12 00 + +VENDOR-09 +09 00 00 78 00 00 + 3-4 = length of data to receive. Always 30720 bytes. + Probably 12 lines of calibration at 300dpi. + 8.5*300*12=30600 + +VENDOR-0E (?) +0E 00 00 00 00 00 + Always follows VENDOR-09 command + +INQUIRY: +12 00 00 00 35 00 +12 01 82 00 21 00 + standard inquiry + 52 bytes - appears to never change + 32-39: firmware version + 42-52: real scanner name + + page 0x82 (vendor specific) - real scanner name with version + 0-3 = page header + 4 = string length + 5-21 = real scanner name with version + +MODE SELECT +15 10 00 00 18 00 + always sends: + 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 01 + 03 06 02 00 00 01 00 00 + + +SCAN +1B 00 00 00 00 00 + +SET WINDOW +24 00 00 00 00 00 00 00 63 00 +Total length is 99 + 07 = length (99-8 = 91) + 10-11 = X Resolution + 12-13 = Y resolution + 14-17 = X top left corner + 18-21 = Y top left corner + 22-25 = width (size in inches * 300) + 26-29 = length (size in inches * 300) + 31 = 0x80 ? + 33 = scan mode + 0x00 = black & white + 0x02 = grayscale + 0x05 = color + 34 = bit depth? - invariants, always 8 + 36 = dither pattern - only for B&W + 0x00 = line art + 0x01 = 2 X 2 + 0x02 = 3 X 3 + 0x03 = 4 X 4 Bayer + 0x04 = 4 X 4 Smooth + 0x05 = 8 X 8 Bayer + 0x06 = 8 X 8 Smooth + 0x07 = 8 X 8 Horizontal + 0x08 = 8 X 8 Vertical + 37 = + 0x80 = RIF (VM353A only?) + 63 = calibration? + 0x00 yes + 0x02 no + 81 = ??? transparency adapter + 0x00 no + 0x01 yes + 93 = + 0x80 = ? (seems to activate a contrast value on VM353A) + + 37, 55, 57, 59, 61, 65, 67, 69, 71, 73, 75, 77, 79 = 0x80 + 85, 89, 93, 97 = 0xff + +READ +28 00 00 00 00 00 00 00 3E 00 + 6-8 = length + +SEND +2A 00 03 00 00 02 00 04 00 00 + 2 = data type code + 0x03 = gamma - 4*256 bytes + +GET DATA BUFFER STATUS +34 01 00 00 00 00 00 00 12 00 + 1 = bit 1 is wait + 7-8 allocation length + + returned buffer is 0x10 bytes long. + 0-2 = additional length (0x10-3 = 0x0D) + 3 = reserved(?) + 8 = ? + 9-11 = filled data buffer + 12-13 = number of lines (constant during a scan) + 14-15 = bytes per line (constant during a scan) + + +/*--------------------------------------------------------------------------*/ + +Command sequence +(simplified, since the TWAIN driver seems to be quite stupid) + +Get some info: + INQUIRY + INQUIRY page 0x82 + +Setup the scan: + TUR + MODE SELECT + SET WINDOWS + GET BUFFER STATUS + VENDOR-09 + VENDOR-0E + SEND(10) + SET WINDOWS (same as the first one) + SCAN + +loop until all data read: + GET BUFFER STATUS + READ(10) if any data available + +park the CCD: + SET WINDOWS + SCAN + +/*--------------------------------------------------------------------------*/ + +The vendor specific command 0x09 and 0x0e are issued by the windows driver to the AVEC 2400, but the scanner rejects them. + +/*--------------------------------------------------------------------------*/ + +The Dextra DF600-P is a VM3510. It's older than the other scanner and +is a little more primitive. The driver recognizes its scsi id and fake +a more evolved one. The scan sequence is also simplified. The rest is +identical. diff --git a/doc/teco/teco2.txt b/doc/teco/teco2.txt new file mode 100644 index 0000000..5b64a83 --- /dev/null +++ b/doc/teco/teco2.txt @@ -0,0 +1,267 @@ + + BACKEND TECO2 + +INQUIRY + +TECO VM3564 (1) +000: 06 00 02 02 43 00 00 10 52 45 4c 49 53 59 53 20 ....C...RELISYS +016: 41 56 45 43 20 49 49 20 53 33 20 20 20 20 20 20 AVEC II S3 +032: 31 2e 30 37 31 2e 30 37 00 01 54 45 43 4f 20 56 1.071.07..TECO V +048: 4d 33 35 36 34 20 00 01 01 2c 00 01 02 58 09 f6 M3564 ...,...X.. +064: 0d af 01 2c 00 08 01 00 ...,.... + +TECO VM3564 (2) +000: 06 00 02 02 43 00 00 10 52 45 4c 49 53 59 53 20 ....C...RELISYS +016: 41 56 45 43 20 49 49 20 53 33 20 20 20 20 20 20 AVEC II S3 +032: 31 2e 30 39 31 2e 30 39 00 01 54 45 43 4f 20 56 1.091.09..TECO V +048: 4d 33 35 36 34 20 00 01 01 2c 00 01 02 58 09 f6 M3564 ...,...X.. +064: 0d af 01 2c 00 08 01 00 ...,.... + +TECO VM356A (1) +000: 06 00 02 02 43 00 00 00 52 45 4c 49 53 59 53 20 ....C...RELISYS +016: 41 50 4f 4c 4c 4f 20 45 78 70 72 65 73 73 20 33 APOLLO Express 3 +032: 31 2e 30 33 31 2e 30 33 00 01 54 45 43 4f 20 56 1.031.03..TECO V +048: 4d 33 35 36 41 20 00 01 01 2c 00 01 02 58 09 f6 M356A ...,...X.. +064: 0d af 01 2c 00 08 01 00 ...,.... + +TECO VM356A (2) +000: 06 00 02 02 43 00 00 10 50 72 69 6d 61 78 20 20 ....C...Primax +016: 4a 65 77 65 6c 20 20 20 20 20 20 20 20 20 20 20 Jewel +032: 31 2e 30 31 31 2e 30 31 00 01 54 45 43 4f 20 56 1.011.01..TECO V +048: 4d 33 35 36 41 20 00 01 01 2c 00 01 02 58 09 f6 M356A ...,...X.. +064: 0d af 01 2c 00 08 01 00 ...,.... + +TECO VM3575 +000: 06 00 02 02 43 00 00 00 20 20 20 20 20 20 20 20 ....C... +016: 46 6c 61 74 62 65 64 20 53 63 61 6e 6e 65 72 20 Flatbed Scanner +032: 31 2e 30 33 31 2e 30 33 00 01 54 45 43 4f 20 56 1.031.03..TECO V +048: 4d 33 35 37 35 20 00 01 01 2c 00 01 02 58 09 f6 M3575 ...,...X.. +064: 0d af 01 2c 00 08 01 00 ...,.... + +TECO VM656A +000: 06 00 02 02 43 00 00 00 52 45 4c 49 53 59 53 20 ....C...RELISYS +016: 41 50 4f 4c 4c 4f 20 45 78 70 72 65 73 73 20 36 APOLLO Express 6 +032: 31 2e 30 33 31 2e 30 33 00 01 54 45 43 4f 20 56 1.031.03..TECO V +048: 4d 36 35 36 41 00 01 01 2c 00 01 02 58 09 f6 0d M656A...,...X... +064: af 01 2c 00 08 01 00 00 ..,..... + +TECO VM6575 +000: 06 00 02 02 43 00 00 10 52 45 4c 49 53 59 53 20 ....C...RELISYS +016: 53 43 4f 52 50 49 4f 20 50 72 6f 20 20 20 20 20 SCORPIO Pro +032: 31 2e 30 31 31 2e 30 31 00 01 54 45 43 4f 20 56 1.011.01..TECO V +048: 4d 36 35 37 35 20 00 01 01 2c 00 01 02 58 09 f6 M6575 ...,...X.. +064: 0d af 01 2c 00 08 01 00 ...,.... + +TECO VM6586 +000: 06 00 02 02 43 00 00 00 20 20 20 20 20 20 20 20 ....C... +016: 46 6c 61 74 62 65 64 20 53 63 61 6e 6e 65 72 20 Flatbed Scanner +032: 33 2e 30 31 33 2e 30 31 00 01 54 45 43 4f 20 56 3.013.01..TECO V +048: 4d 36 35 38 36 20 00 01 01 2c 00 01 02 58 09 f6 M6586 ...,...X.. +064: 0d af 01 2c 00 08 01 00 ...,.... + +/*--------------------------------------------------------------------------*/ + + + +SCSI Commands supported by the TECO VM3575: + + + +REQUEST SENSE +03 00 00 00 12 00 + + +VENDOR-06 +??? +Receives 4 bytes of data + + +VENDOR-9 +Get calibration lines - 12 lines + 2 = ? + 0x00 color scan + 0x01 grayscal scan + 0x02 b&w scan + Returns 6 bytes per pixel, probably 2 bytes per color in little endian order. (2550 * 6 = 15300) + +VENDOR-0C +??? Unsupported? + + +VENDOR-0E +Set calibration. Apparently the line is computed from the calibration lines. It is not an average though. + + +INQUIRY +12 00 00 00 48 00 + standard inquiry + 72 bytes + 32-39: firmware version + 42-52: real scanner name + 54-55: min X resolution + 56-57: max X resolution + 58-59: min Y resolution + 60-61: max Y resolution + 62-63: scan area length + 64-65: scan area width + 66-67: unit for scan area (eg 300th of inch) + + eg if 62-63 = 2550 and 66-67 = 300, the length is 2550/300=8.5 inches. + + +SCAN +1B 00 00 00 00 00 + + +VENDOR-1C +1c 00 00 00 00 00 +(Same opcode as RECEIVE DIAGNOSTIC RESULTS) + sends 4 bytes of data. + + +SET WINDOW +24 00 00 00 00 00 00 00 35 00 (VM3575) +24 00 00 00 00 00 00 00 38 00 (VM6586) + +Total length is + 07 = length + VM3575 53-8 = 45 + VM6586 56-8 = 48 + VM3552 69-8 = 61 + 10-11 = X Resolution + 12-13 = Y resolution + 14-17 = X top left corner + 18-21 = Y top left corner + 22-25 = width (size in inches * 300) + 26-29 = length (size in inches * 300) + 31 = 0x80 ? + 33 = scan mode + 0x00 = black & white + 0x02 = grayscale + 0x05 = color + 34 = bit depth? - invariant, always 8 + 36 = (vm6586 only ?) halftone pattern ? + 1 = type 1 dithering + 37 = + 0x80 = RIF? + 48 = color channel to use + if scan mode is 0 or 2: + 0x00 = red + 0x01 = green + 0x02 = blue + if scan mode is 05 -> ignored + TWAIN leaves 0x02 + 50 = ? + + VM6585 only: + 52-53 = size of a line expected? + 54-55 = number of lines expected? + + +READ +28 00 00 00 00 19 00 1f 0e 00 + 5 = number of lines to read + 7-8 = buffer size. + Always number of lines to read * size of a line. + 0x2000 appears to be the upper limit + + +SEND +2A 00 03 00 00 04 00 0C 00 00 + 2 = data type code + 0x03 = gamma + 4-5 = data type qualifier (?) + 6-8 = length (0xc00 = 3276 = 3*2^10) + or: + 5-6: length of each gamma + 7-8: length of all gamma + + +OBJECT POSITION +31 00 00 00 00 00 00 00 00 00 +Park the CCD. + + +GET DATA BUFFER STATUS +34 01 00 00 00 00 00 00 12 00 + + 1 = bit 1 is wait + 7-8 = allocation length + + returned buffer is 0x12 bytes long. + 00 00 0f 00 00 00 00 14 00 00 00 80 1b 6c 09 f6 05 05 + 0-2 = additional length (0x12-3 = 0x0F) + 7 = ? always 0x14 + 11 = bit 7 - (maybe) scanner is ready to send data + 12-13 = number of lines (constant during a scan) + 14-15 = bytes per line (constant during a scan) + 16-17 = garbage (the command only returns 0x10 bytes) + + +/*--------------------------------------------------------------------------*/ + +Scan sequence + +Get some info: + INQUIRY + +Setup the scan: + REQUEST SENSE + TUR + SET WINDOWS + GET BUFFER STATUS + VENDOR-0C + VENDOR-09 (read calibration) + VENDOR-0E (send new calibration) + REQUEST SENSE + SEND(10) + SET WINDOWS (same as the first one) + COMMAND 06 + RECEIVE DIAGNOSTIC RESULTS + SCAN + GET BUFFER STATUS + +loop until all data read: + READ(10) + +park the CCD: + OBJECT POSITION + +/*--------------------------------------------------------------------------*/ + +calibration + +TECO VM3575 reads 12 lines of calibration +TECO VM656A reads 8 lines of calibration +TECO VM6586 ?? + +Algorithms used (text from Alex Wulms): +The old algorithm was based on the assumption that the calibration value needs +to be an offset, to go from the value obtained during input to the average +value (0x800). + +E.g., if the input value is 0x800, the calibration value must be 0x800 (0x1000 +- 0x800). +Likewise, if the input value is 0x700, the calibration value must be 0x900 +(0x1000 - 0x700) +And if the input value is 0x600, the calibration value must be 0xA00 + +The new algorithm is based on the assumption that the calibration needs to be +a multiplication factor, to compensate for the too strong or too weak pixel +in the sensor. Again, we want to obtain the average value (approximately +0x800) for every pixel read during calibration. + +E.g., if the input value is 0x800, the calibration value must be 0x800 +(0x800*0x800 / 0x800). +Likewise, if the input value is 0x700, the calibration value must be 0x924 +(0x800*0x800 / 0x700). +And if the input value is 0x600, the calibration value must 0xAAA (0x800*0x800 +/ 0x600) + +Though, carefull comparison with scans done under windows has shown that the +factor is slightly different from 0x800*0x800(=0x400000) but in stead it +seems to be approximately 0x40302f (which would mean that the average value +is approximately 0x803 in stead of 0x800). + +Hope this is clarifies the new algorithm. + diff --git a/doc/teco/teco3.txt b/doc/teco/teco3.txt new file mode 100644 index 0000000..bc6391f --- /dev/null +++ b/doc/teco/teco3.txt @@ -0,0 +1,166 @@ + + BACKEND TECO3 + + +This scanner capabilities are in the middle of the 3520 and 3575, +sharing features of both. Hence a third backend. + + +PIOTECH 3024 (TECO Scorpio/Taurus Infinity VM3552): + 000: 06 00 02 02 43 00 00 10 20 20 20 20 20 20 20 20 ....C... + 016: 46 6c 61 74 2d 62 65 64 20 73 63 61 6e 6e 65 72 Flat-bed scanner + 032: 35 2e 30 38 35 2e 30 38 03 02 54 45 43 4f 20 56 5.085.08..TECO V + 048: 4d 33 35 35 32 20 00 01 01 2c 00 01 04 b0 09 f6 M3552 ...,...... + 064: 10 68 01 2c 00 00 00 01 .h.,.... + +RELISYS INFINiTY SCORPIO: + 000: 06 00 02 02 43 00 00 10 52 45 4c 49 53 59 53 20 ....C...RELISYS + 016: 53 63 6f 72 70 69 6f 20 20 20 20 20 20 20 20 20 Scorpio + 032: 31 2e 30 34 31 2e 30 34 03 02 54 45 43 4f 20 56 1.041.04..TECO V + 048: 4d 33 35 35 32 20 00 01 01 2c 00 01 04 b0 09 f6 M3552 ...,...... + 064: 10 68 01 2c 00 00 00 00 .h.,.... + +Trust Imagery 2400SP: + 000: 06 00 02 02 43 00 00 10 41 61 73 68 69 6d 61 20 ....C...Aashima + 016: 49 4d 41 47 45 52 59 20 32 34 30 30 53 50 20 20 IMAGERY 2400SP + 032: 31 2e 30 30 31 2e 30 30 03 02 54 45 43 4f 20 56 1.001.00..TECO V + 048: 4d 33 35 35 32 20 00 01 01 2c 00 01 04 b0 09 f6 M3552 ...,...... + 064: 10 68 01 2c 00 00 00 01 .h.,.... + +Trust Imagery 4800 SP +: + 000: 06 00 02 02 43 00 00 10 41 61 73 68 69 6d 61 20 ....C...Aashima + 016: 49 4d 41 47 45 52 59 20 34 38 30 30 53 50 20 2b IMAGERY 4800SP + + 032: 35 2e 30 38 35 2e 30 38 03 02 54 45 43 4f 20 56 5.085.08..TECO V + 048: 4d 33 35 35 32 20 00 01 01 2c 00 01 04 b0 09 f6 M3552 ...,...... + 064: 10 68 01 2c 00 00 00 00 .h.,.... + +/*--------------------------------------------------------------------------*/ + +SCSI commands supported by the RELISYS VM3530+: + +TEST UNIT READY +00 00 00 00 00 00 + +REQ SENSE +03 00 00 00 12 00 + +VENDOR-09 +09 00 00 78 00 00 + 3-4 = length of data to receive. Always 30720 bytes. + Probably 12 lines of calibration at 300dpi. + 8.5*300*12=30600 + +VENDOR-0E (?) +0E 00 00 00 00 00 + Always follows VENDOR-09 command + +INQUIRY: +12 00 00 00 35 00 + standard inquiry + 52 bytes - appears to never change + 32-39: firmware version + 42-52: real scanner name + +SCAN +1B 00 00 00 00 00 + +SET WINDOW +24 00 00 00 00 00 00 00 45 00 (3552) + +Total length is 99 + 07 = length (99-8 = 91) + 10-11 = X Resolution + 12-13 = Y resolution + 14-17 = X top left corner + 18-21 = Y top left corner + 22-25 = width (size in inches * 300) + 26-29 = length (size in inches * 300) + 31 = 0x80 ? + 33 = scan mode + 0x00 = black & white + 0x02 = grayscale + 0x05 = color + 34 = bit depth? - invariants, always 8 + 36 = dither pattern - only for B&W + 0x00 = line art + 0x01 = 2 X 2 + 0x02 = 3 X 3 + 0x03 = 4 X 4 Bayer + 0x04 = 4 X 4 Smooth + 0x05 = 8 X 8 Bayer + 0x06 = 8 X 8 Smooth + 0x07 = 8 X 8 Horizontal + 0x08 = 8 X 8 Vertical + 37 = + 0x80 = RIF ? + 48 = color channel to use + if scan mode is 0 or 2: + 0x00 = red + 0x01 = green + 0x02 = blue + if scan mode is 05 -> ignored + TWAIN leaves 0x02 + 50: calibration + 00 = yes + 02 = no + 53, 57, 61, 65: 0xff + + +READ +28 00 00 00 00 00 00 00 3E 00 + 6-8 = length + +SEND +2A 00 03 00 00 02 00 04 00 00 + 2 = data type code + 0x03 = gamma - 4*256 bytes + +OBJECT POSITION +31 00 00 00 00 00 00 00 00 00 +Park the CCD. + +GET DATA BUFFER STATUS +34 01 00 00 00 00 00 00 12 00 + 1 = bit 1 is wait + 7-8 allocation length + + returned buffer is 0x10 bytes long. + 0-2 = additional length (0x10-3 = 0x0D) + 3 = reserved(?) + 6-8 = scanner memory (with no RAM, it is 32KB on the VM3552) + 9-11 = filled data buffer + 12-13 = number of lines (constant during a scan) + 14-15 = bytes per line (constant during a scan) + 16 = ? + 17 = in color mode, 0x07 seems to means to the colors are shifted + and given by rasters. 0x00 seems to mean that there is no + color shifting and that each pixel is coded by 3 consecutive + bytes. + +/*--------------------------------------------------------------------------*/ + +Command sequence +(simplified, since the TWAIN driver seems to be quite stupid) + +Get some info: + INQUIRY + +Setup the scan: + TUR + SET WINDOWS + GET BUFFER STATUS + VENDOR-09 + VENDOR-0E + SEND(10) + SET WINDOWS (same as the first one) + SCAN + +loop until all data read: + GET BUFFER STATUS + READ(10) if any data available + +park the CCD: + OBJECT POSITION + +/*--------------------------------------------------------------------------*/ + -- cgit v1.2.3