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: 626
Latest Activity: Mar 23

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

How to Sync with ABB robot controller? 3 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 GabrielaSullivan Mar 21.

Writing to SPI/I2C devices through FT232H 1 Reply

Hi all.I'm recently working on a kinetic project involving a number of hobby servo motors controlled by a I2C PWM controller PCA9685. (or some of you refer to the famous Adafruit 16 channel 12-bit PWM/Servo Driver - I2C interface )I realize it would…Continue

Started by Victor Leung. Last reply by DanaHill Aug 1, 2022.

Serial read problem in Firefly 7 Replies

Hi guys,I'm communicating with a 3D printer via Grasshopper / Firefly (and eventually) Silkworm.So far, I can quite happily send G-Code move commands to the printer  - which is a Leapfrog Creatr, based on Arduino Mega / RAMPS electronics - via the…Continue

Tags: GCode, Read, Serial, Firefly

Started by fergal.coulter. Last reply by Aaron Porterfield May 16, 2022.

problem while reading/writing 2 Replies

I hawe a problem with writing/reading data in Firefly.I thought it is mine problem with board, but cant understand this stuffContinue

Started by Philipp. Last reply by Jame jim Apr 5, 2022.


Loading… Loading feed

Comment Wall


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

Comment by Laura Fegely on February 22, 2023 at 12:55pm

For anyone else who might be interested: I recently posted a question (in the wrong place) about correlating the bins output by the Frequency Spectrum component to their actual frequencies.

I ended up doing a brief characterization of this using a frequency generator app on my phone while recording the bins of the peak point in each spectrum. There was a large amount of outlier removal (which I believe was due to a lack of synchronization between the peak frequency output of the component and my python peak finding component). The trendline equation I ended up with was:

frequency = 29.095e^(0.0578*x) (with an R-square value of 0.9997 from 120 pts).

Comment by Fabio Santarossa on June 29, 2020 at 5:56am

Hi Everybody, first of all thanks to Andy and Jason for your amazing creation. I'm working on a Gcode generated in grasshopper which I'd like to stream realtime to my Reprap 3D printer. Everything is OK if I save my gcode and send it to the machine in a classic way, but I'm struggling to send it directly through the serial port.

I open the port, send the code and everything starts, but the movement are completely wrong. Only the G28 homing seems to work fine...Any suggestions? Thanks a lot!

Comment by Matthew J Flamm on July 5, 2018 at 12:46pm

Im (probably) re-upping to Rhino 6 over 5 because the display and presentation tools in the new build are plausibly at a level of maturity now that they can be used for scaled drawings and shaded view ports in a professional capacity.  Built-in section tools?!  mind-blown!

It looks like the last build of Firefly was in 2015 for Rhino5.

Are there any plans to give this project another pass for Rhino 6 compatibility? 

The Kinect 2.0 for Windows depth, color and mesh streams were of phenomenal utility!

I understand that there are multiple routes for obtaining this information like the SDK, and PrimeSense had a branch working on Kinect..

If this project is on a good long pause, I may try to write a bridge for this information into grasshopper for Rhino 6 using the Kinect 2.0 for Window SDK.  Im just a code-kitty though, so that might be more than is realistic ^_^.

Is this binary right now? Rhino 5 + all plugins, or Rhino 6 and no promises?

Miss you Firefly <3

Comment by Ali-Haung on February 22, 2016 at 7:27am

Comment by Ali-Haung on February 2, 2016 at 12:16pm

Comment by Rafael on July 9, 2015 at 1:14am

Hi everyone. I just recently created a group about a project based on the use of arduino + grasshopper and Firefly. It is called The Mini Airflow Tunnel Project: The idea is to use grasshopper and firefly to operate a low-cost wind tunnel with arduino and wind sensors.

Comment by Christian Schmidts on July 4, 2015 at 5:00pm

Is there a way to merge the the Firefly firmata with the quadstepper in order to drive one stepper motor and other devices at the same time with one Arduino? Is it generally possible? Cheers!

Comment by xiao-g on April 18, 2015 at 12:50am

Hello All,

I just installed Firefly 64bit for Rhino5. But when I have trouble to launch grasshopper when it loads Firefly.X. It pops a warning as the image attached. 

Could anyone kindly suggest how to solve it? Many many thanks!

Comment by Juan Sepulveda on March 1, 2015 at 8:17am

Hello everybody,

I share the video from the Adaptive Facade Workshop that European Facade Network organized in Lucerne in November 2014, all the students used Firefly for the mock-ups...

Comment by Andy Payne on February 25, 2015 at 4:55pm

Hi Kwanphil.  Unfortunately, at this moment it is not possible to load in an mp3 file directly.  You could play it over the speakers and use the other audio components to read in the microphone data... but reading in an mp3 file isn't currently supported.


Members (626)






  • Add Photos
  • View All


  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service