Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Nov 2006 17:31:09 +0100 (CET)
From:      Henrik Brix Andersen <brix@fangorn.brixandersen.dk>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   usb/105669: [patch] MetaGeek Wi-Spy device recognized as keyboard
Message-ID:  <20061119163110.0C8D92E030@fangorn.brixandersen.dk>
Resent-Message-ID: <200611191640.kAJGeLlB014472@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         105669
>Category:       usb
>Synopsis:       [patch] MetaGeek Wi-Spy device recognized as keyboard
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-usb
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sun Nov 19 16:40:21 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Henrik Brix Andersen
>Release:        FreeBSD 6.2-PRERELEASE i386
>Organization:
pil.dk
>Environment:
System: FreeBSD fangorn.brixandersen.dk 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE #25: Sun Nov 19 16:47:54 CET 2006 root@fangorn.brixandersen.dk:/usr/obj/usr/src/sys/FANGORN i386


	
>Description:

The USB Wi-Spy spectrum analyzer from MetaGeek LLC [1] is currently
recognized by FreeBSD as a USB keyboard, thus preventing the
user-space tools [2] from attaching to the device using ugen(4) and
libusb.

[1] http://www.metageek.net/
[2] http://www.kismetwireless.net/wispy.shtml

	
>How-To-Repeat:

Plug in a MetaGeek LLC Wi-Spy device and notice the following entries in
dmesg:

Nov 19 16:37:23 fangorn kernel: ukbd0: MetaGeek Wi-Spy, rev 2.00/1.00, addr 2, iclass 3/1
Nov 19 16:37:23 fangorn kernel: kbd2 at ukbd0

	
>Fix:

The patch below adds a UQ_KBD_IGNORE flag to usb_quirks.h, similar to
the UQ_HID_IGNORE flag.

The patch also adds the PID of the Wi-Spy device and utilizes the new
UQ_KBD_IGNORE flag to make ukbd(4) ignore this device, leaving it to
be handled by ugen(4):

Nov 19 17:04:28 fangorn kernel: ugen0: MetaGeek Wi-Spy, rev 2.00/1.00, addr 2

It would be nice if __FreeBSD_version in sys/param.h could be bumped
once this patch goes in. This will allow me to test for proper kernel
support in my upcoming port of the above mentioned wispy-tools.

The patch is againt RELENG_6 but applies cleanly to CURRENT.
	

--- wispy-ukbd-ignore.patch begins here ---
--- dev/usb/usbdevs.orig	Tue Jul 18 11:01:11 2006
+++ dev/usb/usbdevs	Tue Jul 18 11:02:10 2006
@@ -795,6 +795,7 @@
 /* Cypress Semiconductor products */
 product CYPRESS MOUSE		0x0001	mouse
 product CYPRESS THERMO		0x0002	thermometer
+product CYPRESS WISPY		0x0bad  MetaGeek Wi-Spy
 product CYPRESS FMRADIO		0x1002	FM Radio
 product CYPRESS SLIM_HUB	0x6560	Slim Hub
 
--- dev/usb/usb_quirks.h.orig	Tue Jul 18 11:02:52 2006
+++ dev/usb/usb_quirks.h	Tue Jul 18 11:03:56 2006
@@ -55,6 +55,7 @@
 #define UQ_ASSUME_CM_OVER_DATA 0x1000 /* modem device breaks on cm over data */
 #define UQ_BROKEN_BIDIR	0x2000	/* printer has broken bidir mode */
 #define UQ_HID_IGNORE	0x8000	/* device should be ignored by hid class */
+#define UQ_KBD_IGNORE	0x8001	/* device should be ignored by kbd class */
 					
 };
 
--- dev/usb/usb_quirks.c.orig	Tue Jul 18 11:02:56 2006
+++ dev/usb/usb_quirks.c	Tue Jul 18 11:04:58 2006
@@ -110,6 +110,9 @@
 	ANY, { UQ_HID_IGNORE }},
  { USB_VENDOR_MGE, USB_PRODUCT_MGE_UPS2,
 	ANY, { UQ_HID_IGNORE }},
+ /* Devices which should be ignored by ukbd */
+ { USB_VENDOR_CYPRESS, USB_PRODUCT_CYPRESS_WISPY,
+	ANY, { UQ_KBD_IGNORE }},
  { 0, 0, 0, { 0 } }
 };
 
--- dev/usb/ukbd.c.orig	Tue Jul 18 11:05:24 2006
+++ dev/usb/ukbd.c	Tue Jul 18 11:07:25 2006
@@ -150,6 +150,9 @@
 	if ((*sw->probe)(unit, (void *)arg, 0))
 		return (UMATCH_NONE);
 
+	if (usbd_get_quirks(uaa->device)->uq_flags & UQ_KBD_IGNORE)
+		return (UMATCH_NONE);
+
 	return (UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO);
 }
 
--- wispy-ukbd-ignore.patch ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20061119163110.0C8D92E030>