[Weekly Updates] Update Beagle-Tester for mainline testing.

Hi everyone!
I’m excited to be working on the project “Update Beagle-Tester for mainline testing” as part of Google Summer of Code 2025, under the mentorship of @RobertCNelson , @lorforlinux, @jkridner, @Anuj_Deshpande , @Vedant_Paranjape , @KumarAbhishek

This thread will serve as a weekly log of my progress throughout the summer. Each post will include:

:white_check_mark: Accomplishments
:hammer_and_wrench: Resolutions to blockers
:warning: Ongoing blockers
:date: Plans for the week

I’ll be sharing detailed updates, ideas, and learnings as I go. Your suggestions, thoughts, and feedback are more than welcome!

Looking forward to a meaningful and productive summer with the BeagleBoard community! :dog::computer:

1 Like

Week 1 Update:

:white_check_mark: Accomplishments

  • Uploaded the project introduction video: Here
  • Ported the DTS file for the OLED-C Click on PocketBeagle. Code
  • Configured the DTS to load on boot via boot/firmware/extlinux/extlinux.conf
  • Started work on automatic detection of Click ID and corresponding test selection.

:warning: Ongoing Blockers

  • Facing issues with automatic detection of Click boards without EEPROM/ClickID. Boards with EEPROM can be detected using manifest files Those without ClickID need to be manually selected.

:date: Plans for the Week

  • Complete the implementation of ClickID-based detection to automate driver loading and test selection.

Week 2-3 Update
:white_check_mark: Accomplishments

  • Defined barcode formats: MKB001 for auto-detection, MKBXXXXXXX for specific Clicks
  • Wrote clickid_detect.cpp to scan I2C and read ClickID EEPROM
  • Created simulate_clickid.sh using i2c-stub for EEPROM emulation
  • Modified beagle-tester.c to support auto-detection and dispatch logic
  • Implemented dispatch table in click_dispatch.c for modular test execution
  • Added example test: rtc5click_test.c
  • Updated folder structure to separate src/, include/, click_tests/
  • Updated Makefile to support C and C++ builds
  • Verified workflow for auto and manual test execution
  • Ensured clean and scalable architecture for adding new Click board tests

:date: Plans for the Week

  • Planned logging, driver loading, regression tests, and HDMI validation as next steps
    Edit: Link to Git
1 Like

Week 4 Update

:white_check_mark: Accomplishments

  • Integrated a new HDMI validation test into the beagle-tester framework to verify HDMI signal via frame color detection.
  • Developed hdmi_test.cpp using OpenCV and V4L2 to capture frames from /dev/video0 and detect red, green, or blue activity.
  • Enabled manual invocation using beagle-tester HDMITEST and automatic execution during the standard board test flow (after USB and network tests).
  • Restricted test to HDMI-capable boards (e.g., BeagleBone Black, xM, X15), while automatically skipping it on boards like Blue or PocketBeagle.
  • Updated the build system and documentation, with proper Makefile integration and usage instructions for reproducibility and deployment.

:date: Plans for the Week
Plan to integrate Mongoose webserver next into the beagle-tester to publish test results.

Link to PR

1 Like

Week 5 Update

:white_check_mark: Accomplishments

  • Added functionality to serialize test results from beagle-tester into structured JSON format at /tmp/results.json for use by web server.
  • Developed a standalone HTTP server using Mongoose to serve test results and frontend over port 8000.
  • Integrated asynchronous launch of the web server using fork() and execl() immediately after test completion.
  • Refactored the Makefile to build and install the web server and UI assets independently from the main beagle-tester binary for cleaner separation.
  • Implemented logic to avoid duplicate or defunct server processes using pkill, and verified cleanup behavior under repeated test cycles.
  • Successfully tested the entire flow by triggering tests, launching the server, and validating live access to /results.json via browser and curl.

:date: Plans for the Week
Plan to refine the output (As you can see int the snapshot, it is storing everything printed with beagle_notice. I plan to separate and refine this) and complete the frontend for it.
I have attached pictures of it.
I also plan to make video of HDMI-Test demonstration by the end of this week.

JSON Object hosted

Week 6 Update

:white_check_mark: Accomplishments

  • Added support for MQTT publishing of test results to a configurable broker using a background process (mqtt_publisher) triggered after test execution.
  • Created a flexible configuration system for MQTT using INI-style files with support for broker credentials, topic, and enable flags under [services], [broker], and [auth] sections.
  • Configuration is fully externalized, allowing end users to customize broker settings, credentials, and toggles without modifying the source code. The installation installs an empty template by default.
  • The full test flow, including MQTT publishing, can be triggered via command-line scan arguments passed to beagle-tester, making it suitable for both automated and interactive use.
  • Successfully tested MQTT flow by running a local Mosquitto broker and verifying message delivery over the network via mosquitto_sub. Snapshot attached.
  • Also finished with the frontend of webserver. Snapshot below

Link to PR

:date: Plans for the Week

  • Plan to implement Regression Testing, Buildroot Integration [Needs to be scoped with mentors]
  • Refactor and clean up the existing codebase for maintainability and clarity.
  • Extend the configuration system to support additional webserver parameters such as port and address via the .conf file

MQTT output.

WebServer Front.

Conf file format

Week 8-9 Update

  • Automated BeagleBone Black OS image build triggered on beagle-tester branch pushes or manual runs.
  • Set up a clean Ubuntu build environment and checked out Buildroot and beagle-tester repositories.
  • Applied BeagleBone Black default configuration and enabled the custom beagle-tester package.
  • Executed Buildroot compilation to generate a bootable sdcard.img containing kernel, libraries, and applications.
  • Uploaded the generated image as a CI artifact for download, testing, and deployment.

The Job can be found here

:date: Plans for the Week

As per the plan, now only regression testing farm setup is left. this will require design scoping with mentors…
Will Finish with the documentation work.

1 Like

Final Update

Here is the link to the gist with everything summarized, including diagrams and demo:
:link: https://gist.github.com/VidhuSarwal/8e8d9dd93fea9075428cc6320c3b0a4f

Things Completed

  • Added mikroBUS ClickID support for automatic and manual Click board testing.
  • Introduced HDMI Output Validation using OpenCV + USB capture device.
  • Built a Web Interface for real-time test results at http://<beagle-ip>:8000.
  • Enabled MQTT publishing of results for dashboards & CI integration.
  • Automated Buildroot image generation with pre-installed beagle-tester.

Things Left

  • Test Farm Infrastructure