[sane-devel] Error: Canon Pixma MG7550 hangs

Kevin Martin ktmdms at gmail.com
Tue Mar 3 22:17:11 UTC 2015


On 03/03/2015 03:49 PM, Troels Thomsen wrote:
> Hi Martin,
> 
> Good work Martin!
> Any missing commands would be a smoking gun imho.
> 
> Rolf, are you following this thread ?
> 
> /Troels
> 
> 
> 
> 2015-02-24 23:09 GMT+01:00 Martin <martin.gu at intergga.ch <mailto:martin.gu at intergga.ch>>:
> 
>     Troels
> 
>     I don't have access to another computer. But I have installed OpenSUSE 13.2
>     and the result is the same as on 13.1.
>     I did not (yet) test with short delays between the commands, but I compared
>     the communication of the Canon software scangear on Windows with the one of
>     SANE:
> 
>     At start ScanGear sends the following (linebreaks added by me):
>     <?xml version="1.0" encoding="utf-8" ?>
>     <cmd xmlns:ivec="http://www.canon.com/ns/cmd/2008/07/common/"
>     xmlns:vcn="http://www.canon.com/ns/cmd/2008/07/canon/">
>     Â  <ivec:contents><ivec:operation>VendorCmd</ivec:operation>
>     Â  Â  <ivec:param_set servicetype="scan">
>     Â  Â  Â  <ivec:jobID> </ivec:jobID>
>     Â  Â  Â  <vcn:ijoperation>ModeShift</vcn:ijoperation>
>     Â  Â  Â  <vcn:ijmode>1</vcn:ijmode>
>     Â  Â  </ivec:param_set>
>     Â  </ivec:contents>
>     </cmd>
> 
>     response:
>     <?xml version="1.0" encoding="utf-8" ?>
>     <cmd xmlns:ivec="http://www.canon.com/ns/cmd/2008/07/common/"
>     xmlns:vcn="http://www.canon.com/ns/cmd/2008/07/canon/">
>     Â  <ivec:contents>
>     Â  Â  <ivec:operation>VendorCmdResponse</ivec:operation>
>     Â  Â  <ivec:param_set servicetype="scan">
>     Â  Â  Â  <ivec:response>OK</ivec:response>
>     Â  Â  Â  <ivec:response_detail/>
>     Â  Â  Â  <vcn:ijoperation>ModeShiftResponse</vcn:ijoperation>
>     Â  Â  Â  <vcn:ijresponse>OK</vcn:ijresponse>
>     Â  Â  Â  <vcn:ijresponse_detail/>
>     Â  Â  </ivec:param_set>
>     Â  </ivec:contents>
>     </cmd>
> 
>     ScanGear starts a scan with the following command sequece:
>     <?xml version="1.0" encoding="utf-8" ?>
>     <cmd xmlns:ivec="http://www.canon.com/ns/cmd/2008/07/common/">
>     Â  <ivec:contents>
>     Â  Â  <ivec:operation>StartJob</ivec:operation>
>     Â  Â  <ivec:param_set servicetype="scan">
>     Â  Â  Â  <ivec:jobID>00000001</ivec:jobID>
>     Â  Â  Â  <ivec:bidi>1</ivec:bidi>
>     Â  Â  </ivec:param_set>
>     Â  </ivec:contents>
>     </cmd>
> 
>     response:
>     <?xml version="1.0" encoding="utf-8" ?>
>     <cmd xmlns:ivec="http://www.canon.com/ns/cmd/2008/07/common/">
>     Â  <ivec:contents>
>     Â  Â  <ivec:operation>StartJobResponse</ivec:operation>
>     Â  Â  <ivec:param_set servicetype="scan">
>     Â  Â  Â  <ivec:response>OK</ivec:response>
>     Â  Â  Â  <ivec:response_detail/>
>     Â  Â  Â  <ivec:jobID>00000001</ivec:jobID>
>     Â  Â  </ivec:param_set>
>     Â  </ivec:contents>
>     </cmd>
> 
>     command:
>     <?xml version="1.0" encoding="utf-8" ?>
>     <cmd xmlns:ivec="http://www.canon.com/ns/cmd/2008/07/common/"
>     xmlns:vcn="http://www.canon.com/ns/cmd/2008/07/canon/">
>     Â  <ivec:contents>
>     Â  Â  <ivec:operation>VendorCmd</ivec:operation>
>     Â  Â  <ivec:param_set servicetype="scan">
>     Â  Â  <ivec:jobID>00000001</ivec:jobID>
>     Â  Â  <vcn:ijoperation>ModeShift</vcn:ijoperation>
>     Â  Â  <vcn:ijmode>1</vcn:ijmode>
>     Â  Â  </ivec:param_set>
>     Â  </ivec:contents>
>     </cmd>
> 
>     response: some data
> 
>     command:
>     <?xml version="1.0" encoding="utf-8" ?>
>     <cmd xmlns:ivec="http://www.canon.com/ns/cmd/2008/07/common/">
>     Â  <ivec:contents>
>     Â  Â  <ivec:operation>EndJob</ivec:operation>
>     Â  Â  <ivec:param_set servicetype="scan">
>     Â  Â  Â  <ivec:jobID>00000001</ivec:jobID>
>     Â  Â  </ivec:param_set>
>     Â  </ivec:contents>
>     </cmd>
> 
>     response:
>     <?xml version="1.0" encoding="utf-8" ?>
>     <cmd xmlns:ivec="http://www.canon.com/ns/cmd/2008/07/common/">
>     Â  <ivec:contents>
>     Â  Â  <ivec:operation>EndJobResponse</ivec:operation>
>     Â  Â  <ivec:param_set servicetype="scan">
>     Â  Â  Â  <ivec:response>OK</ivec:response>
>     Â  Â  Â  <ivec:response_detail/>
>     Â  Â  Â  <ivec:jobID>00000001</ivec:jobID>
>     Â  Â  </ivec:param_set>
>     Â  </ivec:contents>
>     </cmd>
> 
>     SANE does not send the VendorCmd. Do you think incorporating the missing
>     command sequence could solve the issue? I do not want to damage my MG7550 with
>     wrong commands, that's why I am reluctant to experiment with code-changes.
> 
>     Many thanks for your help
>     Martin
> 
>     Am Sonntag, 11. Januar 2015, 14.52:06 schrieb Troels Thomsen:
>     > Martin,
>     > ad 1)
>     > I'm sorry I have no understanding of the protocol what so ever, and have
>     > spent max ½ hour in the code, to see what the patches I was sent, did.
>     > ad 2)
>     > I agree , this IS strange ...
>     > ad 3)
>     > I agree , this IS strange ...
>     > ad 4)
>     > Frankly, you have so many strange phenomenons going on, so ... you could
>     > try....
>     > (not that this a satisfactory solution at all...)
>     >
>     > At this point, I think I would try to test it on another computer, to see
>     > if all these really strange phenomenons (e.g. 'enabling Ethernet on the
>     > device, makes usb scanning work' ) somehow is related to hardware or the
>     > Linux installation. Just to make sure....
>     >
>     > Sorry, its not much help.
>     >
>     > /Troels
>     >
>     > 2015-01-07 23:26 GMT+01:00 Martin <martin.gu at intergga.ch <mailto:martin.gu at intergga.ch>>:
>     > > Troels
>     > >
>     > > I agree with you, we have to be careful on the test methodology.
>     > > My knowledge in c is limited since I wrote my last c-program about 20
>     > > years
>     > > ago. But I could try.
>     > > But before trying to modify the source code I have some questions:
>     > >
>     > > 1) Did you analyze the USB-calls of the Canon-software on windows and
>     > > compare
>     > > them to the SANE-sequence? What is the meaning of the first sequece 55 53
>     > > 42
>     > > 43 F0 36 04 0B...?
>     > >
>     > > 2) What is the difference between scanimage and xsane? Is it only the
>     > > timing?
>     > >
>     > > 3) What is the difference between xsane and the gimp plugin? Is it only
>     > > the
>     > > timing? Why does the gimp plugin only work after xsane?
>     > >
>     > > 4) Would it be worth while to make a few tests with the printer mode, i.e.
>     > > to
>     > > try to start xsane after printing?
>     > >
>     > > Martin
>     > >
>     > > > > If the scanner does not work on a USB port it is quite unlikely to
>     > > > > work
>     > > > > over the network: the bjnp network code just carries the USB exchange
>     > > > > over IP.
>     > > >
>     > > > I mostly agree, though Rolf asks specifically for the USB trace, because
>     > > > (as I understood) it differs slightly from the IP traces I had already
>     > > > submitted.
>     > > > (fix usb first , then patch it for IP, if need be)
>     > > >
>     > > > One advice:
>     > > > Be very paranoid on your test methodology. I looked stupid a couple of
>     > > > times (sorry Rolf!), because I was fooled by the USB interface and/or
>     > > > the
>     > > > Canon firmware.
>     > > > When testing a new patch, I tried some settings in random (DPI ,
>     > > > colour/black-n-white etc) and reported the success/failures.
>     > > > BUT the thing is, that the Canon MF8230 firmware can go into bad-mode,
>     > >
>     > > when
>     > >
>     > > > it has received some strange commands, and the following scans might
>     > > > work
>     > > > slightly strange for that reason. I was even fooled by the phenomenon,
>     > >
>     > > that
>     > >
>     > > > scanning a 1 by 1 cm square works, but scanning the whole A4 didn't.
>     > >
>     > > (Well
>     > >
>     > > > ... there WERE some differences between what worked through USB and IP
>     > > > at
>     > > > this point in time. I'm guessing it was something timing-critical, but I
>     > > > never dissected that last patch from Rolf which fixed it)
>     > > >
>     > > > So I started rebooting the scanner whenever I was in doubt.
>     > > > (disconnect/connect the USB interface plus move Cannon unit from to
>     > > > "printer mode" and back to "scanner mode" was normally enough)
>     > > >
>     > > >
>     > > > So what do we do? / What is status?
>     > > >
>     > > > Since scanning CAN work , one could argue the back-end DOES send all the
>     > > > necessary+correct commands to the printer.
>     > > > If timing is the critical parameter (backed by the fact that something
>     > > > as
>     > > > stupid as enabling IP on the printer-side, suddenly makes it work now
>     > > > and
>     > > > then), maybe we should try to insert an ugly time-delay before every USB
>     > > > write? If that changes anything to the better, we can start to hunt down
>     > > > where it is really necessary, and hopefully find a nicer approach
>     > > > afterwards?
>     > > >
>     > > > Martin, are you comfortable with pulling the code out of the GIT
>     > > > repository, compile , install and experiment with inserting delays?
>     > > > I think there is something called "SANE interface USB" sanei_usb.c/h.
>     > >
>     > > That
>     > >
>     > > > was maybe a place to start.
>     > > >
>     > > > Louis, what is the odds of success for this approach?
>     > > >
>     > > > :-)
>     > > >
>     > > > /Troels
>     > > >
>     > > > 2015-01-03 20:43 GMT+01:00 Martin <martin.gu at intergga.ch <mailto:martin.gu at intergga.ch>>:
>     > > > > Am Samstag, 3. Januar 2015, 11.16:10 schrieb Louis Lagendijk:
>     > > > > > On Fri, 2015-01-02 <tel:2015-01-02> at 22:59 +0100, Martin wrote:
>     > > > > > > Hi Troels
>     > > > > > >
>     > > > > > > > *Is it USB3 (on the computer)?
>     > > > > > >
>     > > > > > > no, it is USB2
>     > > > > > >
>     > > > > > > > *Do you have access to another computer, where you can try it -
>     > >
>     > > Does
>     > >
>     > > > > it
>     > > > >
>     > > > > > > > work excactly the same strange way ... ?
>     > > > > > >
>     > > > > > > No,I don't have access to another computer. But I have also
>     > >
>     > > Windows 7
>     > >
>     > > > > > > installed. With Windows 7 and the Canon-software it works OK.
>     > > > > > >
>     > > > > > > > *Does unit have ethernet connection / can you try that way?
>     > > > > > >
>     > > > > > > Yes. With the ethernet connection the printer works. Thus the
>     > > > >
>     > > > > IP-address
>     > > > >
>     > > > > > > below is correct.
>     > > > > > > But I cannot access the scanner.
>     > > > > > >
>     > > > > > >Â  Â  Â xsane pixma:MG7500_192.168.0.3
>     > > > > > >
>     > > > > > > results in the error message "illegal argument". Same thing with
>     > > > > > >
>     > > > > > >Â  Â  Â scanimage --help -d bnjp://192.168.0.3:8612 <http://192.168.0.3:8612>
>     > > > > >
>     > > > > > Hi Martin
>     > > > > > If the scanner does not work on a USB port it is quite unlikely to
>     > >
>     > > work
>     > >
>     > > > > > over the network: the bjnp network code just carries the USB
>     > > > > > exchange
>     > > > > > over IP.
>     > > > > > Anyhow, you can find the name with scanimage -L (but make sure that
>     > >
>     > > port
>     > >
>     > > > > > 8612 is not blocked by a firewall (see the man-page for sane-pixma
>     > > > > > in
>     > > > > > the latest sources from GIT. you need to enable port 8612 for both
>     > > > > > incoming and outgoing traffic.
>     > > > > >
>     > > > > > Louis
>     > > > >
>     > > > > Hi Louis
>     > > > >
>     > > > > The necessary ports on the firewall are open, yet scanimage -L does
>     > > > > not
>     > > > > find
>     > > > > the scanner.
>     > > > >
>     > > > > But this lead to another discovery:
>     > > > > I enabled LAN on the MG7550. And although the unit is connected via
>     > >
>     > > USB 2
>     > >
>     > > > > xsane sometimes works?! But with LAN disabled xsane never works
>     > > > > without
>     > > > > prior
>     > > > > scanimage -T. And once xsane or scanimage -T failed all succeeding
>     > >
>     > > calls
>     > >
>     > > > > fail
>     > > > > until the scanner is switched off and on again.
>     > > > >
>     > > > > Log of xsane working:
>     > > > > [sanei_debug] Setting debug level of pixma to 21.
>     > > > > [pixma] pixma is compiled with pthread support.
>     > > > > [pixma] pixma version 0.17.13
>     > > > > [pixma] pixma_collect_devices() found Canon PIXMA MG7500 Series at
>     > > > > libusb:001:007
>     > > > > [pixma] pixma_find_scanners() found 1 devices
>     > > > > [pixma] pixma_collect_devices() found Canon PIXMA MG7500 Series at
>     > > > > libusb:001:007
>     > > > > [pixma] pixma_open(): Canon PIXMA MG7500 Series
>     > > > > [pixma] *mp150_open***** This is a generation 4 scanner.  *****
>     > > > > [pixma] [pixma] Reader task id=139772037314304 (threaded)
>     > > > > Reader task started
>     > > > > [pixma]
>     > > > > [pixma] pixma_scan(): start
>     > > > > [pixma]Â  Â line_size=4605 image_size=4895115 channels=3 depth=8
>     > > > > [pixma]Â  Â dpi=300x300 offset=(0,0) dimension=1535x1063
>     > > > > [pixma]Â  Â gamma_table=0x1f201e0 source=0
>     > > > > [pixma]Â  Â threshold=127 threshold_curve=0
>     > > > > [pixma]Â  Â ADF page count: 0
>     > > > > [pixma] OUTÂ  T=58.770 len=288
>     > > > > [pixma]Â  00000000:3c 3f 78 6d 6c 20 76 65Â  72 73 69 6f 6e 3d 22 31
>     > > > > [pixma]  00000010:2e 30 22 20 65 6e 63 6f  64 69 6e 67 3d 22 75 74
>     > > > > ...
>     > > > > Log of xsane not working:
>     > > > > pixma] pixma_collect_devices() found Canon PIXMA MG7500 Series at
>     > > > > libusb:001:008
>     > > > > [pixma] pixma_find_scanners() found 1 devices
>     > > > > [pixma] pixma_collect_devices() found Canon PIXMA MG7500 Series at
>     > > > > libusb:001:008
>     > > > > [pixma] pixma_open(): Canon PIXMA MG7500 Series
>     > > > > [pixma] *mp150_open***** This is a generation 4 scanner.  *****
>     > > > > [pixma] INTR T=1.249 len=32
>     > > > > [pixma]Â  00000000:00 00 00 01 00 00 00 00Â  00 00 00 00 00 00 00 00
>     > > > > [pixma]Â  00000010:00 00 00 00 00 00 00 00Â  00 00 00 00 00 00 00 00
>     > > > > [pixma]
>     > > > > [pixma] Sending time: '15/01/03 15:32'
>     > > > > [pixma] OUTÂ  T=1.250 len=36
>     > > > > [pixma]Â  00000000:eb 80 00 00 00 00 00 00Â  00 00 00 00 00 00 00 14
>     > > > > [pixma]Â  00000010:31 35 2f 30 31 2f 30 33Â  20 31 35 3a 33 32 00 00
>     > > > > [pixma]Â  00000020:00 00 00 53
>     > > > > [pixma]
>     > > > > [pixma] INÂ  Â T=21.251 len=-9
>     > > > > [pixma]Â  Â ERROR: ETIMEDOUT
>     > > > > [pixma]
>     > > > > ...
>     > > > >
>     > > > > Martin
>     > > > >
>     > > > >
>     > > > > --
>     > > > > sane-devel mailing list: sane-devel at lists.alioth.debian.org <mailto:sane-devel at lists.alioth.debian.org>
>     > > > > http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/sane-devel
>     > > > > Unsubscribe: Send mail with subject "unsubscribe your_password"
>     > > > >
>     > > > >Â  Â  Â  Â  Â  Â  Â  to sane-devel-request at lists.alioth.debian.org <mailto:sane-devel-request at lists.alioth.debian.org>
>     > >
>     > > --
>     > > sane-devel mailing list: sane-devel at lists.alioth.debian.org <mailto:sane-devel at lists.alioth.debian.org>
>     > > http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/sane-devel
>     > > Unsubscribe: Send mail with subject "unsubscribe your_password"
>     > >
>     > >Â  Â  Â  Â  Â  Â  Â  to sane-devel-request at lists.alioth.debian.org <mailto:sane-devel-request at lists.alioth.debian.org>
> 
> 
> 
> 

I have this same problem with a Pixma MX712 where it seems to "hang" until a hard restart (pulling the plug) *but, the funny thing
is that Windows Scan on Windows 8 will work even when the Canon software and scanimage, xsane, and simple-scan won't!  My Canon is
*only connected via lan so I'll see about capturing what Windows Scan is sending to the scanner against what the Canon software is
so it can be compared.

Kevin



More information about the sane-devel mailing list