Clemens Ladisch
2012-06-30 17:15:26 UTC
Hi,
I thought it would be useful to have persistent names for FireWire
devices:
########################################################################
ACTION=="remove", GOTO="persistent_firewire_end"
SUBSYSTEM!="firewire", GOTO="persistent_firewire_end"
TEST=="guid", SYMLINK+="firewire/by-id/guid-$attr{guid}"
TEST=="vendor_name", TEST=="model_name", \
OPTIONS="string_escape=replace", \
SYMLINK+="firewire/by-name/$attr{vendor_name} $attr{model_name}"
LABEL="persistent_firewire_end"
########################################################################
And these rules appear to work:
$ cat /sys/bus/firewire/devices/fw0/{vendor_name,model_name}
Linux Firewire
Juju
$ ls -l /dev/firewire/by-name/
lrwxrwxrwx 1 root root 9 2012-06-30 18:13 Linux_Firewire_Juju -> ../../fw0
However, there are devices where, due to some strange rules in the
FireWire specifications, some attributes end up belonging to a subdevice:
$ cat /sys/bus/firewire/devices/fw2/{vendor_name,model_name}
LaCie
cat: /sys/bus/firewire/devices/fw2/model_name: No such file or directory
$ cat /sys/bus/firewire/devices/fw2/fw2.0/model_name
Hard Drive Quadra
Okay, let's add some rules to handle this:
TEST=="vendor_name", TEST!="model_name", WAIT_FOR="$kernel.0/model_name"
TEST=="vendor_name", TEST!="model_name", TEST=="$kernel.0/model_name", \
OPTIONS="string_escape=replace", \
SYMLINK+="firewire/by-name/$attr{vendor_name} $attr{$kernel.0/model_name}"
But this doesn't work, probably because $kernel is not substituted
before $attr:
$ ls -l /dev/firewire/by-name/
lrwxrwxrwx 1 root root 9 2012-06-30 18:13 LaCie_ -> ../../fw2
(It works if I use $attr{fw2.0/model_name}, but that isn't generic enough.)
Do I have to write a separate tool for extracting the name?
Regards,
Clemens
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
I thought it would be useful to have persistent names for FireWire
devices:
########################################################################
ACTION=="remove", GOTO="persistent_firewire_end"
SUBSYSTEM!="firewire", GOTO="persistent_firewire_end"
TEST=="guid", SYMLINK+="firewire/by-id/guid-$attr{guid}"
TEST=="vendor_name", TEST=="model_name", \
OPTIONS="string_escape=replace", \
SYMLINK+="firewire/by-name/$attr{vendor_name} $attr{model_name}"
LABEL="persistent_firewire_end"
########################################################################
And these rules appear to work:
$ cat /sys/bus/firewire/devices/fw0/{vendor_name,model_name}
Linux Firewire
Juju
$ ls -l /dev/firewire/by-name/
lrwxrwxrwx 1 root root 9 2012-06-30 18:13 Linux_Firewire_Juju -> ../../fw0
However, there are devices where, due to some strange rules in the
FireWire specifications, some attributes end up belonging to a subdevice:
$ cat /sys/bus/firewire/devices/fw2/{vendor_name,model_name}
LaCie
cat: /sys/bus/firewire/devices/fw2/model_name: No such file or directory
$ cat /sys/bus/firewire/devices/fw2/fw2.0/model_name
Hard Drive Quadra
Okay, let's add some rules to handle this:
TEST=="vendor_name", TEST!="model_name", WAIT_FOR="$kernel.0/model_name"
TEST=="vendor_name", TEST!="model_name", TEST=="$kernel.0/model_name", \
OPTIONS="string_escape=replace", \
SYMLINK+="firewire/by-name/$attr{vendor_name} $attr{$kernel.0/model_name}"
But this doesn't work, probably because $kernel is not substituted
before $attr:
$ ls -l /dev/firewire/by-name/
lrwxrwxrwx 1 root root 9 2012-06-30 18:13 LaCie_ -> ../../fw2
(It works if I use $attr{fw2.0/model_name}, but that isn't generic enough.)
Do I have to write a separate tool for extracting the name?
Regards,
Clemens
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html