Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 10 Jun 2011 19:02:18 -0700
From:      Matt <sendtomatt@gmail.com>
To:        freebsd-wireless@freebsd.org
Subject:   Re: problem with urtw
Message-ID:  <4DF2CCAA.2050500@gmail.com>
In-Reply-To: <4DF274F6.6050905@gmail.com>
References:  <4DF12E4A.5020906@gmail.com>	<201106100913.42480.bschmidt@freebsd.org> <4DF274F6.6050905@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 06/10/11 12:48, Jim Bryant wrote:
> 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
>>
> _______________________________________________
> freebsd-wireless@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-wireless
> To unsubscribe, send any mail to 
> "freebsd-wireless-unsubscribe@freebsd.org"
>
The classic engineering question as far as I know is "Did it ever work?"
Is any other operating system capable of bringing this device up & 
connecting to wireless networks etc?

China's street market (now on eBay!) is known as the residence of the 
true spirit of caveat emptor.

Matt



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