Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Jan 2013 08:48:52 -0600
From:      dweimer <dweimer@dweimer.net>
To:        Shane Ambler <FreeBSD@shaneware.biz>
Cc:        FreeBSD Questions <freebsd-questions@freebsd.org>
Subject:   Re: Locking USB Serial Device to Specific Com port
Message-ID:  <0fd00d9caad3787f4cd0e443e5931340@dweimer.net>
In-Reply-To: <51045B48.40202@ShaneWare.Biz>
References:  <762f51b7c30dd5c920788336b3eb4fa5@dweimer.net> <51045B48.40202@ShaneWare.Biz>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2013-01-26 16:40, Shane Ambler wrote:
> On 27/01/2013 08:15, dweimer wrote:
>
>> I would like to lock down the USB serial port adapter used on the 
>> UPS to
>> /dev/cuaU0, to make sure the UPS is always monitored and I will get 
>> a
>> clean shutdown in event of a power failure.
>>
>> I believe that this requires setting a hint line of some sort in the
>> /boot/loader.conf file, but I am having trouble tracking down what 
>> this
>> should be, or maybe I am on the wrong track.  Here is the current
>> information from the adpapters, the UPS adapter was connected at 
>> boot,
>> is on /dev/cuaU0, the other one was plugged in after boot, and is on
>> /dev/cuaU1.
>
> start with man devd.conf
>
> You can add your own devd files in /usr/local/etc/devd/
> Something along the lines of -
>
> attach 200 {
> device-name "cuaU[0-9]+";
> match "vendor" "0x067b";
> match "product" "0x2303";
> action "sleep 2; cd /dev; ln -s ${device-name} upsmonitor";
> };
>
> use usbconfig to get info. I am thinking with the similarity of the 
> two
> you may need to rely on bus and hubaddr or devaddr to keep each 
> device
> identified by usb port location.

OK, so I was looking in the wrong direction, which might explain why my 
searching wasn't finding anything.

However I might still be out of luck, after doing some checking, and a 
reboot the only difference I can find is below.

dev.uplcom.0.%location: bus=1 hubaddr=1 port=0 devaddr=2 interface=0
dev.uplcom.1.%location: bus=1 hubaddr=3 port=0 devaddr=3 interface=0

The devices have switch at this point, all info from usbconfig, dmesg, 
looks identical, these two lines from the sysctl -a | grep "uplcom" 
output is all that changed, the hubaddr=1 and hubaddr=3 have switched, 
however the man devd.conf has a variable list, to use, and doesn't seem 
to have an option to match agains that hubaddr variable.

  Variable      Description
      bus           Device name of parent bus.
      cdev          Device node path if one is created by the devfs(5) 
filesys-
                    tem.
      cisproduct    CIS-product.
      cisvendor     CIS-vendor.
      class         Device class.
      device        Device ID.
      devclass      Device Class (USB)
      devsubclass   Device Sub-class (USB)
      device-name   Name of attached/detached device.
      endpoints     Endpoint count (USB)
      function      Card functions.
      interface     Interface ID (USB)
      intclass      Interface Class (USB)
      intprotocol   Interface Protocol  (USB)
      intsubclass   Interface Sub-class (USB)
      manufacturer  Manufacturer ID (pccard).
      mode          Peripheral mode (USB)
      notify        Match the value of the ``notify'' variable.
      parent        Parent device
      port          Hub port number (USB)
      product       Product ID (pccard/USB).
      release       Hardware revision (USB)
      sernum        Serial Number (USB).
      slot          Card slot.
      subvendor     Sub-vendor ID.
      subdevice     Sub-device ID.
      subsystem     Matches a subsystem of a system, see below.
      system        Matches a system type, see below.
      type          Type of notification, see below.
      vendor        Vendor ID.


But the action line above does give me an idea though, I should be able 
to write a script to run at startup to find the line, and create the 
link to the device.  The only one I care about is the UPS monitor, as 
the other is only occasionally used, and I can easily check which com 
port its on before connecting to it.

-- 
Thanks,
    Dean E. Weimer
    http://www.dweimer.net/



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