Close
0%
0%

DUT Hub

A multi-channel hardware development and testing hub featuring JTAG multiplexing, power management, and Raspberry Pi Pico control

Similar projects worth following
The DUT Hub is a open source hardware development tool designed to streamline the testing and debugging of multiple "Devices Under Test" (DUTs) simultaneously. By integrating power control, JTAG multiplexing, and current monitoring into a single board, it eliminates the "spaghetti" of wires usually found on a developer's desk.

  • Centralized Control: Manage up to 4 DUTs through individual USB Serial ports via Raspberry Pi Pico.
  • Automated Power Cycling: Each channel features a TPS22992 load switch, allowing for automated power-on/off and reset cycles
  • Precision Monitoring: Integrated PAC1954 power monitoring provides real-time voltage and current data for each channel.
  • Multiplexed Programming: A high speed multipler allows a single debugger to be routed to any of the four targets via software control.

  • DIY Test Fixture & MicroPython Support

    Nabil02/18/2026 at 17:04 0 comments

    MicroPython Support

    For this week I got MicroPython ported to the DUT Hub with the help of Claude. This makes creating and deploying test scripts much faster. It also opens up the possibility to run tests without a computers. The MicroPython test script can be uploaded to the device and run on boot. Some kind of user output is nessesary for this so I'll consider adding an display output on the next revision. Here is a sample of the test framework that runs on the computer. 

        suite.add_test(LEDCurrentTest(
            min_ma=0.01,
            max_ma=0.03,
            led_pin='P302',
            color=(255, 255, 255)
        ))
    
    class LEDCurrentTest(TestCase):
        """Test LED current consumption"""
    
        def __init__(self, min_ma=0.01, max_ma=0.03, led_pin='P302', color=(255, 255, 255)):
            super().__init__(
                name="LED Current Test",
                description=f"Turn on LED and verify current is {min_ma}-{max_ma} mA"
            )
            self.min_ma = min_ma
            self.max_ma = max_ma
            self.led_pin = led_pin
            self.color = color
    
        def run(self, dut, pico, mcu):
            # Measure baseline
            baseline_ma = pico.measure_current(dut.power_channel)
    
            # Turn on LED
            led_code = f"""
    from machine import WS2812, Pin
    led = WS2812(Pin('{self.led_pin}'))
    led.set_color{self.color}
    """
            mcu.exec_code(led_code)


    The MicroPython is embedded in the LEDCurrentTest class, which turns on an RGB led and measures the current to verify functionality. The following runs on device:

    from machine import WS2812, Pin
    led = WS2812(Pin('{self.led_pin}'))
    led.set_color{self.color}

    The Test Fixture

    I also designed and built a simple test fixture with some spare parts I have from an ongoing CNC build. The goal was to get an idea what the end-to-end test procedure would feel like. Overall, I'm pretty happy with the outcome and would only change a few things.

    1. Use ESD safe materials

    2. Switch to standard 2020 aluminum extrusion since that's easier to find

    3. Include a place, maybe underneath, to store the DUT Hub and other test electronics  


  • V0.1: Hardware Bring-up

    Nabil02/12/2026 at 06:55 0 comments

    If you’ve ever had to flash and verify a batch of PCBs by hand, you know how quickly the process becomes a bottleneck. While high-end factories use "bed of nails" fixtures that cost thousands of dollars, there isn't much of a middle ground for solo developers or small shops.

    The DUT Hub (Device Under Test Hub) is my attempt to bridge that gap. It’s an open-source, 4-channel automated test solution designed to handle power control, flashing, and testing for four independent devices.

    The Hardware

    The goal for V0.1 was to keep the BOM simple while maintaining maximum flexibility for different logic levels.

    • The Controller: I’m using a Raspberry Pi Pico as the primary interface. By taking advantage of its ability to expose multiple USB endpoints, I was able to create five independent serial ports. One for general control and one for each device under test. This approach allowed me to skip expensive dedicated USB-to-serial chips. Have you seen how expensive FTDI chips are?
    • The Tester Nodes: Each channel is powered by a Renesas RA4M1. I chose this specifically for its wide input voltage range (1.8V to 5V). This allows the hub to interface with a variety of target boards without needing external level shifters.

    The Software

    A simple command line interface is used to control each DUT. I've added commands to set/get GPIOs and read ADC channels. This is where the focus of the work will be going forward. 

    Checkout the video for live demo.

View all 2 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates