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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html