devd problem with 9-stable

Ronald Klop ronald-freebsd8 at klop.yi.org
Fri Jun 15 19:13:30 UTC 2012


On Fri, 15 Jun 2012 18:40:45 +0200, Kevin Oberman <kob6558 at gmail.com>  
wrote:

> On Fri, Jun 15, 2012 at 7:53 AM, Ronald Klop
> <ronald-freebsd8 at klop.yi.org> wrote:
>> On Fri, 15 Jun 2012 15:50:49 +0200, Warren Block <wblock at wonkity.com>  
>> wrote:
>>
>>> On Fri, 15 Jun 2012, Ronald Klop wrote:
>>>
>>>> On Fri, 15 Jun 2012 08:01:21 +0200, Kevin Oberman <kob6558 at gmail.com>
>>>> wrote:
>>>>
>>>>> On Thu, Jun 14, 2012 at 3:11 AM, Ronald Klop
>>>>> <ronald-freebsd8 at klop.yi.org> wrote:
>>>>>>
>>>>>> On Thu, 14 Jun 2012 02:41:58 +0200, Kevin Oberman  
>>>>>> <kob6558 at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Since updating my systems to 9-Stable, I am not getting my  
>>>>>>> smartcard
>>>>>>> reader attached when hot-plugged.
>>>>>>>
>>>>>>>> From devd.conf
>>>>>>>
>>>>>>>  attach 50 {
>>>>>>>      device-name "ugen[0-9]+";
>>>>>>>      match "vendor" "0x0529";
>>>>>>>      match "product" "0x0600";
>>>>>>>      action "/usr/local/sbin/openct-control attach usb:529/600 usb
>>>>>>> /dev/$dev$
>>>>>>> };
>>>>>>> detach 50 {
>>>>>>>      device-name "ugen[0-9]+";
>>>>>>>      match "vendor" "0x0529";
>>>>>>>      match "product" "0x0600";
>>>>>>>      action "/usr/bin/pkill -fx '/usr/local/sbin/ifdhandler -H -p
>>>>>>> [a-z0-9]+ $
>>>>>>> };
>>>>>>>  If I manually enter the "action" command, it works fine, but it  
>>>>>>> fails
>>>>>>> when I insert the device. It worked fine under version 8. I have
>>>>>>> confirmed devd is seeing the device inserted just fine. the action
>>>>>>> just does not seem to be carried out.
>>>>>>>  Any idea where I should look? I saw a couple of threads on current
>>>>>>> from others seeing something similar, but could find no resolution.
>>>>>>> I have seen a
>>>>>>
>>>>>>  Did you run devd with debug messages on? Options -D and -d are
>>>>>> helpful.
>>>>>> If you do does devd match the right devd.conf sections and start the
>>>>>> action?
>>>>>
>>>>>  With debug i get:
>>>>> Processing event '!system=USB subsystem=DEVICE type=ATTACH
>>>>> ugen=ugen1.3 cdev=ugen1.3 vendor=0x0529 product=0x0600 devclass=0xff
>>>>> devsubclass=0x00 sernum="" release=0x0100 mode=host port=1
>>>>> parent=ugen1.2'
>>>>> [long list of "Testing" entries, none of which 'vendor' matched]
>>>>> Executing 'logger Unknown USB device: vendor 0x0529 product 0x0600  
>>>>> bus
>>>>> uhub3'
>>>>>  So it looks like devd is not matching the vendor. But my devd.conf
>>>>> file contains that vendor. I don't know exactly why it is not being
>>>>> tested against. Nothing in the debug output gives me a clue and I
>>>>> tried grepping for one of the tested vendor IDs in /etc/devd.conf and
>>>>> /etc/devd/*.conf.  Not found.
>>>>>  I am at a loss.
>>>>
>>>>
>>>> http://www.freebsd.org/releases/9.0R/errata.html
>>>> See point 3 under Open Issues.
>>>
>>>
>>> Even with those changes, devd is not triggering on my scanner attach:
>>>
>>>         match "subsystem" "DEVICE";
>>>         match "type" "ATTACH";
>>>         match "cdev" "ugen[0-9]+.[0-9]+";
>>>         match "vendor" "0x04b8";
>>>         match "product" "0x010a";
>>>         action "echo HERE! $cdev > /tmp/zoot";
>>>
>>> # devd -d -D -f /etc/devd/wb.conf
>>>
>>> Processing event '!system=USB subsystem=DEVICE type=ATTACH ugen=ugen0.6
>>> cdev=ugen0.6 vendor=0x04b8 product=0x010a devclass=0xff  
>>> devsubclass=0xff
>>> sernum="" release=0x0103 mode=host port=4 parent=ugen0.4'
>>> Pushing table
>>> setting system=USB
>>> setting subsystem=DEVICE
>>> setting type=ATTACH
>>> setting ugen=ugen0.6
>>> setting cdev=ugen0.6
>>> setting vendor=0x04b8
>>> setting product=0x010a
>>> setting devclass=0xff
>>> setting devsubclass=0xff
>>> setting sernum=
>>> setting release=0x0103
>>> setting mode=host
>>> setting port=4
>>> setting parent=ugen0.4
>>> Processing notify event
>>> Testing system=USB against ^DEVFS
>>> Testing system=USB against ^DEVFS
>>> Popping table
>>>
>>
>> I tried the same attaching my webcam on pcbsd in vmware.
>>
>> [root at pcbsd-1684 /etc/devd]# cat /tmp/bla.conf
>> notify 100 {
>>
>>  match "subsystem" "DEVICE";
>>  match "type" "ATTACH";
>>  match "cdev" "ugen[0-9]+.[0-9]+";
>>  match "vendor" "0x2232";
>>  match "product" "0x1008";
>>  action "echo HERE! $cdev >> /tmp/bla.log";
>>  };
>>
>> # devd -d -D -f /tmp/bla.conf
>> ...
>> Processing event '!system=USB subsystem=DEVICE type=ATTACH ugen=ugen1.2
>> cdev=ugen1.2 vendor=0x2232 product=0x1008 devclass=0xef devsubclass=0x02
>> sernum="" release=0x0019 mode=host port=1 parent=ugen1.1'
>>
>>  Pushing table
>> setting system=USB
>> setting subsystem=DEVICE
>> setting type=ATTACH
>> setting ugen=ugen1.2
>> setting cdev=ugen1.2
>> setting vendor=0x2232
>> setting product=0x1008
>> setting devclass=0xef
>> setting devsubclass=0x02
>>  setting sernum=
>> setting release=0x0019
>> setting mode=host
>> setting port=1
>> setting parent=ugen1.1
>> Processing notify event
>> Testing subsystem=DEVICE against ^DEVICE
>> Testing type=ATTACH against ^ATTACH
>> Testing cdev=ugen1.2 against ^ugen[0-9]+.[0-9]+
>>  Testing vendor=0x2232 against ^0x2232
>> Testing product=0x1008 against ^0x1008
>> Executing 'echo HERE! ugen1.2 >> /tmp/bla.log'
>> Popping table
>>
>> [root at pcbsd-1684 /etc/devd]# cat /tmp/bla.log
>> HERE! ugen1.2
>>
>> Do you see a significant difference with your setup?
>
> Switched to 'notify' with:
> notify 50 {
>         match "system" "USB"
>         match "subsystem" "DEVICE";
>         match "type" "ATTACH";
>         match "cdev" "ugen[0-9\.]+";
>         match "vendor" "0x0529";
>         match "product" "0x0600";
>         action "/usr/local/sbin/openct-control attach usb:529/600 usb  
> /dev/$devi
> ce-name";
> };
>
> I still see no attempt to match against vendor 0x0529. Still no go.
> (Note that I prefer the [0-9\.] + syntax, but tried yours, as well.)
>
> The real issue is that devd seems to have a long list of vendors that
> it matches against, but 0x529 is not in that list, so matching the
> device name is not likely an issue.

You miss a ; after "USB" and I don't think $device-name is still used. It  
is replaced with $cdev and $ugen according to the 9.0 errata.

http://www.freebsd.org/releases/9.0R/errata.html

And it should not be necessary to escape a . within a set of characters in  
a regular expression. But I don't now the internals of devd and if it  
really uses regular expressions.

NB: it can help if you post the debug output from devd online somewhere.  
So people can have a look at the output of devd in stead of guessing from  
the syntax of the config.

Succes,
Ronald.


More information about the freebsd-stable mailing list