Hello, what you miss is to also set debug for gl646 code (SANE_DEBUG_GENESYS_GL646=255), then look in debug log the register set written to scanner at each scan during warm up. Then search for differences with the values registers should have, fix/modify the gl646_init_regs_for_warmup() function until there are no -or harmless- differences.
Regards, Stef