On Oct 10, Shaun Jackman <sjackman@gmail.com> wrote:
(I hope this fully covers the changes needed.)
> The udev rule I've written for the Creative Labs Nomad Jukebox looks like this:
>
> SYSFS{modalias}="usb:v0471p0222*", NAME="njb%n", GROUP="audio", MODE="0666"
It would work, but is wrong. If it were a block device you could use:
BUS=="usb", SYSFS{idVendor}=="0471", SYSFS{idProduct}=="0222", \
SYMLINK+="njb%n", GROUP="audio"
(There is no point in changing the group of a world-writeable device,
and the default is MODE="0660".)
> When I plug the device in, the node doesn't actually seem to be created though:
>
> $ find /dev /sys -name \njb*
> $
But it appears that your package is an user space driver which uses
libusb and the /proc/bus/usb/ interface:
> I would like the /proc/bus/usb node to be symlinked to /dev/njb%d,
> with the correct permissions applied, as well as loading the "fuse"
> kernel module. Is this possible?
There is no point in creating symlinks, because libusb does not care.
The current kernels only provide the /proc/bus/usb/ interface, so you
still need to use a script to change the file permissions:
ACTION=="add", BUS=="usb", SYSFS{idVendor}=="0471", SYSFS{idProduct}=="0222", \
RUN+="/etc/hotplug/usb/nomadjukebox"
2.6.14 kernels will provide real devices in /dev/bus/usb/, and udev will
be able to directly change their permissions:
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="0471", SYSFS{idProduct}=="0222", \
GROUP="audio"
I do not know what the fuse kernel driver is, but usually drivers
provide a module alias to be matched against the $MODALIAS value
provided by hotplug so they can be automatically loaded.
If they need special handling you can just add a RUN rule (do not forget
to match them on ACTION=="add").
--
ciao,
Marco
Attachment:
signature.asc
Description: Digital signature