Sunday, September 12, 2010

Screen magnifier and Orca screenreader stuck on at login screen (Ubuntu)

Although Linux has improved immensely in many respects over the years, there's still a chance of running into bizarre problems, either during install or in normal use.

A while ago I wiped the old Mandriva 2008 partition on my Acer Aspire 1705SMi, a 7 year old juggernaut of a laptop which was sitting in a drawer for a year or so.
The first problem was that the Ubuntu Live CD could not even boot properly, since as soon as it loaded the splash screen the video adapter (a NVidia GeForce FX Go5600) went slightly insane and produced a screen which looked like a garbled moire interference pattern. Rough shapes (maybe that's a dialog box...?) were visible but it was basically unusable.

Getting past that required editing the boot command line for the kernel at the GRUB prompt (hitting 'e', IIRC) and adding the "nomodeset" parameter. I also removed the "splash" parameter but this probably wasn't necessary. If something like this can happen, why not offer a nomodeset boot option on the boot menu, rather than forcing the user to edit the boot command line?
This got as far as a failed start of X and dropped back to the shell, where I was able to edit /etc/xorg.conf and start the installer.

So that was okay. The install worked nicely, although both suspend to RAM (sleep) and suspend to disk (hibernate) completely fail to resume, requiring a hard reboot. No change from ~2004 when I had to download a fixed version of the buggy Acer DSDT and install it at boot, as well as tinker with the kernel source (maybe, not sure if it was necessary). Surely those problems could have been fixed in the mainline kernel though - if it was fixable by a layman like myself before, why does it still not work out of the box?

Then a 2 year old demon managed to somehow enable Orca (a screenreader), a screen magnifier and dreadfully annoying "slow keys" by randomly clicking around (from her own user account), and things got really weird on the next reboot: the left half of the screen is normal, while the right half shows a magnified cursor and a load of garbage (maybe due to the old NVidia card being a pile of arse). Trying to type in a password to login seemed impossible at first, until I realised that I had to hold each key for about half a second before it would register. Ugh.

Anyway, after logging in I made sure that all of the accessibility tools were switched off in every preference menu on the GNOME desktop. Unfortunately this didn't really switch them off, even though the gconftool-2 program declared that they were successfully disabled.

After much googling (for once, not very helpful except to confirm that other people in similar situations have solved the problem by reformatting and re-installing Ubuntu, WHAT!) and grepping, I found another set of gconf XML configuration files in /var/lib/gdm/.gconf, even though you need to be root to access them.

Anyway, these global settings could be unset as follows:
$ sudo su
# cd /var/lib/gdm/.gconf
# gconftool-2 --direct --config-source xml:readwrite:. -s --type boolean /desktop/gnome/accessibility/keyboard/stickykeys_enable false
# gconftool-2 --direct --config-source xml:readwrite:. -s --type boolean /desktop/gnome/accessibility/keyboard/bouncekeys_enable false
# gconftool-2 --direct --config-source xml:readwrite:. -s --type boolean /desktop/gnome/accessibility/keyboard/slowkeys_enable false
# gconftool-2 --direct --config-source xml:readwrite:. -s --type boolean /desktop/gnome/applications/at/screen_magnifier_enabled false

Some of these problems may be due to the laptop having a poorly-designed BIOS/DSDT, so this post may sound like sour grapes. But a natural response from anyone who uses such a machine would be "but it works in Windows?" - and if it does, why shouldn't it work in Linux?

No comments:

Post a Comment