Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 10 Jun 2011 14:48:06 -0500
From:      Jim Bryant <kc5vdj.freebsd@gmail.com>
To:        bschmidt@freebsd.org
Cc:        weongyo@freebsd.org, freebsd-wireless@freebsd.org, freebsd-stable@freebsd.org, freebsd-usb@freebsd.org
Subject:   Re: problem with urtw
Message-ID:  <4DF274F6.6050905@gmail.com>
In-Reply-To: <201106100913.42480.bschmidt@freebsd.org>
References:  <4DF12E4A.5020906@gmail.com> <201106100913.42480.bschmidt@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
the patch didn't get it.

ugen3.2: <vendor 0x0bda> at usbus3
urtw0: <vendor 0x0bda product 0x8187, class 0/0, rev 2.00/2.00, addr 2> 
on usbus3
urtw0: could not allocate USB transfers, err=USB_ERR_NO_PIPE
device_attach: urtw0 attach returned 6
urtw0: <vendor 0x0bda product 0x8187, class 0/0, rev 2.00/2.00, addr 2> 
on usbus3
urtw0: could not allocate USB transfers, err=USB_ERR_NO_PIPE
device_attach: urtw0 attach returned 6
ugen3.2: <vendor 0x0bda> at usbus3 (disconnected)

[the last line was me unplugging it]

this is with if_urtw.c patched to change L to B as you supplied.

I'm here for testing..  any more ideas?  If anyone wants to play 
themselves, look on ebay for WiFiSky 1500mW B/G with 6dBi antenna.  It 
seems that half of Hong Kong is selling these for under $20 USD.

Bernhard Schmidt wrote:
> On Thursday, June 09, 2011 22:34:18 Jim Bryant wrote:
>   
>> I just bought one of those chinese (apparently the same unit relabeled 
>> and being sold by multiple companies) realtek RTL8187B wifi units.  The 
>> price is right.
>>
>> The label name on this one is WiFySky 1500mW.
>>
>> other than the fact that the case it is enclosed in is really cheesy, 
>> there is a more immediate problem with this.
>>
>> the current urtw driver returns a 6.
>>
>> here we go:
>>
>> on insert:
>>
>> ugen3.2: <vendor 0x0bda> at usbus3
>>
>> after kldload if_urtw.ko:
>>
>> urtw0: <vendor 0x0bda product 0x8187, class 0/0, rev 2.00/2.00, addr 2> 
>> on usbus3
>> urtw0: could not allocate USB transfers, err=USB_ERR_NO_PIPE
>> device_attach: urtw0 attach returned 6
>> urtw0: <vendor 0x0bda product 0x8187, class 0/0, rev 2.00/2.00, addr 2> 
>> on usbus3
>> urtw0: could not allocate USB transfers, err=USB_ERR_NO_PIPE
>> device_attach: urtw0 attach returned 6
>> urtw0: <vendor 0x0bda product 0x8187, class 0/0, rev 2.00/2.00, addr 2> 
>> on usbus3
>> urtw0: could not allocate USB transfers, err=USB_ERR_NO_PIPE
>> device_attach: urtw0 attach returned 6
>> urtw0: <vendor 0x0bda product 0x8187, class 0/0, rev 2.00/2.00, addr 2> 
>> on usbus3
>> urtw0: could not allocate USB transfers, err=USB_ERR_NO_PIPE
>> device_attach: urtw0 attach returned 6
>>
>>  3:28:35pm  argus(48): usbconfig -u 3 -a 2 dump_device_desc
>> ugen3.2: <product 0x8187 vendor 0x0bda> at usbus3, cfg=0 md=HOST 
>> spd=HIGH (480Mbps) pwr=ON
>>
>>   bLength = 0x0012
>>   bDescriptorType = 0x0001
>>   bcdUSB = 0x0200
>>   bDeviceClass = 0x0000
>>   bDeviceSubClass = 0x0000
>>   bDeviceProtocol = 0x0000
>>   bMaxPacketSize0 = 0x0040
>>   idVendor = 0x0bda
>>   idProduct = 0x8187
>>   bcdDevice = 0x0200
>>   iManufacturer = 0x0001  <Wireless Manufacturer>
>>   iProduct = 0x0002  <USB2.0 WLAN Adapter>
>>   iSerialNumber = 0x0000  <no string>
>>   bNumConfigurations = 0x0001
>>
>>  3:28:48pm  argus(49): usbconfig -u 3 -a 2 dump_curr_config_desc
>> ugen3.2: <product 0x8187 vendor 0x0bda> at usbus3, cfg=0 md=HOST 
>> spd=HIGH (480Mbps) pwr=ON
>>
>>
>>  Configuration index 0
>>
>>     bLength = 0x0009
>>     bDescriptorType = 0x0002
>>     wTotalLength = 0x0051
>>     bNumInterfaces = 0x0001
>>     bConfigurationValue = 0x0001
>>     iConfiguration = 0x0004  <Wireless Network Card>
>>     bmAttributes = 0x0080
>>     bMaxPower = 0x00fa
>>
>>     Interface 0
>>       bLength = 0x0009
>>       bDescriptorType = 0x0004
>>       bInterfaceNumber = 0x0000
>>       bAlternateSetting = 0x0000
>>       bNumEndpoints = 0x0009
>>       bInterfaceClass = 0x00ff
>>       bInterfaceSubClass = 0x00ff
>>       bInterfaceProtocol = 0x00ff
>>       iInterface = 0x0002  <USB2.0 WLAN Adapter>
>>
>>      Endpoint 0
>>         bLength = 0x0007
>>         bDescriptorType = 0x0005
>>         bEndpointAddress = 0x0083  <IN>
>>     
>
> I have no clue what I'm talking about, so, this might be wrong..
>
> Anyways.. the urtw(4) driver supports two different chips the
> 8187B and 8187L. One difference between those is the number of
> endpoints and its addresses. The 8187L uses 3 endpoints with
> 0x81 as the RX endpoint, the 8187B uses 7 endpoints with 0x83 as
> RX.
>
> % vendor REALTEK		0x0bda	Realtek
> % product REALTEK RTL8187		0x8187	RTL8187 Wireless Adapter
>
> Quoting from the driver:
>
> % #define	URTW_DEV_B(v,p)						\
> % 	{ USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, URTW_REV_RTL8187B) }
> % #define	URTW_DEV_L(v,p)						\
> %	{ USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, URTW_REV_RTL8187L) }
> % ..
> % static const struct usb_device_id urtw_devs[] = {
> % 	URTW_DEV_L(REALTEK, RTL8187),
> % ..
> % static const struct usb_config urtw_8187b_usbconfig[URTW_8187B_N_XFERS] = {
> % 	[URTW_8187B_BULK_RX] = {
> % 		.type = UE_BULK,
> % 		.endpoint = 0x83,
> % ..
> % static const struct usb_config urtw_8187l_usbconfig[URTW_8187L_N_XFERS] = {
> % 	[URTW_8187L_BULK_RX] = {
> % 		.type = UE_BULK,
> % 		.endpoint = 0x81,
>
> It occurs to me that yours might actually be a B chip not a L,
> because there is a 0x83 endpoint but none for 0x81.
>
> Wanna give that a shot?
>
> Index: if_urtw.c
> ===================================================================
> --- if_urtw.c	(revision 222807)
> +++ if_urtw.c	(working copy)
> @@ -112,7 +112,7 @@ static const struct usb_device_id urtw_devs[] = {
>  	URTW_DEV_L(BELKIN, F5D7050E),
>  	URTW_DEV_L(LINKSYS4, WUSB54GCV2),
>  	URTW_DEV_L(NETGEAR, WG111V2),
> -	URTW_DEV_L(REALTEK, RTL8187),
> +	URTW_DEV_B(REALTEK, RTL8187),
>  	URTW_DEV_L(SITECOMEU, WL168V1),
>  	URTW_DEV_L(SURECOM, EP9001G2A),
>  	{ USB_VPI(0x1b75, 0x8187, URTW_REV_RTL8187L) },
>
>
>
>   
>>         bmAttributes = 0x0002  <BULK>
>>         wMaxPacketSize = 0x0200
>>         bInterval = 0x0000
>>         bRefresh = 0x0000
>>         bSynchAddress = 0x0000
>>
>>      Endpoint 1
>>         bLength = 0x0007
>>         bDescriptorType = 0x0005
>>         bEndpointAddress = 0x0004  <OUT>
>>         bmAttributes = 0x0002  <BULK>
>>         wMaxPacketSize = 0x0200
>>         bInterval = 0x0000
>>         bRefresh = 0x0000
>>         bSynchAddress = 0x0000
>>
>>      Endpoint 2
>>         bLength = 0x0007
>>         bDescriptorType = 0x0005
>>         bEndpointAddress = 0x0005  <OUT>
>>         bmAttributes = 0x0002  <BULK>
>>         wMaxPacketSize = 0x0200
>>         bInterval = 0x0000
>>         bRefresh = 0x0000
>>         bSynchAddress = 0x0000
>>
>>      Endpoint 3
>>         bLength = 0x0007
>>         bDescriptorType = 0x0005
>>         bEndpointAddress = 0x0006  <OUT>
>>         bmAttributes = 0x0002  <BULK>
>>         wMaxPacketSize = 0x0200
>>         bInterval = 0x0000
>>         bRefresh = 0x0000
>>         bSynchAddress = 0x0000
>>
>>      Endpoint 4
>>         bLength = 0x0007
>>         bDescriptorType = 0x0005
>>         bEndpointAddress = 0x0007  <OUT>
>>         bmAttributes = 0x0002  <BULK>
>>         wMaxPacketSize = 0x0200
>>         bInterval = 0x0000
>>         bRefresh = 0x0000
>>         bSynchAddress = 0x0000
>>
>>      Endpoint 5
>>         bLength = 0x0007
>>         bDescriptorType = 0x0005
>>         bEndpointAddress = 0x0089  <IN>
>>         bmAttributes = 0x0002  <BULK>
>>         wMaxPacketSize = 0x0200
>>         bInterval = 0x0000
>>         bRefresh = 0x0000
>>         bSynchAddress = 0x0000
>>
>>      Endpoint 6
>>         bLength = 0x0007
>>         bDescriptorType = 0x0005
>>         bEndpointAddress = 0x000a  <OUT>
>>         bmAttributes = 0x0002  <BULK>
>>         wMaxPacketSize = 0x0200
>>         bInterval = 0x0000
>>         bRefresh = 0x0000
>>         bSynchAddress = 0x0000
>>
>>      Endpoint 7
>>         bLength = 0x0007
>>         bDescriptorType = 0x0005
>>         bEndpointAddress = 0x000b  <OUT>
>>         bmAttributes = 0x0002  <BULK>
>>         wMaxPacketSize = 0x0200
>>         bInterval = 0x0000
>>         bRefresh = 0x0000
>>         bSynchAddress = 0x0000
>>
>>      Endpoint 8
>>         bLength = 0x0007
>>         bDescriptorType = 0x0005
>>         bEndpointAddress = 0x000c  <OUT>
>>         bmAttributes = 0x0002  <BULK>
>>         wMaxPacketSize = 0x0200
>>         bInterval = 0x0000
>>         bRefresh = 0x0000
>>         bSynchAddress = 0x0000
>>
>> If a verbose boot or any other info is needed to get this working, 
>> please tell me, and I'll get you the info.
>>
>> I do have to admit, at the price these are going for, they are rather 
>> nice, and do reach out and touch a router.  Review complaints: heat 
>> dissipation.  If you buy one, don't operate it in a hot environment.  
>> I'd like to see it working in FreeBSD, but I don't have a handle on the 
>> wifi driver structure.  Linux source code was included on the driver 
>> disk.  I can email that directly to whomever needs it for comparison.
>>
>>
>> Thanks,
>>
>> Jim, KC5VDJ
>>
>> _______________________________________________
>> freebsd-stable@freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-stable
>> To unsubscribe, send any mail to "freebsd-stable-unsubscribe@freebsd.org"
>>     
>
> --
> Bernhard
>
>   



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