How do I flash custom firmware onto a FarmBot Express?

Hello, so I was experimenting with trying to load some custom Arduino firmware to run a sensor I want to attach. When I was reading about how to do it the only instruction I could get is “Plug in your computer to the Arduino with a USB cable”. I’m pretty sure that the FarmBot express’s Arduino doesn’t have a USB connector though. The Raspberry Pi connected to it does but I don’t see how that would flash the Arduino’s firmware. I could just be missing something but I really can’t find anything more about it.

@Jqck Flashing a Farmduino Express is more complicated than a traditional Genesis board. You will need to remove the RPI0 from its socket and apply external power to the board. You would then send the custom firmware over the UART pins where pin 14 and 15 sit. GPIO 19 is the MCU reset pin.

With that being said, I don’t think you should run custom firmware on the Farmduino. If you are willing to tell me more about your use case, I can provide advice on better alternatives.

  • The Farmduino firmware is not a public interface (the same can be said of GCode). We will make changes to it without consulting with the community. Future versions of FBOS may break on your device if you decide to fork from the main version of the project.
  • The device will re-flash the “official” firmware version every time the device boots. The firmware image is hardcoded in to the FBOS release. You may get around this by forking FarmBot OS, but you will need a good understanding of Elixir and how Nerves builds custom firmware images. The decision to flash firmware on every boot was intentional.

If you’re just experimenting or want to learn more about FarmBot system internals, that’s fine, but I would not rely on custom firmware for serious tasks unless you are willing to maintain a fork of FBOS. The current system was not designed to support third-party firmware implementations.

My follow up questions are:

  • What sort of sensor are you trying to add support for? There may be better ways to accomplish this task. If not, it might be possible to add support as a part of the FBOS core.
  • Do you have a link to the document you referenced? It may be out of date.

The sensor I want to use is a Sparkfun soil moisture sensor (the same one you sell on your website) I know it’s meant for the Genesis but I wanted to use it for my Express. I have had quite a bit of experience with Arduinos in the past so I tried to add it by putting the example code from Sparkfun’s website into the Arduino firmware to get an output. After looking into sensors more I realize now that that is not remotely how you’re supposed to do that so I’m going to go use the sensors tab to add it…

1 Like

@Jqck Glad you were able to figure it out.

Let me know if you need further help.