Re: pl2303_read_int_callback - usb_submit_urb failed with result -19

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[ +CC: linux-usb, for real this time ;) ] 

On Wed, Jul 06, 2016 at 02:40:25PM +0530, Malith Yapa wrote:
> On Wed, Jul 6, 2016 at 2:13 PM, Johan Hovold <johan@xxxxxxxxxx> wrote:
> > [ Please avoid top-posing. ]
> >
> > On Wed, Jul 06, 2016 at 03:49:15AM +0000, Malith Yapa wrote:
> >> I'm polling a couple of input bits as well as 16 bit memory registers from
> >> a PLC (xinje) using libmodbus.
> >
> > Ah, so just normal tty use.
> >
> >> Feb 23 09:59:34 localhost kernel: [16960.073287] usb 5-1: USB disconnect,
> >> device number 11
> >> Feb 23 09:59:34 localhost kernel: [16960.080069] usb 5-1:
> >> pl2303_read_int_callback - usb_submit_urb failed with result -19
> >
> > You're getting these -ENODEV (-19) error because the pl2303 device has
> > already given up (crashed) and been disconnected.
> >
> >> Feb 23 09:59:35 localhost kernel: [16960.426637] usb 5-1: new full-speed
> >> USB device number 12 using sw-ohci
> >> Feb 23 09:59:35 localhost kernel: [16960.649900] usb 5-1: pl2303 converter
> >> now attached to ttyUSB10
> >
> >> Any pointers for a workaround at the driver level? I could see that ENODEV
> >> results with the wrong device status. could that status be device 'busy'?
> >> will it help if i reduce my polling rate?
> >
> > I don't think there's anything to be done at the driver level I'm
> > afraid. If I understand you correctly, you're just using the normal tty
> > interface (e.g. through libmodbus) to access some external entity (and
> > its registers).
> >
> > Something is causing the pl2303 device to be reset. Perhaps an
> > electrical issue.
> >
> >> On Tue, Jul 5, 2016 at 6:09 PM Johan Hovold <johan@xxxxxxxxxx> wrote:
> >>
> >> > On Mon, Jul 04, 2016 at 10:22:04PM +0530, Malith Yapa wrote:
> >> > > Continuously polling registers with the PL2303 usb serial adapter
> >> > > eventually results in usb_subimit_urb failed with result -19 (ENODEV)
> >> > > but reconnects immediately.
> >> > > occurrences are random.
> >> > > tried with two different PL2303 devices with the same result.
> >> >
> >> > Sounds like a firmware issue, so not sure there's much we can do.
> >> >
> >> > Can you tell from the syslogs that the device is being disconnected and
> >> > re-enumerated? What registers are you polling?
> 
> Ok. Thats fine with me as long as it reconnects. However since the
> device number keeps incrementing, I'm worried that it will fail
> sometime in the future. It failed a couple of times before (I think
> after reaching 255). I'm waiting for it to happen again to capture the
> syslog. Is there anyway i can force it to reconnect with the same
> id?(or come back to 0 after some time) what would be the maximum it
> can go upto?

That would be 512 these days.

The minor numbers are not reused until your application (or libmodbus)
releases them. The application should detect that the tty has been hung
up and close the tty device.

Another thing you can try (to avoid the disconnect) is to verify that
you get the same behaviour using a different host controller (e.g. PC).
Try without any intermediate external hubs too.

Good luck,
Johan
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux