Streamlining Arduino Development: Introducing Arduino-cli-interactive

Arduino has always been a cornerstone for me as a hobbyist and developer, offering an accessible way to dive into embedded systems. But as a Linux user, I’ve often found the traditional Arduino IDE more frustrating than inspiring— wrestling with permissions and setup hurdles was a constant battle. When the Arduino team released arduino-cli, I saw a glimmer of hope: a lightweight, command-line alternative that fit my terminal-centric workflow. Yet, its reliance on memorizing Fully Qualified Board Names (FQBNs) like arduino:avr:uno felt like a step backward for beginners and even slowed me down. That’s why I created Arduino-cli-interactive (ACI)—a Bash script that wraps arduino-cli in a Text User Interface (TUI), bringing the ease of the IDE into the terminal with menus and option selectors. It’s been a game-changer for me, and I hope it can be for you too. The Problem: My Linux Struggle I love Linux for its flexibility, but setting up the Arduino IDE on it was a nightmare. Permissions issues turned a simple install into a troubleshooting marathon, and the GUI never quite meshed with my preference for the terminal. When I discovered arduino-cli, I was thrilled—it stripped away the bloat and let me script my workflow. But then I hit a snag: typing out exact FQBNs and commands every time was tedious. I’d forget a board identifier or mistype a port, and my momentum would grind to a halt. I knew I wasn’t alone—beginners especially would find this unforgiving. I wanted a solution that kept arduino-cli’s power but made it intuitive, so I set out to build one. Creating Arduino-cli-interactive (ACI) That’s how Arduino-cli-interactive, or ACI, was born. I built it as an open-source Bash script (check it out on GitHub), designing a TUI that feels like the Arduino IDE but lives in the terminal. With ACI, I don’t have to memorize board names or wrestle with long commands anymore. Instead, I launch it and get a clean menu: I pick my board from a list, select a port, and upload my sketch—all with a few keystrokes. I chose Bash for a reason. It’s everywhere on Linux, so ACI runs on any system without extra setup—no dependencies, no fuss. It’s lightweight, leveraging the terminal’s built-in tools, and lets me iterate quickly. Writing a TUI in Bash wasn’t just practical; it was a fun challenge that kept the project true to the hacker spirit I love about Arduino. The result? A tool that’s as simple as it is powerful. How It Works for Me ACI is my bridge to arduino-cli. When I run it, I see an interactive menu. If I need to pick a board, I scroll through a list—no more guessing FQBNs. Setting a port? ACI scans and shows me what’s connected. From there, I can compile my code, upload it, or tweak settings, all without leaving the terminal. For instance, instead of typing arduino-cli upload -p /dev/ttyUSB0 -b arduino:avr:uno sketch.ino, I just navigate the menu, hit my choices, and watch the Bash script do the rest. It’s fast, it’s clean, and it gets my code running in seconds. For example here's how selecting a board looks like : Why It’s a Big Deal to Me ACI has transformed how I work with Arduino. As someone who’s taught beginners, I see how it flattens the learning curve—newbies can focus on blinking LEDs instead of decoding commands. For me, it’s a time-saver; I iterate faster without breaking my flow. And since it’s Bash-based, it’s a perfect fit for Linux, dodging the IDE’s quirks while staying lean and mean. On GitHub, I wrote, “No need to remember board names or type long commands. Just pick options, navigate with buttons, and upload your code hassle-free.” That’s the freedom I wanted, and it’s what I’ve built. My Journey and What’s Next Building ACI wasn’t always smooth sailing. Crafting a TUI in Bash meant getting creative with loops and prompts to make it feel responsive. My goal was to keep it intuitive while tapping into arduino-cli’s full potential, and I’m proud of where it’s landed. Seeing it recognized in communities like Terminaltrove has been a thrill—it’s proof this little script solves a real need. I’m not done yet, though. I’m thinking about porting it for windows too (using either Rust or Python). I’d love your ideas too—ACI is open-source, and I’m excited to see where the community takes it. If you’re a Bash tinkerer like me, dive in and contribute! Whether you’re a Linux die hard like me, a beginner just starting out, or a pro chasing efficiency, I invite you to try it. Head to GitHub, give it a spin, and let me know what you think. In the maker space, every tweak matters—and I can’t wait to hear how ACI fits into your story. Important Links My Website Github Repo Documentation (Github Pages) Documentation mirror link (Codeberg Pages) Terminal Trove

Apr 6, 2025 - 15:52
 0
Streamlining Arduino Development: Introducing Arduino-cli-interactive

Arduino has always been a cornerstone for me as a hobbyist and developer, offering an accessible way to dive into embedded systems. But as a Linux user, I’ve often found the traditional Arduino IDE more frustrating than inspiring— wrestling with permissions and setup hurdles was a constant battle. When the Arduino team released arduino-cli, I saw a glimmer of hope: a lightweight, command-line alternative that fit my terminal-centric workflow. Yet, its reliance on memorizing Fully Qualified Board Names (FQBNs) like arduino:avr:uno felt like a step backward for beginners and even slowed me down. That’s why I created Arduino-cli-interactive (ACI)—a Bash script that wraps arduino-cli in a Text User Interface (TUI), bringing the ease of the IDE into the terminal with menus and option selectors. It’s been a game-changer for me, and I hope it can be for you too.

The Problem: My Linux Struggle

I love Linux for its flexibility, but setting up the Arduino IDE on it was a nightmare. Permissions issues turned a simple install into a troubleshooting marathon, and the GUI never quite meshed with my preference for the terminal. When I discovered arduino-cli, I was thrilled—it stripped away the bloat and let me script my workflow. But then I hit a snag: typing out exact FQBNs and commands every time was tedious. I’d forget a board identifier or mistype a port, and my momentum would grind to a halt. I knew I wasn’t alone—beginners especially would find this unforgiving. I wanted a solution that kept arduino-cli’s power but made it intuitive, so I set out to build one.
Creating Arduino-cli-interactive (ACI)

That’s how Arduino-cli-interactive, or ACI, was born. I built it as an open-source Bash script (check it out on GitHub), designing a TUI that feels like the Arduino IDE but lives in the terminal. With ACI, I don’t have to memorize board names or wrestle with long commands anymore. Instead, I launch it and get a clean menu: I pick my board from a list, select a port, and upload my sketch—all with a few keystrokes.

I chose Bash for a reason. It’s everywhere on Linux, so ACI runs on any system without extra setup—no dependencies, no fuss. It’s lightweight, leveraging the terminal’s built-in tools, and lets me iterate quickly. Writing a TUI in Bash wasn’t just practical; it was a fun challenge that kept the project true to the hacker spirit I love about Arduino. The result? A tool that’s as simple as it is powerful.

How It Works for Me

ACI is my bridge to arduino-cli. When I run it, I see an interactive menu. If I need to pick a board, I scroll through a list—no more guessing FQBNs. Setting a port? ACI scans and shows me what’s connected. From there, I can compile my code, upload it, or tweak settings, all without leaving the terminal. For instance, instead of typing arduino-cli upload -p /dev/ttyUSB0 -b arduino:avr:uno sketch.ino, I just navigate the menu, hit my choices, and watch the Bash script do the rest. It’s fast, it’s clean, and it gets my code running in seconds.

For example here's how selecting a board looks like :

board_selection

Why It’s a Big Deal to Me

ACI has transformed how I work with Arduino. As someone who’s taught beginners, I see how it flattens the learning curve—newbies can focus on blinking LEDs instead of decoding commands. For me, it’s a time-saver; I iterate faster without breaking my flow. And since it’s Bash-based, it’s a perfect fit for Linux, dodging the IDE’s quirks while staying lean and mean. On GitHub, I wrote, “No need to remember board names or type long commands. Just pick options, navigate with buttons, and upload your code hassle-free.” That’s the freedom I wanted, and it’s what I’ve built.

My Journey and What’s Next

Building ACI wasn’t always smooth sailing. Crafting a TUI in Bash meant getting creative with loops and prompts to make it feel responsive. My goal was to keep it intuitive while tapping into arduino-cli’s full potential, and I’m proud of where it’s landed. Seeing it recognized in communities like Terminaltrove has been a thrill—it’s proof this little script solves a real need.

I’m not done yet, though. I’m thinking about porting it for windows too (using either Rust or Python). I’d love your ideas too—ACI is open-source, and I’m excited to see where the community takes it. If you’re a Bash tinkerer like me, dive in and contribute!

Whether you’re a Linux die hard like me, a beginner just starting out, or a pro chasing efficiency, I invite you to try it. Head to GitHub, give it a spin, and let me know what you think. In the maker space, every tweak matters—and I can’t wait to hear how ACI fits into your story.

Important Links

  1. My Website
  2. Github Repo
  3. Documentation (Github Pages)
  4. Documentation mirror link (Codeberg Pages)
  5. Terminal Trove