Peripherals/Touch Screen

From OLPC
Jump to navigation Jump to search

Technology

Different touch screen technologies:

  • 4-Wire Resistive
  • 5-Wire Resistive
  • Capacitive
  • Surface Acoustic Wave
  • Infrared
  • Strain Gauge technology
  • embedded ccd in panel - can't find link but light detectors can be intermixed with light generators, maybe on an oled display, so the computer can detect when light reflected
  • A simple light sensor could also work as a display pointer. A tethered pen could detect flashed target boxes, like the old Nintendo Light Gun. For continuous drawing, the screen could flash through a series of patterns where the pen either sees light or dark. Each screen location would thus have a unique binary code flash through it, which would be reported by the pen's narrow light sensor. This screen scan will start in a small box near where the pen was last to reduce search time, and the eyesore of flickering. -- Nintendo wii remote has been hacked to provide multi touch interface-- http://gizmodo.com/gadgets/clips/wiimote-hack-is-wireless-multitouch-tv-321329.php

Apparently most PDA’s use 4-Wire Resistive touch screen technology. However I am not positive on this.

Adding a Touch Screen to the XO

The XO has a 7,5 inches display, so is quite hard to find. An alternative is buy a 8 inches, touch screen(no wide). I have bought mine at http://www.iiic.hk.cn/ Then you have to open the XO computer and remove the screws in the lcd corners, then remove the rubber over them to obtain more space between the top plastic and the display. The touch screen comes with an usb controller, that we soldier inside the XO USB port as you can see in the pothograph. We could obtain some free space, over the display as you can see in the photograph.

How to do

This are the steps that you must do to have your touch screen working.

Get starting

First of all you have to make a root in a jail, in order to install gcc and Make utils and compile the necesary sources.

Compiling the kernel module of the Touch Kit

bash-3.2# wget http://dev.laptop.org/~dilinger/testing/kernel-2.6.25-20080925.1.olpc.f10b654367d7065.src.rpm
bash-3.2# mkdir /usr/src/redhat
bash-3.2# mkdir /usr/src/redhat/SOURCES
bash-3.2# rpm -ivh kernel-2.6.25-20080925.1.olpc.f10b654367d7065.src.rpm
bash-3.2# yum install redhat-rpm-config
bash-3.2# yum install m4
bash-3.2# yum install rpm-build
bash-3.2# yum install unifdef
bash-3.2# yum install tar
bash-3.2# rpmbuild -ba --define "dist olpc1" --define "olpc 1" --define "head dc5079fafb767e4" --target=i586 /usr/src/redhat/SPECS/olpc-2.6.spec

In the Makefile of the touch usb chanhe KDIR for KDIR := /usr/src/redhat/BUILD/kernel-2.6.25/linux-2.6.25.i586/ this returns an error after making make, it is solved by adding {} at the end of the table, view http://forum.eeeuser.com/viewtopic.php?pid=175102

make!


Tests for exporting environment variables

bash-3.2# cp tkusb.ko /lib/modules/
bash-3.2# mknod /dev/tkpanel0 c 180 180


Add the following to /etc/rc.local

Code:
## TouchKit kernel module section begin ##
rmmod touchkitusb
## This module may be renamed “usbtouchscreen” ##
insmod /lib/modules/tkusb.ko
## for Kernel 2.6.x only.<br />
## TouchKit kernel module section end ##

The Xorg

You need to modify the xorg.conf to view the touch screen as a human interface device (HID). Add this to the /etc/xorg.conf:


  Section "InputDevice"
Identifier "EETI"
Driver "egalax"
Option "Device" "/dev/tkpanel0"
Option "Parameters" "/var/lib/eeti.param"
Option "ScreenNo" "0"
EndSection

then you have to copy the file [egalax_drv egalax_drv.so] to the directory /usr/lib/xorg/modules/input/

External Links