Instead of automatically starting the bluetooth subsystem when devices are added, let's invoke a wrapper script in /lib/udev and have that wrapper check whether /etc/rc.d/rc.bluetooth is executable first. diff -Nur bluez-4.59.orig/scripts/bluetooth.rules.in bluez-4.59/scripts/bluetooth.rules.in --- bluez-4.59.orig/scripts/bluetooth.rules.in 2009-07-06 15:21:40.000000000 -0500 +++ bluez-4.59/scripts/bluetooth.rules.in 2009-12-30 11:50:37.069164823 -0600 @@ -1,3 +1,3 @@ # Run helper every time a Bluetooth device appears # On remove actions, bluetoothd should go away by itself -ACTION=="add", SUBSYSTEM=="bluetooth", RUN+="@prefix@/sbin/bluetoothd --udev" +ACTION=="add", SUBSYSTEM=="bluetooth", RUN+="/lib/udev/bluetooth.sh"