usb/118670: [ums] [patch] Razer Copperhead Laser Mouse shows up as keyboard

John Baldwin jhb at FreeBSD.org
Wed Feb 27 22:00:04 UTC 2008


The following reply was made to PR usb/118670; it has been noted by GNATS.

From: John Baldwin <jhb at freebsd.org>
To: bug-followup at freebsd.org, Uwe at grohnwaldt.eu
Cc: imp at freebsd.org
Subject: Re: usb/118670: [ums] [patch] Razer Copperhead Laser Mouse shows up as keyboard
Date: Wed, 27 Feb 2008 16:41:13 -0500

 According to the USB spec, the protocol field is only defined if the subclass 
 is 1.  So a subclass of 0 is really a violation of the spec.  I think a 
 better fix is to put back the old hid_is_collection() test first and then 
 directly check the descriptor if that fails:
 
 Index: ums.c
 ===================================================================
 RCS file: /usr/cvs/src/sys/dev/usb/ums.c,v
 retrieving revision 1.97
 diff -u -r1.97 ums.c
 --- ums.c	26 Dec 2007 14:31:16 -0000	1.97
 +++ ums.c	27 Feb 2008 21:40:48 -0000
 @@ -198,7 +198,10 @@
  	if (err)
  		return (UMATCH_NONE);
  
 -	if (id->bInterfaceClass == UICLASS_HID &&
 +	if (hid_is_collection(desc, size,
 +			      HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_MOUSE)))
 +		ret = UMATCH_IFACECLASS;
 +	else if (id->bInterfaceClass == UICLASS_HID &&
  	    id->bInterfaceSubClass == UISUBCLASS_BOOT &&
  	    id->bInterfaceProtocol == UIPROTO_MOUSE)
  		ret = UMATCH_IFACECLASS;
 
 -- 
 John Baldwin


More information about the freebsd-usb mailing list