Well, what do you know - I plugged the GPS directly into the laptop instead of the hub built into the docking station and it works fine now. I guess I must have moved the cable to the hub while I was rearranging everything else too.

Thanks for the dead on diagnosis!

  Tom Zepf

Dan Streetman wrote:
Oh boy, it's the infamous ENOSPC (-28) error!

I don't think anyone on this list has hit the ENOSPC error yet, that I know of, but I've seen it plenty...

In all cases where I've seen ENOSPC errors, it's a limitation of the EHCI driver. Its current split transaction scheduling algorithm is very limited, and if you have only a few low/fullspeed devices connected to a highspeed huub (and highspeed controller), the EHCI driver can "run out" of places to put periodic transactions (i.e. interrupt or isochronous).

If you have low/fullspeed devices connected to a highspeed hub, try re-connecting them directly to the controller, if possible (or use a fullspeed USB hub, or just "rmmod ehci-hcd"). If that works, you can leave the setup like that, or try patching your kernel with these:

http://marc.theaimsgroup.com/?l=linux-usb-devel&m=113510701427948&w=2
http://marc.theaimsgroup.com/?l=linux-usb-devel&m=113510731024887&w=2
http://marc.theaimsgroup.com/?l=linux-usb-devel&m=113510748810409&w=2

(you need to enable the USB_EHCI_TT_SCHEDULING kernel option). Those patches in slightly modified form should be getting into the kernel "real soon now..." so you could just wait for 'em to show up.


On Tue, 23 May 2006, Tom Zepf wrote:

I recently had a hard disk scratch and had to recreate my javax-usb
development setup. I have a program which communicates w/ a USB
connected GPS.

I have checked and my device nodes are mode 0666, and everything else
seems to work - program finds jar files, properties, etc. But I get a
failure (errno 28) when calling UsbPipe.syncSubmit().

The code snippet looks like:

    /**
     * read some bytes
     */
    private GarminPkt readPkt(String name, UsbPipe usbPipe)
    throws UsbException, IOException {

        // get packet data
        byte[] bytes = new byte[1024];
        if (getVerbose() >= 2) {
            System.err.println(name + ": blocking" + "\n");
        }
        int len = usbPipe.syncSubmit(bytes);

    ...

This all worked before (many times), but I did re-install Linux, java, 
javax-usb, etc. and I wonder if I forgot something.

Any help would be appreciated. Thanks,

  Tom Zepf

The trace looks like:

[hotplug](3) JavaxUsbTopologyUpdater.c.build_device[117] Building device 
/proc/bus/usb/001/001
[hotplug](3) JavaxUsbTopologyUpdater.c.build_device[141] Device is hub with 6 
ports
[hotplug](4) JavaxUsbTopologyUpdater.c.build_device[156] Device speed is 12 Mbps
[hotplug](4) JavaxUsbTopologyUpdater.c.build_config[222] Building config 1
[hotplug](4) JavaxUsbTopologyUpdater.c.build_interface[282] Building interface 0
[hotplug](4) JavaxUsbTopologyUpdater.c.build_endpoint[296] Building endpoint 
0x81
[hotplug](4) JavaxUsbTopologyUpdater.c.build_device[189] Building device 2 
attached to port 2
[hotplug](3) JavaxUsbTopologyUpdater.c.build_device[117] Building device 
/proc/bus/usb/001/002
[hotplug](3) JavaxUsbTopologyUpdater.c.build_device[141] Device is hub with 4 
ports
[hotplug](4) JavaxUsbTopologyUpdater.c.build_device[156] Device speed is 12 Mbps
[hotplug](4) JavaxUsbTopologyUpdater.c.build_config[222] Building config 1
[hotplug](4) JavaxUsbTopologyUpdater.c.build_interface[282] Building interface 0
[hotplug](4) JavaxUsbTopologyUpdater.c.build_endpoint[296] Building endpoint 
0x81
[hotplug](4) JavaxUsbTopologyUpdater.c.build_device[189] Building device 3 
attached to port 0
[hotplug](3) JavaxUsbTopologyUpdater.c.build_device[117] Building device 
/proc/bus/usb/001/003
[hotplug](4) JavaxUsbTopologyUpdater.c.build_device[156] Device speed is 1.5 
Mbps
[hotplug](4) JavaxUsbTopologyUpdater.c.build_config[222] Building config 1
[hotplug](4) JavaxUsbTopologyUpdater.c.build_interface[282] Building interface 0
[hotplug](4) JavaxUsbTopologyUpdater.c.build_endpoint[296] Building endpoint 
0x81
[hotplug](4) JavaxUsbTopologyUpdater.c.build_interface[282] Building interface 1
[hotplug](4) JavaxUsbTopologyUpdater.c.build_endpoint[296] Building endpoint 
0x82
[hotplug](4) JavaxUsbTopologyUpdater.c.build_device[189] Building device 4 
attached to port 1
[hotplug](3) JavaxUsbTopologyUpdater.c.build_device[117] Building device 
/proc/bus/usb/001/004
[hotplug](4) JavaxUsbTopologyUpdater.c.build_device[156] Device speed is 1.5 
Mbps
[hotplug](4) JavaxUsbTopologyUpdater.c.build_config[222] Building config 1
[hotplug](4) JavaxUsbTopologyUpdater.c.build_interface[282] Building interface 0
[hotplug](4) JavaxUsbTopologyUpdater.c.build_endpoint[296] Building endpoint 
0x81
[hotplug](4) JavaxUsbTopologyUpdater.c.build_device[189] Building device 5 
attached to port 2
[hotplug](3) JavaxUsbTopologyUpdater.c.build_device[117] Building device 
/proc/bus/usb/001/005
[hotplug](4) JavaxUsbTopologyUpdater.c.build_device[156] Device speed is 12 Mbps
[hotplug](4) JavaxUsbTopologyUpdater.c.build_config[222] Building config 1
[hotplug](4) JavaxUsbTopologyUpdater.c.build_interface[282] Building interface 0
[hotplug](4) JavaxUsbTopologyUpdater.c.build_endpoint[296] Building endpoint 
0x81
[hotplug](4) JavaxUsbTopologyUpdater.c.build_endpoint[296] Building endpoint 
0x82
[hotplug](4) JavaxUsbTopologyUpdater.c.build_endpoint[296] Building endpoint 
0x03
[hotplug](3) JavaxUsbTopologyUpdater.c.build_device[117] Building device 
/proc/bus/usb/002/001
[hotplug](3) JavaxUsbTopologyUpdater.c.build_device[141] Device is hub with 2 
ports
[hotplug](4) JavaxUsbTopologyUpdater.c.build_device[156] Device speed is 12 Mbps
[hotplug](4) JavaxUsbTopologyUpdater.c.build_config[222] Building config 1
[hotplug](4) JavaxUsbTopologyUpdater.c.build_interface[282] Building interface 0
[hotplug](4) JavaxUsbTopologyUpdater.c.build_endpoint[296] Building endpoint 
0x81
[hotplug](3) JavaxUsbTopologyUpdater.c.build_device[117] Building device 
/proc/bus/usb/003/001
[hotplug](3) JavaxUsbTopologyUpdater.c.build_device[141] Device is hub with 2 
ports
[hotplug](4) JavaxUsbTopologyUpdater.c.build_device[156] Device speed is 12 Mbps
[hotplug](4) JavaxUsbTopologyUpdater.c.build_config[222] Building config 1
[hotplug](4) JavaxUsbTopologyUpdater.c.build_interface[282] Building interface 0
[hotplug](4) JavaxUsbTopologyUpdater.c.build_endpoint[296] Building endpoint 
0x81
[hotplug](3) JavaxUsbTopologyUpdater.c.build_device[117] Building device 
/proc/bus/usb/004/001
[hotplug](3) JavaxUsbTopologyUpdater.c.build_device[141] Device is hub with 2 
ports
[hotplug](4) JavaxUsbTopologyUpdater.c.build_device[156] Device speed is 12 Mbps
[hotplug](4) JavaxUsbTopologyUpdater.c.build_config[222] Building config 1
[hotplug](4) JavaxUsbTopologyUpdater.c.build_interface[282] Building interface 0
[hotplug](4) JavaxUsbTopologyUpdater.c.build_endpoint[296] Building endpoint 
0x81
[default](2) JavaxUsb.h.open_device[216] Opening node /proc/bus/usb/001/001
[hotplug](4) JavaxUsbActive.c.getActiveConfig[272] Getting active config using 
GET_CONFIGURATION standard request.
[hotplug](4) JavaxUsbActive.c.config_ask_device[212] Active device 
configuration is 1
[hotplug](4) JavaxUsbActive.c.getActiveConfig[274] Device returned 1.
[default](2) JavaxUsb.h.open_device[216] Opening node /proc/bus/usb/001/002
[hotplug](4) JavaxUsbActive.c.getActiveConfig[272] Getting active config using 
GET_CONFIGURATION standard request.
[hotplug](4) JavaxUsbActive.c.config_ask_device[212] Active device 
configuration is 1
[hotplug](4) JavaxUsbActive.c.getActiveConfig[274] Device returned 1.
[default](2) JavaxUsb.h.open_device[216] Opening node /proc/bus/usb/001/003
[hotplug](4) JavaxUsbActive.c.getActiveConfig[272] Getting active config using 
GET_CONFIGURATION standard request.
[hotplug](4) JavaxUsbActive.c.config_ask_device[212] Active device 
configuration is 1
[hotplug](4) JavaxUsbActive.c.getActiveConfig[274] Device returned 1.
[default](2) JavaxUsb.h.open_device[216] Opening node /proc/bus/usb/001/004
[hotplug](4) JavaxUsbActive.c.getActiveConfig[272] Getting active config using 
GET_CONFIGURATION standard request.
[hotplug](4) JavaxUsbActive.c.config_ask_device[212] Active device 
configuration is 1
[hotplug](4) JavaxUsbActive.c.getActiveConfig[274] Device returned 1.
[default](2) JavaxUsb.h.open_device[216] Opening node /proc/bus/usb/001/005
[hotplug](4) JavaxUsbActive.c.getActiveConfig[272] Getting active config using 
GET_CONFIGURATION standard request.
[hotplug](4) JavaxUsbActive.c.config_ask_device[212] Active device 
configuration is 1
[hotplug](4) JavaxUsbActive.c.getActiveConfig[274] Device returned 1.
[default](2) JavaxUsb.h.open_device[216] Opening node /proc/bus/usb/002/001
[hotplug](4) JavaxUsbActive.c.getActiveConfig[272] Getting active config using 
GET_CONFIGURATION standard request.
[hotplug](4) JavaxUsbActive.c.config_ask_device[212] Active device 
configuration is 1
[hotplug](4) JavaxUsbActive.c.getActiveConfig[274] Device returned 1.
[default](2) JavaxUsb.h.open_device[216] Opening node /proc/bus/usb/003/001
[hotplug](4) JavaxUsbActive.c.getActiveConfig[272] Getting active config using 
GET_CONFIGURATION standard request.
[hotplug](4) JavaxUsbActive.c.config_ask_device[212] Active device 
configuration is 1
[hotplug](4) JavaxUsbActive.c.getActiveConfig[274] Device returned 1.
[default](2) JavaxUsb.h.open_device[216] Opening node /proc/bus/usb/004/001
[hotplug](4) JavaxUsbActive.c.getActiveConfig[272] Getting active config using 
GET_CONFIGURATION standard request.
[hotplug](4) JavaxUsbActive.c.config_ask_device[212] Active device 
configuration is 1
[hotplug](4) JavaxUsbActive.c.getActiveConfig[274] Device returned 1.
[default](2) JavaxUsb.h.open_device[216] Opening node /proc/bus/usb/001/005
[xfer](2) 
JavaxUsbDeviceProxy.c.Java_com_ibm_jusb_os_linux_JavaxUsb_nativeDeviceProxy[75] 
Got Request
[default](3) JavaxUsbInterfaceRequest.c.claim_interface[87] Claiming interface 0
[default](3) JavaxUsbInterfaceRequest.c.claim_interface[96] Claimed interface 0
[xfer](2) 
JavaxUsbDeviceProxy.c.Java_com_ibm_jusb_os_linux_JavaxUsb_nativeDeviceProxy[78] 
Completed Request
ReaderThread: intIn: reading
intIn: blocking

ReaderThread: bulkIn: reading
bulkIn: blocking

[xfer](2) 
JavaxUsbDeviceProxy.c.Java_com_ibm_jusb_os_linux_JavaxUsb_nativeDeviceProxy[75] 
Got Request
[xfer](2) JavaxUsbPipeRequest.c.pipe_request[62] Submitting URB
[default](2) JavaxUsbKernel.c.setKernelVersion[45] Kernel version string 
2.6.16.13-4-default parsed as 2.6.16
[xfer](1) JavaxUsbPipeRequest.c.pipe_request[73] Could not submit URB (errno 
-28)
[xfer](2) 
JavaxUsbDeviceProxy.c.Java_com_ibm_jusb_os_linux_JavaxUsb_nativeDeviceProxy[78] 
Completed Request
[xfer](2) 
JavaxUsbDeviceProxy.c.Java_com_ibm_jusb_os_linux_JavaxUsb_nativeDeviceProxy[75] 
Got Request
[xfer](2) JavaxUsbPipeRequest.c.pipe_request[62] Submitting URB
[xfer](2) JavaxUsbPipeRequest.c.pipe_request[75] Submitted URB
[xfer](2) 
JavaxUsbDeviceProxy.c.Java_com_ibm_jusb_os_linux_JavaxUsb_nativeDeviceProxy[78] 
Completed Request
javax.usb.UsbPlatformException: Error submitting IRP : Error 28
        at com.ibm.jusb.os.linux.JavaxUsb.errorToUsbException(JavaxUsb.java:73)
        at 
com.ibm.jusb.os.linux.LinuxPipeRequest.completeUsbIrp(LinuxPipeRequest.java:84)
        at 
com.ibm.jusb.os.linux.LinuxPipeRequest.setCompleted(LinuxPipeRequest.java:74)
        at com.ibm.jusb.os.linux.JavaxUsb.nativeDeviceProxy(Native Method)
        at 
com.ibm.jusb.os.linux.LinuxDeviceProxy$1.run(LinuxDeviceProxy.java:91)
        at java.lang.Thread.run(Thread.java:595)
ReaderThread: intIn: reading
intIn: blocking

[xfer](2) 
JavaxUsbDeviceProxy.c.Java_com_ibm_jusb_os_linux_JavaxUsb_nativeDeviceProxy[75] 
Got Request
[xfer](2) JavaxUsbPipeRequest.c.pipe_request[62] Submitting URB
[xfer](1) JavaxUsbPipeRequest.c.pipe_request[73] Could not submit URB (errno 
-28)
[xfer](2) 
JavaxUsbDeviceProxy.c.Java_com_ibm_jusb_os_linux_JavaxUsb_nativeDeviceProxy[78] 
Completed Request
javax.usb.UsbPlatformException: Error submitting IRP : Error 28
        at com.ibm.jusb.os.linux.JavaxUsb.errorToUsbException(JavaxUsb.java:73)
        at 
com.ibm.jusb.os.linux.LinuxPipeRequest.completeUsbIrp(LinuxPipeRequest.java:84)
        at 
com.ibm.jusb.os.linux.LinuxPipeRequest.setCompleted(LinuxPipeRequest.java:74)
        at com.ibm.jusb.os.linux.JavaxUsb.nativeDeviceProxy(Native Method)
        at 
com.ibm.jusb.os.linux.LinuxDeviceProxy$1.run(LinuxDeviceProxy.java:91)
        at java.lang.Thread.run(Thread.java:595)
ReaderThread: intIn: reading
intIn: blocking



-------------------------------------------------------
All the advantages of Linux Managed Hosting--Without the Cost and Risk!
Fully trained technicians. The highest number of Red Hat certifications in
the hosting industry. Fanatical Support. Click to learn more
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
_______________________________________________
javax-usb-devel mailing list
javax-usb-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/javax-usb-devel




-------------------------------------------------------
All the advantages of Linux Managed Hosting--Without the Cost and Risk!
Fully trained technicians. The highest number of Red Hat certifications in
the hosting industry. Fanatical Support. Click to learn more
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
_______________________________________________
javax-usb-devel mailing list
javax-usb-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/javax-usb-devel

Reply via email to