ucom0: could not set data multiplex mode
M. Warner Losh
imp at bsdimp.com
Thu May 31 07:04:55 UTC 2007
In message: <20070531054845.GA22380 at zone3000.net>
Nikolay Pavlov <quetzal at zone3000.net> writes:
: On Monday, 28 May 2007 at 12:39:44 +0300, Nikolay Pavlov wrote:
: > Hi folks.
: > I have an issue with CCU-550 CDMA modem
: > (http://www.cmotech.com/eproduct6-1.htm) on recent current.
: > Every time i am reattaching it i see this error:
: > ucom0: could not set data multiplex mode
: >
: > So in order to work with it i have to reboot after each detache
: > procedure. The only known workaround for this is to delete the
: > "goto bad;" code in /usr/src/sys/dev/usb/umodem.c:
: >
: > printf("%s: could not set data multiplex mode\n",
: > devname);
: > goto bad;
: >
: > Could someone comment on this?
: >
: > P.S. Please cc me, becuase i am not subscribe to freebsd-usb or
: > freebsd-mobile
: >
:
: May be i should send this to maintainer..?
I thought that NetBSD did something clever in this condition, but it
doesn't. Try adding the device to usb_quirks.c. You'll need an entry
like the following:
{ USB_VENDOR_METRICOM, USB_PRODUCT_METRICOM_RICOCHET_GS,
0x100, { UQ_ASSUME_CM_OVER_DATA }},
for whatever values your CCU-550 CDMA modem has. alternatively, you
could try the following patch, which may be lame:
Index: umodem.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/usb/umodem.c,v
retrieving revision 1.60
diff -u -r1.60 umodem.c
--- umodem.c 7 Sep 2006 00:06:42 -0000 1.60
+++ umodem.c 31 May 2007 07:03:49 -0000
@@ -279,7 +279,6 @@
usb_cdc_cm_descriptor_t *cmd;
char *devinfo = NULL;
const char *devname;
- usbd_status err;
int data_ifcno;
int i;
struct ucom_softc *ucom;
@@ -373,16 +372,8 @@
} else {
if (sc->sc_cm_cap & USB_CDC_CM_OVER_DATA) {
if (sc->sc_acm_cap & USB_CDC_ACM_HAS_FEATURE)
- err = umodem_set_comm_feature(sc,
- UCDC_ABSTRACT_STATE, UCDC_DATA_MULTIPLEXED);
- else
- err = 0;
- if (err) {
- printf("%s: could not set data multiplex mode\n",
- devname);
- goto bad;
- }
- sc->sc_cm_over_data = 1;
+ umodem_set_comm_feature(sc,
+ UCDC_ABSTRACT_STATE, UCDC_DATA_MULTIPLEXED); sc->sc_cm_over_data = 1;
}
}
this patch just feels wrong to me, but I suspect it will just work.
Warner
More information about the freebsd-usb
mailing list