Redwire Labs Blog

Stingray: Remote management for firmware development

Written by Alex McLain | Jun 1, 2024

Summary


I've been working on a side project called Stingray that relates to the type of work we do at Redwire Labs. It addresses the challenges around creating a custom Nerves system for a new development kit or custom circuit board. Typically this hardware is connected with a serial cable to send the system commands and troubleshoot issues. As you need to work on more projects simultaneously, they can become sprawled across your workspace.

Stingray connects to target hardware and provides command and control from a remote development computer. Some of the features include:

  • A remote console for access to the bootloader, operating system, and Elixir's IEx shell.
  • Power management to turn the hardware on/off and power cycle it. This can be used to trigger a hard reboot of the hardware when the system locks up.
  • A single command to enter the U-Boot prompt. A portion of board standup involves configuring the bootloader. Stingray can power cycle the hardware, detect when U-Boot is starting, interrupt autoboot sequence, and optionally enter a password.
  • Network boot the kernel and Linux root file system from TFTP and NFS hosted on Stingray. A mix command uploads a Nerves firmware bundle to Stingray to be hosted to the target hardware. This makes it faster to iterate on bootloader and kernel modifications than swapping an SD card.

This was also my first time injection molding a product of my own design. I've learned a lot from the mechanical engineers and industrial designers I've worked with professionally. Manufacturing with Protolabs was also a great experience. They have an online tool that processes the CAD model so I could self-serve a lot of the DFM (design for manufacturing) work and iterate quickly on changes that needed to be made for the part to be compatible with the injection molding process. Once the part passed the automated checks, I was able to walk through the design with an applications engineer and fine tune the details. Protolabs also offers design aids, which are physical objects that demonstrate the injection molding process and show examples of features produced by good & bad design.

I also created a custom PCB for this project that attaches to a BeagleBone Black single board computer. Knowing how to size traces for the current they need to carry can sound challenging, but I revealed my secret for doing these calculations: Saturn PCB Designer. The schematic and PCB layout were done with KiCad, and I manufactured the circuit boards at JLCPCB.

Download


Stingray is an open source project and can be downloaded on GitHub at amclain/stingray.