algorithmic modeling for Rhino



Firefly offers a set of comprehensive software tools dedicated to bridging the gap between Grasshopper, (a free plug-in for Rhino) the Arduino microcontroller and other input/output devices. It allows near real-time data flow between the digital and physical worlds – enabling the possibility to explore virtual and physical prototypes with unprecedented fluidity.

Location: Cambridge, MA
Members: 611
Latest Activity: yesterday

Firefly Experiments

As a generative modeling tool, Grasshopper offers a fluid visual interface for creating sophisticated parametric models, but by default, it lacks the ability to communicate with hardware devices such as programmable microcontrollers or haptic interfaces. Firefly fills this void. It is an extension to the Grasshopper’s parametric interface; combining a specialized set of components with a novel communication protocol (called the Firefly Firmata or Firmware) which together enable real-time communication between hardware devices and the parametric plug-in for Rhino.

Key Features

  • Read / Write to Arduino microcontrollers and other devices
  • Visualize Sensor Data within Firefly / Grasshopper
  • Control LEDS, Lights, Motors, Valves and more
  • Control Stepper Motors (for 3d Printers and end effectors) 
  • Stream Web Cams and connect with Mobile Devices (iOS + Android) using OSC and UDP
  • Connect to Internet Feeds and search XML Feeds 
  • Generate code to upload to an Arduino Board
  • Basic sound input and processing tools
  • Datalogging, counting and playback
  • Machine Vision toolkit including edge detection, color filtering, convolution filtering and much more
  • Kinect toolkit including skeleton tracking

A notable distinction for Firefly is that it is the first visual microcontroller programming environment designed specifically for a 3-D parametric CAD package (such as Rhino). This feature means that real-world data, acquired from various types of sensors or other input devices (video cameras, internet feeds, or mobile phone devices, etc.) can be used to explicitly define parametric relationships within a Grasshopper model. Firefly completes the communication feedback loop by allowing users the ability to send information from Grasshopper back to the microcontroller in order to incite specific actuations (ie. lights, motors, valves, etc). Ultimately, this workflow creates a new way to create interactive prototypes.

Discussion Forum

Which plugin do you recommend in Grasshopper or other program to work with in measuring visual connection in space? 2 Replies

Do you think that SPACE SYNTAX can be helpful and do you recommend other plugin?

Started by yara issa. Last reply by yara issa on Thursday.

How to Sync with ABB robot controller? 2 Replies

Hey There. A quick question: is there any way to synch Arduino/Firefly with HAL?I have a tool attached to my robot arm and I kinda manually control it through Arduino. I need to use Firefly to parametrically and maybe in almost real time (if…Continue

Tags: IRC5, Arduino, ABB, Firefly, Robot

Started by Mehdi FarahBakhsh. Last reply by Mehdi FarahBakhsh Jun 17.

can you help me understand firefly / firmata? 2 Replies

hi all,several of us (arch. grad students and our professor at portland state univ) are trying to get our ultrasonic range sensors working on our arduino unos in grasshopper. we have dl'ed firefly and run the main firmata. at that point everything…Continue

Started by mart schaefer. Last reply by Troy Baverstock Apr 18.

Arduino Write Error

Hello I installed Firefly 64bit and Arduino 1.6.5 (someone says that Firefly doesn't work with newer versions). When I upload Firmata to my Arduino UNO, "UNO Read" works, but when I try "UNO Write", it works for maybe half a second and…Continue

Started by Petr Vacek Mar 16.


Loading… Loading feed

Comment Wall


You need to be a member of Firefly to add comments!

Comment by hassan abbasi on March 24, 2011 at 12:07pm
i download  " easy drive stepp potentiometer  code" its still not working... can u send me any simple def. that just roates a 4 wire stepp motor.Untitled.png... m a newbe n m stuk since 2 weeks
Comment by Andy Payne on March 24, 2011 at 7:17am


The generic Serial Write component allows you to send any string you want out to the board... So, you can send the value (1000 0100 0010 0001 ) very easily just using the generic serial write (as in the stepper example).  The only tricky part is you have to parse through the data being sent over the serial port and get it into a format that can be read by the board.  Please look through the stepper example code, as this is taking the data sent over from the board and processing it so it can control the easy driver board.  I'm assuming that since you know exactly how you want the data to be sent to the board, that it shouldn't be too hard. 

Comment by hassan abbasi on March 24, 2011 at 7:12am


Can the definition work without the Easy driver board. ?  Please guide me how to run it through grasshopper?? i cant buy any more boards...i just need to feed (1000 0100 0010 0001 ) numbers in sequence to stepper through Gh. i hope this will get it running... isnt this possible in gh....?


Comment by Andy Payne on March 24, 2011 at 4:59am

Hi Hassan,

Sorry for not responding sooner.  Jason posted a stepper solution on the Firefly Experiments website.  Check out this discussion and let us know if you need more help:

Comment by hassan abbasi on March 24, 2011 at 2:51am
can anyone tell me how to run a stepper motor from arduino uno???  its working fine in processing and ardunio sketches
Comment by hassan abbasi on March 7, 2011 at 11:21am


I bought Arduino UNO just 2 days back. i tried some LEDs it was fine. now when i am upto Stepper motor, i cant afind any logic to feed numbers in grasshopper that does cyclic rotation. i have moved it in Arduino software ( processing type) . now i want to have controlled radian rotation.



Comment by Andy Payne on February 27, 2011 at 11:27am

Hi Hassan,

Unfortunately... there was a big shift in the core infrastructure between the older builds (0.6.0059) and the newer ones 0.8 and higher.  The move was made to make Firefly compatible with the newer version because all future versions of GH would be using this new Rhino common... so unfortunately, Firefly will not run on older versions of GH.  You could try to download and install an evaluation version of Rhino (  This is a fully functional version, but it will only allow you to save 25 Rhino files.



Comment by hassan abbasi on February 27, 2011 at 9:09am

Hi ,

 Thanks for helping me out... i just checked , i have rhino Sr7.  my error is same as this one

Error something about newer version ... SDK...

Its mentioned over there that firefly will work on 0.7.0053, but this version is asking for SR8. Now the prob is SR8 s askin for Key which i hav lost ... where can i find SR8 or is there any way of running Firefly on my current settings ( SR7 + 0.6.0059)  as this version is supporting geco and rabbit too

Comment by Andy Payne on February 21, 2011 at 1:25pm

Hi Hassan,

I'm a little confused by your question.  Are you saying that Firefly 1.003 or 1.004 are not working on your machine (with Rhino 4 SR8)?  Have you made sure to remove any previous installation files?  Check these locations to make sure any old installations of Firefly have been removed:

C:\Program Files (x86)\Rhinoceros 4.0\Plug-ins\Grasshopper\Components


Then, go to and download the latest version (which is 1.005... released last week).  Please follow the installation instructions found on the download page (you have to copy/past two files into the proper directory).  If this is still not working, could you please post a screenshot of the error message or provide a little more information so we can help you debug this problem.




Comment by hassan abbasi on February 21, 2011 at 1:07pm
m using rhino 4 sr8, which grasshopper version will firefly 3 works? firefly 4 wasnt working withit nor is 3?

Members (611)






  • Add Photos
  • View All


  • Add Videos
  • View All

© 2019   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service