Embedded and firmware debugging often becomes a guessing game.
UART data gets corrupted.
I2C devices donβt respond.
Code looks correct.
And most of the time, a hardware logic analyzer is not available.
To solve this exact problem, I built SoftLA.
π What is SoftLA?
SoftLA is a software-only logic analyzer that helps debug UART and I2C communication issues using simple pin-level trace logs, without requiring any hardware logic analyzer.
It is designed for:
Embedded developers
Firmware engineers
IoT teams
Students learning real protocol debugging
π§ What Problems Does SoftLA Solve?
UART Debugging
Detects START bit
Decodes UART byte (LSB first)
Validates STOP bit
Detects framing errors
Example:
UART 1100 0x41 'A' OK
I2C Debugging
Detects START condition
Detects STOP condition
Helps identify bus hang issues
Example:
I2C 1200 START
I2C 2200 STOP
π§ Why SoftLA is Different
β No hardware required
β No waveform guessing
β No expensive tools
β Works from plain text logs
β Command-line based (CLI)
β CI-friendly
β Works on Windows and Linux
This makes SoftLA ideal for automation, regression testing, and CI pipelines.
πͺ Windows SmartScreen Warning (Important)
When downloading softla.exe on Windows, you may see:
βWindows protected your PCβ
This happens because the binary is unsigned (common for open-source tools).
How to run:
Click More info
Click Run anyway
Open terminal in the folder
Run:
.\softla.exe samples\uart.log
SoftLA is a CLI tool, not a GUI app, so double-clicking will not show any window.
π οΈ Build & Usage
Build:
gcc src/*.c -Iinclude -o softla
Run:
softla samples/uart.log
softla samples/i2c.log
π GitHub Repository
π https://github.com/Manish112233/SoftLA
π€ About the Author
Hi, Iβm Manish Joshi, a software engineer working at the intersection of embedded systems, firmware, and developer tooling.
SoftLA was built to solve real-world debugging problems I personally faced.
π Final Thoughts
SoftLA is not a replacement for hardware analyzers β
it is a practical, lightweight, and automation-friendly alternative when hardware is unavailable.
If you work with UART or I2C, Iβd love your feedback.
Top comments (0)