Phidgets for Linux Version 2.1.8, 3 May 2012 Installation ============ ./configure; make; make install This installs the library libphidget21.so and the header phidget21.h. Java support is compiled in by default, as well as support for Avahi zeroconf if it is available. *Note: USB devices are by default only usable by root in Linux. Install udev/hotplug scripts to use Phidgets from a normal user account (see below). Requirements ============ libusb 1.0 This is generally already installed. The libusb dev files may need to be installed - this is usually a package called libusb-1.0-0-dev. If libusb-1.0 is not available, libusb-0.1 will be used as a fallback, however, libusb-0.1 is not recommended because of a memory leak which will never be fixed. Some embedded systems / older distros may need to manually set up the userspace USB device tree. Usually this is handled by udev and exists in /dev/bus/usb. This can also be handled by mounting usbfs in fstab, which shows up in /proc/bus/usb. Options ======= Configure options: To disable Java support: ./configure --disable-jni To use mdnsresponder instead of avahi for zeroconf: ./configure --enable-zeroconf=bonjour To disable zeroconf completely: ./configure --disable-zeroconf To use built-ins for .local lookup: ./configure --enable-zeroconf-lookup To enable LabVIEW support: ./configure --enable-labview make LABVIEW_CINTOOLS_PATH=/usr/local/natinst/LabVIEW-2010/cintools Note: replace 'LabVIEW-2010' with your version To use old libusb-0.1 ./configure --enable-oldlibusb Usage ===== Compile your projects with -lphidget21 and include phidget21.h in the source file. Java ==== Java support is compiled in by default - 'make jni' is no longer required. This support is provided via JNI extentions compiled into libphidget21.so. To disable Java support, configure with the --disable-jni option. The libphidget21.so install path may need to be manually specified in order for Java to find the library, there are two ways to do this; either specify in an environment variable: LD_LIBRARY_PATH=/usr/lib Or specify on the Java command line: java -Djava.library.path=/usr/lib some_java_app Note that the /usr install prefix can be changed during the configure step by specifying --prefix. phidget21.jar is the java half of the Phidgets->Java interface. This library can be downloaded from the website, or built from source: make phidget21.jar You must use a phidget21.jar that was built from the same phidget21 library as you have installed or you will get errors. Hotplug / udev ============== On linux, by default, USB devices are not writeable by anybody but root. On modern systems (kernel > 2.6.7), this is solved with a udev ruleset. This is the ideal solution. On older systems, this can be solved with a hotplug script. udev ==== The udev rules file will make all phidgets world writeable (mode 666) as soon as they are attached. Note that some systems may already have generic USB rulesets defined. The udev rules are run in order from smallest to largest number - the Phidgets rules, at number 99, should be high enough so that any USB rules will be overridden. To Install: cp udev/99-phidgets.rules /etc/udev/rules.d Hotplug ======= A hotplug script has been included that will make phidgets writeable when the are plugged in. Because of this, there can sometimes be an issue accessing/opening a device as soon as it is plugged in, before the hotplug script has run to make it accesible. In this case you will see an error 4: "A phidget matching the type and or serial number could not be found." Never rely on the hotplug scripts it you're using the phidget manager to open or access devices as soon as they appear as this will sometimes fail. To Install: cp hotplug/* /etc/hotplug/usb chmod 755 /etc/hotplug/usb/phidgets Examples ======== There are three examples in the examples directory. manager is just a simple program that will list all phidgets attached to the system, as they are plugged in or removed. ifkit connects to an interface kit and displays changes, while setting outputs. phidgetsbclist lists all SBCs on the network (requires seroconf support). There is also a seperate download avialable with C examples for most phidgets, on the phdigets.com website. FreeBSD ======= The library has been tested with FreeBSD 8.1 and found to work. The configure/make/make install can be run unmodified. When compiling binaries that include libphidget21, the -pthread flag must be passed to the compiler, because the threading functions are part of the C library, unlike on Linux. gcc example.c -lphidget21 -pthread -o example