FarmBot Stories: The Sudweeks Family

Garrett and Lexie Sudweeks are first generation FarmBot builders in Cedar City, Utah in the United States. Watch them put together their v1.2 FarmBot Genesis kit and hear what it means to them to grow their own food and be a part of the larger open-source FarmBot community.

FarmBot Genesis v1.2 Videos

We just uploaded nearly 30 new videos to our Youtube channel that discuss our v1.2 FarmBot kits. In this series you can see a complete unboxing as well as closeups and detailed descriptions of every part in the kit. Check it out:

April 25, 2017 Software Update

Tuesday afternoon we deployed updates to the FarmBot web API, frontend, FarmBot OS, and the Arduino firmware. Here is an overview of the specific changes, bug fixes, and improvements throughout the software stack.

Improved Rotary Encoder Support

The latest firmware included with FarmBot OS 3.1.4 has much improved rotary encoder support. Enabling rotary encoders allows FarmBot to detect when its motors stall. For example: when it reaches its minimum and maximum locations during calibration, or when a plant grows onto your tracks and causes FarmBot to get stuck. For the encoders to work correctly, you will need to have your settings within acceptable ranges. As a starting point we recommend the following:

  • Max Speed (Steps/s): 400
  • Enable Encoders: Yes
  • Encoder Scaling: 100
  • Max Missed Steps: 10

As we continue to make code improvements and optimizations, we will refine these recommended numbers and build them into the firmware as defaults.

Once you have entered in settings for the encoders, the “Calibrate” buttons on the hardware widget will instruct FarmBot to move (slowly) to find its minimum and maximum points, and also measure the distance between them. Not implemented yet but on our list for the next deployment is using these measurements to make sure FarmBot never tries to move beyond its maximum locations, as well as showing the values in the input boxes for “Length” on the hardware widget.

The “Home ” buttons on the hardware widget will also utilize the encoders to re-find the minimum position along an axis. Note: this is different than the home button on the controls widget which just tells FarmBot to move to (0, 0, 0).


  • Set the current position as zero for each axis. This makes manual calibration easier – just move your bot to your desired home position and press the “Zero ” button(s) from the hardware widget on the web app to set that position as zero.
  • Always-on motors. You might want or need your FarmBot’s motors to always be powered so that they are ‘locked’ in position even when FarmBot is not moving. For example, an always-on z-axis motor would prevent the z-axis from wiggling down due to gravity. Enable or disable this setting for each axis from the toggle switches on the hardware widget.
  • Invert encoder toggles. These toggle switches will allow you to invert the encoder readings in case you plugged the encoders into the RAMPS board backwards.

Web App

  • Improvements to the hardware widget which make updating hardware settings faster and more reliable.
  • Smarter Save buttons throughout the app indicate if data is Saved, Saving, or needs to be Saved. This feature replaces most of the green “Success” toast notifications.
  • Bug fixes to the Farm Events creator and editor.
  • Photos in the weed detector widget now show up newest first.
  • Log filtering to prevent the display or recording of any sensitive information such as home wifi credentials.
  • When editing a plant’s location, its “spread” is shown as a green circle, indicating the amount of area the plant will need. Note: This data comes from OpenFarm and is not available for many crops yet.
  • Mouseover effects for the farm designer allow you to quickly see what icon a plant in the all-plants-list corresponds to.
  • Tooltips have been added to every hardware setting to help clarify what that setting is used for.
  • Added a link to the software documentation hub under the right-side dropdown.
  • Descriptive browser tab titles.

FarmBot OS

  • Log filtering has been fixed to prevent sensitive information such as home wifi credentials from leaving the device.
  • OS errors are now sent to us (from all FarmBots) using a system called Rollbar which allows us to better detect, diagnose, and fix bugs as they happen.
  • Support for all the new firmware settings.
  • The latest firmware is included.
  • Stability improvements, better logging, and bug fixes to wifi and other core areas of the OS.


  • OpenFarm (the database that provides icons and crop info) has added Companion Plants to their infrastrucutre. While we are not pulling this data into the FarmBot web app just yet, we do plan to show this information in the future so that you can better plan your garden.
  • We now have over 100 crop icons created and uploaded to OpenFarm.
  • Updated/added the Contributor License Agreement links on all active repositories.
  • Added MIT Licenses to any active repositories that were missing them.

What’s Next

Our next big pushes include:
* Performance improvements for encoders.
* Improve how E-Stop works at the firmware and OS level.
* Implement a “Safe State” feature so FarmBot knows what to do (and what not to do) during an E-Stop or when the encoders detect a motor stall.
* Deploy alpha weed detection farmware to all users.
* Ability to use plant and weed coordinates in your sequences (as defined in the farm designer or generated from the weed detection farmware)
* Ability to loop a sequence. Initially, looping will just be repeating the same sequence multiple times, but the feature will expand into looping a sequence over a group of plants or weeds. So for example: you could make one weeding sequence that loops over all the weeds in your database, and then schedule it for every day at 6am.
* Ability to apply a regimen to a plant for taking care of it throughout its entire life.
* Dedicated web app pages for weed detection and farmwares.
* And of course: stability improvements and bug fixes throughout the stack.

Our Premium Hardware

We’ve gone through great lengths to design, manufacture, and source only the highest quality components for our kits. During the last few weeks we took photos of all our hardware so that our Bill of Materials and other webpages accurately reflect our product. Check out the photos!


All (300+) FarmBots have been shipped!

As of yesterday afternoon, all of the 1st production run orders have left our warehouse. This includes all orders placed before January 7th that we have verified addresses for. If you ordered before January 7th and haven’t verified your address yet, please respond to this email with where you want us to send your FarmBot.
While the process of final packaging and shipping took longer than we anticipated, we learned a lot about how to set up an efficient assembly line, the paperwork requirements for international orders, and the ins and outs of working with logistics providers. Check out our (now) nearly empty warehouse!

Pre-Order FarmBot Genesis v1.3

We’re accepting pre-orders for FarmBot Genesis v1.3. This version will incorporate feedback from the community and our testing, and will ship in July. Pre-order your FarmBot!

Welcome to the FarmBot Warehouse

FarmBot supporters and customers, check out this short video to get an inside look at our warehouse and see what it takes to do the final packaging of the v1.2 FarmBot Genesis kits!

Shipping update

All domestic orders have been shipped to those who have verified their address with us. International orders have started shipping, though the exporting and customs paperwork required for each shipment and country has been slowing down the process. We appreciate your continued patience as our small team works through these logistics to deliver everyone’s FarmBot. Once your FarmBot packages are scanned in by the mail carrier, you will receive an automated email with the tracking information.

We’re all sold out! (sort of)

On January 7th we pre-sold the last FarmBot Genesis Kit as part of our first production run. That means that any pre-orders placed now and into the future will be part of our second production run and ship in July. Pre-order your FarmBot.

Mountains of FarmBots are heading out the door

Over the last three weeks we’ve been working hard in the FarmBot warehouse to do the final QA checks and packaging for all 350 FarmBot kits. While the process has taken longer than we hoped for, we’re certain it will be worth the wait for everyone. By Monday, we will have shipped out all of the US orders for those who have verified their address with us. If you haven’t yet verified your address, please respond to this email.

International orders have started to ship out too, though the exporting and customs paperwork required for each country has been slowing down the process. We appreciate your continued patience as we work through these logistics. Once your FarmBot hits the mailstream, you will receive an automated email with the tracking information.

Check out our assembly line

Here are just some of the parts that we counted out and put into little bags. You can see how 350 FarmBots worth of packing could take quite a while!

This assembly line was used to make one of the top-level kit bags.

About 150 completed bags from the above assembly line.

The top-level assembly line includes: the hardware kit, plate kit, motor kit, cable bags, cable carriers, electronics boxes, power supply, miscellaneous bag, getting started guide, thank-you card, and stickers. Phew!

Completed FarmBot kits with shipping labels applied.

Dozens of FarmBots on their way to you!

We’re all sold out! (sort of)

On January 7th we pre-sold the last FarmBot Genesis Kit as part of our first production run. That means that any pre-orders placed now and into the future will be part of our second production run and ship later. We’re still working out the timeline for the second run, but a conservative ship date is in July. Pre-order your FarmBot.

March Software Update

Check out what’s new with the FarmBot software stack since last month:

We now have over 70 awesome crop icons made for common garden vegetables. Simply drag and drop plants into the farm designer to see for yourself! Have a favorite crop that you want an icon for? Just respond to this email with the crop name and we’ll add it to our list.

We’ve introduced the concept of Farmware: software plugins that you can install on your FarmBot to extend its functionality. So far we have a few 1st-party farmwares in the works for taking photos, calibrating the camera, and identifying weeds. Once the farmware infrastructure stabilizes, we’ll document how you can create 3rd-party farmwares of your own!

We’ve added new Sequence builder commands for running farmwares and taking photos. Coming soon is the ability to run any farmware you have installed from your sequences.

Camera calibration and weed detection farmwares are now in beta and have their own widget on the web app. With camera calibration, you can calibrate your camera so that pixels in the photos are converted to coordinates in the FarmBot system. And with weed detection, you can use the camera to identify weeds. Over the next few weeks these features will come out of beta and come built-in to the app and OS.

Other important software updates

Starting with v3.0.8 of FarmBot OS, the Arduino firmware will be bundled into the OS so there are never compatibility problems between the two codebases.

Shipping update

We’re continuing to do QA checks and ship out devices as fast as we can. Once your FarmBot hits the mail stream, you will receive an automated email with tracking information. Please be patient as we have many orders to process.

We’re all sold out! (sort of)

On January 7th we pre-sold the last FarmBot Genesis Kit as part of our first production run. That means that any pre-orders placed now and into the future will be part of our second production run and ship later. We’re still working out the timeline for the second run, but a conservative ship date is in July. Pre-order your FarmBot.

Erlang Factory 2017

We sent our core FarmBot OS software engineer, Connor Rigby, to the Erlang Factory 2017 conference in San Francisco. Here’s what he had to say about the experience:

Erlang and Elixir factory was the first time they included “Elixir” in the title, so it’s only fit that this was the first Erlang/Elixir conference I attended. As an Elixir developer by trade, I was a little worried that I wouldn’t completely fit in with the Erlang crowd. It turns out there was nothing to worry about. The entire community has more or less merged as one. Elixir developers are learning some Erlang, and Erlang developers are learning some Elixir. I don’t know of any other developer conferences that can focus on more than one one language, and make both communities feel at home. That being said, being the first Erlang Factory that “officially” included Elixir, there was definitely far more talks geared toward Erlang.

Some talks preferred one language over the other. Garrett Smith titled his talk accordingly: “Building a web app in Erlang, that’s Right Erlang! (Not Elixir)”, converse to Ari Lerner focused on Elixir with “How Elixir Made Us Better Programmers”. The most amazing part is that both communities were attending talks of the others background. On the other hand though, there were many talks that focused primarily upon The Beam (the virtual machine underlying both languages).

Chris Cote’s talk was title “Instrumenting the World with the Beam” where he talked how the Beam VM is perfect for embedded systems (regardless of language preference). Similarly, there was a presentation from Peer Stritzinger who is building a hardware platform to run Erlang in hard real time. This reflects on one of the most interesting observations from the Elixir and Erlang communities. While we have a thriving web developer community, there is a huge number of developers flocking back to the embedded world.

A Shift Back to Embedded

As primarily an embedded systems engineer, I don’t get very much love in the way of development tools. I spend days reading mailing lists from the early 2000’s looking for the solution to a compiler issue, I lose hours browsing various old, inactive forums looking for a driver, that sort of thing. Elixir and the Nerves Project are really changing the mindset that embedded software is only something that the most hardened developers can do. Everyone forgets that Erlang (and by extension Elixir) was originally built for Embedded Systems so it only makes sense that with the influx of “the internet of things” we take another look at how embedded-systems are designed, developed, and maintained.

After meeting up with Justin Schneck (one of the original Nerves-Project founders) at Erlang and Elixir Factory, we talked to many interested developers about embedded systems with Nerves. I got so many comments along the lines of “FarmBot is such a cool project! I had no idea it was written in Elixir/Erlang, how can I help?”. I’ve been part of the Elixir community for about two years now, and I’ve always lived in the embedded world. It was so weird to go from being in such a small niche, to being someone that people actually know because the community is growing so large.

Prototype to Production

When I first started at FarmBot, our embedded software stack was written primarily in Ruby. It worked, but definitely had some pitfalls, the main one being deployment. We had no system of pushing updates and no system of installation. We had really well put together docs, but it was just a little complex. In just under a month I was able to recreate the Ruby project as an Elixir/Nerves Project. This shows just how fast you can prototype something with Elixir. Justin Schneck (whose official title is “Pan-galactic Nerves Overlord”) let me come up on stage with him to show off the scale FarmBot (which we call FarmBot Jr.). Unfortunately after disassembling it, hauling it for 5 hours on the freeway in a sports car, and reassembling it in a haste, the bot didn’t operate 100% correctly, but it still made a decent display, and was able to move around its plane pretty well for the demonstration.

Communities Coming Together

It’s so refreshing to see so many communities coming together in the world of software development. I don’t know of any other place in the world where you can get such a diverse group of developers in the same building. People like Joe Armstrong – one of the co-inventor of Erlang, and Dave Thomas – author of “Programming Ruby” and “Programming Elixir”. There is no one obvious background other than a shared love for this relatively small community of developers. People are coming from around the globe just to meet up for a couple days and talk about coding and language, and I can’t wait to do it all again next year.