I find the problem. hal provide udi of the device in environment variable UDI when scripts in /etc/hal/device.d are called. I use this script instead of the symlink to pmount-hal : #!/bin/sh case "$1" in add) /usr/bin/pmount-hal $UDI ;; remove) ;; *) echo "wrong command : $1" ;; esac and all work fine :) thanks for help.