kern/118141: usb serial and nokia phones ucomreadcb ucomreadcb: IOERROR

hsu at hsu at
Mon Nov 19 16:10:01 PST 2007

>Number:         118141
>Category:       kern
>Synopsis:       usb serial and nokia phones ucomreadcb ucomreadcb: IOERROR
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Nov 20 00:10:01 UTC 2007
>Originator:     Heikki Suonsivu <hsu at>
>Release:        FreeBSD 7.0-BETA3 i386
System: FreeBSD 7.0-BETA3 FreeBSD 7.0-BETA3 #2: Mon Nov 19 12:35:21 EET 2007 hsu at i386

Various Nokia phones connected to USB port, RELENG_7.


Nokia modem connection generates this:

Nov 19 20:10:38 ranta kernel: ucom1: ucomreadcb: IOERROR

and the serial port gets hung here.  Restarting pppd works, but the
problem repeats itself.

When pppd restarts, chat gets a bufferfull of ppp data, so apparently
the data was received, it just was never passed to pppd reading the tty.

ucom seems to have a missing bit here, like it was not finished:

	if (status != USBD_NORMAL_COMPLETION) {
		if (!(sc->sc_state & UCS_RXSTOP))
			printf("%s: ucomreadcb: %s\n",
			       device_get_nameunit(sc->sc_dev), usbd_errstr(status));
		sc->sc_state |= UCS_RXSTOP;
		if (status == USBD_STALLED)
		/* XXX we should restart after some delay. */

Could this abnormal completion somehow be ignored?

I have also seen writecb errors, but they do not seem to break the


Nokia 6680 seems a good candidate, but I have seen the problem on 9300
as well.  9300 is worse as it will not restart after one successful
connection without taking it off the usb for a moment.


Could the code do resubmit instead of error?


More information about the freebsd-bugs mailing list