Thread: [Gpsbabel-misc] USB Problems with Ubuntu - workaround
Brought to you by:
robertl
From: Andrew S. <and...@pa...> - 2007-08-13 09:10:52
|
Hi there, Having brought up the USB problem with the Ubuntu 7.04 kernel 2.6.20, I now have a workaround for the next Ubuntu version due out in October. This is quoted from the Ubuntu bug report, which is quoted in turn from the SANE mailing list: > CONFIG_USB_SUSPEND, a Linux kernel option that makes the USB layer > automatically put USB devices to suspend state when they're not in > use, has exposed a number of bugs in pretty much all the USB > scanners. > > Upon being suspended, the scanners will usually do an unplug/plug > cycle instead of going into the suspended state - what really happens > in most cases is that the scanner resets himself, loosing its settings > and sometimes its firmware. Some scanners may react differently, > exposing more hardware bugs (eg. their USB interface may crash). > > Starting with Linux 2.6.22, two things have happened: > - a blacklist for the autosuspend feature, in which a lot of scanners > are being added, mainly by Oliver Neukum from what I've seen, has been > added. As of 2.6.22, the blacklist only has 2 or 3 entries IIRC, and > is already greatly expanded in Greg KH's git tree - so this will make > it into 2.6.23. This blacklist alone is obviously not going to cut it; > we've got rid of the scanner kernel module because it was painful to > keep it up to date and to update it on user's machine every time we > needed to add a USB ID. This blacklist is just the same thing. > > - a sysfs attribute has been added to USB devices that allows turning > off the USB autosuspend feature on a per-device basis. This attribute > can be found under /sys/bus/usb/devices/*/power/level. > > By doing echo on > /sys/bus/usb/devices/<device id>/power/level, it is > possible to disable the USB autosuspend feature (and wake the scanner > up if it's suspended). > > By doing echo suspend > /sys/bus/usb/devices/<device id>/power/level, > it is possible to force a device into suspend mode (and it won't be > waken up automatically). > > By doing echo auto > /sys/bus/usb/devices/<device id>/power/level, the > default behaviour of automatically suspending the device can be > restored. > > So, as of a few minutes ago, the udev rules generated by sane-desc > include a new RUN rule that will disable the USB autosuspend feature > for all the scanners we know. > > That's the end of "black scans" as long as you run a kernel >= 2.6.22 > and this sysfs interface doesn't change :-) > I have been through the SANE CVS to find the udev rule that they've added. It is: RUN+="/bin/sh -c 'test -e /sys/$env{DEVPATH}/power/level && echo on > /sys/$env{DEVPATH}/power/level'" All I need to do now is wait for the next Ubuntu with kernel >= 2.6.22. Hope that helps a few others. Andrew |
From: Robert L. <rob...@gp...> - 2007-08-15 03:23:17
|
Hi, Andrew. > Having brought up the USB problem with the Ubuntu 7.04 kernel 2.6.20, I now have a workaround for the next Ubuntu version due out in October. Wow. That's pretty nutty. It's not at all obvious that this is applicable to GPSBabel. If you can confirm this solves the problem with Debian/Ubuntu's broken USB, I'd be glad to paste this into our OS/tips folder. Thanx, RJL |
From: Greg F. <gre...@ie...> - 2007-08-15 18:17:46
Attachments:
garmin_gps.c
|
Robert Lipe a écrit : > > > On 8/15/07, *Greg FABRE* wrote: > > Robert Lipe a écrit : > > Wow. That's pretty nutty. It's not at all obvious that this is > > applicable to GPSBabel. If you can confirm this solves the problem > > with Debian/Ubuntu's broken USB, I'd be glad to paste this into our > > OS/tips folder. > > Can you add too the kernel patch for garmin I sent to the list last > month ? > > > Send me links to packages from vendors containing version info and I'll > see what we can > do. I don't know what is a "package" or a "vendor", but attached is the patch. Just need to replace the same file in a 2.6 kernel and rebuild it. -- ----------------- iero dot org ----------------- Des naifs ne savaient pas que c'etait impossible, alors ils l'ont fait. ------------------------------------------------ http://www.iero.org |
From: Hamish <ham...@ya...> - 2007-08-16 02:26:56
|
Greg FABRE wrote: > > I don't know what is a "package" or a "vendor", but attached is the > patch. Just need to replace the same file in a 2.6 kernel and rebuild > it. Rather than sending the entire file, it is preferable to send patches in unidiff form, so the changes, filename, and original version are obvious: diff -u /usr/src/linux/2.6.xx/originalfile.c newfile.c > patch.diff Hamish |
From: Greg F. <gre...@ie...> - 2007-08-16 07:38:15
Attachments:
garmin_gps-patch.diff
|
Le Jeu 16 août 2007 04:26, Hamish a écrit : > Greg FABRE wrote: > >> >> I don't know what is a "package" or a "vendor", but attached is the >> patch. Just need to replace the same file in a 2.6 kernel and rebuild it. >> > > > Rather than sending the entire file, it is preferable to send patches in > unidiff form, so the changes, filename, and original version are obvious: > > diff -u /usr/src/linux/2.6.xx/originalfile.c newfile.c > patch.diff > No problem, here it is ! Here is the patch. I used /usr/src/linux/ instead of /usr/src/linux-x.y.z/ because it's the same patch for every recent 2.6 kernel. This patch has been tested with 2.6.22-r1 and garmin CSx 60. This version (0.31) is already released on http://sourceforge.net/projects/garmin-gps/ and announced on the LKML 15 days ago (August, 3). Have a nice day, Greg. -- Des naifs ne savaient pas que c'etait impossible. Alors ils l'ont fait. Mail from anaa.iero.org |
From: Patrick O. <Pat...@gm...> - 2007-08-28 20:31:05
|
On Mon, 2007-08-13 at 21:10 +1200, Andrew Simpson wrote: > Hi there, > > Having brought up the USB problem with the Ubuntu 7.04 kernel 2.6.20, I now have a workaround for the next Ubuntu version due out in October. > > This is quoted from the Ubuntu bug report, which is quoted in turn from the SANE mailing list: > > > CONFIG_USB_SUSPEND, a Linux kernel option that makes the USB layer > > automatically put USB devices to suspend state when they're not in > > use, has exposed a number of bugs in pretty much all the USB > > scanners. > > > > Upon being suspended, the scanners will usually do an unplug/plug > > cycle instead of going into the suspended state - what really happens > > in most cases is that the scanner resets himself, loosing its settings > > and sometimes its firmware. Some scanners may react differently, > > exposing more hardware bugs (eg. their USB interface may crash). > > > > Starting with Linux 2.6.22, two things have happened: [...] > By doing echo on > /sys/bus/usb/devices/<device id>/power/level, it is > possible to disable the USB autosuspend feature (and wake the scanner > up if it's suspended). I'm on Debian with a 2.6.21 kernel from Debian backports, which also has CONFIG_USB_SUSPEND=y, leading to the gpsbabel usb: communication problem. There's no power/level attribute in that kernel; searching a bit around I found that a value of 0 disables autosuspend. So I tried a udev rule for the GPSMap 60Csx like this: # cat /etc/udev/rules.d/51-garmin.rules SYSFS{idVendor}=="091e", SYSFS{idProduct}=="0003", MODE="666", RUN="/bin/sh -c 'echo $env{DEVPATH} >/tmp/udef.log; (test -e /sys/$env{DEVPATH}/power/level && echo on > /sys/$env{DEVPATH}/power/level) || (test -e /sys/$env{DEVPATH}/power/autosuspend && echo 0 > /sys/$env{DEVPATH}/power/autosuspend'" Despite udev_log="high" in /etc/udev/udev.conf and restarting udev the rule did not have the desired effect: I see that it is read, but nothing in the syslog indicates that it is used and the /tmp/udev.log file (which I just added for debugging) is not created. If there are any udev experts around I'd be happy to take some advice how to improve the rule. In the meantime I have used another workaround which worked for me: $ while true; do sleep 1; lsusb; done Starting this before plugging the GPS in keeps it active and then gpsbabel usb: works. -- Bye, Patrick Ohly -- Pat...@gm... http://www.estamos.de/ |