Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.


Novint Falcon Open Source Library / News: Recent posts

libnifalcon v1.0.1 released

libnifalcon v1.0.1 has been released. This is a bug-fix release for errors involving trying to use multiple falcons on the same machine with the libusb communications core. It also adds tests for multiple falcons, and a small fix to the mechanical measurements.

Posted by Kyle Machulis 2009-09-20

libnifalcon v1.0 released

After over 2 years of work, libnifalcon version 1.0 has been released. This version provide the most stable kinematics core we've had so far, simplified communications management, and even has enough comments to possibly be usable by someone else.

If you have any issues, please report them to the mailing list or the forums here.

I'll hopefully be making new releases of the pd/max externals in the next few days to go along with this.

Posted by Kyle Machulis 2009-09-07

libnifalcon v1 beta 4 released



Numbers refer to bug listings for libnifalcon bug tracking, at

2009-05-17 Kyle Machulis <>
* Release v1 beta 4
* Fixed include install directories (#15)
* Fixed include file listings so that they show up in Visual Studio projects (#9)
* Fixed program option printing (#18)
* Divided falcon_test_cli into multiple smaller tests
* Added color fading test to falcon_test_cli
* Added wall test to falcon_test_cli (#2)
* Changed internal implementation holding to use smart pointers instead of bare pointers (#12)
* Fixed double free bug in libusb (#21)
* Cleaned loop counting methods in falcon_test_cli (#19 #22)
* Added per-comm-target compiles for findfalcons test (#17)
* Added QPT timing calls for windows (#6)
* Updated gmtl to v0.6.0
* Added package file generation for pkg-config (Thanks to Stephen Sinclair)
* Removed unnecessary stdint.h types
* Added blocking read/write calls to comm libraries for loading firmware
* Fixed validity checks for firmware mode setting and firmware loading across all comm cores
* Fixed firmware existence checking, now much more reliable
* Changed all array passing to use boost::array instead of bare arrays
* Fixed FTD2XX comm library to make reading more stable... read more

Posted by Kyle Machulis 2009-05-18

libnifalcon 1.0 beta 3 released


* Overhauled CMake system because I didn't really know what I was
doing with it the first time around (and may still not this time)
* Added logging capabilities using Apache's log4cxx library
* Removed C code completely, still available in repository (boneyard
directory) but no longer distributed in source tarballs
* Rearranged src directory to only contain what used to be in cpp
* Added pregen'd angular matrix LUT header since it currently never
changes but takes a bit of time to generate on some systems
* Added logging level options to FalconCLIBase
* Fixed lots of small bugs in findfalcons_cpp, FalconCLIBase,
* Fixed compiling in Visual Studio on windows (MinGW still works
fine too)... read more

Posted by Kyle Machulis 2009-03-15

libnifalcon v1 beta 3 development update

libnifalcon is not dead! Just developing somewhat slowly since day job is taking up time.

Here's the latest release update. We're almost to beta 3, hopefully it'll appear sometime in March.


Every time I plan a release day, without fail, the last thing I do is
think "Oh, wonder if things still compile on windows", and then the
release gets delayed a week.

So yeah, once again, I seem to have completely hosed windows building.
At some point in February, I also broke libusb support and cmake
generation for any platform with case-sensitive file system. I really
gotta start testing on more than my macbook. :) ... read more

Posted by Kyle Machulis 2009-03-09

libnifalcon v1 beta 2 released

Here's the changelog notes:


* Release v1 beta 2
* Changed units in stamper kinematic core position readings from
millimeters to meters
* Changed units in stamper kinematic core force values to newtons
(now matches HDAL)
* Changed units in FalconGeometry to meters
* Updated falcon_test_cli to reflect unit changes
* Added many more comments, though still nothing in depth
* Removed falcon_mouse demo (many people have difficulty building
and it doesn't work right, moved to own repository,\)
* Fixed some const/reference passing arguments
* Changed comm libraries to use pointers and prototypes to remove
necessity for comm includes in lib headers
* Fixed FTD2XX compatibility (comm driver hadn't been working in the
past few releases)
* Fixed compilation and compatibility for windows (now using mingw
as test compiler)... read more

Posted by Kyle Machulis 2008-12-08

np_nifalcon v1.0.2 released

More small fixes.

- Fixed raw force input (was being overwritten by kinematics even if in
raw mode)
- Fixed freeze bug on external destruction (waiting for a thread that
was never there...)

Posted by Kyle Machulis 2008-11-19

np_nifalcon v1.0.1 released

1 day turnaround to a new version was not exactly what I was expecting.
But, this fixes the two biggest crash bugs I was aware of, and fixes the
comm library selection issue that basically made v1.0 uncompilable
without changes to code.

Source and binaries (bins for osx only still) are up at: read more

Posted by Kyle Machulis 2008-11-18

libnifalcon v1 beta 1 released

I've gone ahead and moved libnifalcon to beta status. There's really not much point to optimizing more without some sort of testing, so now it's testing time. :)

libusb-1.0 has been added to the library for linux usage. Lots of other changes, check the changelog for them.

Posted by Kyle Machulis 2008-11-16

libusb-1.0 comm core for linux in svn

In an effort to be as anal about the most boring parts of this driver as possible, I've added a libusb-1.0 based communications core for linux. It's by far the fastest and lightest weight of any of the communication cores, but unfortunately only works on linux for the moment. libftdi still seems fine on os x, and ftd2xx will always be the default on windows.

More information on libusb-1.0 is available at read more

Posted by Kyle Machulis 2008-10-24

libnifalcon 1.0 alpha 4 released

Too tired to write up my usual snappy comments, so here's the changelog.

* Release v1 alpha 4
* More cmake file condensing
* Fixed comparison bug in FalconGripFourButton
* Added CPU specific optimizations for option for GCC builds
* Added Fast Math optimization option for GCC >= 4.0
* Added (but commented out) packet buffering scheme for firmware
* Fixed bug with returning grip info data portion from novint firmware object
* Fixed library misnaming for C libraries (Thanks to Stephen Sinclair)
* Removed automatic ftd2xx building from Mac and Linux due to symbol issues (now requires explicit CMake option setting - FORCE_FTD2XX_BUILD)
* Added cmake option for libusb debug messages (LIBUSB_DEBUG)
* Added execution flags to the FalconDevice runIOLoop function... read more

Posted by Kyle Machulis 2008-10-20

Falcon Mechanics Demo v0.2 Released

Stupid OS X and its stupid lack of caring about stupid capital letters in filenames.

Fixed the openscenegraph cmake calls, which were broke on everything that wasn't OS X

Posted by Kyle Machulis 2008-10-14

Falcon Mechanics Demo released

I've posted Kevin Ouellet's opengl falcon mechanics demo as its own project. Even though it's listed as v0.1, it's quite stable. I'm just leaving the 1.0 version until the connection and firmware loading capabilities are cleaned up a little bit, which should happen soon.

Posted by Kyle Machulis 2008-10-13

libnifalcon 1.0.alpha3, libnifalcon_hdal 0.1 released

Two releases today!

libnifalcon 1.0.alpha3, which features a cmake system that somewhat resembles what a someone who maybe decided to read the documentation finally would write. Much cleaner code, everything builds through a couple of functions. Renamed some libraries, because I'd like libnifalcon* to represent the C++ version. The C version still works, but probably won't see a lot of additions anymore.... read more

Posted by Kyle Machulis 2008-10-12

libnifalcon C Library Name Changes

While I'm not calling the C libraries deprecated, since they work fine for simple communication, I'm figuring the C++ libraries will be what most people are going to use with libnifalcon. With that in mind, I've switched the libnifalcon c-based library names to libnifalcon_c_(comm), i.e. libnifalcon_c_libftdi, etc... Not a huge change, just means I can keep libnifalcon.* for the C++ stuff.

Posted by Kyle Machulis 2008-10-11

Libnifalcon Version 1 Alpha 2 Released

Yet another hurried, half-finished release! Yay!

I added the FindBoost module from cmake 2.6.2 so I could keep compatibility back to cmake 2.6.0 while still having boost 1.36 compile correctly. Fixed up findfalcons_cpp to not require kinematics anymore.

Of most interest will probably be my compatibility libraries for Novint's HDL. I'd really like to be able to have libnifalcon code "just work" on any platform that already supports Novint's SDK, so I'm trying to emulate their SDK using libnifalcon calls. Let's hope they don't mind. :D... read more

Posted by Kyle Machulis 2008-10-06

Libnifalcon Version 1 Alpha 1 Released

And so begins the path to v1.

This version is probably full of broken, but I really wanted to get the C++ code out there into the hands of developers so we could start testing and refining the API. Please note that, since this is ALPHA, there will probably still be changes to the API as is. Functions may change randomly, though I really only expect parameters to do so. The general structure of the library is sound, and really, I can't make it any more generic than I already have. The error handling is just a bit schizophrenic at the moment.... read more

Posted by Kyle Machulis 2008-09-21

FTD2XX works on OS X as of 0.1.4

Earlier this month, FTDI released a new version v0.1.4 of their FTD2XX driver for OS X. I just hooked it up to the C++ libraries in the repository, and other than having serious issues with the return values coming from the falcon during firmware loading (and the fact that I'm using a really gross spinlock on it), it seems to work as well as libftdi. I'd most likely still recommend libftdi for non-windows platforms, but this means we don't have to worry quite as much about comm cores between platforms anymore.

Posted by Kyle Machulis 2008-09-14

Toward v1.0 - Kinematics integrated, C++ library cleaned up

Ok, I think the next version of libnifalcon may very well be the 1.0 version. I spent all weekend working on the new C++ core, and all the functionality of the C libraries is now available, in a much more flexible core.

All of Kevin Ouellet's work on getting measurements for the falcon and making a new kinematics core has been integrated into the libnifalcon trunk, as the FalconKinematicStamper and FalconMechanics projects. ... read more

Posted by Kyle Machulis 2008-09-08

libnifalcon svn in slightly odd state for the moment

I did a ton of work today on folding Kevin Ouellet's kinematics code into the new C++ version of libnifalcon. Unfortunately, I didn't really get time to structure the CMake files correctly around the build, so until further notice (hopefully less than 24 hours), svn checkouts of libnifalcon will require gmtl to build.

I'll be fixing this ASAP, just too tired at the moment. I should really start developing this stuff on branches, heh. :)

Posted by Kyle Machulis 2008-09-07

$99 Novint Falcon at Tiger Direct

So, it took a year from launch, but the falcon is now being sold at the price originally mentioned 4 or so years ago. Well, sold at that price by one store, at least.

In other news, the C++ library is nearing the functionality level of the C library. Only thing left to do to complete that is figure out how to move grip data from the firmware to the grip classes in an abstract way. Check the repository for updates.

Posted by Kyle Machulis 2008-09-06

Base C++ code added to repository

I just added the basis for the new C++ version of libnifalcon to the repository. It's nowhere near done yet, but you can at least get an idea of where I'm going with it. The idea is to provide swappable cores for every portion of the falcon, which I currently have as communications, firmware, grips, and kinematics.

I probably should've branched this, but since I've kept the C code in working condition, I decided to just stay on the trunk. Hopefully this won't botch anyone's development.

Posted by Kyle Machulis 2008-09-01

v0.5 Released, and libnifalcon turns 1 year old

Well, it's been a year since I posted what is still the world's stupidest youtube video about the novint falcon (and funny enough, it's also now one of the most viewed). That was also the first portion of what is now libnifalcon.

So, in celebration, I'm releasing v0.5 today, which is chock full of basic functionality and fixes that should've been in a year ago! I fixed a major race condition issue in the firmware loading, so now firmware will reliably load on all platforms. I also added firmware detection mechanisms, though this is still a somewhat manual process. Check the "Test Firmware" portion of the wiki for more information.... read more

Posted by Kyle Machulis 2008-08-21

More fixes in svn, v0.4.2 out soon

Even after a year of development, I'm still finding issues with my base initialization functions. Turns out that the last step before we send down the firmware sends back 2 bytes, not one, and purging the buffers didn't do any good because of what I'm guessing is more latency timer race conditions. Anyways, we now look for 2 bytes instead of 1, which boosts the ratio of successful firmware loads WAY up on mac and linux (before, they would only succeed due to the race condition, which happened far more on mac than linux. Go figure.)... read more

Posted by Kyle Machulis 2008-08-20

np_nifalcon v0.2 Max/Pd External Released!

v0.2 of the np_nifalcon Max/MSP and Puredata external has been released. This version simply adds the ability to set the homing bit through the external, which is actually pretty much required if you want to get anything done. Code is in the file releases, binaries may follow at some point if I decide to do a bunch of static compiling again.

Posted by Kyle Machulis 2008-08-01