[BRLTTY] udev with systemd

Mike Gorse mgorse at alum.wpi.edu
Fri Jan 8 13:03:20 EST 2016


Hi Dave,

> Please test the latest commit to verify that it's correct.

Tested. Yes, that works.

> Is there something we can do on remove in order to stop the service?

I asked a colleague who is more familiar with systemd than I am, and he 
pointed me to this link:

http://unix.stackexchange.com/questions/63232/what-is-the-correct-way-to-write-a-udev-rule-to-stop-a-service-under-systemd

However, when I run
systemctl list-units --all --full |grep .device
I get this for the Brailliant:
dev-brltty-auto\x2dusb:25000072.device                                                              loaded    active   plugged   Brailliant_40
dev-bus-usb-003-039.device                                                                          loaded    active   plugged   Brailliant_40

So it appears that I need a fixed device name that systemd could bind to 
for any Braille display. I've just tested having the udev rules file 
create a symlink called "braille" and have systemd bind to it, and now it 
unloades when I remove the display. Patch attached.

-Mike
-------------- next part --------------
diff --git a/Autostart/Systemd/brltty.service.in b/Autostart/Systemd/brltty.service.in
index 87f26ca..8491ba3 100644
--- a/Autostart/Systemd/brltty.service.in
+++ b/Autostart/Systemd/brltty.service.in
@@ -6,6 +6,8 @@ Documentation=http://brltty.com/
 
 DefaultDependencies=no
 Before=sysinit.target
+BindsTo=dev-braille.device
+After=dev-braille.device
 
 RequiresMountsFor=@UPDATABLE_DIRECTORY@
 
diff --git a/Autostart/Udev/udev.rules b/Autostart/Udev/udev.rules
index 4d9926f..0259ab5 100644
--- a/Autostart/Udev/udev.rules
+++ b/Autostart/Udev/udev.rules
@@ -447,6 +447,7 @@ RUN+="/bin/brltty -E -P$env{BRLTTY_PID_FILE}"
 GOTO="brltty_end"
 
 LABEL="brltty_add_systemd"
+SYMLINK+="braille"
 TAG+="systemd", ENV{SYSTEMD_WANTS}+="brltty.service"
 GOTO="brltty_end"
 


More information about the BRLTTY mailing list