Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Apr 2003 13:28:22 -0700 (PDT)
From:      Maksim Yevmenkin <m_evmenkin@yahoo.com>
To:        current@freebsd.org, mobile@freebsd.org
Subject:   [PATCH] USB Bluetooth devices
Message-ID:  <20030411202822.59805.qmail@web40301.mail.yahoo.com>

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

[-- Attachment #1 --]
Dear Hackers,

I would like to ask USB Bluetooth device owners to try the attached
patch for the ng_ubt(4) driver. This patch for is the latest (2003/4/7)
snapshot.

The purpose of the patch is to eliminate hardwired VendorID/ProductID
pairs in the USB_MATCH function. Instead ng_ubt(4) driver now looks at
bDeviceClass, bDeviceSubClass and bDeviceProtocol fields in the device
descriptor and checks if they are equal to UDCLASS_WIRELESS, 
UDPROTO_BLUETOOTH and UDSUBCLASS_RF respectively.

Please try it and let me know if it works for you.

thanks,
max

__________________________________________________
Do you Yahoo!?
Yahoo! Tax Center - File online, calculators, forms, and more
http://tax.yahoo.com
[-- Attachment #2 --]
Index: sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c
===================================================================
RCS file: /usr/local/cvs/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c,v
retrieving revision 1.10
diff -u -7 -r1.10 ng_ubt.c
--- sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c	9 Apr 2003 18:10:52 -0000	1.10
+++ sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c	11 Apr 2003 20:06:41 -0000
@@ -291,34 +291,25 @@
 
 /*
  * Probe for a USB Bluetooth device
  */
 
 USB_MATCH(ubt)
 {
-	Static struct usb_devno const	ubt_devices[] = {
-		{ USB_VENDOR_3COM,     USB_PRODUCT_3COM_3CREB96 },
-		{ USB_VENDOR_MITSUMI,  USB_PRODUCT_MITSUMI_BT_DONGLE },
-		{ USB_VENDOR_TDK,      USB_PRODUCT_TDK_BT_DONGLE },
-		{ USB_VENDOR_MSI,      USB_PRODUCT_MSI_BT_DONGLE },
-		{ USB_VENDOR_BROADCOM, USB_PRODUCT_DBW_120M_BT_DONGLE },
-		{ USB_VENDOR_EPOX,     USB_PRODUCT_BT_DG02_DONGLE },
-		{ USB_VENDOR_MICROSOFT,USB_PRODUCT_MICROSOFT_BT_TRANS },
-		{ USB_VENDOR_ALPS2,    USB_PRODUCT_ALPS2_UGT },
-		{ USB_VENDOR_ABOCOM,   USB_PRODUCT_ABO_BT_DONGLE },
-		{ 0, 0 }
-	};
-
 	USB_MATCH_START(ubt, uaa);
 
-	if (uaa->iface == NULL || 
-	    usb_lookup(ubt_devices, uaa->vendor, uaa->product) == NULL)
+	usb_device_descriptor_t	*dd = usbd_get_device_descriptor(uaa->device);
+
+	if (uaa->iface == NULL ||
+	    dd->bDeviceClass != UDCLASS_WIRELESS ||
+	    dd->bDeviceSubClass != UDSUBCLASS_RF ||
+	    dd->bDeviceProtocol != UDPROTO_BLUETOOTH)
 		return (UMATCH_NONE);
 
-	return (UMATCH_VENDOR_PRODUCT);
+	return (UMATCH_DEVCLASS_DEVSUBCLASS);
 } /* USB_MATCH(ubt) */
 
 /*
  * Attach the device
  */
 
 USB_ATTACH(ubt)
@@ -428,24 +419,14 @@
 
 	id = usbd_get_interface_descriptor(sc->sc_iface0);
 	if (id == NULL) {
 		printf("%s: Could not get interface 0 descriptor\n",
 			USBDEVNAME(sc->sc_dev));
 		goto bad;
 	}
-	if (id->bInterfaceClass != UICLASS_WIRELESS ||
-	    id->bInterfaceSubClass != UISUBCLASS_RF ||
-	    id->bInterfaceProtocol != UIPROTO_BLUETOOTH) {
-		printf("%s: Interface 0 is not supported, " \
-			"bInterfaceClass=%#x, bInterfaceSubClass=%#x, "\
-			"bInterfaceProtocol=%#x\n", USBDEVNAME(sc->sc_dev),
-			id->bInterfaceClass, id->bInterfaceSubClass, 
-			id->bInterfaceProtocol);
-		goto bad;
-	}
 
 	for (i = 0; i < id->bNumEndpoints; i ++) {
 		ed = usbd_interface2endpoint_descriptor(sc->sc_iface0, i);
 		if (ed == NULL) {
 			printf("%s: Could not read endpoint descriptor for " \
 				"interface 0, i=%d\n", USBDEVNAME(sc->sc_dev),
 				i);
@@ -506,24 +487,14 @@
 		goto bad;
 	}
 
 	id = usbd_get_interface_descriptor(sc->sc_iface1);
 	if (id == NULL) {
 		printf("%s: Could not get interface 1 descriptor\n",
 			USBDEVNAME(sc->sc_dev));
-		goto bad;
-	}
-	if (id->bInterfaceClass != UICLASS_WIRELESS ||
-	    id->bInterfaceSubClass != UISUBCLASS_RF ||
-	    id->bInterfaceProtocol != UIPROTO_BLUETOOTH) {
-		printf("%s: Interface 1 is not supported, " \
-			"bInterfaceClass=%#x, bInterfaceSubClass=%#x, "\
-			"bInterfaceProtocol=%#x\n", USBDEVNAME(sc->sc_dev),
-			id->bInterfaceClass, id->bInterfaceSubClass, 
-			id->bInterfaceProtocol);
 		goto bad;
 	}
 
 	/*
 	 * Scan all alternate configurations for interface 1
 	 */
 
Index: sys/netgraph/bluetooth/include/ng_ubt.h
===================================================================
RCS file: /usr/local/cvs/sys/netgraph/bluetooth/include/ng_ubt.h,v
retrieving revision 1.5
diff -u -7 -r1.5 ng_ubt.h
--- sys/netgraph/bluetooth/include/ng_ubt.h	9 Apr 2003 18:10:54 -0000	1.5
+++ sys/netgraph/bluetooth/include/ng_ubt.h	11 Apr 2003 20:07:58 -0000
@@ -28,29 +28,14 @@
  * $Id: ng_ubt.h,v 1.5 2003/04/09 18:10:54 max Exp $
  * $FreeBSD$
  */
 
 #ifndef _NG_UBT_H_
 #define _NG_UBT_H_
 
-/* XXX FIXME Does not belong here. Move to usbdevs.h later */
-#define USB_VENDOR_MSI			0x0db0 /* MSI www.msi.com.tw */
-#define USB_VENDOR_EPOX			0x0a12 /* EPoX www.epox.com */
-#define USB_VENDOR_ALPS2		0x049f /* ALPS - another ID */
-
-#define USB_PRODUCT_3COM_3CREB96	0x00a0 /* 3Com Bluetooth USB dongle */
-#define USB_PRODUCT_MITSUMI_BT_DONGLE	0x641f /* Mitsumi Bluetooth USB dongle*/
-#define USB_PRODUCT_TDK_BT_DONGLE	0x0309 /* TDK Bluetooth USB dongle */
-#define USB_PRODUCT_MSI_BT_DONGLE	0x1967 /* MSI Bluetooth USB dongle */
-#define USB_PRODUCT_DBW_120M_BT_DONGLE	0x2033 /* D-Link DBW-120M */
-#define USB_PRODUCT_BT_DG02_DONGLE	0x0001 /* EPoX BT-DG02 USB dongle */
-#define USB_PRODUCT_MICROSOFT_BT_TRANS	0x007e /* MS Wireless Transceiver */
-#define USB_PRODUCT_ALPS2_UGT		0x0027 /* Compaq Evo 610c BT module */
-#define USB_PRODUCT_ABO_BT_DONGLE	0xb02a /* AboCom Bluetooth USB dongle */
-
 /**************************************************************************
  **************************************************************************
  **     Netgraph node hook name, type name and type cookie and commands 
  **************************************************************************  
  **************************************************************************/
 
 #define NG_UBT_NODE_TYPE	"ubt"

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