ucom0: could not set data multiplex mode

Nikolay Pavlov quetzal at zone3000.net
Sat Jun 2 12:24:53 UTC 2007


On Thursday, 31 May 2007 at  1:04:36 -0600, M. Warner Losh wrote:
> 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 }},

Thanks for response Warner. I want to check the usb_quirks variant
first. Could you please advise me on what this line should be if i have
this on dmesg:

ucom0: <CMOTECH CO., LTD. CMOTECH CDMA
Technologies, class 2/0, rev 2.00/0.00, addr 2> on uhub1
ucom0: CMOTECH CO., LTD. CMOTECH CDMA
Technologies, rev 2.00/0.00, addr 2, iclass 2/2
ucom0: data interface 1, has CM over data, has break
ucom0: status change notification available


> 
> 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

-- 
======================================================================  
- Best regards, Nikolay Pavlov. <<<-----------------------------------    
======================================================================  



More information about the freebsd-mobile mailing list