[BRLTTY] New release coming soon.

Dave Mielke dave at mielke.cc
Fri Dec 13 20:15:09 EST 2013


Thanks for the log. I can see in it exactly what you're reporting. 
Unfortunately, there isn't enough information in it for me to spot (at least 
yet) what went wrong. I've attached a patch (usb1.patch) to this message. Are 
you familiar with how to apply it and then generate a new log? Also, when 
generating the new log, please add async to the -l keyword list.

-- 
Dave Mielke           | 2213 Fox Crescent | The Bible is the very Word of God.
Phone: 1-613-726-0014 | Ottawa, Ontario   | http://Mielke.cc/bible/
EMail: dave at mielke.cc | Canada  K2A 1H7   | http://FamilyRadio.com/
-------------- next part --------------
Index: Programs/usb_linux.c
===================================================================
--- Programs/usb_linux.c	(revision 8228)
+++ Programs/usb_linux.c	(working copy)
@@ -587,22 +587,26 @@
   UsbDevice *device = endpoint->device;
   UsbDeviceExtension *devx = device->extension;
 
-  usbLogURB(urb, "submit");
+  usbLogURB(urb, "submitting");
   if ((urb->endpoint & UsbEndpointDirection_Mask) == UsbEndpointDirection_Output) {
     logBytes(LOG_CATEGORY(USB_IO), "URB output", urb->buffer, urb->buffer_length);
   }
 
   while (1) {
-    if (ioctl(devx->usbfsFile, USBDEVFS_SUBMITURB, urb) != -1) return 1;
+    if (ioctl(devx->usbfsFile, USBDEVFS_SUBMITURB, urb) != -1) {
+      usbLogURB(urb, "submitted");
+      return 1;
+    }
     if ((errno == EINVAL) &&
         (USB_ENDPOINT_TRANSFER(descriptor) == UsbEndpointTransfer_Interrupt) &&
         (urb->type == USBDEVFS_URB_TYPE_BULK)) {
+      logMessage(LOG_CATEGORY(USB_IO), "changing URB type from bulk to interrupt");
       urb->type = USBDEVFS_URB_TYPE_INTERRUPT;
       continue;
     }
 
     /* UHCI support returns ENXIO if a URB is already submitted. */
-    if (errno != ENXIO) logSystemError("USB URB submit");
+    logSystemError("USB URB submit");
     return 0;
   }
 }
@@ -966,6 +970,7 @@
         }
       } else {
         usbLogInputProblem(endpoint, "input data not available");
+        errno = response.error;
       }
 
       if (written) {
@@ -986,6 +991,7 @@
       eptx->monitor.urb = NULL;
     } else {
       usbLogInputProblem(endpoint, "unexpected input URB");
+      errno = EIO;
     }
 
     free(request);


More information about the BRLTTY mailing list