[sane-devel] LG Scanworks 600MB (Model FU668D)

Jean-Louis jelot-sane at jelot.it
Sat Jul 26 13:14:42 UTC 2008

Hi, sorry for my bad english :)

I own a "LG Scanworks 600MB (Model FU668D)", I've collected some
information about it and this is time to reassemble my information.

*cat /proc/bus/usb/devices*

T:  Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  4 Spd=12  MxCh= 0
D:  Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0461 ProdID=0346 Rev= 0.01
S:  Manufacturer=Primax
S:  Product=USB Scanner
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 48mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=10(unk. ) Sub=01 Prot=00 Driver=(none)
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

*sane-find-scanner -v -v*

<device descriptor of 0x0461/0x0346 at 004:004 (Primax USB Scanner)>
bLength               18
bDescriptorType       1
bcdUSB                1.00
bDeviceClass          0
bDeviceSubClass       0
bDeviceProtocol       0
bMaxPacketSize0       8
idVendor              0x0461
idProduct             0x0346
bcdDevice             0.01
iManufacturer         2 (Primax)
iProduct              1 (USB Scanner)
iSerialNumber         0 ()
bNumConfigurations    1
  <configuration 0>
  bLength              9
  bDescriptorType      2
  wTotalLength         32
  bNumInterfaces       1
  bConfigurationValue  1
  iConfiguration       0 ()
  bmAttributes         64 (Self-powered)
  MaxPower             48 mA
   <interface 0>
    <altsetting 0>
    bLength            9
    bDescriptorType    4
    bInterfaceNumber   0
    bAlternateSetting  0
    bNumEndpoints      2
    bInterfaceClass    16
    bInterfaceSubClass 1
    bInterfaceProtocol 0
    iInterface         0 ()
     <endpoint 0>
     bLength           7
     bDescriptorType   5
     bEndpointAddress  0x81 (in 0x01)
     bmAttributes      2 (bulk)
     wMaxPacketSize    64
     bInterval         0 ms
     bRefresh          0
     bSynchAddress     0
     <endpoint 1>
     bLength           7
     bDescriptorType   5
     bEndpointAddress  0x02 (out 0x02)
     bmAttributes      2 (bulk)
     wMaxPacketSize    64
     bInterval         0 ms
     bRefresh          0
     bSynchAddress     0

In the LG Scanworks 600MB ther'is:

1) "EICI10440A E5FC1-000 0025"

    This is the ASIC. I don't have enough information about it.
    Ther'is driver for E3 and E4 chipset, but the E5 family seems to be

2) "ESIC ES8100QB F3A310025"

    This is the AFE.
    At this page: <http://bertrik.sikken.nl/hp3300c/index.html> bertrik
    wrote that seems to be compatible with "Wolfson Micro WM8143".
    Ther'is more backends that use this WM8143.
    Datasheet for WM8143-10 and WM8143-12 is disponible in the web.

3) "EICI132300"

    This is the IEEE-1284 to USB bridge.
    This chip convert USB command in Parallel command.
    I don't have datasheet for this chipset, but i think that this bridge
    works very similar to the Genesys GL640USB (datasheet disponible).
    Ther'is some backend with "Parallel to Usb Protocol" that use
    GL640USB... Niash, U12 and Canon630u (others?).

4) "EliteMT M11B416256A"

    256 K x 16 DRAM. If is useful, datasheet disponible.

5) "ULN2003A"

    Seven Darlington Arrays. If is useful, datasheet disponible.

Other unsupported scanner maybe similar if not identical to the
LG ScanWorks 600MB

*Device Descriptor OK, ASIC OK:*

Primax Colorado 2400u

Visioneer 6200 USB
(I'm cc this email to the author of this post... Hi Kyle :D )

*Device Descriptor OK:*

Memorex Maxx 6136u

Visioneer Onetouch 8100

In this post is reported E5 chipset for Onetouch 8100:

*Device Descriptor: bcdDevice 0.01 vs 0.00*

Pacific Image Electronics (PIE) Primefilm 1800u

*Device Descriptor: bcdDevice 0.01 vs 0.04*

Microtek ScanMaker 3630

Visioneer Onetouch 4400
Visioneer Primascan Colorado 2600u
Primax Primascan Colorado 2600u
Memorex 6142u
Tiny FU661E

In this post is reported E5 chipset for Memorex 6142u:

I would try to write backend for the LG Scanworks 600MB.

If I don't make a mistake, the correct steps is:

1) Snoop and log traffic between the host and the scanner.
2) Upload log on public website
3) Analyze log and:
    a) try to decode USB transfer protocol.
    b) try to find read-only, write-only and read-write registers.
    c) try to find recurrent pattern.
    d) try to identify steps-zone on the log (e.g. initialization, 
       configuratioin, etc...).
    e) try to decode meaning of registers and its bit.
    f) post progress news in the lists.
4) Try to write sane backend for LG Scanworks 600MB and other E5-based
    scanners where the goal is, obviously, include this backend into

At this time, I don't have windows machine for snooping usb traffic, but
as soon as possible, I would like snooping it with notebook of my

P.S. I don't have experience whit scanner and sane internals, but I hope
to make some progress ;)

More information about the sane-devel mailing list