Scanner drivers suck

I’ve probably written this before, but most scanner drivers for the Mac are garbage. This includes drivers from the major vendors such as HP, EPSON, and Canon. I’ve been pleased with the drivers from Sysscan for my DocketPORT and the Fujitsu ones are OK. I keep seeing crash reports with my products that clearly point to the scanner drivers. One that came in today looks like:

Thread 0 Crashed:
0   <<00000000>> 	0xffff926c __bigcopy + 300 (cpu_capabilities.h:194)
1   <<00000000>> 	0xffff9188 __bigcopy + 72 (cpu_capabilities.h:194)
2   com.hp.HPScanPro               	0x0379fb54 TwainEvents::SendEvent(TW_IDENTITY*, unsigned long, unsigned short, unsigned short, char*, unsigned short*) + 176 (TwainEvents.cpp:126)
3   com.hp.HPScanPro               	0x0379e320 DS_Entry + 792 (SampleDS.cpp:156)
4   org.twain.dsm                  	0x97f9a7e4 EntryDS(TW_IDENTITY*, TW_IDENTITY*, unsigned long, unsigned short, unsigned short, char*) + 180
5   org.twain.dsm                  	0x97f998b8 DSM_Entry + 456
6   ...gtenterprises.receiptwallet 	0x00014724 -[Scanner aquireNativeXfer:] + 356

What does this mean? It means that ReceiptWallet sent a TWAIN command and TWAIN passed it to the HP Software. HP’s software crashed likely while copying some memory. The thing that gets me about this crash is the crash shows the file name where the crash happened, “SampleDS.cpp”. HP didn’t even bother to rename the Apple sample code. While this may seem like a minor thing, if they overlooked such a minor thing, what else did they overlook?

I had a customer tell me yesterday that he was relieved to see my comments about the HP drivers on my FAQ because he thought he was the only one that had issues with them.

Then I’ve seen EPSON drivers where they incorrectly implemented part of the TWAIN driver; there are 2 choices for scanning, Memory Based and Native Transfer. If you use Native Transfer with some EPSON scanners, you get a yellow background. This is reproducible outside of my application, so I know it isn’t my problem. So I had to implement code for Memory Based transfers which was a pain.

Why, oh why, can’t scanner vendors focus less on they’re “pretty” interfaces (I say that factitiously as the interfaces look like crap) and more on functionality? On the consumer level scanners, how many people play with all the controls? Most don’t, so the driver should just have a scan button, maybe a preview and ability to crop, but anything more than that is overkill and prone to making things more complex.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.