HP4400C / HP4470C Linux driver development

This page shows the current results from Johannes Hub.

Michael Cohen starts the development for few months a go, see Michael's page. I have now updated the sources with the init and the calibration sequence from my scanner. I'm working now on a SANE driver.

The fist alpha version from a SANE driver is done.

Here my collected information's and my current testprogramm hp4470c-0.14a witch use the USB-LIB and here the new version hp4470c-0.14b witch use the scanner module.

I have patched the Windows driver UsbSnoop.sys (0.13) to get only the data, what i need.

Example snoops: Here the snoops from different Windows scan's.

75 dpi gray (210k)


100 dpi gray (678k)


150 dpi gray (616k)


Note that the appropriate usb modules loaded.

Currently the functions that work properly are:
- Scanner front panel buttons - detected correctly. Michael
- Rewind scanner to home position.
- scanner calibration (by some Mainboards)
- scan rectangular preview in gray scale at 300DPI
- save pnm of scanned area.
- Regeditor for investigation (read/write scanner registers)

The current problem is, that the scanner doesn't move by scanning. I used the three snoops to implement the scan procedure.

For using the regeditor, you have to uncomment the line
#define REG_EDIT
in main.c to implement the regeditor.

That is a siple program for load regs, modify them and write it to the scanner. Here a example to printout a help:
Testprogram hp4470c ver. 0.14a
usb_set_debug: Setting debugging level to 30 (on)
usb_find_busses: Skipping non bus directory devices
usb_find_busses: Skipping non bus directory drivers
usb_find_busses: Found 002
usb_find_busses: Found 001
usb_find_devices_on_bus: Found 001 on 001
usb_find_devices_on_bus: Found 002 on 001
usb_find_devices_on_bus: Found 001 on 002
scanning bus 001
device 001 on bus 001 does not match
found device 002 on bus 001 (idVendor 0x3f0 idProduct 0x805)
opening device 002 on bus 001
Device 002 on bus, 001 Vendor 0x3f0 Product 0x805 claimed.

Reg_editor started, type h and enter for help
All inputs in hex
0 - stop moving Stops the mooving
1 - send single reg Write value into the scanner
2 - send double reg Write values into the scanner
3 - read double reg Read double reg from scanner
7 - init 75 dpi gray scan Writes the init sequenze into the scanner(without start the scanning)
9 - send moving seq. Starts the movement/scanning

+/- controls the Lamp intensity Toggle the Lamp intensity
l - load reg arry Load register set into the edit buffer
c - change reg from loaded reg arry
d - dump loaded reg arry
o - open testfile test.pnm
p - move home Send move home sequenz and start them
i - Init scanner (calibration) Make a general init and clibriation
r - Read reg From edit buffer
s - scan preview into file
t - testscan, starts the scan
w - write loaded regs in to scanner

q - quit

Please look into the listings to understand it before you use it!

It is possible to control this programm with a inputfile. Example: hp4470c <testscan

testscan is a textfile with the commands for the programm

Last update Nov. 02, 2004 Johannes Hub