two problems installing software speech with speakup

Charles Hallenbeck chuckh at hhs48.com
Thu Jun 29 18:54:53 EDT 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Gary,

On Thu, Jun 29, 2006 at 06:31:11PM -0400, Gary Cramblitt wrote:
> 
> Are you saying that sftsyn cannot be loaded as a module and *must* be compiled 
> into the kernel, or is it a matter of forcing a load of the sftsyn module 
> (/etc/modules) and properly configuring udev?

As I understand it, speakup itself is either a module or a 
built-into-the-kernel item, and each device driver is also either 
compiled as a module or a built-in component. If a device is to be used 
immediately upon startup, both speakup and the relevant driver MUST be 
built in, and not modules. But the other drivers, perhaps to be invoked 
after system startup, might go either way, That is the case with sftsyn, 
since it cannot be invoked until after the speech-dispatcher package and 
the synthesis engines it uses have been activated. When speakup switches 
drivers, it does so by echoing the desired river name to a variable in 
the /proc/speakup area, which triggers a modprobe if necessary, or a 
simpler switch to a built-in driver, depending on how the kernel was 
configured at compile time. If sftsyn is a module, this is when the 
/dev/synth device needs to be registered (created), and so udev must 
have already been informed about the matter at some earlier point. Here 
is the relevant passage from the readme.debian file from the udev 
package:

- ----

Short summary: when a driver is loaded it makes some information available
in /sys/ and a message is sent to udevd which reads them and creates the
appropriate devices.

This means that:
- - modules cannot be loaded on demand when applications open their device,
  because the device is not yet there!
- - since modules are not loaded on demand, if for some reason the drivers
  cannot be automatically loaded at boot time you will have to add them
  to /etc/modules.

- -----

I have not tried adding sftsyn to /etc/modules. Perhaps that would be a 
simpler solution than compiling it into the kernel. But the reliance on 
dynamically loading and unloading the module when needed seems to cause 
udev to fail to know how to create the needed device.

This is mostly way over my head. Perhaps there is a better solution than 
the one I found, but I simply noticed that one of my systems had it 
built in and the other had it as a module, and the first worked while 
the second did not.

Chuck


- -- 
The Moon is Waxing Crescent (17% of Full)
Get downloads from http://www.mhcable.com/~chuckh
  and remember, INFORMATION WANTS TO BE FREE!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)

iD8DBQFEpFo9XnuiIOyDVQURAuXjAKC0KVJrIy88EEgpPv9Rk4jBEtP8iwCeNqyq
0GTj6nYCrAMpu/mZCuOKX+g=
=vBkJ
-----END PGP SIGNATURE-----




More information about the Speakup mailing list