Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 2 Mar 2014 04:55:41 GMT
From:      Hiroo Ono <hiroo.ono+freebsd@gmail.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   usb/187188: [USB][patch] ELECOM WRH-150 needs a quirk
Message-ID:  <201403020455.s224tfmw089545@cgiserv.freebsd.org>
Resent-Message-ID: <201403020500.s22500RE005295@freefall.freebsd.org>

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

>Number:         187188
>Category:       usb
>Synopsis:       [USB][patch] ELECOM WRH-150 needs a quirk
>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 Mar 02 05:00:00 UTC 2014
>Closed-Date:
>Last-Modified:
>Originator:     Hiroo Ono
>Release:        10.0R
>Organization:
>Environment:
>Description:
Hello,

The device from ELECOM co., ltd. needs quirk to be attached as an USB ethernet device.
It is a wireless router that has an USB ethernet interface, inside
which has the REALTEK RTL8196EU.

I found the following pages that describe the device: http://www.to-link.net/ProductShow.asp?ID=132
Some devices like ASUS WL-330NUL are said to be using the same board.

output of usbconfig is as follows.

# usbconfig -d 4.3
ugen4.3: <USB Network Interface ELECOM CO., LTD.> at usbus4, cfg=1 md=HOST spd=HIGH (480Mbps) pwr=ON (100mA)

# usbconfig -d 4.3 dump_device_desc
ugen4.3: <USB Network Interface ELECOM CO., LTD.> at usbus4, cfg=1 md=HOST spd=HIGH (480Mbps) pwr=ON (100mA)

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x0002 
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x0bda 
  idProduct = 0x8196 
  bcdDevice = 0x0000 
  iManufacturer = 0x0001  <ELECOM CO., LTD.>
  iProduct = 0x0002  <USB Network Interface>
  iSerialNumber = 0x0003  <0090FE9832FF>
  bNumConfigurations = 0x0002 


# usbconfig -d 4.3 dump_all_config_desc
ugen4.3: <USB Network Interface ELECOM CO., LTD.> at usbus4, cfg=1 md=HOST spd=HIGH (480Mbps) pwr=ON (100mA)


 Configuration index 0

    bLength = 0x0009 
    bDescriptorType = 0x0002 
    wTotalLength = 0x0043 
    bNumInterfaces = 0x0002 
    bConfigurationValue = 0x0001 
    iConfiguration = 0x0009  <RNDIS>
    bmAttributes = 0x00c0 
    bMaxPower = 0x0032 

    Interface 0
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0000 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0001 
      bInterfaceClass = 0x0002 
      bInterfaceSubClass = 0x0002 
      bInterfaceProtocol = 0x00ff 
      iInterface = 0x0006  <RNDIS Communications Control>

      Additional Descriptor

      bLength = 0x05
      bDescriptorType = 0x24
      bDescriptorSubType = 0x00
       RAW dump: 
       0x00 | 0x05, 0x24, 0x00, 0x10, 0x01


      Additional Descriptor

      bLength = 0x05
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump: 
       0x00 | 0x05, 0x24, 0x01, 0x00, 0x01


      Additional Descriptor

      bLength = 0x04
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump: 
       0x00 | 0x04, 0x24, 0x02, 0x00


      Additional Descriptor

      bLength = 0x05
      bDescriptorType = 0x24
      bDescriptorSubType = 0x06
       RAW dump: 
       0x00 | 0x05, 0x24, 0x06, 0x00, 0x01


     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0083  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0008 
        bInterval = 0x000b 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 


    Interface 1
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0001 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0002 
      bInterfaceClass = 0x000a 
      bInterfaceSubClass = 0x0000 
      bInterfaceProtocol = 0x0000 
      iInterface = 0x0004  <Ethernet Data>

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 1
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0002  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 



 Configuration index 1

    bLength = 0x0009 
    bDescriptorType = 0x0002 
    wTotalLength = 0x0050 
    bNumInterfaces = 0x0002 
    bConfigurationValue = 0x0002 
    iConfiguration = 0x0007  <CDC Ethernet>
    bmAttributes = 0x00c0 
    bMaxPower = 0x0032 

    Interface 0
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0000 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0001 
      bInterfaceClass = 0x0002 
      bInterfaceSubClass = 0x0006 
      bInterfaceProtocol = 0x0000 
      iInterface = 0x0005  <CDC Communications Control>

      Additional Descriptor

      bLength = 0x05
      bDescriptorType = 0x24
      bDescriptorSubType = 0x00
       RAW dump: 
       0x00 | 0x05, 0x24, 0x00, 0x10, 0x01


      Additional Descriptor

      bLength = 0x05
      bDescriptorType = 0x24
      bDescriptorSubType = 0x06
       RAW dump: 
       0x00 | 0x05, 0x24, 0x06, 0x00, 0x01


      Additional Descriptor

      bLength = 0x0d
      bDescriptorType = 0x24
      bDescriptorSubType = 0x0f
       RAW dump: 
       0x00 | 0x0d, 0x24, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 
       0x08 | 0xea, 0x05, 0x00, 0x00, 0x00


     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0083  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0008 
        bInterval = 0x000b 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 


    Interface 1
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0001 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0000 
      bInterfaceClass = 0x000a 
      bInterfaceSubClass = 0x0000 
      bInterfaceProtocol = 0x0000 
      iInterface = 0x0000  <no string>


    Interface 1 Alt 1
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0001 
      bAlternateSetting = 0x0001 
      bNumEndpoints = 0x0002 
      bInterfaceClass = 0x000a 
      bInterfaceSubClass = 0x0000 
      bInterfaceProtocol = 0x0000 
      iInterface = 0x0004  <Ethernet Data>

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

     Endpoint 1
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0002  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200 
        bInterval = 0x0000 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 

>How-To-Repeat:

>Fix:
I have checked it on 10.0-RELEASE. The attached patch is against -current.

Patch attached with submission follows:

diff -ur usb/quirk/usb_quirk.c usb.mod/quirk/usb_quirk.c
--- usb/quirk/usb_quirk.c	2014-03-01 05:37:22.000000000 +0900
+++ usb.mod/quirk/usb_quirk.c	2014-03-01 06:12:59.000000000 +0900
@@ -95,6 +95,7 @@
 	USB_QUIRK(LOGITECH, UN53B, 0x0000, 0xffff, UQ_NO_STRINGS),
 	USB_QUIRK(ELSA, MODEM1, 0x0000, 0xffff, UQ_CFG_INDEX_1),
 	USB_QUIRK(PLANEX2, MZKUE150N, 0x0000, 0xffff, UQ_CFG_INDEX_1),
+	USB_QUIRK(REALTEK, RTL8196EU, 0x0000, 0xffff, UQ_CFG_INDEX_1),
 	/* Quirks for printer devices */
 	USB_QUIRK(HP, 895C, 0x0000, 0xffff, UQ_BROKEN_BIDIR),
 	USB_QUIRK(HP, 880C, 0x0000, 0xffff, UQ_BROKEN_BIDIR),
diff -ur usb/usbdevs usb.mod/usbdevs
--- usb/usbdevs	2014-03-01 05:43:08.000000000 +0900
+++ usb.mod/usbdevs	2014-03-01 06:11:30.000000000 +0900
@@ -3688,6 +3688,7 @@
 product REALTEK RTL8188CU_2	0x817b	RTL8188CU
 product REALTEK RTL8187		0x8187	RTL8187 Wireless Adapter
 product REALTEK RTL8187B_0	0x8189	RTL8187B Wireless Adapter
+product REALTEK RTL8196EU	0x8196	RTL8196EU
 product REALTEK RTL8187B_1	0x8197	RTL8187B Wireless Adapter
 product REALTEK RTL8187B_2	0x8198	RTL8187B Wireless Adapter
 product REALTEK RTL8188CUS	0x818a	RTL8188CUS


>Release-Note:
>Audit-Trail:
>Unformatted:



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