Question on ue devices autoconfigure versus Linux.

Alfred Perlstein alfred at freebsd.org
Sat Nov 29 00:38:00 UTC 2014


Hello,

We have a widget here, basically a "beagleclone" that runs Linux.

When I plug it into an ubuntu host it shows up as:

usb0      Link encap:Ethernet  HWaddr 8a:18:9f:c4:a9:02
           inet addr:169.254.99.129  Bcast:169.254.99.131 
Mask:255.255.255.252
           inet6 addr: fe80::8818:9fff:fec4:a902/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:3 errors:0 dropped:0 overruns:0 frame:0
           TX packets:56 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:626 (626.0 B)  TX bytes:10727 (10.7 KB)

Requires no special setup.

However on a FreeBSD machine I need to do this:

USBDEV=$(shell dmesg | grep '^ugen.*LCD' | sed -E 
's/^ugen([0-9]+\.[0-9]+).*/\1/')
# target to make the device show up on freebsd.
config-freebsd:
         usbconfig -d $(USBDEV) set_config 1
         sleep 5
         ifconfig ue0 inet 169.254.99.129/24  up

Basically I need to grep dmesg for "ugen" and the string "LCD", then I 
need to run:
  usbconfig -d 3.3 set_config 1  # (3.3 comes from dmesg)
  then..
  ifconfig ue0 inet 169.254.99.129/24  up

Any idea why Linux can do this all automagically but FreeBSD needs 
manual help?


I even tried putting some stuff into devd.conf, however devd doesn't 
seem to the right thing if the device is plugged in at boot time. This 
is because devd only seems to know when a device is plugged in, however 
it doesn't trigger events when the device has been present since boot.

Any tips on this?  We can get around this with some custom rc scripts, 
but I was just wondering if FreeBSD could make it more plug and play.

thanks,
-Alfred


More information about the freebsd-usb mailing list