Hi Matthias, I prepared a 2nd patch for pixma_mp150.c. This should fix the timeout problem and sets "--button-1", "--button-2" and "--target". This patch is based on the first patch.
Please test the patched version with enabled debug messages: 'export SANE_DEBUG_PIXMA=21' and test both buttons ("BLACK" and "COLOR") with 'scanimage -A'. Please test *all* buttons, also the ones on the touch screen and if there is a signal if the cover is opened and closed. You can see any response / signal in these lines: [pixma] INTR T=1.432 len=32 [pixma] 00000000:00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 "COLOR" button pressed:^^ [pixma] 00000010:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Cheers, Rolf Am 06.02.2013 10:43, schrieb Matthias Thon: > Hi Rolf, > > The MG6250 has a small Display. All Buttons are normaly invisible. The > device only illuminate the buttons, which can be used in the actual > context. > > 3 Buttons are under the display. 5 Buttons are for up, down, right, > left and in the middle OK. Then we have a "home" and a "return" Button. > And at last two buttons for copy,scan in "BLACK" or "COLOR". > > For example: I press the right button under the display (Scan). After > that the device illuminates the home, return, black, color and the left > and middle buttons under the display. > > Which button we use for scanbd is equal. > > If i start scanimage -A, sane sending time and the trying to read 8 > byte. This read failed (Resource temporarily unavailable. After that i > can press different buttons, but no reaction by scanimage. > > > After pressing "COLOR" or "BLACK" the device shows "Verarbeitung.... > Bitte warten" and waits for about 1 Minute. Seems that the device wating > for transfer scan data. But the scan-motor doesn't do anything. > > regards matthias > > > 2013/2/6 Rolf Bensch <rolf at bensch-online.de <mailto:rolf at > bensch-online.de>> > > Hi Matthias, > > Super! Please send me the same logs for all buttons, one by one. Then > I'll prepare the next patch. By now you can ignore the timeout. > > Some programs use "--button-1" to scan a page and "--button-2" to end a > scan session. For my scanner I'm using all buttons for "--button-1" > except button "PDF End" for "--button-2". And secondary the individual > button code is in "--target". > > I like to implement the buttons of your scanner in the same way. Which > button do you like to connect to "--button-2"? > > Cheers, > Rolf > > > Am 05.02.2013 23:13, schrieb Matthias Thon: > > Hi Rolf, > > here the dump with the higher Debug-Levels. I interrupt after pressing > > the "COLOR" Scan-Button and the second timout. > > > > regards Matthias > > > > Width of scan-area. > > -y auto|0..297.011mm [297.011] > > Height of scan-area. > > Buttons: > > --button-update > > Update button state > > [sanei_usb] sanei_usb_read_int: trying to read 64 bytes > > [sanei_usb] sanei_usb_read_int: wanted 64 bytes, got 32 bytes > > [sanei_usb] 000 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 > > ................ > > [sanei_usb] 010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > ................ > > [pixma] INTR T=1.432 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: '13/02/05 23:10' > > [sanei_usb] sanei_usb_write_bulk: trying to write 36 bytes > > [sanei_usb] 000 EB 80 00 00 00 00 00 00 00 00 00 00 00 00 00 14 > > ................ > > [sanei_usb] 010 31 33 2F 30 32 2F 30 35 20 32 33 3A 31 30 00 00 > 13/02/05 > > 23:10.. > > [sanei_usb] 020 00 00 00 57 > > ...W > > [sanei_usb] sanei_usb_write_bulk: wanted 36 bytes, wrote 36 bytes > > [pixma] OUT T=1.433 len=36 > > [pixma] 00000000:eb 80 00 00 00 00 00 00 00 00 00 00 00 00 00 14 > > [pixma] 00000010:31 33 2f 30 32 2f 30 35 20 32 33 3a 31 30 00 00 > > [pixma] 00000020:00 00 00 57 > > [pixma] > > [sanei_usb] sanei_usb_read_bulk: trying to read 8 bytes > > [sanei_usb] sanei_usb_read_bulk: read failed: Resource temporarily > > unavailable > > [pixma] IN T=21.436 len=-9 > > [pixma] ERROR: ETIMEDOUT > > [pixma] > > [pixma] No response yet. Timed out in 8 sec. > > [sanei_usb] sanei_usb_read_bulk: trying to read 8 bytes > > ^C > > > > > > > > 2013/2/5 Rolf Bensch <rolf at bensch-online.de > <mailto:rolf at bensch-online.de> <mailto:rolf at bensch-online.de > <mailto:rolf at bensch-online.de>>> > > > > Hi Matthias, > > > > Sorry for my last email relating to USB and LAN. I mixed the > emails up > > in my daily digest. Please set me to cc if you send a response to > > the list. > > > > Anyway, it seems that your scanner answers the USB interrupt > request and > > the post process data handling sticks in setting your > scanner's clock. > > > > So I need the debug info with 'export SANE_DEBUG_PIXMA=21' and > > 'export SANE_DEBUG_SANEI_USB=255' to fix this issue. > > > > By now I'm only interested in the lines between "Buttons:" and > > "Extras:". > > > > Cheers, > > Rolf > > > > > > > > Am 05.02.2013 18:19, schrieb Matthias Thon: > > > Hi Rolf, > > > > > > now hopefully the right debug information. Now after starting > > scanimage > > > -A , it waits for the button information. I try different > buttons > > > (black, color) Changed before from JPEG to PDF or TIFF but > scanimage > > > waits till timeout. See the output. > > > > > > regards Matthias > > > > > > > > > > > > root at > matze-Satellite-C660:/usr/local/src/sane-backends-git/sane-backends# > > scanimage > > > -V > > > scanimage (sane-backends) 1.0.24git; backend version 1.0.24 > > > > > > root at > matze-Satellite-C660:/usr/local/src/sane-backends-git/sane-backends# > > scanimage > > > -A > > > [sanei_debug] Setting debug level of pixma to 7. > > > [pixma] pixma is compiled without pthread support. > > > [pixma] pixma version 0.17.0 > > > [pixma] pixma_collect_devices() found Canon PIXMA MG6200 at > > libusb:002:005 > > > [pixma] sanei_bjnp_find_devices: > > > [pixma] eth0 is IPv4 capable, sending broadcast, socket = 3 > > > [pixma] wlan0 is IPv4 capable, sending broadcast, socket = 4 > > > [pixma] eth0 is IPv6 capable, sending broadcast, socket = 5 > > > [pixma] wlan0 is IPv6 capable, sending broadcast, socket = 6 > > > [pixma] pixma_find_scanners() found 1 devices > > > [pixma] pixma_collect_devices() found Canon PIXMA MG6200 at > > libusb:002:005 > > > [pixma] sanei_bjnp_find_devices: > > > [pixma] eth0 is IPv4 capable, sending broadcast, socket = 3 > > > [pixma] wlan0 is IPv4 capable, sending broadcast, socket = 4 > > > [pixma] eth0 is IPv6 capable, sending broadcast, socket = 5 > > > [pixma] wlan0 is IPv6 capable, sending broadcast, socket = 6 > > > [pixma] pixma_open(): Canon PIXMA MG6200 > > > > > > All options specific to device `pixma:04A91755_14B4F6': > > > Scan mode: > > > --resolution auto||75|150|300|600|1200|2400|4800dpi [75] > > > Sets the resolution of the scanned image. > > > --mode auto|Color|Gray|Lineart [Color] > > > Selects the scan mode (e.g., lineart, monochrome, or > color). > > > --source Flatbed [Flatbed] > > > Selects the scan source (such as a document-feeder). Set > > source > > > before > > > mode and resolution. Resets mode and resolution to auto > > values. > > > --button-controlled[=(yes|no)] [no] > > > When enabled, scan process will not start > immediately. To > > proceed, > > > press "SCAN" button (for MP150) or "COLOR" button > (for other > > > models). > > > To cancel, press "GRAY" button. > > > Gamma: > > > --custom-gamma[=(auto|yes|no)] [yes] > > > Determines whether a builtin or a custom gamma-table > > should be used. > > > --gamma-table auto|0..255,... > > > Gamma-correction table. In color mode this option > equally > > > affects the > > > red, green, and blue channels simultaneously (i.e., > it is an > > > intensity > > > gamma table). > > > --gamma auto|0.299988..5 [2.2] > > > Changes intensity of midtones > > > Geometry: > > > -l auto|0..216.069mm [0] > > > Top-left x position of scan area. > > > -t auto|0..297.011mm [0] > > > Top-left y position of scan area. > > > -x auto|0..216.069mm [216.069] > > > Width of scan-area. > > > -y auto|0..297.011mm [297.011] > > > Height of scan-area. > > > Buttons: > > > --button-update > > > Update button state > > > [pixma] Sending time: '13/02/05 18:12' > > > [pixma] No response yet. Timed out in 8 sec. > > > [pixma] No response yet. Timed out in 7 sec. > > > [pixma] No response yet. Timed out in 6 sec. > > > [pixma] No response yet. Timed out in 5 sec. > > > [pixma] No response yet. Timed out in 4 sec. > > > [pixma] No response yet. Timed out in 3 sec. > > > [pixma] No response yet. Timed out in 2 sec. > > > [pixma] No response yet. Timed out in 1 sec. > > > [pixma] WARNING: Error in response phase. cmd:eb80 > > > [pixma] If the scanner hangs, reset it and/or unplug the > USB cable. > > > --button-1 <int> [0] [read-only] > > > Button 1 > > > --button-2 <int> [0] [read-only] > > > Button 2 > > > --original <int> [0] [read-only] > > > Type of original to scan > > > --target <int> [0] [read-only] > > > Target operation type > > > Extras: > > > --threshold auto|0..100% (in steps of 1) [inactive] > > > Select minimum-brightness to get a white point > > > --threshold-curve auto|0..127 (in steps of 1) [inactive] > > > Dynamic threshold curve, from light to dark, > normally 50-65 > > > > > > [pixma] pixma_close(): Canon PIXMA MG6200 > > > > > > root at > matze-Satellite-C660:/usr/local/src/sane-backends-git/sane-backends# > > > > > > > > > -------------- next part -------------- --- ./pixma_mp150.c 2013-02-06 12:14:05.000000000 +0100 +++ ../sane-backends/backend/pixma_mp150.c 2013-02-06 12:28:34.000000000 +0100 @@ -910,15 +910,36 @@ return PIXMA_EPROTO; } - /* More than one event can be reported at the same time. */ - if (buf[3] & 1) - send_time (s); - if (buf[9] & 2) - query_status (s); - if (buf[0] & 2) - s->events = PIXMA_EV_BUTTON2 | buf[1] | ((buf[0] & 0xf0) << 4); /* b/w scan */ - if (buf[0] & 1) - s->events = PIXMA_EV_BUTTON1 | buf[1] | ((buf[0] & 0xf0) << 4); /* color scan */ + /* s->event = 0x0boott + * b: button + * oo: original + * tt: target + * poll event with 'scanimage -A' + * */ + if (s->cfg->pid == MG6200_PID) + /* button no. in buf[3] + * target = button no. */ + { + if (buf[3] & 1) + s->events = PIXMA_EV_BUTTON1 | buf[3]; /* color scan */ + else + s->events = PIXMA_EV_BUTTON2 | buf[3]; /* b/w scan */ + } + else + /* button no. in buf[0] + * original in buf[0] + * target in buf[1] */ + { + /* More than one event can be reported at the same time. */ + if (buf[3] & 1) + send_time (s); + if (buf[9] & 2) + query_status (s); + if (buf[0] & 2) + s->events = PIXMA_EV_BUTTON2 | buf[1] | ((buf[0] & 0xf0) << 4); /* b/w scan */ + if (buf[0] & 1) + s->events = PIXMA_EV_BUTTON1 | buf[1] | ((buf[0] & 0xf0) << 4); /* color scan */ + } return 1; }