[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#857559: unblock: brltty/5.4-7



Package: release.debian.org
Severity: normal
User: release.debian.org@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 <sthibault@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 <dave@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

Reply to: