Hello,

        I've started to add values for hp2400 in genesys_devices.c, 
accordingly to some usbsniff logs I received. I have also added a
genesys_repark_head() function that do the same thing than the windows
driver: it moves head forward slightly, then go backward for a long distance,
which eventually parks head.
        Since I haven't the hardware, it is untested. To fix it, you'll have 
to get the registers match the following values (start and end pixel aren't
important since no data is actually scanned):

slope_table0=800 800
fe[0x01]=0x0003
R01=0x00        CCD, disable shading, normal scanning, uncompressed data, DRAM 
4Mx1, shading whole line, disable scan
R02=0x31        auto-go-home enabled, enable moving when buffer full, 
auto-go-home after scan, turn on MOTOR power and phase, one table motor moving, 
motor forward, bipolar: half step, unipolar: half step
R03=0x19        alternated CCD TG function disabled, select dpi deletion 
function, transparency lamp off, lamp POWER on, lamp sleeping on, lamp on 
time=1*64k line period
R04=0x13        color lineart, 8 bits data, frontend type 16 bits, scan color 
type color, frontend B 
R05=0x50        1200 dpi, 14 bits gamma table, disable gamma correction, normal 
gray CIS, 24 clocks/pixel
R06=0x18        PWRBIT on, shading gain=4, normal AFE image capture
R07=0x00        MPU access under command mode, MPU write DRAM under command 
mode, 
R08=0x02        CCD RS rising edge position=2
R09=0x16        CCD RS falling edge position=22
R0a=0x0b        CCD CP rising edge position=11
R0b=0x15        CCD CP falling edge position=21
R10=0x00        
R11=0x00        Red exposure time=0
R12=0x00        
R13=0x00        Green exposure time=0
R14=0x00        
R15=0x00        Blue exposure time=0
R16=0x33        CCD CP & RS low when TG high, forward CCD RGBSEL, inverse CCD 
TG, inverse CCD Clock 1, forward CCD Clock 2, forward CCD CP & RS, disable CCD 
TG position Clock 1/2 signal, disable CCD TG position CP & RS signal
R17=0x08        without dummy line CCD TG type, CCD TG width=8
R18=0x30        TG and clock set to non-Canon CIS style, 2 time CCD clocks 
speed for dummy line, half cycle per pixel for CCD Clock/2, sytem clock for CCD 
Clock/2 delay=0, 1 time CCD Clock speed for capture image
R19=0x2a        dummy exposure time=42
R1a=0x00        CCD Clock rising edge position=0
R1b=0x00        CCD Clock falling edge position=0
R1c=0x00        disable CCD Clock 3, forward CCD Clock 3, Blue channel TG=0, 
Green channel TG=0, Red channel TG=0
R1d=0x02        automatic CCD Clock/2 programming, CCD shoulder width=2
R1e=0x10        watchdog time=1, 0 dummy line
R1f=0x10        SCANFED=16
R20=0x20        BUFSEL=32 2k words
R21=0x02        STEPNO=2
R22=0x10        FWDSTEP=16
R23=0x10        BWDSTEP=16
R24=0x02        FASTNO=2
R25=0x00        
R26=0x00        
R27=0xd4        LINCNT=212
R28=0x01        
R29=0xff        LAMPPWM=511 12 duty
R2c=0x02        
R2d=0x58        DPISET=600 
R2e=0x78        B&W high threshold=120
R2f=0x7f        B&W low threshold=127
R30=0x00        
R31=0x57        start pixel=87 
R32=0x09        
R33=0xb7        end pixel=2487 
R34=0x0c        dummy pixel count=12
R35=0x00        
R36=0x0e        
R37=0x11        maximum word size per line=3601 
R38=0x2e        
R39=0x7e        CCD line period set to 11902 
R3d=0x00        
R3e=0x00        
R3f=0xe8        motor feeding steps write=232 
R50=0x00        frontend read address=0
R51=0x00        frontend write address=0
R52=0x0b        Red low byte AFE data latch=11
R53=0x0f        Red high byte AFE data latch=15
R54=0x13        Green low byte AFE data latch=19
R55=0x17        Green high byte AFE data latch=23
R56=0x03        Blue low byte AFE data latch=3
R57=0x07        Blue high byte AFE data latch=7
R58=0x63        AFE image sampling rising edge=12, AFE image sampling pulse 
width=3, 
R59=0x00        AFE dark voltage sampling rising edge=0, AFE dark voltage 
sampling pulse width=0, 
R5a=0xc1        Wolfson AFE type, select reset level clamp, AFE CDSREF=0, AFE 
RLC=1, 5a inconnu
R5c=0x00        first point of falling edge=0, 
R5d=0x00        second point of falling edge=0, 
R5e=0x00        first point of falling edge=0, 
R5f=0x00        second point of falling edge=0, 
R62=0x00        
R63=0x00        Z2MOD=0
R64=0x00        unipolar motor phase=0
R65=0x3f        unipolar motor phase duty cycle=63/64
R66=0x10        
R67=0x00        GPO=1000
R68=0x31        
R69=0x00        GPO enable=3100
R6a=0x7f        bipolar: half step, unipolar: half stepunipolar motor phase 
duty cycle=63/64
R6b=0x80        fast moving slop steps=128
R6c=0x00        TGTIME=0^2 periods, Z1MOD[18:16]=0, Z2MOD[18:16]=0, 
R6d=0x7f        go home deceleration steps=3^2, stop time (in LPERIOD)=31, 

        You'll have to set SANE_DEBUG_GENESYS to 255 to get log from the
backend. When genesys_repark_head() is finished, the backend will try to do
genesys_warmup_lamp() . However, I haven't touch it for hp2400 yet. From
windows logs, we can see that 2 lines are read at a time, while current code
reads only one. It seems that this warm up also does offset and coarse gain
calibration.

        More usbsniff logs are needed to complete hp2400 support. The log of
a fresh (first) plug of the scanner followed by a preview would be interested.
Then full width scans (but with height kept low to minimize data) at 150, 300,
600 and 1200 dpi will allow us to find how the hp2400 CCD works.
        When using usbsniff, I launch it before plugging the scanner. Then each
time a scan is done, I click on the usbsniff window to give it focus. In the
windows world, that gives a high priority, and ensures that it can log all USB 
packets correctly.

Regards,
        Stef

Reply via email to