Hello, there was a patch (by Luke) recently that allowed warming up to work for the HP2400. The following function in execution path to fix is gl646_search_start_position() . A way to do it is to run the backend with all the debug, and compare this output with what it does under windows. Then correct the function until the picture scanned to locate the start of scanning area matches the one from windows USB log. From time to time I upgrade the document at http://stef.dev.free.fr/sane/genesys with informations on the genesys backend and how to modify it. It explains also how to work with windows USB logs. The next major hurdle one has to overcome for the 2400 if the creation of the slope tables that drive the stepper motor. The HP2300 and MD6471 code uses an 'old' method with some magic constants to generate slope tables matching those in logs, but gl841 based scanners code uses a newer and better function that is based on the start and cruise speed needed. There must also be some register tweaking to do, but this is easy (places testing for a HP2300 will give you hints) to do with a simple compare to windows log.
Regards, Stef