Lately I’ve been really liking the idea of having something hosted on a RISC-V machine. RISC-V is a non-proprietary instruction set that is a competitor to ARM. The idea of having a something running on an open source operating system, running on an open standard CPU, served from my house, gives me a warm fuzzy feeling.
I was under the impression that most Linux distributions were unstable on RISC-V. Turns out, I’m wrong about that. From a quick search, the following have official Debian images:
and the Pine64 Star64 has a community-maintained Armbian image.
Does anyone here have a RISC-V single-board computer doing anything practical for you?
Probably not what you’re asking for, but I have an impression, that your primary motivation is curiosity and just good feeling of using the open platform, so I figured I’ll mention it.
I’m using ESP32-C3 boards with some sensors and ESPHome to monitor air quality in my house. The board is RISC-V based and can be bought for real cheap. (single digit $ price generally) ESPHome is quite easy to work with and (If you’re realistic with your expectations around very low power device) also quite powerful.
Honestly the ESPHome itself is almost too good if you’re really curious as it abstracts the differences between various boards quite well. You’re just editing a yaml file to define your desired functionality.
Even if you’re hesitant to do some soldering, you can get pretty far if you buy board and sensors with pre-soldered pins and some jumper wires.
That is very cool, I hadn’t heard of that before. I have never done anything with a microcontroller, but I’m thinking about it for RISC-V. It sounds like that might be one of the better ways of getting a RISC-V device in practical use, until more software packages become available for a full Linux machine.
I do! Since a while I selfhost with my risc-v Unmatched board. There are prebuilt Ubuntu Server images available. Its mainly for software which you have the source code for, and are willing to build from source. I’ve made use of docker buildx for cross cmpilation a fair bit as well. Go and Rust has good support. A good start can be to check out the riscv-bringup repo from carlosedp. Its definitely early days though, you need to be pretty motivated. Debian support is scheduled for next year AFAIK.
So, what do I actually use it for? nginx + tailscale so far
I should say as well, postgres, mariadb and memcached all support riscv, you just got to build it yourself. I have found the riscv64 ubuntu docker images useful as well to use as a base - for example the riscv64/ubuntu one.
Here’s how I build my own images. More details are in the repo, feel free to re-use https://gitlab.com/olof-nord/selfhosted/-/blob/main/images/Makefile
Wow, thanks! That’s fantastic. I hadn’t even thought about the fact that Docker images will have to be recreated for RISC-V, but it sounds like some of the most important parts of the stack are useable already. Nice to see that nginx works – I was leaning towards moving my blog to a RISC-V SBC, and it’s just a static HTML site.
Debian has official support for RISC V boards, but they don’t have officially available images for those boards (at least not the Mars).
Only unstable, right?
Currently, waiting for the Milk-V Oasis. Looking forward to a fully-compliant implementation in the SG2380. Should make for better mainline support.
That looks so cool. I was completely unaware that there were desktop motherboards with RISC-V CPUs. I thought they were all still SBCs.
It’s set for release in H2 of this year. This should be an actual desktop-class processor, performance-wise. Mini-ITX form factor too! The RISC-V processors are going through generations blazingly fast. Probably partly because we hobbyists get to do some QA.
I would caution though that this is still likely in the territory of “dev board”. Probably not going to be mainstream-ready and will have plenty of quirks. But, it’s a really big step forward.
I’m thinking it might be my 2.5G router when it drops. Or worst case, maybe retire the Atom I’m using for a NAS.
I’ve been using some much smaller CH32V305 based keyboard controllers for a while, recently built a fightstick aroubd the platform. Now if only I fidn’t suck at joystick games, having grown up on gamepads.
A homemade RISC-V fightstick? This is combining all of my favorite things! I bought a leverless controller recently (an SGF Bridget).
I’m only vaguely familiar with microcontrollers, but I know there are libraries out there for using an Arduino to make a mechanical keyboard or fightstick. Is there something similar for the CH32V305?
This is the firmware I’ve been working on. Basically I wrote it because at the time (early 2023) there wasn’t a “good” keyboard firmware like QMK or ZMK for the CH32V305. Now it supports keyboards, joysticks, and a rudimentary pointing device made out of a PS2-style analogue stick.
https://gitlab.com/hakfoo1/ch32v-keyboard/-/tree/fightstick?ref_type=heads
That branch has the mapping I used. Note this firmware has a keyboard-centric assumption that switches are wired as a matrix (between two sense lines), even if that matrix is 1x24, rather than just grounding a sense line individually.
The stick portion was one of those “Pandora Box” devices that was built into a cabinet and pre-wired to a crappy Android TV box.
I bought it because I figured it was probably cheaper than cutting a decent looking cabinet and buying the buttons off AliExpress. That also meant it came with a predefined cable harness to fit the Android box. In the hopes of making it tidy, and reversible, I ordered a little throwaway PCB that accepted the existing 40-pin plug and bridged it to a nanoCH32V305 breakout board. Of course, I made a design mistake, so the PCB had bodge wires, so not much was saved.
If you’re starting from scratch, you could direct-wire to the MCU breakout board.
I’m intending to use an Oasis for a NAS and virtualization host. If it plays nice, maybe put together a cluster.
I’ve been using some much smaller CH32V305 based keyboard controllers for a while, recently built a fightstick aroubd the platform. Now if only I fidn’t suck at joystick games, having grown up on gamepads.
Right there with you. I didn’t have a console as a kid so, I’m pretty bad at fighting games. Have been holding back a bit in the MCUs as well but, mainly due to time constraints and waiting for my new hobby dev system to arrive. But, have a good number of plans for MCUs and other things - hopefully the SG2380 gets a bare chip release, like the SG2000/2002 because I want to try making a motherboard/SOM to move towards a fully FOSHW computer (pretty sure that the SG2380 isn’t going to be OSHW initially but, being fully-compliant should be a good place to start).
Do you run anything on a RISC-V processor?
Probably more than you think. Your printer could be.
I’ve been wanting to run things on a RISCV processor but the feedback from hardware pins is extremely bad as of now. It is improving gradually.
Once a clean SPI interface is made which can be used simply with pin connections, then more layers of compiler, binary utils and OS etc. can be built on top of it.