I’ve been excited to try out the Sipeed Maixduino for a while now. With the sparse amount of RISC-V development boards available in the hobbyist market, this one has stuck out like an oasis in a desert.

The Maixduino is a RISC-V 64-bit development board for AI and IoT applications. This board has an Arduino Uno form factor packed with a Sipeed M1 module, ESP-32 module, audio DAC, USB-C port, and MEMS microphone on-board. A notable part of the M1 module is the Kendryte 210 SoC that integrates machine vision and machine hearing — following the trends, Sipeed has packaged this microcontroller with embedded AI capabilities to take advantage of the flexibility of working with the RISC-V architecture.

The Maixduino also supports an array of programming environments such as Arduino, PlatformIO, micropython, OpenMV, FreeTOS, and Tensorflow. And did I mention how cheap this board is? For such a powerful microcontroller, you can get a kit that includes a camera module and a TFT display for around $24! Insane.

For readers not familiar with RISC-V, RISC is good. RISC-V is a free and open instruction set architecture (ISA) developed in UC Berkeley. That means you can design a fast, highly specialized chip without paying royalties. It is also suitable for all types of computing systems, such as microcontrollers and computers. As a hobbyist, you’re not going to see much of the benefits of the ISA unless you start designing chips. However, RISC-V provides a lot of hardware flexibility for board designers. I am excited to see more commercial RISC-V boards that take advantage of this. (For additional information on the RISC-V, check out this video.)

Depending on which OS and environment you use with the Maixduino, uploading to the board can either be a cakewalk or an absolute nightmare. With Windows, flashing works out of the box when using the Arduino IDE or PlatformIO. However, I had an extremely challenging time flashing the Sipeed Maixduino on my Linux distro using the very same tools. The board consistently failed to boot into flash mode. Despite hours of searching through vague documentation and various GitHub issues, there was nothing I could find to solve this problem. The only solution was to spam the upload command until it randomly worked; you can easily guess how I found that one out. Given that the Maixduino getting started guide recommended these two environments, I was a bit disappointed in the lack of support.

My experience working in Linux improved once I switched over to programming with micropython. Sipeed did a great job with porting micropython to the K210 CPU with their maixpy firmware. Including a custom GUI for kflash, they have also developed a Maixpy IDE that pairs well with the firmware making serial communication easy between the board and your computer. Maixpy is also better documented; official documentation and tutorials available to cross-reference.

Overall, I found the Maixduino worth the environmental heartache once I started coding. With its AI+IoT capabilities at a low price, the Maixduino is well worth exploring for a more hearty, more experienced maker.