Eyes-Free Linux
Linux is the only OS whose console can speak from the kernel itself — no desktop needed, no GUI required, speech from the moment init starts. This chapter covers the eyes-free path: Speakup (the kernel-level screen reader), BRLTTY (the braille daemon), Orca (the graphical one), espeakup (the bridge to software speech), and Slint — the distro that ships it all working. The lineage runs through this wiki's existing cluster — the machine that reads text onscreen descends from the one that read it off paper.
The lineage — the hardware that taught software
The chain this handbook's wiki already documents: the Kurzweil Reading Machine (1976 — the machine that read paper), the Braille 'n Speak (1987 — the notetaker that became a speech synthesizer), and Speakup (1998 — the screen reader that lives in the kernel). The kernel still ships speakup_bns.c — the driver that lets Speakup talk through a forty-year-old Braille 'n Speak. The three articles link by tech, not just theme.
Speakup — the kernel speaks
modprobe speakup_soft # load it, software synth
speakup_soft.start=1 # or kernel cmdline
espeakup # the daemon bridging speakup→espeak
Speakup lives in drivers/accessibility/speakup/ — the kernel synthesizes speech as you navigate the console — from boot, before any userspace exists, all the way to a panic. It drives hardware synths (the DoubleTalk, the DECtalk line, the Braille 'n Speak via bns) or espeakup's software bridge to eSpeak. The speakup keymap: review keys read the screen, the numpad navigates; speakup.synth=soft or =bns selects the voice.
BRLTTY — the braille side
brltty -b auto -x auto # auto-detect the display
systemctl enable brltty
BRLTTY drives refreshable braille displays — the hardware that turns the console into tactile dots — handling every major display's protocol since 1995. It reads the screen, maps cursor position, handles keyboard input on display keys. Speakup speaks; BRLTTY braills; both make the console fully usable without sight.
The rest of the ecosystem
- Orca — the graphical screen reader — GNOME's eyes-free layer
- espeak-ng / speech-dispatcher — the software synths + the speech service
- Fenrir — the modern modular console reader
- Emacspeak — the speaking Emacs environment — Raman, 1995 — still maintained
- Accessible-Coconut, Vinux, Sonar, TalkingArch — the eyes-free distros — each a distro pre-configured for speech/braille from boot
Slint — the featured accessible distro
Slint is Slackware rebuilt for accessibility — the same system this handbook features, but the installer itself speaks. Slint boots a talking installer, ships Speakup+BRLTTY+Orca working out of the box, and is both the handbook's recommended host and its accessibility answer. Installing Linux blind is a solved problem — Slint solved it.
The eyes-free LFS build
Chapter 2's whole setup is console-only — gdisk, mkfs, tar, configure — nothing needs a GUI. Speakup reads every command's output; configure's checks scroll and are read; make's errors speak. The entire LFS build is achievable eyes-free on a Slint host — the toolchain's text-native design is the accessibility. The only friction: make menuconfig's ncurses UI — navigable via review mode, or replaced by make config/make olddefconfig's line-based alternatives.
The distro landscape — the eyes-free distros
| Distro | The shape |
|---|---|
| Slint | Slackware + full a11y from the installer — the featured path |
| Vinux | Ubuntu + Orca/speakup preconfigured |
| Sonar | Manjaro-based |
| TalkingArch | Arch + speakup on the ISO |
| Accessible-Coconut | Ubuntu MATE + orca |
| Adriane | Knoppix's console-only a11y mode |
| Ubuntu/Fedora stock | Orca + speakup present — just not preconfigured |
Slint's installer's installer speaks — boot the ISO to a talking menu — a blind user installs blind, from scratch.
The kernel config for accessibility
# make menuconfig — Device Drivers → Accessibility → Speakup
CONFIG_ACCESSIBILITY=y
CONFIG_SPEAKUP=y
CONFIG_SPEAKUP_SYNTH_SOFT=y # software synth
CONFIG_SPEAKUP_SYNTH_BNS=y # the Braille 'n Speak driver
CONFIG_SPEAKUP_SYNTH_DTLK=y # DoubleTalk
Inside an LFS system you configure it yourself — the kernel chapter's menuconfig includes Accessibility → Speakup — a feature most distros bury but LFS lets you build in.
The Speakup keymap — reading by hand
Speakup review keys (the numpad):
8/2 — prev/next line 4/6 — prev/next word 7/9 — prev/next char
5 — say current char . — say line , — say word
CapsLock+arrows — review movement PrintScreen — shut up
Insert+1-9 — read line by number Speakup key (CapsLock) + F-keys — controls
speakup.spkup keybindings — the full map in the kernel docs
CapsLock+NumLock — cursor tracking toggle
The kernel doc Documentation/accessibility/speakup/spkguide.txt is the full manual — the review mode turns any console output navigable.
The espeakup + speech-dispatcher plumbing
modprobe speakup_soft # load the soft synth driver
espeakup # bridge daemon — speakup → espeak-ng
# or through speech-dispatcher:
speechd-up # speakup → speech-dispatcher → any TTS
spd-say "hello" # test speech-dispatcher
The chain: kernel-speakup → /dev/softsynth → espeakup/speechd-up daemon → espeak-ng/speech-dispatcher → audio. echo "text" > /dev/softsynth writes speech directly.
The braille side's full surface
brltty -b xw -d /dev/ttyUSB0 -t text # driver, device, table
brltty -l debug # debug verbosity
brltty.conf — driver/model/device/table/kernel prefs
systemctl enable brltty # every boot
BRLTTY knows ~50 display protocols — brltty -l lists drivers; autodetect (-b auto) probes USB/Bluetooth/serial.
The Orca/desktop layer
orca # GNOME's screen reader
orca -s # preferences
orca --replace # restart it
orca's modifier — Insert — the review key
Orca speaks the graphical desktop — AT-SPI2 carries accessibility info from apps. orca + GTK/Qt apps + Firefox/Chromium covered; a fully speaking desktop is standard GNOME.
The reading workflows — how a screen gets read
Speakup's vocabulary:
Insert+Keypad combos — the review layer:
PadEnter = say all Pad+ = say to-end Pad. = say screen
Pad0 = shut up Pad8 = say line Pad5 = say word
Pad2 = say phonetic-word Pad7/9 = prev/next line
Pad4/6 = prev/next word Pad1/3 = prev/next char
Pad* = say current line Pad/ = find
CapsLock is the speakup modifier on many layouts.
echo 'key' > /sys/accessibility/speakup/i18n/… — the runtime controls
/sys/accessibility/speakup/ is the live control plane — echo values to change voice, rate, punctuation, synth: echo 9 > .../rate speeds up; echo soft > .../synth switches to the softsynth.
The espeakup/espeak-ng chain — the voice's plumbing
speakup_soft (kernel) → creates /dev/softsynth → espeakup daemon reads it
→ feeds the text to espeak-ng → espeak-ng synthesizes → ALSA → speakers
speechd-up does the same via speech-dispatcher — the middle layer that
lets brltty + orca + speakup share one synthesizer.
/dev/softsynth is the file-as-voice — write "hello" to it and the daemon speaks it. modprobe speakup_soft start=1 brings it up; the daemon does the translating.
The braille surface — brltty's full surface
brltty # autodetect the display
brltty -b fs -d ttyUSB0 # driver + device (fs=FreedomScientific, al=Alva, ht=HandyTech)
brltty -q # quiet
brltty -e # the current screen as a table
brltty -l debug # debug log
ls /etc/brltty/ # the config — brltty.conf key tables
-b picks the driver (fs FreedomScientific, al Alva, ht HandyTech, pm Papenmeier, vo Voyager — every major braille-display maker); -d the device; brltty.conf maps keys. BRLTTY's been the display layer since 1995 — its driver list is the braille-hardware catalog.
The console-reading disciplines
lesspages predictably — screen readers read line-by-line; pagers are friends--no-pager,| catdefeat auto-paging (git's pager speaks awkwardly)TERMmatters — dumb vs linux vs xterm changes how readers track output- Line-oriented tools (
grep -n,awk,sed) are naturally readable; full-screen TUIs (ncurses) need review-mode fluency stty cols 80keeps output within a braille display's width
Timeline
| 1976 | Kurzweil Reading Machine — reads paper |
| 1987 | Braille 'n Speak — the notetaker |
| 1995 | BRLTTY + Emacspeak |
| 1998 | Speakup v0.01 — the kernel speaks |
| 2000s | Orca, speech-dispatcher, eyes-free distros |
| 2020 | Speakup reaches mainline — kernel 5.9 |
See also
- Speakup — the kernel screen reader's own article
- Braille n Speak · Kurzweil Reading Machine — the lineage
- Linux · LFS Kernel and Boot