problem with urtw
Matt
sendtomatt at gmail.com
Sat Jun 11 02:02:26 UTC 2011
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 at freebsd.org mailing list
>>> http://lists.freebsd.org/mailman/listinfo/freebsd-stable
>>> To unsubscribe, send any mail to
>>> "freebsd-stable-unsubscribe at freebsd.org"
>>
>> --
>> Bernhard
>>
> _______________________________________________
> freebsd-wireless at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-wireless
> To unsubscribe, send any mail to
> "freebsd-wireless-unsubscribe at 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
More information about the freebsd-wireless
mailing list