Date: Sun, 20 Sep 2009 11:26:14 +0200 From: Hans Petter Selasky <hselasky@c2i.net> To: Greg Rivers <gcr+freebsd-current@tharned.org> Cc: freebsd-current@freebsd.org Subject: Re: USB-to-serial adapter no longer working in 8.0-RC1 Message-ID: <200909201126.15417.hselasky@c2i.net> In-Reply-To: <alpine.BSF.2.00.0909191200370.1320@blue.tharned.org> References: <alpine.BSF.2.00.0909182117210.1423@blue.tharned.org> <200909191553.12645.hselasky@c2i.net> <alpine.BSF.2.00.0909191200370.1320@blue.tharned.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Saturday 19 September 2009 20:13:33 Greg Rivers wrote: > On Sat, 19 Sep 2009, Hans Petter Selasky wrote: > > On Saturday 19 September 2009 05:40:28 Greg Rivers wrote: > >> Last May, Hans Petter Selasky fixed up the umct driver for 8.0-CURRENT > >> (http://lists.freebsd.org/pipermail/freebsd-current/2009-May/007125.html > >>). After updating to 8.0-RC1 I find that the driver has a new problem. > >> > >> Testing with cu(1) and a modem, I can see by watching the lights on the > >> modem and on the usb-serial adapter that it still asserts DTR and sends > >> and receives characters properly, but no characters reach the terminal. > >> That seems to be the only problem: characters from the attached serial > >> device seem to disappear before reaching whatever program has the serial > >> device open. But strangely enough, power cycling the modem results in a > >> few "line noise" characters appearing. Perhaps the driver is no longer > >> responding appropriately to DSR? > >> > >> Any insight or troubleshooting clues would be much appreciated. > > > > Hi, > > > > You need to provide debug output from: > > > > sysctl hw.usb.ucom.debug=15 > > > > and > > > > sysctl hw.usb.umct.debug=15 > > > > If it exists. > > hw.usb.umct does not exist, but hw.usb.ucom does. Here's debug output with > hw.usb.ucom.debug set to 15. I tested with a modem because it's easy to > interact with. > > Attach USB-serial adapter to USB port: > ugen1.2: <Belkin USB PDA Adapter> at usbus1 > umct0: <Belkin USB PDA Adapter Belkin Components, class 0/0, rev 1.10/1.02, > addr 2> on usbus1 ucom_attach_tty:317: tp = 0xc5644200, unit = 0 > ucom_attach_tty:346: ttycreate: U0 > > Open /dev/cuaU0 via 'cu -l cuaU0 -s 115200 dir': > ucom_open:554: tp = 0xc5644200 > ucom_dtr:827: onoff = 1 > ucom_line_state:799: on=0x01, off=0x00 > ucom_rts:838: onoff = 1 > ucom_line_state:799: on=0x02, off=0x00 > ucom_break:816: onoff = 0 > ucom_line_state:799: on=0x00, off=0x04 > ucom_status_change:901: > ucom_param:950: sc = 0xc5433230 > ucom_dtr:827: onoff = 1 > ucom_line_state:799: on=0x01, off=0x00 > ucom_rts:838: onoff = 1 > ucom_line_state:799: on=0x02, off=0x00 > ucom_cfg_open:520: > ucom_ioctl:653: cmd = 0x402c7413 > ucom_ioctl:653: cmd = 0x802c7416 > ucom_ioctl:653: cmd = 0x2000740d > ucom_ioctl:653: cmd = 0x402c7413 > ucom_ioctl:653: cmd = 0x802c7416 > ucom_param:950: sc = 0xc5433230 > ucom_ioctl:653: cmd = 0x8004667e > ucom_ioctl:653: cmd = 0x8004667d > ucom_get_data:1064: cnt=0 > > Type "atz<enter>" (modem resets, responds with "OK"): > ucom_outwakeup:1009: sc = 0xc5433230 > ucom_get_data:1064: cnt=1 > ucom_get_data:1064: cnt=0 > ucom_outwakeup:1009: sc = 0xc5433230 > ucom_get_data:1064: cnt=1 > ucom_get_data:1064: cnt=0 > ucom_outwakeup:1009: sc = 0xc5433230 > ucom_get_data:1064: cnt=1 > ucom_get_data:1064: cnt=0 > ucom_outwakeup:1009: sc = 0xc5433230 > ucom_get_data:1064: cnt=1 > ucom_get_data:1064: cnt=0 > ucom_status_change:901: > > Type "atdt<enter>" (modem goes off hook, > finds no dial tone, prints "NO DIALTONE", hangs up): > ucom_outwakeup:1009: sc = 0xc5433230 > ucom_get_data:1064: cnt=1 > ucom_get_data:1064: cnt=0 > ucom_outwakeup:1009: sc = 0xc5433230 > ucom_get_data:1064: cnt=1 > ucom_get_data:1064: cnt=0 > ucom_outwakeup:1009: sc = 0xc5433230 > ucom_get_data:1064: cnt=1 > ucom_get_data:1064: cnt=0 > ucom_outwakeup:1009: sc = 0xc5433230 > ucom_get_data:1064: cnt=1 > ucom_get_data:1064: cnt=0 > ucom_outwakeup:1009: sc = 0xc5433230 > ucom_get_data:1064: cnt=1 > ucom_get_data:1064: cnt=0 > ucom_status_change:901: > last message repeated 2 times > > Type "atz<enter>" (modem resets, responds with "OK"): > ucom_outwakeup:1009: sc = 0xc5433230 > ucom_get_data:1064: cnt=1 > ucom_get_data:1064: cnt=0 > ucom_outwakeup:1009: sc = 0xc5433230 > ucom_get_data:1064: cnt=1 > ucom_get_data:1064: cnt=0 > ucom_outwakeup:1009: sc = 0xc5433230 > ucom_get_data:1064: cnt=1 > ucom_get_data:1064: cnt=0 > ucom_outwakeup:1009: sc = 0xc5433230 > ucom_get_data:1064: cnt=1 > ucom_get_data:1064: cnt=0 > ucom_status_change:901: > > Type "~." to exit cu: > ucom_ioctl:653: cmd = 0x2000740e > ucom_ioctl:653: cmd = 0x2000740e > ucom_close:623: tp=0xc5644200 > ucom_shutdown:446: > ucom_dtr:827: onoff = 0 > ucom_line_state:799: on=0x00, off=0x01 > ucom_rts:838: onoff = 1 > ucom_line_state:799: on=0x02, off=0x00 > ucom_cfg_close:605: > > Detach USB-serial adapter from USB port: > ugen1.2: <Belkin USB PDA Adapter> at usbus1 (disconnected) > umct0: at uhub0, port 1, addr 2 (disconnected) > ucom_detach_tty:358: sc = 0xc5433230, tp = 0xc5644200 > ucom_close:623: tp=0xc5644200 > ucom_close:626: tp=0xc5644200 already closed > > Note that none of the characters output by the modem made it to cu. Each > sequence of ucom_outwakeup:1009: sc = 0xc5433230 > ucom_get_data:1064: cnt=1 > ucom_get_data:1064: cnt=0 > corresponds to me typing a character. There are no debug lines > corresponding to characters output by the modem, so they must be getting > dropped prior to reaching the ucom driver. > > I also tested with a 8.0-BETA2 system from July 18; it has the same > problem. But I know that it was working on 8.0-CURRENT as recently as > the first week of June. It still works fine on recent 7.2-STABLE. /* * The real bulk-in endpoint is also marked as an interrupt. * The only way to differentiate it from the real interrupt * endpoint is to look at the wMaxPacketSize field. */ #ifdef XXX maxp = UGETW(sc->sc_xfer[UMCT_BULK_DT_RD]->endpoint->edesc->wMaxPacketSize); if (maxp == 0x2) { /* guessed wrong - switch around endpoints */ struct usb_xfer *temp = sc->sc_xfer[UMCT_INTR_DT_RD]; sc->sc_xfer[UMCT_INTR_DT_RD] = sc->sc_xfer[UMCT_BULK_DT_RD]; sc->sc_xfer[UMCT_BULK_DT_RD] = temp; sc->sc_xfer[UMCT_BULK_DT_RD]->callback = &umct_read_callback; sc->sc_xfer[UMCT_INTR_DT_RD]->callback = &umct_intr_callback; } #endif Could you try to change this into #if 1 ? --HPS Hi, I see some code was commented out in umct.c:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200909201126.15417.hselasky>