Milk-V Compute Module, a journey

I recently blogged about getting the Milk-V Compute Module up and running in a Turing Pi v2. While the “getting it to work” part is done, here is a short update on the rough edges of working with the, otherwise awesome, Milk-V Compute Module (CM), as part of my Hackweek project for this year. I wanted to getTumbleweed running on the Mars CM. I never expected to get this working in the first place during only 3 days (I had a planned vacation), but it is a nice kickoff for getting my hands dirty with RISC-V. After 3 days I managed to get Debian running, the openSUSE Tumbleweed builds not yet.

I use a Waveshare CM4-IO-Base-A board as carrier board for the Milk-V outside the Turing Pi cluster. While tinkering I find it more convenient to have it directly next to me and not inside my Turing Pi Cluster. However the CM4-IO-Base board doesn’t show up withe connecting via USB-C and neither does flashing via the Turing Pi (BMC 2.0 RC1) work. It always complains about “No supported devices found”.

I asked the question “How do I flash the eMMC on the Mars CM” on the MilkV community pages. While waiting for someone to help me I realized two more things:

  1. You can’t use the SD-Card and the eMMC module at the same time (see)

[The] eMMC version shares the hardware interface with the SD card, so they cannot be used at the same time.

  1. Flashing only seems to work via UART, buy following (meticulously) the burn image instructions using a Windows PC. Don’t take any shortcuts. Here are the pitfalls that I encountered
  • You need to flash the firmware every time before you can flash the eMMC
  • If you run into timeout issues, only a reboot helps (Windows 10). Donโ€™t ask me why
  • The USB Slave is only needed for power. Data transfer happens via the TLL serial port!

It works, but the Windows application is no fun to use. Most of the time it works, sometimes the connection is flanky. Not sure if the application is to blame, Windows or perhaps my UART adapter. The experience is however a bit flanky, but good enough that it still works.

So, after realizing how I could flash the eMMC I tried the openSUSE Tumbleweed images for the VisionFive 2. Given the similarities (StarFive JH7110 CPU), I hoped it would work. It didn’t. Starting from there I realized that I need to dig a bit deeper and the time for the hackweek was already over.

So that’s where I left. There is still a lot more to explore and I hope that we’ll soon get this amazing board to work.