On Sun, 2017-10-01 at 20:59 +0200, Tomasz CEDRO wrote:
> On Sun, Oct 1, 2017 at 8:23 PM, Ian Lepore <i...@freebsd.org> wrote:
> > 
> > On Sun, 2017-10-01 at 20:17 +0200, Tomasz CEDRO wrote:
> > > 
> > > [...old stuff...]
> I have verified on uath device (more on that below) and it turns out
> $cdev works fine.. but it returns /dev/usb/X.Y.Z not the /dev/cuaU0
> which does not work with this "gobi_loader" utility which requires
> /dev/cuaU0 (CDC / serial port device)... any clues how to replace
> $cdev with cuaUX? :-)
> Regarding the UATH, I have TP-LINK TL-WN822N Ver2.0 based on Atheros
> 9002[1] and it seems to work with modified /dev/devd/uath.conf but
> the
> uathload returns "Operation not permitted" when executed as root and
> during boot..
> [1] https://wikidevi.com/wiki/TP-LINK_TL-WN822N_v2

Hmmm.  I think we need to key off the tty 'attach' event instead of the
devfs 'create' event.  The tty attach for a usb device is the one event
that has all the info we need in one message.  This is assuming the
device name in dmesg on attach is u3g0 or u3g1 or whatever.

attach 100 {
        device-name             "(u3g)[0-9]+";
        match "vendor"          "0x04da";
        match "product"         "0x250e";
        action "/usr/local/bin/gobi_loader /dev/cua$ttyname 

The way I arrived at this conclusion was to first look in the devd
source to figure out/remind myself that devd creates variables from all
the tag=value tuples it finds in the events coming from the kernel.
 Then I connected to devd using netcat so I could watch the events as
they happen:

  nc -U /var/run/devd.pipe

then I plugged in a usb-serial adapter (I have no u3g stuff), which
creates a whole lot of events.  The last one was the tty attach:

+uplcom0 at bus=1 hubaddr=1 port=1 devaddr=2 interface=0 ugen=ugen1.2
vendor=0x067b product=0x2303 devclass=0x00 devsubclass=0x00
devproto=0x00 sernum="" release=0x0300 mode=host intclass=0xff
intsubclass=0x00 intprotocol=0x00 ttyname=U0 ttyports=1 on uhub1

The '+' means it's an attach, the "device-name" variable is set from
the space-delimited word after the +, and then vars are created from
all the tag=value tuples between 'at' and 'on'.  So that gives us the
info to match product and vendor, and ttyname is the suffix to append
to /dev/cua to make the cdev name.

-- Ian
freebsd-usb@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"

Reply via email to