linux-hotplug.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* udev sysfs %s{filename} not working
@ 2005-03-22 10:59 Oliver Comber
  2005-03-22 11:08 ` Kay Sievers
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Oliver Comber @ 2005-03-22 10:59 UTC (permalink / raw)
  To: linux-hotplug

Hi List,

I'm having a problem creating symbolic links with udev using the %
s{filename} construct.

I'm using Ubuntu Warty, kernel 2.6.8.1-4-386, udev 0.026-1ubuntu5.

I want to name USB devices, specifically printers, according to
manufacturer and possibly (eventually) serial number.

The rule I'm trying to use is:
 BUS="usb", KERNEL="lp[0-9]*",   NAME="usb/%k", SYMLINK="usbdev-%
s{product}"

The symlink which gets created is:
lrwxrwxrwx    1 root     root            7 Mar 22 10:36 /dev/usbdev- ->
usb/lp0

My %s{product} bit seems to resolve to an empty string.

What am I doing wrong?

Thanks in advance!

-Oli



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_ide95&alloc_id\x14396&op=click
_______________________________________________
Linux-hotplug-devel mailing list  http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: udev sysfs %s{filename} not working
  2005-03-22 10:59 udev sysfs %s{filename} not working Oliver Comber
@ 2005-03-22 11:08 ` Kay Sievers
  2005-03-22 11:20 ` Oliver Comber
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Kay Sievers @ 2005-03-22 11:08 UTC (permalink / raw)
  To: linux-hotplug

On Tue, 2005-03-22 at 10:59 +0000, Oliver Comber wrote:
> Hi List,
> 
> I'm having a problem creating symbolic links with udev using the %
> s{filename} construct.
> 
> I'm using Ubuntu Warty, kernel 2.6.8.1-4-386, udev 0.026-1ubuntu5.

Is that udev version 026? 

> I want to name USB devices, specifically printers, according to
> manufacturer and possibly (eventually) serial number.
> 
> The rule I'm trying to use is:
>  BUS="usb", KERNEL="lp[0-9]*",   NAME="usb/%k", SYMLINK="usbdev-%
> s{product}"
> 
> The symlink which gets created is:
> lrwxrwxrwx    1 root     root            7 Mar 22 10:36 /dev/usbdev- ->
> usb/lp0
> 
> My %s{product} bit seems to resolve to an empty string.

What does:
  udevinfo -a -p /class/usb/lp0

You can use only the attributes that show up here.

Good luck,
Kay



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_ide95&alloc_id\x14396&op=click
_______________________________________________
Linux-hotplug-devel mailing list  http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: udev sysfs %s{filename} not working
  2005-03-22 10:59 udev sysfs %s{filename} not working Oliver Comber
  2005-03-22 11:08 ` Kay Sievers
@ 2005-03-22 11:20 ` Oliver Comber
  2005-03-22 11:52 ` Kay Sievers
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Oliver Comber @ 2005-03-22 11:20 UTC (permalink / raw)
  To: linux-hotplug

Hi Kay, thanks for the quick response!

On Tue, 2005-03-22 at 12:08 +0100, Kay Sievers wrote:

> > I'm using Ubuntu Warty, kernel 2.6.8.1-4-386, udev 0.026-1ubuntu5.
> 
> Is that udev version 026? 
I guess so, how can I tell for sure?  That was the output from
dpkg-query -W udev

> > My %s{product} bit seems to resolve to an empty string.
> 
> What does:
>   udevinfo -a -p /class/usb/lp0
> 
> You can use only the attributes that show up here.

I seem to have the product attribute listed here.  Are there any
restrictions on the sections of the output I can use?

The output of the command you mentioned above is:

follow the class device's "device"
  looking at the device chain at
'/sys/devices/pci0000:00/0000:00:1f.2/usb1/1-1/1-1:1.0':
    BUS="usb"
    ID="1-1:1.0"
    SYSFS{bAlternateSetting}=" 0"
    SYSFS{bInterfaceClass}="07"
    SYSFS{bInterfaceNumber}="00"
    SYSFS{bInterfaceProtocol}="02"
    SYSFS{bInterfaceSubClass}="01"
    SYSFS{bNumEndpoints}="02"
    SYSFS{detach_state}="0"
    SYSFS{iInterface}="00"

  looking at the device chain at
'/sys/devices/pci0000:00/0000:00:1f.2/usb1/1-1':
    BUS="usb"
    ID="1-1"
    SYSFS{bConfigurationValue}="1"
    SYSFS{bDeviceClass}="00"
    SYSFS{bDeviceProtocol}="00"
    SYSFS{bDeviceSubClass}="00"
    SYSFS{bMaxPower}="  2mA"
    SYSFS{bNumConfigurations}="1"
    SYSFS{bNumInterfaces}=" 1"
    SYSFS{bcdDevice}="0100"
    SYSFS{bmAttributes}="c0"
    SYSFS{detach_state}="0"
    SYSFS{devnum}="3"
    SYSFS{idProduct}="0021"
    SYSFS{idVendor}="04f9"
    SYSFS{manufacturer}="Brother"
    SYSFS{maxchild}="0"
    SYSFS{product}="HL-5140"
    SYSFS{serial}="E4J419784"
    SYSFS{speed}="12"
    SYSFS{version}=" 2.00"

  looking at the device chain at
'/sys/devices/pci0000:00/0000:00:1f.2/usb1':
    BUS="usb"
    ID="usb1"
    SYSFS{bConfigurationValue}="1"
    SYSFS{bDeviceClass}="09"
    SYSFS{bDeviceProtocol}="00"
    SYSFS{bDeviceSubClass}="00"
    SYSFS{bMaxPower}="  0mA"
    SYSFS{bNumConfigurations}="1"
    SYSFS{bNumInterfaces}=" 1"
    SYSFS{bcdDevice}="0206"
    SYSFS{bmAttributes}="c0"
    SYSFS{detach_state}="0"
    SYSFS{devnum}="1"
    SYSFS{idProduct}="0000"
    SYSFS{idVendor}="0000"
    SYSFS{manufacturer}="Linux 2.6.8.1-4-386 uhci_hcd"
    SYSFS{maxchild}="2"
    SYSFS{product}="Intel Corp. 82801BA/BAM USB (Hub #1)"
    SYSFS{serial}="0000:00:1f.2"
    SYSFS{speed}="12"
    SYSFS{version}=" 1.10"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:1f.2':
    BUS="pci"
    ID="0000:00:1f.2"
    SYSFS{class}="0x0c0300"
    SYSFS{detach_state}="0"
    SYSFS{device}="0x2442"
    SYSFS{irq}="185"
    SYSFS{subsystem_device}="0x010e"
    SYSFS{subsystem_vendor}="0x1028"
    SYSFS{vendor}="0x8086"

  looking at the device chain at '/sys/devices/pci0000:00':
    BUS=""
    ID="pci0000:00"
    SYSFS{detach_state}="0"


Thanks very much!
-Oli



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_ide95&alloc_id\x14396&op=click
_______________________________________________
Linux-hotplug-devel mailing list  http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: udev sysfs %s{filename} not working
  2005-03-22 10:59 udev sysfs %s{filename} not working Oliver Comber
  2005-03-22 11:08 ` Kay Sievers
  2005-03-22 11:20 ` Oliver Comber
@ 2005-03-22 11:52 ` Kay Sievers
  2005-03-22 14:41 ` Oliver Comber
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Kay Sievers @ 2005-03-22 11:52 UTC (permalink / raw)
  To: linux-hotplug

On Tue, 2005-03-22 at 11:20 +0000, Oliver Comber wrote:
> Hi Kay, thanks for the quick response!
> 
> On Tue, 2005-03-22 at 12:08 +0100, Kay Sievers wrote:
> 
> > > I'm using Ubuntu Warty, kernel 2.6.8.1-4-386, udev 0.026-1ubuntu5.
> > 
> > Is that udev version 026? 
> I guess so, how can I tell for sure?  That was the output from
> dpkg-query -W udev

udevinfo -V

> > > My %s{product} bit seems to resolve to an empty string.
> > 
> > What does:
> >   udevinfo -a -p /class/usb/lp0
> > 
> > You can use only the attributes that show up here.
> 
> I seem to have the product attribute listed here.  Are there any
> restrictions on the sections of the output I can use?

Yeah, we just look at the class device itself and physical device, but
do not walk up the all physical devices while searching for the sysfs
attribute to apply with a format char. I will see what I can do for a
one of the next udev versions.
In the meantime this dirty trick may work: "%s{../product}". :)

Kay



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_ide95&alloc_id\x14396&op=click
_______________________________________________
Linux-hotplug-devel mailing list  http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: udev sysfs %s{filename} not working
  2005-03-22 10:59 udev sysfs %s{filename} not working Oliver Comber
                   ` (2 preceding siblings ...)
  2005-03-22 11:52 ` Kay Sievers
@ 2005-03-22 14:41 ` Oliver Comber
  2005-03-23 17:37 ` Oliver Comber
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Oliver Comber @ 2005-03-22 14:41 UTC (permalink / raw)
  To: linux-hotplug


> > > Is that udev version 026? 
> > I guess so, how can I tell for sure?  That was the output from
> > dpkg-query -W udev
> 
> udevinfo -V

It was indeed 026


> 
> Yeah, we just look at the class device itself and physical device, but
> do not walk up the all physical devices while searching for the sysfs
> attribute to apply with a format char. I will see what I can do for a
> one of the next udev versions.
> In the meantime this dirty trick may work: "%s{../product}". :)

Unfortunately this didn't work, "../product" still resolves to an empty
string... 

I tried with the following for comparison:
BUS="usb", KERNEL="lp[0-9]*",   NAME="usb/%k", SYMLINK="USBDEV-%
s{bInterfaceClass}"

And this creates a symlink "/dev/USBDEV-07", as it should.
bInterfaceClass is at the lowest level.

If you have any patches for walking up the tree as described above, I'd
be more than happy to test them for you :0)

Thanks,
-Oli



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_ide95&alloc_id\x14396&op=click
_______________________________________________
Linux-hotplug-devel mailing list  http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: udev sysfs %s{filename} not working
  2005-03-22 10:59 udev sysfs %s{filename} not working Oliver Comber
                   ` (3 preceding siblings ...)
  2005-03-22 14:41 ` Oliver Comber
@ 2005-03-23 17:37 ` Oliver Comber
  2005-03-28  1:31 ` Kay Sievers
  2005-03-31 16:39 ` Oli Comber
  6 siblings, 0 replies; 8+ messages in thread
From: Oliver Comber @ 2005-03-23 17:37 UTC (permalink / raw)
  To: linux-hotplug


> > 
> > Yeah, we just look at the class device itself and physical device, but
> > do not walk up the all physical devices while searching for the sysfs
> > attribute to apply with a format char. I will see what I can do for a
> > one of the next udev versions.
> > In the meantime this dirty trick may work: "%s{../product}". :)

Excuse the bad form posting over myself, but I've just managed to get
your hack above to work with the latest released sources (056) :

BUS="usb", KERNEL="lp[0-9]*",   NAME="usb/%k", SYMLINK="myprinters/%
s{../product}"

gives me free, (almost) unique device naming, without having to write
any device specific udev rules!

The version shipped in Ubuntu Warty - 028 - doesn't support this hack.

Thanks very much!

-Oli



-------------------------------------------------------
This SF.net email is sponsored by Microsoft Mobile & Embedded DevCon 2005
Attend MEDC 2005 May 9-12 in Vegas. Learn more about the latest Windows
Embedded(r) & Windows Mobile(tm) platforms, applications & content.  Register
by 3/29 & save $300 http://ads.osdn.com/?ad_idh83&alloc_id\x15149&op=click
_______________________________________________
Linux-hotplug-devel mailing list  http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: udev sysfs %s{filename} not working
  2005-03-22 10:59 udev sysfs %s{filename} not working Oliver Comber
                   ` (4 preceding siblings ...)
  2005-03-23 17:37 ` Oliver Comber
@ 2005-03-28  1:31 ` Kay Sievers
  2005-03-31 16:39 ` Oli Comber
  6 siblings, 0 replies; 8+ messages in thread
From: Kay Sievers @ 2005-03-28  1:31 UTC (permalink / raw)
  To: linux-hotplug

On Wed, 2005-03-23 at 17:37 +0000, Oliver Comber wrote:
> > > 
> > > Yeah, we just look at the class device itself and physical device, but
> > > do not walk up the all physical devices while searching for the sysfs
> > > attribute to apply with a format char. I will see what I can do for a
> > > one of the next udev versions.
> > > In the meantime this dirty trick may work: "%s{../product}". :)
> 
> Excuse the bad form posting over myself, but I've just managed to get
> your hack above to work with the latest released sources (056) :
> 
> BUS="usb", KERNEL="lp[0-9]*",   NAME="usb/%k", SYMLINK="myprinters/%
> s{../product}"
> 
> gives me free, (almost) unique device naming, without having to write
> any device specific udev rules!
> 
> The version shipped in Ubuntu Warty - 028 - doesn't support this hack.

I've added something to my tree today. The next udev version will be
able to do this without the "../".

Kay



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_ide95&alloc_id\x14396&op=click
_______________________________________________
Linux-hotplug-devel mailing list  http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: udev sysfs %s{filename} not working
  2005-03-22 10:59 udev sysfs %s{filename} not working Oliver Comber
                   ` (5 preceding siblings ...)
  2005-03-28  1:31 ` Kay Sievers
@ 2005-03-31 16:39 ` Oli Comber
  6 siblings, 0 replies; 8+ messages in thread
From: Oli Comber @ 2005-03-31 16:39 UTC (permalink / raw)
  To: linux-hotplug

[-- Attachment #1: Type: text/plain, Size: 1364 bytes --]

On Mon, 2005-03-28 at 03:31 +0200, Kay Sievers wrote:
> On Wed, 2005-03-23 at 17:37 +0000, Oliver Comber wrote:
> > > > 
> > > > Yeah, we just look at the class device itself and physical device, but
> > > > do not walk up the all physical devices while searching for the sysfs
> > > > attribute to apply with a format char. I will see what I can do for a
> > > > one of the next udev versions.
> > > > In the meantime this dirty trick may work: "%s{../product}". :)
> > 
> > Excuse the bad form posting over myself, but I've just managed to get
> > your hack above to work with the latest released sources (056) :
> > 
> > BUS="usb", KERNEL="lp[0-9]*",   NAME="usb/%k", SYMLINK="myprinters/%
> > s{../product}"
> > 
> > gives me free, (almost) unique device naming, without having to write
> > any device specific udev rules!
> > 
> > The version shipped in Ubuntu Warty - 028 - doesn't support this hack.
> 
> I've added something to my tree today. The next udev version will be
> able to do this without the "../".
> 
> Kay

Excellent, Cheers Kay!  I look forward to trying out the next version.
This should take a lot of load off of cups, sane etc trying to do device
discovery themselves or users struggling to have dependable
names/devices for two or more connected printers (My original
problem ;0) )

Good work! :0)

-Oli

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2005-03-31 16:39 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-03-22 10:59 udev sysfs %s{filename} not working Oliver Comber
2005-03-22 11:08 ` Kay Sievers
2005-03-22 11:20 ` Oliver Comber
2005-03-22 11:52 ` Kay Sievers
2005-03-22 14:41 ` Oliver Comber
2005-03-23 17:37 ` Oliver Comber
2005-03-28  1:31 ` Kay Sievers
2005-03-31 16:39 ` Oli Comber

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).