Locking USB Serial Device to Specific Com port

dweimer dweimer at dweimer.net
Sun Jan 27 16:14:59 UTC 2013


On 2013-01-27 09:29, Warren Block wrote:
> On Sun, 27 Jan 2013, dweimer wrote:
>
>> 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
>
> usbconfig may be able to get the device serial number, although they
> may not be unique.  Jamming useful scripts inside an action can be
> complicated. It may be easier to just trigger an external script.

That's just it, can't get usbconfig to give me anything different 
between the two, they don't appear to have a serial number set on them.

# usbconfig -d ugen0.2 dump_device_desc
ugen0.2: <USB-Serial Controller Prolific Technology Inc.> at usbus0, 
cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON

   bLength = 0x0012
   bDescriptorType = 0x0001
   bcdUSB = 0x0110
   bDeviceClass = 0x0000
   bDeviceSubClass = 0x0000
   bDeviceProtocol = 0x0000
   bMaxPacketSize0 = 0x0040
   idVendor = 0x067b
   idProduct = 0x2303
   bcdDevice = 0x0300
   iManufacturer = 0x0001  <Prolific Technology Inc.>
   iProduct = 0x0002  <USB-Serial Controller>
   iSerialNumber = 0x0000  <no string>
   bNumConfigurations = 0x0001

# usbconfig -d ugen0.3 dump_device_desc
ugen0.3: <USB-Serial Controller Prolific Technology Inc.> at usbus0, 
cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON

   bLength = 0x0012
   bDescriptorType = 0x0001
   bcdUSB = 0x0110
   bDeviceClass = 0x0000
   bDeviceSubClass = 0x0000
   bDeviceProtocol = 0x0000
   bMaxPacketSize0 = 0x0040
   idVendor = 0x067b
   idProduct = 0x2303
   bcdDevice = 0x0300
   iManufacturer = 0x0001  <Prolific Technology Inc.>
   iProduct = 0x0002  <USB-Serial Controller>
   iSerialNumber = 0x0000  <no string>
   bNumConfigurations = 0x0001


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


More information about the freebsd-questions mailing list