Skip to content

Instantly share code, notes, and snippets.

@DanThiffault
Created July 21, 2011 06:32
Show Gist options
  • Save DanThiffault/1096642 to your computer and use it in GitHub Desktop.
Save DanThiffault/1096642 to your computer and use it in GitHub Desktop.
Fingerworks Multitouch Utility Runner
# authenticate with the repository
# use a blank password
cvs -d:pserver:[email protected]:/cvsroot/jusb login
# pull down the source
cvs -z3 -d:pserver:[email protected]:/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/
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 \
#!/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
@razic
Copy link

razic commented Dec 9, 2011

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?

@DanThiffault
Copy link
Author

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!

@razic
Copy link

razic commented Dec 11, 2011

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 :)

@razic
Copy link

razic commented Dec 17, 2011

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 :)

@razic
Copy link

razic commented Dec 17, 2011

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.

@razic
Copy link

razic commented Dec 18, 2011

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

@DanThiffault
Copy link
Author

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 @

@razic
Copy link

razic commented Dec 18, 2011

Email sent ;)

@buserror
Copy link

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

@MDNich
Copy link

MDNich commented Nov 19, 2021

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

Fingerworks MultiTouch Utilities

sadly the link is broken could you reshare? I know its been almost 10 years now

@DanThiffault
Copy link
Author

@MDNich It has been a while since I've used that utility, let me see if I can find a copy somewhere 🤞

@MDNich
Copy link

MDNich commented Nov 19, 2021

Aww thank you soo much (I don’t have PPC computer anymore to put the software on, and Rosetta won’t run JNI libs for PPC. My only thus alternative is either buy an old ppc computer or get the Linux version without Java, which I am most inclined to)

@MDNich
Copy link

MDNich commented Nov 19, 2021

from Wikipedia on Rosetta 1:

https://en.m.wikipedia.org/wiki/Rosetta_(software)

cannot run the following:

Bundled Java applications or Java applications with JNI libraries that cannot be translated

@DanThiffault
Copy link
Author

@MDNich
Copy link

MDNich commented Nov 19, 2021

Thx, but do you have the Linux no Java version? I have the Mac one:(

@DanThiffault
Copy link
Author

I do not 😞

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment