public
Last active

Fingerworks Multitouch Utility Runner

  • Download Gist
build_source.sh
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
# authenticate with the repository
# use a blank password
cvs -d:pserver:anonymous@jusb.cvs.sourceforge.net:/cvsroot/jusb login
 
# pull down the source
cvs -z3 -d:pserver:anonymous@jusb.cvs.sourceforge.net:/cvsroot/jusb co -P jusb
 
# change directories
cd jusb
 
# download the patch
curl https://raw.github.com/gist/1096642/28a4716fb5972d44afa47af0d1b2ffea4cc285da/jusb_osx.patch >jusb_osx.patch
 
# patch the source
# use Makefile as the file name
patch < jusb_osx.patch
 
# compile the source
make
 
# copy the files in to the referenced directory
cp -r libjusbMacOSX.jnilib* /Applications/FingerWorks/lib/jusb/
cp jusb.jar /Applications/FingerWorks/lib/jusb/
jusb_osx.patch
Diff
1 2 3 4 5 6
217c217
< JNI_INC = -I/System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Headers
---
> JNI_INC = -I/System/Library/Frameworks/JavaVM.framework/Versions/Current/Headers
488a489
> native/*.o \
mtu_run.sh
Shell
1 2 3 4 5 6 7 8
#!/bin/bash
export JAVAROOT=Contents/Resources/Java/
 
export CLASS_PATH=lib/jusb/jusb.jar:lib/FW_defaults.jar:lib/upgredit.jar:lib/jh.jar:lib/utility_help.jar:lib/jdom/xerces.jar:lib/jdom/jdom.jar:$JAVAROOT/lax.jar
 
cd /Applications/Fingerworks
 
java -Djava.library.path=lib/jusb -Dcom.apple.mrj.application.growbox.intrudes=true -classpath $CLASS_PATH fingerworks.firmup.UtilityLauncher

I've used this info and Platypus to create an application you can just drop in your Applications directory.

Fingerworks MultiTouch Utilities

im so happy there are people who still support this.

i just got my touchstream today from somebody on the fingerfans website.

however, the app humblehacker put together isnt working. any ideas? Im on Lion.

no, i just took the fingerworks.app humblehacker patched with your changes and dropped it into my applications dir. when running the app, it never actually loads.

unless i am mistaken, the instructions you posted require that i already have the fingerworks app installed.

i don't have the original app installed but i have the one that humblehacker posted (which should have already included your changes). should i just run your script/instructions over it?

alternatively, maybe you can just post your patched and working app so that all i have to do in drop it in my app folder and it works.

thoughts?

Here's a link to my finger works app https://119labs-us.s3.amazonaws.com/blog-files%2FFingerWorks.zip?AWSAccessKeyId=1WH6H3JANFZSYAJXG5G2&Expires=1355028783&Signature=2WlXglljmTu8Rj0PApzgLfjax10%3D

I'm not sure how well the above app will work in a different environment, but you're welcome to try. I still think you're best bet is to download the original app http://fingerfans.dreamhosters.com/download/file.php?id=27 and then follow the instructions. Good luck!

interesting... the app you posed doesnt work on my machine. i'll try your instructions with the original app and let you know how it goes :)

Dan, I got it to work. I'm not sure what I was doing wrong, but after a second try, I was able to download your above link from s3 and get the app to run by running the mtu script that was included. Thank you a ton :)

Although I can view all the gestures in the my gesture editor and run the diagnostics successfully, the mtu script is returning this output:

usb.macosx.USBException: control read error -- [0x1ffffd13] [0x1ffffd13]
at usb.macosx.DeviceImpl.readControl(DeviceImpl.java:458)
at usb.core.Device.control(Device.java:217)
at usb.core.ControlMessage.getDescriptor(ControlMessage.java:354)
at usb.core.ControlMessage.getStandardDescriptor(ControlMessage.java:286)
at usb.macosx.DeviceImpl.(DeviceImpl.java:112)
at usb.macosx.USB.(USB.java:82)
at usb.macosx.MacOSX$HostImpl.mkBus(MacOSX.java:239)
at usb.macosx.MacOSX.newDeviceAvailable(MacOSX.java:263)
at usb.macosx.MacOSX.scanForDevices(Native Method)
at usb.macosx.MacOSX$HostImpl.run(MacOSX.java:201)
at java.lang.Thread.run(Thread.java:680)

Which I think is preventing me from uploading new gestures or writing information to the device.

I am trying to see if I can get it working based on your instructions about jusb.

Been trying all day without any luck. Hopefully you can steer my into the right direction.

I think the error you're getting is because you're using a version of jUsb compiled on my system. There are probably some linked libraries that aren't the same. With my version in the application folder, can you try the steps from the blog posting? If that doesn't work, run the steps one at a time from build_source.sh. Send the output of any errors and the make command to my email address: d a n at 1 1 9 l a b s . c o m without the spaces and swap the at for @

Here I can also run the diag, but it seems to fail to kick the keyboard into DFU mode...
I'm running Mountain Lion BTW...
Oh also, the jusb repository is now empty somehow, I had to dig around the latest CVS head to build


new idDevice: 0x160, idProduct: 0x90b, idVendor: 0xe97
USB DFU suffix appended to: /Volumes/Users/michel/Documents/MyGestures/custom4f0040stealth34.U.byt
MTS_config Binary /Volumes/Users/michel/Documents/MyGestures/custom4f0040stealth34.U.byt ready for transfer!
Created Progress Panel, starting thread...
existing idDevice: 0x160 idProduct: 0x90b idVendor: 0xe97
Java computed firmware image CRC32 0x37665e04 on 34249 bytes
Exception in thread "Thread-8" java.lang.NoClassDefFoundError: usb/linux/DeviceImpl
at fingerworks.firmup.USBupgrader.a(Unknown Source)
at fingerworks.firmup.USBupgrader.downloadFirmwareFile(Unknown Source)
at fingerworks.firmup.USBupgrader.send2GestureProcessor(Unknown Source)
at fingerworks.firmup.a.run(Unknown Source)
at java.lang.Thread.run(Thread.java:680)
Caused by: java.lang.ClassNotFoundException: usb.linux.DeviceImpl
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 5 more

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.