transparent block Click here to login or logout The Photo Gallery All about me


Nothing is more dangerous than an idea when it's the only one you have.
Emile Chartier, philosopher (1868-1951)

Fingerworks installer fix

Posted in Geeky Stuff, Personal by Riskable on the January 11th, 2007

For ages I haven’t been able to get the Fingerworks Multitouch utility to work in Linux. At some point about a year and a half ago it stopped working. Since I only ever opened it once in a blue moon (having already programmed my keyboard to my liking) I’ve been blowing off trying to fix it.

Today I decided that it was worth my time to fix this problem so I started to google for a solution. But first, let me list the output I was getting in case someone googles for the same error messages…

(click the title to read more)

riskable@tomo:~/IA_Installers/FingerWorks_MultiTouch_Utiliti$ ./setupfw160.bin
Preparing to install...
WARNING: /tmp does not have enough disk space!
         Attempting to use /home/riskable for install base and tmp dir.
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...
nawk: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
dirname: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
/bin/ls: error while loading shared libraries: librt.so.1: cannot open shared object file: No such file or directory
basename: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
dirname: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
basename: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
hostname: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

Launching installer...

grep: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
/home/riskable/install.dir.11215/Linux/resource/jre/bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory

Very, very odd considering that all of the libraries in question are in their standard (and appropriate) locations. I checked my PATH and LD_LIB… variables and also checked how they were configured with the setupfw160.bin itself… Everything appeared to be correct.

After a bit of googling I found “this post”:http://forums.fingerworks.com/showthread.php?t=718 with a description of why the error was occurring and a patch to fix it. The only problem is that this patch is for a much older version of the Fingerworks setup utility (1.5.0). The only one that is currently available (the only one _left_) is 1.6.0.

So I had a look at the patch file and examined the problem thoroughly: The installer has a bug where it automatically assumes a very old Linux kernel if it cannot identify the version of Linux it is running on. Specifically, the problem occurs when it sets “LD_ASSUME_KERNEL=2.2.5″.

Rather than fix the check (which would require a significant amount of changes), I decided to just modify the old patch to work with the newer version of the setup utility. The only change required was to adjust the line number of the diff, resulting in:

riskable@tomo:~/IA_Installers/FingerWorks_MultiTouch_Utiliti$ cat setupfw160.bin.diff
--- setupfw160.bin.old  2007-01-11 09:46:07.590097272 -0700
+++ setupfw160.bin      2007-01-11 09:13:29.756450040 -0700
@@ -2098,7 +2098,7 @@

                # I have to set this before I check the JVM version, a-cuz
                # the call will hang, if it -is- vulnerable!
-               export LD_ASSUME_KERNEL=2.2.5
+

                eval `$actvm -version 2>&1 | $AWK '
                        BEGIN {

(I also adjusted the date to reflect when I made the change =)

After applying the patch:

riskable@tomo:~/IA_Installers/FingerWorks_MultiTouch_Utiliti$ cat setupfw160.bin.diff | patch -p0
patching file setupfw160.bin
Hunk #1 succeeded at 2095 (offset -3 lines).

…The setup utility ran (and installed) fine. Now I need to figure out why the actual MultiTouch_Utilities application crashes when I open it (I think I have a permissions problem).

riskable@tomo:~/FingerWorks$ ./MultiTouch_Utilities
Invocation of this Java Application has caused an InvocationTargetException. This application will now exit. (LAX)

Stack Trace:
java.lang.SecurityException: can't open device file r/w, /proc/bus/usb/004/001
        at usb.linux.DeviceImpl.(DeviceImpl.java:110)
        at usb.linux.USB.newTree(USB.java:133)
        at usb.linux.USB.scanBus(USB.java:255)
        at usb.linux.Linux$Watcher.mkBus(Linux.java:410)
        at usb.linux.Linux$Watcher.scan(Linux.java:316)
        at usb.linux.Linux$Watcher.(Linux.java:245)
        at usb.linux.Linux$HostImpl.(Linux.java:134)
        at usb.linux.Linux.getHost(Linux.java:101)
        at usb.linux.Linux.createHost(Linux.java:58)
        at usb.core.HostFactory.maybeGetHost(HostFactory.java:141)
        at usb.core.HostFactory.getHost(HostFactory.java:124)
        at fingerworks.firmup.k.(Unknown Source)
        at fingerworks.firmup.UtilityLauncher.(Unknown Source)
        at fingerworks.firmup.UtilityLauncher.main(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.zerog.lax.LAX.launch(DashoA8113)
        at com.zerog.lax.LAX.main(DashoA8113)

*Update:* Silly me: The utility must be run as root! A simple:

sudo ./MultiTouch_Utility

…Worked fine =). i can now play around with all the neat features my “Fingerworks Touchstream LP”:http://www.fingerworks.com/ST_product.html is capable of. FYI: Apple bought the patents owned by Fingerworks in 2005 and has just released the “iPhone”:http://www.apple.com/iphone/ which makes extensive use of the multi-touch technology.

Leave a Reply