[sane-devel] Supported Epson Perfection 1260 produces 2 background stripe colours

Olaf Meeuwissen paddy-hack at member.fsf.org
Sat Sep 9 05:38:21 UTC 2017

Hi Julian,

Julian H. Stacey writes:

> Hi Olaf & sane-devel at lists.alioth.debian.org,
>> Hi Julian,
>> Julian H. Stacey writes:
>> > Hi sane-devel at lists.alioth.debian.org
>> >
>> > I have a USB scanner Epson Perfection 1260 (not a printer combo)
>> > half working, using FreeBSD current (3 week old src/ & current
>> > ports/packages) fresh installed sane back end, front end & xsane.
>> >
>> > Example scans here from xsane & scanimage & xscanimage:
>> > 	http://www.berklix.com/~jhs/tmp/epson_perfection_1260/
>> > all with 2 background colours: yellow on left half of page, red on right.
> [...]
>> Maybe the log file from
>>   SANE_DEBUG_PLUSTEK=127 scanimage [your-options-here] > out.pnm 2> log
>> can shed some light on your problem?  Please use [your-options-here] to
>> set a small scan area so we don't get inundated with a multi-MB log file
>> here on the list ;-)
>> Hope this helps,
> Yes, Thanks ! I scanned a half centimetre wide strip which shows the error,
> 	SANE_DEBUG_PLUSTEK=127 scanimage -x200 -y 5  > out.pnm 2> log
> out.pnm is 10K, The log is 170K so for any on a slow net I copied it
> & gzip'ed it to 10K, all here
> http://berklix.eu/~jhs/tmp/epson_perfection_1260/scanimage/1-small/files
> [...]
> I hope the log is useful to someone ?
> I'm reading it with eyes of a newbie, but I see lot of
> 	[plustek] usbDev_ScanEnd(), start=1, park=0
> 	[plustek] We're little-endian!  NatSemi LM983x is big!
> 	[plustek] --> Must swap data!
> line 127:
> /usr/ports/graphics/sane-backends/work/sane-backends-1.0.25/backend/
>   plustek-usbhw.c:    DBG( _DBG_READ, "--> Must swap data!\n" );
> I dont know the code, if one could debug if swapping is happening OK ?

The usb_HostSwap() function that produces those last two debug lines is
simply a query whether swapping is needed.  I'm not familiar with the
backend's code but the bits that use this function seems to be doing the
swapping on a per pixel basis and do so alright on cursory inspection.
At least for plustek-usbcal.c and plustek-usbimg.c.  I'm a lot less sure
about the correctness of swapping in plustek-usbshading.c seeing code
patterns like

  #ifdef SWAP_COARSE     /* sometimes SWAP_FINE */
     if (usb_HostSwap())
       usb_Swap(buf, length)

which seems fishy at best.

> Is it concidence the white paper shows yellow then red exactly halfway
> across the page.

Probably not but I have no idea why it would.

@Gerhard> Any ideas?

Hope this helps,
Olaf Meeuwissen, LPIC-2            FSF Associate Member since 2004-01-27
 GnuPG key: F84A2DD9/B3C0 2F47 EA19 64F4 9F13  F43E B8A4 A88A F84A 2DD9
 Support Free Software                        https://my.fsf.org/donate
 Join the Free Software Foundation              https://my.fsf.org/join

More information about the sane-devel mailing list