In the first part of this post, we managed to get the wireless up and running (at least I hope we did). I wanted to get that out of the way, so we can deal with the real challenge: Getting the touchscreen to work properly.
Let me explain that a bit better. The touch screen did work right out of the box. What did not work however, was the tablet function. As most such devices, the Classmate features two accelerometers that detect the screen orientation and rotate the image accordingly. Not only that, the input controls have to be reversed also, or you would end up tapping on the left side of the screen and the cursor would stay on the right side.
My first priority was to get the screen to rotate properly. I thought that even if I could not get the accelerometers to work, I could rotate the screen manually, which would be extra work for sure, but at least I could operate it as a tablet.
At the end of the previous post, I gave a link to Kay’s site, where he proposed an alternative way to fix the wireless. My solution is based on Kay’s instructions with some minor modifications. I had been searching for a solution all over the internets, and Kay’s was the only thing I found that helped me. For some of you, Kay’s instructions should be sufficient and you shouldn’t need me for anything, provided you have installed Debian with the FVWM window manager. At some point, I would like to try out Debian, but as it is, I think I am better off with something more “out of the box”.
Disclaimer: Always keep in mind that I was trying things as they came, on a machine I did not mind formatting over and over. That means I had no problem following whatever I stumbled upon on the internet and I did not complain when something went bad (and trust me, many things went bad). Furthermore, ignorant as I am, I cannot exclude the possibility that many of the things I did were not necessary, that there weren’t other more sufficient approaches etc etc. I am just going to describe the steps I followed that had a result.
Alright then, now that we got the unpleasant part where I warned you about loss of equipment and sanity, we are good to go.
The first thing I did, was to install the driver (link to a zip file) for the touch screen. Although it might not be necessary, if you upgrade your kernel, at that point I was still with the old kernel, so I cannot verify that you can omit this step. However, you are free to perform an upgrade first (see below) and see what happens. In any case I was forced to upgrade my kernel, so I guess it could come first. If you are lucky, this will leave you with a working wireless, so go ahead and try it.
Once you download and unzip the driver, you will find a readme file with installation instructions. You will notice right away that you have to modify a file called xorg.conf and you are most likely to find out that you do not have such a file. The version of X server that you got with Ubuntu, no longer uses an xorg.conf. However if you create one you will force X to use it. Reboot into recovery mode and from the available options choose “Root console”. You are now logged in as root, joy! Type:
sudo Xorg -configure
Now, if you look in the root directory, you will find a file called xorg.conf.new which is what you are looking for. In the rare case it is not created in the root directory, you can try to locate it by typing:
find / -name xorg.conf.new
All you need to do, is put this file in its’ place and you’re set:
cp /root/xorg.conf.new /etc/X11/xorg.conf
cp /etc/X11/xorg.conf /etx/X11/xorg.conf.bak
Yeah, you got that right. The last one is a backup we keep in case something goes wrong and you are also right, we still have the .new file we created but one can never be too cautious. What I haven’t tried is what happens if you erase the xorg.conf file. I guess it will revert back to auto configuring X but haven’t tried it. You can follow now the driver installation instructions, just fine. I believe it should be easy enough. I you have any problem, drop me a comment and I will try to help with that. Below I have included the parts of the file that you need to add. At the “ServerLayout” section you have to add a line:
Identifier “X.org Configured”
Screen 0 “Screen0” 0 0
InputDevice “Mouse0” “CorePointer”
InputDevice “Keyboard0” “CoreKeyboard”
InputDevice “HID TOUCH” “SendCoreEvents”
And then you have to create a Device section:
Identifier “HID TOUCH”
Option “Device” “/dev/usb/hiddev0”
Option “ScreenNo” “0”
Option “Rotation” “0”
Option “swapY” “0”
Option “UpSound” “0”
Option “DownSound” “0”
Option “Parameters” “/var/touch.conf”
Do you see the “Parameters” line? You are probably wondering why is that line there, when the instructions do not mention something. At the point of modifying my xorg.conf file, I was following this guy’s instructions and he had created a touch.conf file that he put in the /var directory with the following contents:
#Touch Screen Settings file rotation, DbClick_Delay, DbClick_Area
Don’t forget to chmod to 666 to the file. I will be completely honest with you, I have no idea what this file does and if there should be another way to configure the touch screen. However, without this, I couldn’t get it to work. Remember, that if you upgrade your kernel, you might not need this.
The next thing we have to fix, is the rotation of the touch screen. Kay, does that using two scripts. One for the rotation and one that handles the accelerometers. The rotation script works, but it also restarts the window manager Kay uses, which is not needed in our case. Either download his script and change it, or get mine. (Worpress would not let me upload a .sh file so I changed the extension to .doc).
If you try to execute accel.py it might generate errors and refuse to run. This happens because it tries to find a joystick device (bear with me please) and cannot find one. The system treats accelerometer inputs like joystick inputs for some reason that eludes me. Now, it does not mean that you don’t have a joystick driver installed, just that where the script is looking for one there isn’t. Go to /dev/input and search for a js0 device. In my case there wasn’t one. This is where I needed to upgrade the kernel.
Go here and download the following files:
Note that these files are for version 2.6.35 and that is the version I upgraded to. You can go one version further and get the files for 2.6.36, it’s up to you. You install these packages normally and on the next reboot you will see at Grub the new kernel version. You will also have a /dev/input/js0 device, which means Kay’s script now works perfectly.
That’s about it. You should now have a proper working touch screen on your Classmate. If you need any further explanation on any of the steps, drop me a line and I will do my best to help out. I really need to say one more time that the procedure I described above, was merely what I did to get my touch screen to work. By no means do I claim expertise on anything. In fact, if it weren’t for Kay, I don’t think I would have made it. So, I and you who are reading this, should thank Kay and if any of you follows these instructions and makes something of them, don’t forget to credit Kay too.
I decided I will put a third part up, with the conclusion I reached through out this whole process. Stay tuned.