Enable speakup kernel modules to allow the speakup screen reader to function

Bug #1967702 reported by Tiago M. C.
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Fix Committed
High
Matthew Ruffell
Jammy
Fix Released
High
Matthew Ruffell

Bug Description

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.

CVE References

Revision history for this message
Tiago M. C. (tiagocasal) wrote :
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote : Status changed to Confirmed

This change was made by a bot.

Changed in linux (Ubuntu):
status: New → Confirmed
summary: - Accessibility features have been disabled, modules like speakup_soft and
- others are missing
+ Enable speakup kernel modules to allow the speakup screen reader to
+ function
Changed in linux (Ubuntu Jammy):
status: Confirmed → In Progress
importance: Undecided → High
assignee: nobody → Matthew Ruffell (mruffell)
description: updated
tags: added: seg
description: updated
Revision history for this message
Matthew Ruffell (mruffell) wrote :

Hi Tiago,
Thanks for reporting!

I have submitted patches to the Ubuntu kernel mailing list to get this fixed.

https://lists.ubuntu.com/archives/kernel-team/2022-April/129192.html
https://lists.ubuntu.com/archives/kernel-team/2022-April/129193.html
https://lists.ubuntu.com/archives/kernel-team/2022-April/129194.html

Next step is for the kernel team to review the patches.

Thanks,
Matthew

Revision history for this message
Tiago M. C. (tiagocasal) wrote :

Thank you very much Matthew!

Revision history for this message
Matthew Ruffell (mruffell) wrote :

Hi Tiago,

The kernel team have reviewed the patch, and it has received 2x acks [1] and it has been applied [2] to the Jammy kernel git tree [3].

[1] https://lists.ubuntu.com/archives/kernel-team/2022-April/129208.html
[2] https://lists.ubuntu.com/archives/kernel-team/2022-April/129498.html
[3] https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/jammy/commit/?id=438e2ff5cbc602384724c217880f216221b93ffc

I am expecting it to be contained in the 2022.04.18 Kernel SRU cycle, https://kernel.ubuntu.com/, and I will write back with more details once it has been built and placed into -proposed for verification.

Thanks,
Matthew

Changed in linux (Ubuntu Jammy):
status: In Progress → Fix Committed
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote :

This bug is awaiting verification that the linux/5.15.0-28.29 kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-jammy' to 'verification-done-jammy'. If the problem still exists, change the tag 'verification-needed-jammy' to 'verification-failed-jammy'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-jammy
Revision history for this message
Tiago M. C. (tiagocasal) wrote :

Hi Matthew! Fix that was applied in Linux/5.15.0-28.29 kernel resolved the issue. Thank you!

Tiago M. C. (tiagocasal)
tags: added: verification-done-jammy
removed: verification-needed-jammy
Revision history for this message
Ubuntu Kernel Bot (ubuntu-kernel-bot) wrote :

This bug is awaiting verification that the linux-hwe-5.15/5.15.0-32.33~20.04.1 kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-focal' to 'verification-done-focal'. If the problem still exists, change the tag 'verification-needed-focal' to 'verification-failed-focal'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-focal
Tiago M. C. (tiagocasal)
tags: added: verification-done-focal
removed: verification-needed-focal
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (101.7 KiB)

This bug was fixed in the package linux - 5.15.0-35.36

---------------
linux (5.15.0-35.36) jammy; urgency=medium

  * CVE-2022-21499
    - SAUCE: debug: Lock down kgdb

linux (5.15.0-34.35) jammy; urgency=medium

  * jammy/linux: 5.15.0-34.35 -proposed tracker (LP: #1974322)

  * AMD APU s2idle is broken after the ASIC reset fix (LP: #1972134)
    - drm/amdgpu: unify BO evicting method in amdgpu_ttm
    - drm/amdgpu: explicitly check for s0ix when evicting resources

  * amd_gpio AMDI0030:00: Failed to translate GPIO pin 0x0000 to IRQ, err -517
    (LP: #1971597)
    - gpio: Request interrupts after IRQ is initialized

  * config CONFIG_HISI_PMU for kunpeng920 (LP: #1956086)
    - [Config] CONFIG_HISI_PMU=m

  * Mute/mic LEDs no function on EliteBook G9 platfroms (LP: #1970552)
    - ALSA: hda/realtek: Enable mute/micmute LEDs support for HP Laptops

  * network-manager/1.36.4-2ubuntu1 ADT test failure with linux/5.15.0-28.29
    (LP: #1971418)
    - Revert "rfkill: make new event layout opt-in"

  * PCIE LnkCtl ASPM not enabled under VMD mode for Alder Lake platforms
    (LP: #1942160)
    - SAUCE: vmd: fixup bridge ASPM by driver name instead

  * Mute/mic LEDs no function on HP EliteBook 845/865 G9 (LP: #1970178)
    - ALSA: hda/realtek: Enable mute/micmute LEDs and limit mic boost on EliteBook
      845/865 G9

  * Enable headset mic on Lenovo P360 (LP: #1967069)
    - ALSA: hda/realtek: Enable headset mic on Lenovo P360

  * WCN6856 BT keep in OFF state after coldboot system (LP: #1967067)
    - Bluetooth: btusb: Improve stability for QCA devices

  * Screen sometimes can't update [Failed to post KMS update: CRTC property
    (GAMMA_LUT) not found] (LP: #1967274)
    - drm/i915/xelpd: Enable Pipe color support for D13 platform
    - drm/i915: Use unlocked register accesses for LUT loads
    - drm/i915/xelpd: Enable Pipe Degamma
    - drm/i915/xelpd: Add Pipe Color Lut caps to platform config

  * Jammy update: v5.15.35 upstream stable release (LP: #1969857)
    - drm/amd/display: Add pstate verification and recovery for DCN31
    - drm/amd/display: Fix p-state allow debug index on dcn31
    - hamradio: defer 6pack kfree after unregister_netdev
    - hamradio: remove needs_free_netdev to avoid UAF
    - cpuidle: PSCI: Move the `has_lpi` check to the beginning of the function
    - ACPI: processor idle: Check for architectural support for LPI
    - ACPI: processor: idle: fix lockup regression on 32-bit ThinkPad T40
    - btrfs: remove unused parameter nr_pages in add_ra_bio_pages()
    - btrfs: remove no longer used counter when reading data page
    - btrfs: remove unused variable in btrfs_{start,write}_dirty_block_groups()
    - soc: qcom: aoss: Expose send for generic usecase
    - dt-bindings: net: qcom,ipa: add optional qcom,qmp property
    - net: ipa: request IPA register values be retained
    - btrfs: release correct delalloc amount in direct IO write path
    - ALSA: core: Add snd_card_free_on_error() helper
    - ALSA: sis7019: Fix the missing error handling
    - ALSA: ali5451: Fix the missing snd_card_free() call at probe error
    - ALSA: als300: Fix the missing snd_card_free() call at probe error
    - ALSA: als4000: Fix ...

Changed in linux (Ubuntu Jammy):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers