Build Speakup Modules

Trevor Astrope astrope at
Mon Aug 26 19:52:02 EDT 2013

Here is how I built speakup as modules for my distribution kernel (Debian 
Jessie 3.10-2-amd64) without having to configure and compile the kernel.

The below requires that you have the kernel headers for your 
distribution's kernel installed. You should have some files and 
directories under /lib/modules/<kernel_ver>/build. On my system,
`ls /lib/modules/3.10-2-amd64/build' shows the following:

 	arch  include  Makefile  Module.symvers  scripts

First, download the speakup source code if you don't already have it.

$ git clone

Change to the actual source directory:

$ cd speakup/drivers/staging/speakup

Rename Makefile to Kbuild:

$ mv Makefile Kbuild

Save the attached Makefile to speakup/drivers/staging/speakup/Makefile and 
follow the instructions in speakup/INSTALLATION for building speakup as 

The modules will be installed in /lib/modules/<kernel_ver>/extra. If your 
distribution kernel includes speakup, you will need to move them to 
/lib/modules/<kernel_ver>/kernel/drivers/staging/speakup to avoid any 
confusion with the version installed by your distribution.

# mv /lib/modules/<kernel_ver>/extra/*.ko \

Run depmod to update module dependencies:

# depmod <kernel_ver>

Lastly, update the init image with the new speakup modules and boot your 
kernel. In Debian you can run:

# update-initramfs -u

If you are using a hardware synth, you may need to modify the speakup 
source in order to get speech. If this is the case for you, edit 
speakup/drivers/staging/speakup/serialio.c and remove the below around 
line 37. Then repeat these instructions.

         if (synth_request_region(ser->port, 8)) {
                 /* try to take it back. */
                 printk(KERN_INFO "Ports not available, trying to steal 
                 __release_region(&ioport_resource, ser->port, 8);
                 err = synth_request_region(ser->port, 8);
                 if (err) {
                         pr_warn("Unable to allocate port at %x, errno %i",
                                 ser->port, err);
                         return NULL;

-------------- next part --------------
include Kbuild

KERNELDIR = /lib/modules/`uname -r`/build

all: build

	make -C $(KERNELDIR) M=`pwd` `cat`

	make -C $(KERNELDIR) M=`pwd` `cat` $@

	make -C $(KERNELDIR) M=`pwd` `cat` $@


More information about the Speakup mailing list