Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Hello, As documented in Bug#857558, the blind users which use Vario Ultra devices (which are becoming more and more popular) report that if they type too fast, brltty restarts its driver, thus incurring a spurious delay, which prevents from working for several seconds while the restart is done, thus making working very tedious, and thus Vario Ultra unusable with Debian. We have investigated with upstream, what happens is that the device is very slow to send key press events, and it's easy to actually type faster than what the device can send, and in that case the device does not even have the opportunity to acknowledge the braille output updates that brltty sends, and thus brltty gets impatient and restarts the driver. There is nothing we can really do about it, the device is just too slow, so in the attached uploaded changes, upstream has made the driver ignore time out errors. This was tested by various Vario Ultra users. Additionally, as documented in Bug#854295, it seems espeak-ng crashes while being used by brltty. What we found is that this happens because of a callback that brltty sets to follow the progress of the speech synthesis. In the attached uploaded change, I have just disabled this feature (which is not really used by users, only for demos), which avoids the encountered crashes. We'll have to see with upstream brltty and espeak-ng how this can be properly fixed, but that will probably be quite involved, while we can just disable this feature for Stretch. Samuel unblock brltty/5.4-7 -- System Information: Debian Release: 9.0 APT prefers testing APT policy: (990, 'testing'), (500, 'unstable-debug'), (500, 'testing-debug'), (500, 'buildd-unstable'), (500, 'unstable'), (500, 'stable'), (500, 'oldstable'), (1, 'experimental-debug'), (1, 'buildd-experimental'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 4.10.0 (SMP w/4 CPU cores) Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) -- Samuel <d> bah à défaut de ligne TGV, ils ont un GR -+- #ens-mim - comment ça, paumé ?! -+-
diff -Nru brltty-5.4/debian/changelog brltty-5.4/debian/changelog --- brltty-5.4/debian/changelog 2017-01-24 03:10:25.000000000 +0100 +++ brltty-5.4/debian/changelog 2017-03-12 15:31:57.000000000 +0100 @@ -1,3 +1,12 @@ +brltty (5.4-7) unstable; urgency=medium + + * git-vario-ultra-restart.patch: Fix baum driver restarting when typing too + fast on Vario Ultra device (Closes: Bug#857558). + * disable-synth-callback.patch: Disable synth callback from espeak-ng to + avoid crashes (Closes: Bug#854295). + + -- Samuel Thibault <sthiba...@debian.org> Sun, 12 Mar 2017 15:31:57 +0100 + brltty (5.4-6) unstable; urgency=medium * patches/xbrlapi-nospam.patch: Prevent xbrlapi from retrying to connect to diff -Nru brltty-5.4/debian/patches/disable-synth-callback.patch brltty-5.4/debian/patches/disable-synth-callback.patch --- brltty-5.4/debian/patches/disable-synth-callback.patch 1970-01-01 01:00:00.000000000 +0100 +++ brltty-5.4/debian/patches/disable-synth-callback.patch 2017-03-12 15:31:57.000000000 +0100 @@ -0,0 +1,13 @@ +diff --git a/Drivers/Speech/eSpeak/speech.c b/Drivers/Speech/eSpeak/speech.c +index 6c303c759..9b58bc58b 100644 +--- a/Drivers/Speech/eSpeak/speech.c ++++ b/Drivers/Speech/eSpeak/speech.c +@@ -167,7 +189,7 @@ static int spk_construct(volatile SpeechSynthesizer *spk, char **parameters) + if (val > espeakRATE_MINIMUM) maxrate = val; + } + +- espeak_SetSynthCallback(SynthCallback); ++ //espeak_SetSynthCallback(SynthCallback); + + return 1; + } diff -Nru brltty-5.4/debian/patches/git-vario-ultra-restart.patch brltty-5.4/debian/patches/git-vario-ultra-restart.patch --- brltty-5.4/debian/patches/git-vario-ultra-restart.patch 1970-01-01 01:00:00.000000000 +0100 +++ brltty-5.4/debian/patches/git-vario-ultra-restart.patch 2017-03-12 15:19:19.000000000 +0100 @@ -0,0 +1,55 @@ +commit 587004a914d572e6481d0a810e1b3af8cf8afaf2 +Author: Dave Mielke <d...@mielke.cc> +Date: Sat Mar 11 21:03:18 2017 -0500 + + USB write timeouts should be ignored for the Vario Ultra. (dm) + +diff --git a/Drivers/Braille/Baum/braille.c b/Drivers/Braille/Baum/braille.c +index a571d319d..f137bdbe3 100644 +--- a/Drivers/Braille/Baum/braille.c ++++ b/Drivers/Braille/Baum/braille.c +@@ -3104,6 +3104,7 @@ connectResource (BrailleDisplay *brl, const char *identifier) { + descriptor.serial.options.applicationData = &baumEscapeOperations; + + descriptor.usb.channelDefinitions = usbChannelDefinitions; ++ descriptor.usb.options.ignoreWriteTimeouts = 1; + + descriptor.bluetooth.channelNumber = 1; + descriptor.bluetooth.discoverChannel = 1; +diff --git a/Headers/gio_types.h b/Headers/gio_types.h +index 481bb0fd0..11110d5c9 100644 +--- a/Headers/gio_types.h ++++ b/Headers/gio_types.h +@@ -32,6 +32,7 @@ typedef struct { + int inputTimeout; + int outputTimeout; + int requestTimeout; ++ unsigned ignoreWriteTimeouts:1; + } GioOptions; + + typedef ssize_t GioUsbWriteDataMethod ( +diff --git a/Programs/gio.c b/Programs/gio.c +index 123f188a2..f370c3f34 100644 +--- a/Programs/gio.c ++++ b/Programs/gio.c +@@ -228,8 +228,18 @@ gioWriteData (GioEndpoint *endpoint, const void *data, size_t size) { + return -1; + } + +- return method(endpoint->handle, data, size, +- endpoint->options.outputTimeout); ++ ssize_t result = method(endpoint->handle, data, size, ++ endpoint->options.outputTimeout); ++ ++ if (endpoint->options.ignoreWriteTimeouts) { ++ if (result == -1) { ++ if (errno == ETIMEDOUT) { ++ result = size; ++ } ++ } ++ } ++ ++ return result; + } + + int diff -Nru brltty-5.4/debian/patches/series brltty-5.4/debian/patches/series --- brltty-5.4/debian/patches/series 2017-01-24 03:09:49.000000000 +0100 +++ brltty-5.4/debian/patches/series 2017-03-12 15:31:57.000000000 +0100 @@ -13,3 +13,5 @@ git-braillenote.patch git-manufacturer.patch xbrlapi-nospam.patch +git-vario-ultra-restart.patch +disable-synth-callback.patch