I have this USB scanner from my dad that was made back in 2002, that apparently uses an old all-in-one GL646USB chip from Genesys to control the stepper motor, CCD sensor and provide some GPIO pins.
Here's the datasheet: gl646usb_r14.pdf (Kindly have a look at page 21, section 7).
Now in order to make its 32-bit driver work, I had to bring up a VM with Windows XP installed; Because apparently when this thing came out there were no x64 CPUs around, and the manufacturer has since gone defunct. No dice there.
I'd like to start writing a driver for this thing, first to control the GPIO pins and maybe control the stepper (I'm not sure I'll be capable of controlling the CCD sensor.)
Unfortunately, I have not yet worked on any project involving USBs at a low-level, and my professors from back in college didn't have a lot of experience with them either.
What do I need in order to communicate with the device over USB and send commands in it?
Is there a simple Linux driver source code or a demo, in order to understand the mechanism of USB communication?
Will I be able to somehow reverse-engineer the Windows driver, or am I better off writing it from scratch?