usb/105669: [patch] MetaGeek Wi-Spy device recognized as keyboard
Henrik Brix Andersen
brix at fangorn.brixandersen.dk
Sun Nov 19 16:40:23 UTC 2006
>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 at 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:
More information about the freebsd-usb
mailing list