Building a Rack for Embedded Boards Management

In my daily work, I often interact with various embedded system boards. However, the lack of an organized setup for these devices frequently becomes a frustrating hurdle.

The challenges are twofold:

  1. Disorganized Environment: The absence of a centralized space to keep devices neatly arranged complicates workflow.
  2. On-Site Dependency: Tasks like updating operating system images, interacting with input devices across multiple boards, monitoring display outputs, or managing power cycles require physically being present in front of the systems.
[This could very well be an ode to the Flying Spaghetti Monster]

To address these issues, I’ve started planning a new personal project: Building my custom rack-mounted workstation for embedded systems development that commonly I use.

With this setup I aim to improve my efficiency by obtaining remote management capabilities for my development tasks. Here are the key objectives I’m focusing on for this:

  1. Remote Power Management:
    Implementing the capability of remotely power on/off the embedded boards.
  2. Input Device Multiplexing:
    Organize the space by arranging the boards and cables into a rack, and centralize the management of input devices such as a mouse, touchscreen, and keyboard for multiple boards using a KVM switch. This eliminates the need for having separate peripherals connected to each board.
  3. Remote KVM Access:
    Enabling remote access to HDMI outputs for up to eight devices, allowing me to monitor screen outputs without physical proximity.

While there are still some trade-offs, like limited remote interaction with display peripherals, the setup addresses my primary needs effectively.

I really believe this solution will streamline my day-to-day workflow, minimize interruptions, and eliminate the need to be tethered to a specific location for embedded system tasks.

Once complete, I hope this project will serve as a template for others who face similar challenges in embedded systems development.


Technical Solution

To implement my goals for this custom rack-mounted workstation I’ve identified the following technical solutions:

  1. Remote Power Management:
    I plan to use a managed PoE switch (Zyxel GS1900 series) that is supported by a open source library for easy integration. The boards will be powered directly via PoE using compatible adapters.
  2. Input Device Multiplexing:
    After scanning the market, I found a KVM switch (TESmart KVM HDMI HKS801-E23) that offers LAN-based management for selecting the active output. This will allow centralized input management with remote accessibility.
  3. Remote KVM Access:
    I’ll rely on an HDMI H.264 video encoder for streaming display outputs from the embedded boards. This solution ensures efficient and high-quality remote monitoring. I will connect the HDMI output of the KVM to an HDMI splitter to duplicate the signal. One of the outputs will go to a monitor, while the other will be connected to the HDMI Livestream Video Encoder. This device will generate a video stream accessible over the network, allowing remote viewing of the KVM’s active output. Disclaimer: This solution has a notable limitation. The design does not enable remote management of peripherals. This is not a major issue for me, as I usually don’t need to interact extensively with the display. However, in cases where interaction is necessary, I mitigate this limitation by using uinput to create and simulate virtual input devices.

For the rack design, I have decided on an 8U rack, which fits perfectly in the available space. Given the variety and number of embedded boards I work with, the setup needs to be flexible. To accommodate this:

  • Removable Trays:
    I’ll use sliding trays to hold the boards. Although the boards and their cables will remain loose, as they are now, the trays will allow me to keep them neatly concealed when not in use.
  • Minimal Frame Structure: Instead of using a cabinet, I will construct the rack frame using steel mounting rails. The trays and all other devices will be mounted directly onto these rails.

Stay tuned—I’ll share updates and learnings as I bring this project to life. If you have ideas or experiences to share, feel free to reach out.


Appendix: List of the purchased hardware for the project

Leave a comment

:-)

I’m Pablo Saavedra, a former Unix systems administrator turned embedded software developer, now dedicated to squashing bugs and optimizing performance on embedded devices..

I’m degree  in Computer Science by Universade da Coruña (Spain).

Of course, my hobbies are anything similar to computers, but also boxing, fitness, good beers, … You can follow me on twitter or my linkedin profile,