The rest of this entry is obsolete !!
Having the touchscreen working is what involved more work.
Fast steps to have touchscreen working:
1. bios setup
go into bios and select touchscreen a tablet mode
In tablet mode the touchscreen works well both in windows and linux
I know most other sources tell to select touchscreen mode; but my method works great with tablet mode, as well as touch sensitivity is very sharp in all screen areas
2. download the u810_tablet kernel module and install it
Detailed information about the u810_tablet kernel module can be found here (TBD).
- get the module here
as root:
- copy the module to /lib/modules/`uname -r`/extra/
# cp u810_tablet.ko /lib/modules/`uname -r`/extra/
- run depmod command
# depmod -a
- make sure u810_tablet handles acpi properly, to have ssuspend/resume working
edit the file /etc/default/acpi-support
to include the following
# Add modules to this list to have them removed before suspend and reloaded
# on resume. An example would be MODULES="em8300 yenta_socket"
#
# Note that network cards and USB controllers will automatically be unloaded
# unless they're listed in MODULES_WHITELIST
MODULES="u810_tablet"
3. make sure u810_tablet module is loaded before any other module, specially before usbhid
as root:
- edit file /etc/initramfs-tools/modules to look like:
# List of modules that you want to include in your initramfs.- update your initram file to have the u810_tablet module load the very first one
#
# Syntax: module_name [args ...]
#
# You must run update-initramfs(8) to effect this change.
#
# Examples:
#
# raid1
# sd_mod
u810_tablet
# update-initramfs -u 'all'
=> note: I'm trying to find another way to have u810_tablet module loading before usbhid module; playing with modprobe.conf files didn't work as expected, but I need to do more testing
=> you need to do this every time you upgrade your kernel either with ubuntu's update manager tools or manually
4 configure X to read data from u810_tablet module
Notes about the method described to have the touchscreen working:
- I have noticed that in tablet mode, calibration is not needed; default parameters included in the following files should work as expected
- many methods in the web make us of evtouch x driver; this method works with evdev x driver, so forget anything you may have read before for setting up the touchscreen
- this method makes use of the automatic hardware discovery funcionality included in latest ubuntu, so the xorg.conf file doesn't need to have anything configured. Everything is setup on-the-fly
as root:
create the following file
/etc/hal/fdi/policy/u810_tablet.fdi
<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
<device>
<match key="info.product" contains="Fujitsu Component USB Touch Panel">
<merge key="input.x11_driver" type="string">evdev</merge>
<merge key="input.x11_options.MinX" type="string">130</merge>
<merge key="input.x11_options.MinY" type="string">250</merge>
<merge key="input.x11_options.MaxX" type="string">3820</merge>
<merge key="input.x11_options.MaxY" type="string">3920</merge>
<merge key="input.x11_options.MoveLimit" type="string">0</merge>
<merge key="input.x11_options.ReportingMode" type="string">Raw</merge>
<merge key="input.x11_options.SendCoreEvents" type="string">True</merge>
<merge key="input.x11_options.TapTimer" type="string">90</merge>
</match>
</device>
</deviceinfo>
download the file here
5 install two small programs to auto-rotate touch coordinates when screen is rotated
- download u810_rotate_helper and u810_rotate.py
as root,
- copy both files to /usr/bin
- make u810_rotate_helper suid:
# chmod +s /usr/bin/u810_rotate_helper
6 activate u810_rotate.py to start when you log into gnome
Once logged into gnome, go to System -> Preferences -> Starup Applications and add /usr/bin/u810_rotate.py to start when you log in
7 reboot
Reboot and enjoy the touchscreen !!
I can recommend xournal, gournal as hand-writing note taking applications (no handwriting recognition though)
8 pending tasks
- autorotate integrated mouse-pointer coordinates when screen is rotated. That should be easy....
- configure evdev to handle long-press as right-mouse click
- work out another method to have u810_tablet module properly loaded without messing with initramfs
need to confirm this:
"I can confirm blacklisting usbhid worked for me. I simply made a blacklist entry for usbhid an
d then in /etc/modules I loaded bcm5974 and then usbhid.
That way usbhid still gets loaded, but after bcm5974"
- make sure u810_tablet can handle suspend/resume without including in in the MODULES variable
- post source code: I need to make small cleaning as well as include copyright stuff. Just give me a couple of days ...
- any other?
debugging tools
- once the u810_tablet module is loaded, you should see the device created in
/dev/input/by-id; if the device doesn't appear here after loading the module, don't go any further and solve it
- to verify coordinates:
xinput --list
xinput test 3 and verify coordinates match max/min x/y
- to verify hal has identified the device
lshal -u /org/freedesktop/Hal/devices/usb_device_430_530_noserial_if0_logicaldev_input
hal-find-by-capability --capability input | xargs -I{} hal-device {}
some helpers and tools
xinput list
some old notes
when using a non-working module
xinput --list-props "EVTouch TouchScreen"
xinput get-button-map "EVTouch TouchScreen"
xinput query-state "EVTouch TouchScreen"
xinput test "EVTouch TouchScreen" => doesn't receive coordinates well
Hello!
ReplyDeleteGreat guide, thank for that.
I have a problem with u810_tablet module.
The dmesg contains the following string:
[ 2.803052] u810_tablet: disagrees about version of symbol struct_module
The modprobe is not happy with this module as well:
$ sudo modprobe u810_tablet
FATAL: Error inserting u810_tablet (/lib/modules/2.6.27.10-i586/extra/u810_tablet.ko): Invalid module format
It is obvious that there are some incompatibilities between the module and my kernel.
Trying to fix that I have downloaded and installed the kernel from sources:
[ 0.000000] Linux version 2.6.27.10-i586 (root@kubuntu0-8-10) (gcc version 4.3.2 (Ubuntu 4.3.2-1ubuntu12) ) #1 SMP Thu Apr 9 09:27:01 MSD 2009 (Ubuntu 2.6.27-11.27-generic)
This didn't help.
Can you please point where can I get sources for your version of u810_tablet?
Re-building this module from sources will probably help...
Hello!
ReplyDeleteThank you for the great guide.
One question about that.
Trying to load u810_tablet I have got this error in dmesg:
u810_tablet: disagrees about version of symbol struct_module
Most probably the reason is that I am running kernel version 2.6.27.10 while u810_tablet was compiled for newver version.
Probably recompilation will fix this.
Is it possible to have sources for u810_tablet to recompile?
hi!
ReplyDeleteyour posts are amazing!!!
i have the same problem: invalid module format.
the command "cp u810_tablet.ko /lib/modules/`uname -r`/extra/¨ doesnt work properly. i just paste the .ko on the "/lib/modules/2.6.32-25-generic/".
how can i fix this problem ?
Hi Rodrigo,
ReplyDeleteas pointed in the first lines of this posts:
2009.04.20 update: disregard this entry and go to read the better 'Linux on a Fujitsu U810 - Touchscreen III'