[SRU][Jammy][Unstable][PATCH 0/1] Enable Speakup kernel modules to allow the speakup screen reader to function

Matthew Ruffell matthew.ruffell at canonical.com
Tue Apr 5 07:14:08 UTC 2022


BugLink: https://bugs.launchpad.net/bugs/1967702

[Impact]

Blind system administrators rely on the speakup accessibility feature to be able
to use screen readers in text mode, like "espeakup". 

Ubuntu has enabled CONFIG_SPEAKUP for a significant amount of time, although in
recent releases it keeps being disabled. In Hirsute and Impish, it was 
accidentally disabled due to it moving from drivers/staging/ to 
drivers/accessibility/, and it was re-added by Tim Gardner in LP1942459.

When it was recently re-enabled, the patch was never applied to ubuntu-unstable,
and thus was never picked up by Jammy. 

We need to enable CONFIG_ACCESSIBILITY and CONFIG_SPEAKUP in Jammy and
ubuntu-unstable.

[Fix]

We need to enable the following configuration items:

CONFIG_ACCESSIBILITY=y
CONFIG_SPEAKUP=m

and the additional modules:

CONFIG_SPEAKUP_SYNTH_ACNTSA=m
CONFIG_SPEAKUP_SYNTH_APOLLO=m
CONFIG_SPEAKUP_SYNTH_AUDPTR=m
CONFIG_SPEAKUP_SYNTH_BNS=m
CONFIG_SPEAKUP_SYNTH_DECEXT=m
CONFIG_SPEAKUP_SYNTH_DECTLK=m
CONFIG_SPEAKUP_SYNTH_DUMMY=m
CONFIG_SPEAKUP_SYNTH_LTLK=m
CONFIG_SPEAKUP_SYNTH_SOFT=m
CONFIG_SPEAKUP_SYNTH_SPKOUT=m
CONFIG_SPEAKUP_SYNTH_TXPRT=m

[Testcase]

Install the speakup accessibility tool:

$ sudo apt install espeakup

Check journalctl to see if it is able to load kernel modules:

systemd[1]: Starting Software speech output for Speakup...
modprobe[27013]: modprobe: FATAL: Module speakup_soft not found in directory /lib/modules/5.15.0-25-generic
systemd[1]: espeakup.service: Control process exited, code=exited, status=1/FAILURE
systemd[1]: espeakup.service: Failed with result 'exit-code'.
systemd[1]: Failed to start Software speech output for Speakup.
systemd[1]: espeakup.service: Scheduled restart job, restart counter is at 1.
systemd[1]: Stopped Software speech output for Speakup.
systemd[1]: espeakup.service: Start request repeated too quickly.
systemd[1]: espeakup.service: Failed with result 'exit-code'.
systemd[1]: Failed to start Software speech output for Speakup.

We should see espeakup.service start correctly, instead of failing to load
speakup_soft:

systemd[1]: Starting Software speech output for Speakup...
kernel: input: Speakup as /devices/virtual/input/input5
kernel: initialized device: /dev/synth, node (MAJOR 10, MINOR 123)
kernel: speakup 3.1.6: initialized
kernel: synth name on entry is: (null)
kernel: synth probe
kernel: initialized device: /dev/softsynth, node (MAJOR 10, MINOR 122)
kernel: initialized device: /dev/softsynthu, node (MAJOR 10, MINOR 121)
systemd[1]: Started Software speech output for Speakup.

You can also try load the modules manually:

$ sudo modprobe speakup_soft

There is a test package available in the following ppa:

https://launchpad.net/~mruffell/+archive/ubuntu/lp1967702-test

If you install the test kernel, the speakup modules should load successfully.

[Where problems could occur]

We are enabling CONFIG_ACCESSIBILITY for all arches apart from s390x, and this
shouldn't have any affect on config items being turned on, since it simply
enables the speakup submenu to be shown.

Enabling CONFIG_SPEAKUP* should not have any impact on users that don't use
screen reader accessibility software, as it will only be loaded by users of
espeakup. 

If a regression were to occur, users could unload the speakup modules.

Matthew Ruffell (1):
  UBUNTU: [Config] CONFIG_SPEAKUP=m

 debian.master/config/amd64/config.common.amd64 |  1 +
 debian.master/config/annotations               | 18 ++++++++++++++++--
 debian.master/config/arm64/config.common.arm64 |  1 +
 debian.master/config/armhf/config.common.armhf |  1 +
 debian.master/config/config.common.ubuntu      | 14 +++++++++++++-
 .../config/ppc64el/config.common.ppc64el       |  1 +
 debian.master/config/s390x/config.common.s390x |  1 +
 7 files changed, 34 insertions(+), 3 deletions(-)

-- 
2.34.1




More information about the kernel-team mailing list