This is a temporary webpage for libphidgets, a user-space access library for the Phidget devices, written in C. It provides a generic and flexible way to access and interact with the Phidgets and comes with all the advantages of a user-space library. It is based on libhid (which is based on libusb), thus it requires no HID support in the kernel. Furthermore, it aims to support all operating system supported by libusb/libhid: Linux, BSD, OS X, and Windows.

libphidgets is still under development and it does not have a proper homepage (if you want to write one, please contact us!). Until one is ready, you are welcome to download the software and try it out, it should be easy to use if you have some knowledge of C and are willing to read someone else 's code. Documentation does not yet exist, but we are working to provide it using Doxygen (again, if you want to help, please contact us!).

At the moment, libphidgets supports the following devices:

Adding more devices should be trivial. If you sponsor the hardware, I will likely be able to write the drivers. Otherwise I encourage you to take a stab. I would be glad to help you via the discussion list!

For more information, please consult the README.


09 May 2005
Chris Laplante donated a PhidgetRFID unit to me, which will enable me to test RFID support. Thanks a lot.
01 May 2005
Martin Dengler added PhidgetLED-64 support.
05 April 2005
Theodore Morse added PhidgetRFID support. He also created a web page for it.
20 October 2004
Newly appointed libphidgets developer Jason Watson has integrated support for the Phigets InterfaceKits. So far, only analog inputs are not working. If you have an InterfaceKit, please test it! I am still waiting for the module Chester promised.
04 October 2004
I have not yet received the promised device. However, Jason Watson has started some serious work on the InterfaceKit 0/16/16, which is being merged in the next couple of days (once it's working).
10 September 2004
Chester Fitchett (the Phidgets founder) has agreed to send me an InterfaceKit 8/8/8 so I can work on implementing input. If you think this is cool, drop him a line! I don't know when I will be able to do this, but feel free to pester me about it.

Mailing lists

Development of libphidgets is currently coordinated with mailing lists and CVS (see further down). The following three mailing lists exist (click on the list name to go to the list information page):

We realise that the documentation and instructions we provide with the library are far from usable. Thus, please do not hesitate to write to us on the discussion list!

Getting libphidgets

libphidgets is available through various ways. In the following, we list the possibilities in decreasing order of preference/currency:


The CVS tree contains the most recent version of libphidgets. You can check it out in read-only mode with the following commands (the password is empty, so just hit enter when prompted):

cvs -d login
cvs -z3 -d co libphidgets

Instructions on how to compile the code are available in the README file. You will need libhid as well. Please do not hesitate to write to the mailing list if you have questions, comments, or problems.

In addition, the CVS tree can be viewed online.

If you want to contribute, please send a patch or two. We cannot give out write access to the CVS just like that, but if you show us a patch, we'll conclude that you are serious about developing libphidgets, and you'll get your account.

On a final note, I am going to move libphidgets to Subversion soon.


libphidgets has entered Debian, but the versions may be a little behind. You can use my (madduck) repository to always get the latest versions. Simply add the following to your /etc/apt/sources.list file:

deb ~madduck/packages/stage/libphidgets/
deb-src ~madduck/packages/stage/libphidgets/

and then install it. You may leave out python-phidgets if you do not want the Python bindings:

# apt-get install libphidgets-dev python-phidgets

The packages and the archive are signed. More information is available here.


Of course, libphidgets is available as a tarball from the Debian repository. Simply find the latest file with the extension .orig.tar.gz, download it, unpack it, and then do the standard

$ ./configure && make
$ su
# make install

to install it into /usr/local.

Note that there is currently a dependency on the Debian patch, which I have not yet fixed. To unpack the tarball, you thus need to get both, the .orig.tar.gz file and the latest, corresponding .diff.gz file. Then, do the following to unpack: $ tar xfz libphidgets_0.3.6.orig.tar.gz $ cd libphidgets-0.3.6 $ zcat ../libphidgets_0.3.6-1.diff.gz | patch -p1 $ ./configure [...]

A note about languages

At time of writing, libphidgets can be used directly from C/C++, or from Python. It is possible for us to provide further language bindings, thanks to Swig. Thus, if you need to use the Phidgets from any other of the languages supported by Swig, we will make it available. Just echo your desires to the discussion list.


libphidgets is released under the terms of the Artistic License.

Note that this is not all good and well. libphidgets uses libhid, which is currently licenced under the terms of the GPL, because it uses the GPL'd MGE UPS SYSTEMS HID Parser. Our solution is to rewrite the HID parser. One of these days. We are also in contact with MGE, trying to convince them to loosen their licence. If the licencing issues are solved, we are likely to re-release libhid under the Artistic Licence.


libphidgets grew out of the need to control the Phidgets from Linux for my robots. The previous endeavours were either non-operable or not stable enough. The kernel driver had not been written, and apart, our need for real-time application made the use of a kernel driver impossible. Furthermore, since we wanted the ability to quickly update a driver or add new devices, a kernel driver was out of the question due to the need for a recompilation (and a reboot), and the stability and compatibility problems that could ensure.

libphidgets was written by

It is currently actively being used as part of some robotics projects at the Artificial Intelligence Laboratory at the University of Zurich, Switzerland.


Valid XHTML 1.1!

$Id: index.html,v 1.27 2005/06/22 09:21:04 krafft Exp $