[BRLTTY] udev with systemd
Mike Gorse
mgorse at alum.wpi.edu
Fri Jan 8 13:26:45 EST 2016
On Fri, 8 Jan 2016, Mike Gorse wrote:
> On Fri, 8 Jan 2016, Mike Gorse wrote:
>
>>> 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.
>
> On second thought, that patch isn't right--it makes systemd require the
> device in order to load brltty, which will break for a serial or a bluetooth
> device.
The After= line doesn't appear to be necessary; if I remove it, then
systemd still unloads brltty when I disconnect my device, but it is still
possible to start brltty manually via systemd without a USB device
connected. Revised patch attached.
-------------- next part --------------
diff --git a/Autostart/Systemd/brltty.service.in b/Autostart/Systemd/brltty.service.in
index 87f26ca..72188fa 100644
--- a/Autostart/Systemd/brltty.service.in
+++ b/Autostart/Systemd/brltty.service.in
@@ -6,6 +6,7 @@ Documentation=http://brltty.com/
DefaultDependencies=no
Before=sysinit.target
+BindsTo=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