Linux drivers

I bought a new input device, Wacom Bamboo Pen & Touch tablet. I was careful enough to buy an older model and to check the device is supported on Linux. Based on my previous experiences I also tested the tablet on a Windows computer to be sure it actually works and I can handle it, so that I’m sure contingent faults on Linux are caused solely by the drivers and are not hardware or user defects. Installation of the Windows driver was quick and easy and the device worked well immediately.

Then I tried to get the device running on Linux. I installed a newer 2.6 Linux version, reported to support the device, and the newest released version of X.Org Wacom drivers. I added appropriate sections to my /etc/X11/xorg.conf. So after some hours of googling and updating the system I got an environment which should be ready for testing the tablet.

I restarted the X server and ended up with a frozen black screen, having to use a reset button on my computer. This situation had repeated for several times until I discovered the Wacom driver conflicts in some way with a Wizardpen driver, causing crash of the X server without recovering the keyboard and console. So I commented out the Wizardpen input device in xorg.conf and then could start X without having to reset my computer anymore.

The pen function worked well but the touch function didn’t work well and the tablet buttons didn’t work at all. I found out that although the given model number of the tablet should be supported in newer 2.6 kernels, there are actually several variants of the model and the newer ones are not supported in those kernels. So I installed the newest version of the tablet kernel drivers for Linux 2.6.

The touch function started to work in a different but still unusable way. After some exploration I found out that while the tablet kernel drivers support several versions of 2.6 kernels, not all fixes are backported to all the supported versions. My Linux was too old so I had two options (not counting giving up on using the touch function): either to backport the changes myself or to upgrade my system to a development version. I decided to upgrade and the touch function finally started to work with a recent 3.1 kernel, after I was forced to abandon my stable OS installation (I couldn’t upgrade just the kernel because it was necessary to recompile OpenAFS modules for it, which is possible only with new gcc, which depends on new libc, etc.).

Nevertheless gesture recognition still didn’t work as expected. I had to install the latest development version of X.Org Wacom drivers to fix that.

Tablet buttons still didn’t work. After some guesswork I could get them working by changing my X.Org configuration, a wrong device was used in the sample configuration copied from wiki. After another round of googling I finished the device installation by tweaking the unsuitable acceleration settings, by adding tablet rotation support to my screen rotation script and by remapping the buttons. After many hours of googling, reading, editing, compiling, reseting and experimenting the tablet still doesn’t work as well as on Windows after five minute installation, because of the limited set of supported gestures, but at least it can now do everything my mouse can.

Lessons learned:

  • Hardware vendors still mostly ignore Linux users.
  • It’s best to avoid buying new hardware unless it is really needed. Spend saved money on something else (e.g. donation to Free Software Foundation, to developers of your favorite free software product or to any common charity you like).
  • Don’t buy a computer without a reset button if you intend to run Linux on it.
  • The fact that just presence of two certain drivers in X.Org may cause the whole X server crash and loosing user control over the computer indicates there is something very wrong with software development practices (well, it’s nothing new but the fact proves it’s all not “just fine”).
  • Linux doesn’t care about making driver backports easy. Don’t buy new hardware unless you are ready to upgrade everything. Even then you may be forced to apply patches, compile, install, debug, read the source code and make fixes yourself.
  • Using kernel modules not included in official Linux kernel is troublesome all the time. I’d abandon using OpenAFS only for this reason if Linux provided any reasonable network file system.
  • There is no such thing like reliable driver information. Be ready for a lot of googling, judging and reading the source code yourself.
  • I’d be helpless without access to the source code of various components.

In summary, device drivers demonstrate big problems. Hardware vendors are generally uncooperative, there are insufficient resources for reverse engineering and development and documentation of free drivers, software development practices are generally poor. If a device ever becomes reasonably supported, its remaining driver problems are unlikely to get ever fixed once the device vanishes from the market.

I consider device drivers being big blockers of development and adoption of new advanced operating systems. I could tolerate various problems of experimental operating systems, but it’s hard to get any serious interest of new users and developers when the hardware doesn’t work or suffers from big performance problems.

Is there a solution? I can’t see any. Perhaps the only hope may be making coordinated campaigns targeted on hardware vendors and coming of new clever and enthusiastic Linux kernel developers.

E-ink reader

In spite my recent rant about such devices I decided to buy an e-ink reader. The primary reason was that it’s uncomfortable for me to read long texts on a monitor. My requirements were: Large screen, stylus and a usable SDK. Considering the requirements there was only one acceptable e-ink reader I could find on the market, PocketBook Pro 903, so I bought that one. What is it like?

E-ink reading fulfills my expectations. The “large” screen is rather small, only about A5 size, but a larger device would be impractical. The resolution is poor (compared to prints) but acceptable. The contrast is rather low but sufficient. That all doesn’t sound encouraging but don’t get mistaken: The reading experience is much better than on an LCD display, my reading problem is gone and I was surprised how much I can read now. It’s just that e-ink readers are at their beginning and there is a lot to improve in future.

Another observation is that replacing the pile of periodicals and printed papers by an electronic storage makes things better and allows their more efficient processing. There is less mess on my table, the papers can be read concurrently without loosing bookmarks, it’s possible to separate a common reading queue from manuals and other permanent documents, etc.

Now to the less positive things. The very first thing you experience is the software license agreement. It says basically something like that the software is crappy, the vendor is proud of its bugs and you’re no way allowed to try fixing them, with the unfortunate exception of some pieces of free software included. Perhaps it’s just worded like other proprietary software agreements, but it’s sad anyway.

Nevertheless the software is not as bad as you might think after reading Internet forums. It’s not very good but it’s usable, especially the current beta firmware version (among others adding multitasking and page browsing improvements). I had to use the reset button within the first 24 hours of owning the device when I connected a USB cable during booting but it has never happened to me again since then (I no longer connect a USB cable during booting). Applications don’t crash much often and the crashes seem to be related to certain actions rather than being random. Some things work well while other don’t. Once you discover what you can do safely with the device and how to utilize it effectively, it’s rather stable and it’s possible to read various kinds of stuff. Not perfect, but usable.

I can’t blame solely the vendor for the quality of the software. They could do more but they are mostly dependent on what is already available and it seems e-reading software is generally immature. It’s good that the device is not completely closed. For instance the provided RSS reader is unusable for me and other RSS fetching means don’t satisfy me much either. So I decided to create my own custom RSS fetching script using standard Unix (BusyBox) tools on PocketBook and it works well.

The included dictionaries are not very small nor very big and don’t include sufficient grammar information about the words. They are useful to occasionally translate words during reading and they may be useful when travelling. Not much more. For some strange reason there is no German-English dictionary included. I’d like to have an easy option to use free dictionaries.

The speech voices I tried are of very good quality. Text to speech processing handles pronunciation well but its interpretation of punctuation and other special text is poor. The speech synthesis is apparently too demanding for the device, it makes long pauses between sentences.

The web browser is not very comfortable but it’s usable, even for occasional webmail reading. It would be even more usable if webmasters weren’t idiots. There are actually two web browsers, two PDF readers and two e-book readers installed, so you can try the other application when something doesn’t work well (very useful!).

Wi-Fi works without problems. It’s possible to use Bluetooth headphones, at least with the beta firmware. It’s just confusing the corresponding menu entry is missing from Czech menu, I had to switch to another language to access it.

It’s fine and useful that the device can be mostly handled without using stylus (with the obvious exceptions such as drawing). The touch screen is not very responsive. It’s probably not a problem of my particular device as it can be observed in some review videos on YouTube as well. It looks more like a software rather than hardware problem to me.

Finally, I don’t understand what’s the purpose of the bookland.net site. It’s just a heap of overpriced books. But nothing forces me to use it so I don’t care.