USB ethernet adapter support
Ross Penner
rossp at f-m.fm
Wed Sep 17 17:58:13 UTC 2014
The following is a discussion I had on the freebsd-questions list. I've
decided to take the route of buying an adapter that works on FreeBSD 10
Release but, on suggestion, I thought I would ask on these lists if
there was anywhere I could mail my useless (to me) adapter so support
could be added.
----- Original message -----
From: Ross Penner <rossp at f-m.fm>
To: Roland Smith <rsmith at xs4all.nl>
Cc: freebsd-questions at freebsd.org
Subject: Re: USB ethernet adapter support
Date: Sun, 07 Sep 2014 15:06:05 -0700
On Sat, 30 Aug 2014, at 02:23 AM, Roland Smith wrote:
> On Fri, Aug 29, 2014 at 11:34:02PM -0700, Ross Penner wrote:
> > I have a USB ethernet adapter that doesn't seem to work out of the box
> > on my 10.0 system. I'm hoping somebody can help me figure out what
> > driver to load, or if there even is a driver available.
> >
> > When I plug the device into the FreeBSD machine the only line on dmesg
> > is:
> > ugen4.2: <Linksys> at usbus4
> >
> > It does work with my Ubuntu 14.04 system. I've added the dmesg output in
> > the hopes that it will be helpful:
> > [137513.415146] usb 1-1.5: new high-speed USB device number 6 using
> > ehci-pci
> > [137513.508489] usb 1-1.5: New USB device found, idVendor=13b1,
> > idProduct=0041
> > [137513.508493] usb 1-1.5: New USB device strings: Mfr=1, Product=2,
> > SerialNumber=6
> > [137513.508494] usb 1-1.5: Product: Linksys USB3GIGV1
> > [137513.508495] usb 1-1.5: Manufacturer: Linksys
> > [137513.508497] usb 1-1.5: SerialNumber: 000001000000
> > [137513.528939] cdc_ether 1-1.5:2.0 eth1: register 'cdc_ether' at
> > usb-0000:00:1a.0-1.5, CDC Ethernet Device, b4:75:0e:8f:5e:90
> > [137513.528960] usbcore: registered new interface driver cdc_ether
> > [137518.015729] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
>
> You might get it to work with cdce(4). From the manual page:
>
> Many USB devices notoriously fail to report their class and
> interfaces
> correctly. Undetected products might work flawlessly when their
> vendor
> and product IDs are added to the driver manually.
>
> You will have to patch the files /usr/src/sys/dev/usb/usbdevs and
> /usr/src/sys/dev/usb/net/if_cdce.c to add this device. Everything
> *between*
> the lines starting with “+++++” is the patch;
>
> +++++ patch for /usr/src/sys/dev/usb/usbdevs +++++
> --- usbdevs.orig 2014-08-30 10:40:43.000000000 +0200
> +++ usbdevs 2014-08-30 10:42:58.000000000 +0200
> @@ -1402,6 +1402,7 @@
> product CISCOLINKSYS WUSB54GR 0x0023 WUSB54GR
> product CISCOLINKSYS WUSBF54G 0x0024 WUSBF54G
> product CISCOLINKSYS AE1000 0x002f AE1000
> +product CISCOLINKSYS USB3GIGV 0x0041 USB3GIGV
> product CISCOLINKSYS2 RT3070 0x4001 RT3070
> product CISCOLINKSYS3 RT3070 0x0101 RT3070
> +++++ patch for /usr/src/sys/dev/usb/usbdevs +++++
>
> Save this patch to a file (e.g. usbdevs.diff) and use the patch(1)
> utility to apply it;
>
> # cd /usr/src/sys/dev/usb/
> # patch </path/to/patch/usbdevs.diff
>
> Then you'll have to patch /usr/src/sys/dev/usb/net/if_cdce.c to do the
> same;
>
> +++++ patch for /usr/src/sys/dev/usb/net/if_cdce.c +++++
> --- if_cdce.c.orig 2014-08-30 11:07:02.000000000 +0200
> +++ if_cdce.c 2014-08-30 11:09:56.000000000 +0200
> @@ -277,6 +277,7 @@
> {USB_VPI(USB_VENDOR_SHARP, USB_PRODUCT_SHARP_SLA300, CDCE_FLAG_ZAURUS | CDCE_FLAG_NO_UNION)},
> {USB_VPI(USB_VENDOR_SHARP, USB_PRODUCT_SHARP_SLC700, CDCE_FLAG_ZAURUS | CDCE_FLAG_NO_UNION)},
> {USB_VPI(USB_VENDOR_SHARP, USB_PRODUCT_SHARP_SLC750, CDCE_FLAG_ZAURUS | CDCE_FLAG_NO_UNION)},
> + {USB_VPI(USB_VENDOR_CISCOLINKSYS,
> USB_PRODUCT_CISCOLINKSYS_USB3GIGV, CDCE_FLAG_NO_UNION)},
> };
>
> static const STRUCT_USB_DUAL_ID cdce_dual_devs[] = {
> +++++ patch for /usr/src/sys/dev/usb/net/if_cdce.c +++++
>
> Note that these patches were prepared on a 10-STABLE system; the files
> might
> differ slightly from those on 10.0-RELEASE. If applying the patches
> fails,
> edit the files by hand.
>
> Now you have to rebuild and install the cdce module;
>
> # cd /usr/src/sys/modules/usb/cdce
> # make
> # cp if_cdce.ko /boot/kernel/
> # make cleandir
>
> If the old if_cdce module is loaded, unload it;
>
> # kldunload if_cdce.ko
>
>
> IIRC, required modules are loaded automatically, but to be sure you can
> load
> the module before plugging the device in;
>
> # kldload if_cdce.ko
>
> Now plug in the device and see if it works. Note that I don't have access
> to
> this hardware so I don't know if it works.
>
> While I don't think this will crash your system, you never know. So make
> sure you
> have up-to-date backups.
>
>
> Roland
> --
> R.F.Smith http://rsmith.home.xs4all.nl/
> [plain text _non-HTML_ PGP/GnuPG encrypted/signed email much appreciated]
> pgp: 5753 3324 1661 B0FE 8D93 FCED 40F6 D5DC A38A 33E0 (keyID: A38A33E0)
> Email had 1 attachment:
> + Attachment2
> 1k (application/pgp-signature)
I applied the patches manually and had some mixed success.
I can see the device and it registers as ue0. unfortunetly, it doesn't
completely work.
When I plug it in, the console displays:
ugen4.2: <Linksys> at usbus4
cdce0: <Linksys Linksys USB3GIGV1, class 0/0, rev 2.10/30.00, adds 2> on
usbus4
cdce0: faking MAC address
ue0: <USB Ethernet> on cdce0
ue0: Ethernet address: 2a:d5:07:9d:01:00
The output from 'ifconfig ue0':
ue0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 MTU 1500
ether 2a:d5:07:9d:01:00
nd6 options=29<PREFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
Notably lacking a media or status entry.
Is there any where I can go from here or should I wrote off this adapter
and find a replacement?
More information about the freebsd-hardware
mailing list