Milk-V Duo: A $9 RISC-V Computer
milkv.io
milkv.io
They also have a $6 model with only 16 MB SRAM version, but that one, unline the 64 MB, can't run linux.
I have not heard about them in quite some time, but was hoping they eventually reach the point, of offering a usable device. I guess they are still not there?
Pro's hardware is definitely better than the original, but the software part is still very alpha. Many driver is still not mainlined, and are very buggy (especially the 4G modem/GPS...) If you ask me, the main issue is that everyone is trying to create a desktop OS for the devices, with the same flaws. Most applications are simply not optimized for mobile. And of course half of the services are Python - which is fine on desktop and server, but on a battery powered embedded device you want to save those expensive cycles... but I start to rant.
PinePhones are fun (and affordable) toys if this is your thing, but it stops there.
And of course the developer community likes new stuff. Pine64 just released a small mountain of new tablets, everyone is flocking in that direction.
So thanks, you explained very well, that it is still a tinker toy.
I seriously could do with not optimized software, I also don't mind fixing some things. But if the drivers are still buggy, then I still just see no base to consider it as a phone or something that can become a usable phone in the near future. A shame.
Not sure what you mean about 4G modem/GPS - neither does really have a driver on Pinephone. It's just a normal USB modem device you can also buy and use separately in a PC.
GPS just sends some NMEA data over virtual serial port, there's nothing about it that can have a buggy driver. It works just like any other GPS device that can't get assistance data. It's slow to lock on and doesn't work inside.
One thing none of them does is to work reliably for any period of time.
And of course, it gets too hot to touch, sometimes to the point when I rather literally remove the battery for a few minutes in fear of heat damage. I really wonder what was the rationale using the same modem in PPP also...
Then we have the Wifi/BT driver, which actually works once one finds the binary blob required, but they can't be turned on/off independently. But this is the smallest bug. At least tethering works, as long as one turns off all power saving features (and as long the modem doesn't crash).
On a personal level, I wonder if the camera drivers can be even made mainline compatible, with the "2 physical sensor with 1 sensor interface" solution, which kind of requires a custom tailored application also to work...
I really find Pinephones a lot of fun, but only as a hacking playground. I take one of my Pinephones with me all the time, but I also keep a phone that I know I can rely on.
> "2 physical sensor with 1 sensor interface"
This is no problem for media API. sun6i-csi driver for the sensor interface just forces the userspace to select only one sensor at a time. The API is made for this. All camera solutions on phone require custom tailored solutions to work. That's just a difference compared to dekstop USB webcam space.
People try to abstract the details in a library (eg. libcamera) or just hardcode it in their app. API for ISP and all required data are just not introspectable, so it has to be hardcoded somewhere in userspace. That's the nature of mainline API.
> WIFI/BT
BT/Wifi should be controllable independently using software, no? Like on other phones. At least I never noticed any issues in this direction.
> Modem crashes.
Sounds terrible. Not sure what's that about. I've never experienced any modem crashes, but I don't have a typical setup. I don't use eg25-manager, but my own kernel driver to manage modem power and my own test software to control the modem over AT interface for SMS/calls. I also don't use mobile data.
Maybe I should try to stress-test the modem a bit more.
Thermal management is lacking, for sure. There are several heat sources in the phone, and there needs to be some software that actively throttles down parts of the phone based on total knowledge of phone activity, and not just simple localized decision-making based on current temperature of individual part. (User on call or using a lot of mobile data, throttle down the main SoC CPU heavily, disable charging or limit severely, etc.)
I know of none. Of course I heard many people online claiming that they do. But I cannot have something as a daily driver, if I cannot reliable know, if I can make a call, or not. (not even speaking about battery life)
I'm not paying that when buying a $9 board.
Considering the volume, shipping by plane from China to Europe to keep minimal stock and using standard mail would be quite effective.
I'm surprised shipping is an issue.
Mind telling me what shipping method?
Second, is there some kind of website you have to determine the cheapest shipping that day?
Thanks much!
And there is, sorta. While our shipping goes through EasyPost, we rarely interact directly with it. Instead our shop uses a web app called Printavo to manage orders. After feeding it the package details it interfaces with EasyPost (very helpfully autofilling the customer's details from the invoice) and displays all available shipping options from USPS, UPS, and FedEx along with prices for all of them. Sometimes the cheapest shipping varies box by box, but in my experience it's always either USPS Priority Mail or (more often) FedEx Ground. And never, ever anything UPS.
Kinda confusingly, I've never seen any of that info on EasyPost itself, just Printavo's wrapper around it.
Funny story, USPS lost one of my packages (containing a pretty rare device). I filled in the "lost property form" and I supplied lots of pictures, the serial number etc(from the ebay auction). 2 years later it arrives unexpectedly. :-D
So, the morale of this story is: USPS lost package forms are a real thing and there is actually a chance they'll find it!
Still, 6 months later they haven't figured it out. From a private conversation with one person "in the know" they claimed its difficult because there are various tax systems in the EU (so what, there are only 27 countries, figure one a month, also it is way more unified now that few years ago when it somehow worked fine for them), that they even have problems shipping to their EU store, that they ship from HongKong and Singapore, despite most of their boards being made in China and that makes it difficult, that their owner "is not China based so they can't use Aliexpress (they could use an intermediary, even with a 20% cut it would still be twice cheaper to ship like this)", that some people in Czech Republic would order cheap boards, then when they were asked to pay few bucks for the lack of EU VAT handling by the seller, declined and Pine had to foot the bill(we're literally talking about $5 bucks), and so and so on.
Eventually I decided I'm 50% convinced they do it on purpose to "help" their EU store, and the other 50% is they simply don't care enough. They just cover the biggest markets and population centers, like shipping to Germany in EU was still available for 12EUR last time I checked. So, no, I'm not buying their risc V board. Id rather get Sipeed's board that I can pay $11 for, but get it shipped for few bucks from China. The whole design is open too.
The EU store has considerably more expensive stock, I assume they have to make sone product guarantees to comply with stricter laws. A Pinecil I bought was almost two times as expensive, though it came without additional shipping costs, from Poland I think.
But that seems to be referring to XSPI Flash and not RAM.
The documentation on the CV1800B is still pretty light, but what I've seen suggests it does not suffer from the same issue, so that alone makes this board much more interesting than the Ox64.
If my conversions are correct, the price (¥35) is more like US$5.
There's some documentation (https://milkv.io/docs/duo). It's a pity there isn't more explanation in some parts. The sales page says "Support Asymmetric multiprocessing" with mention of a RTOS, but unclear what that is exactly.
The docs include this: https://milkv.io/docs/duo/resources/mmf which appears to be some kind of media co-processor.
My initial impression is that there are no binary blobs[1]. You can look at the repo it is using over here: https://github.com/milk-v/cvitek-linux-5.10
I think getting the full sources alone is sufficient. It might not be desirable for the Linux team to accept patches for every standalone piece of hardware. As long as the patches for the actual ISA are mainlined I consider that a win.
[1] Maybe there are, I didn't look too closely at the repo, but it looks to me that it's all source code.
After all, on an appliance with no internet access, that cannot be updated OTA, how would having updates help?
I'm thinking household appliances, factory monitoring, automotive infotainment systems, environmental control, etc.
For most embedded stuff, your choices are leave it in the field or recall.
For hobbyists, updates are important. For production it only matters if the device is internet connected.
Shipping hardware is costly in transport and worker-hours. Being able to update things on site is way better, even if it's "put this on a USB drive, plug in, restart".
Just to point out, the sales page for this board says in big letters that it can do 10/100 ethernet with an add-on board.
So? If we lower the bar to "can do internet with an add-on" then everything can be internet connected, because there's a network addon (interface card/module, i2c, USB) that can be used by almost every single device out there.
It's different when a SoC comes with network - that's obviously targeting always-connected devices.
For one, to not have to keep ancient dev environments around when you need to make small change. Also when you decide to repurpose it for something else, which is far more likely for hobbyist board like this.
> For most embedded stuff, your choices are leave it in the field or recall.
Sure if you want to get fired. "Sir, you need to pack the $200k worth, 300kg CNC and send it to us so we can upgrade your firmware".
And for technician to be able to do that you need someone that develops the fixes anyway, and it's far cheaper in the long term if you don't need to get the software versions from 10 years ago just to run a compile...
There's no what-if - internet is not on that board. Sure, available as a add-on board, but if you use that standard then everything has internet via an add-on i2c/USB device.
> Sure if you want to get fired.
I don't think you work in the field.
> "Sir, you need to pack the $200k worth, 300kg CNC and send it to us so we can upgrade your firmware".
You honestly think that every single factory has every single automation controller internet-connected?
I mean, I dunno what else that snark was supposed to mean, but I can assure you that factories don't let their equipment talk to the internet. Anything that the equipment needs will get shipped out to the deployment.
You aren't working in this field, that much is clear.
It's not about being internet connected, the point you seem to consistently miss or ignore on purpose and that I already commented on. Learn to read before you start flailing nonsense at keyboard, I wrote ONLY about software stack problems.
It's about having software stack to continue developing without wasting time keeping some legacy crap just so you can compile a code change. But I already wrote it in previous comment. I wrote nothing about internet connectivity aside from criticizing people like you that use it as a logic-bankrupt argument to excuse shit software stack
> I mean, I dunno what else that snark was supposed to mean, but I can assure you that factories don't let their equipment talk to the internet. Anything that the equipment needs will get shipped out to the deployment.
Multiple failures of people accessing SCADA enabled unsecured control systems over internet prove your baseless assumptions wrong.
>You aren't working in this field, that much is clear.
You seem like a guy that needs 6 followups to explain to him how to set up electronic torque wrench then still breaks the bolt so I'm glad I'm not.
For EMV, for example, it actually doesn't matter if you have an internet-connected device; you aren't loading a new kernel that hasn't been certified onto the device, and considering that the cost of recertification can sometimes be more than simply moving the customer to new hardware, it's very rarely done.
So, yeah, for hobbyists, having updates is important.
For industry, once something is certified they aren't going to want to eat the cost of recertification unless there's a really good reason.
PS. You shouldn't be this arrogant in an area where you yourself claim to have no expertise. I actually am an expert experienced in large-scale deployments of devices, and I'm keeping my tone as level as possible. You should do the same as well.
GP said: "a small mountain".
But I think GP does have a good point about ease of serviceability allowing for longer product life, even if it would be on something that you do not expect to require updates.
So my revision 1.2 of the product has an updated kernel, because it is supported, and I can do this without requiring a full rework of the hardware because it is only a software update.
Updates can be applied prior to shipping the hardware. You seem to be advocating that the hardware gets no support because you can't think how things can be updated, which is a strange position to take.
I believe this may warrant an “extended mainline” kernel project that has all those extra modules and that works to consolidate them into the least amount of different variants as possible, all the while providing some continuous hardware testing. It could be maintained in part by the manufacturers themselves who’d need to provide hardware and high quality code at the very least to be able to claim support from this extended mainline.
Sounds like my second business idea for the day. I’d love if someone would run with it.
I have a non-thinkpad laptop, and it seems nearly every kernel release there is some regression. Touchpad not working.. Then GPU driver not working... Then suspend to disk broken... Regressions that, for a regular non-technical user would be a big headache.
I would like to 'lend' hardware to someone to prevent this. I'd happily leave my laptop/desktop/SBC overnight compiling a kernel, rebooting into it, running tests, and hopefully finding regressions before they get into a release.
Unfortunately, there doesn't seem to be any project to make this easy. I'd like to just "apt install volunteer-my-hardware-for-overnight-testing". A few thousand people doing that would soon find issues that only affect rare hardware.
Unfortunately, while nearly all computer hardware has a watchdog, frequently the linux kernel doesn't implement support for it. That in turn means that testing buggy kernels on real hardware automatically frequently ends up with the hardware getting stuck and a human needs to reset stuff manually.
Unless it's so bad as it becomes unbootable and no safe boot option exists that can be engaged via, say, the serial console, being able to power cycle the board should be more or less enough. If the bootloader can be controlled via a serial console, then it can be automated.
Of course, someone needs to build that infra.
I've spent few minutes searching and I don't know, can I use this for machine vision applications? Does it support serial cameras (Csi)? Does it have hardware support for h264(h265 or even better vp9) encoding/decoding? What is the number of Tops of its "vector accelerator"?
I suspect they don't put info like this out front is that it probably is lower than established rockchip chips.
The price is significantly lower too, but for when I need to run embedded Linux I also need video/camera acceleration etc. For devices that don't need a camera/voice interface like a Smart switch, a weather station etc this is massive overkill.
So it is a case risc v being cool, but there is still no clear winning niche for it that I know of.
Minimal Documentation: https://milkv.io/docs/duo/getting-started/cv1800b Datasheet: https://github.com/milkv-duo/hardware
Reading the datasheet, it looks like there is one C906 cpu with 700 Mhz without the the vector extension and one C906 cpu at 1Ghz with rvv 0.7.1. The C906 design has been opensourced and is available here: https://github.com/T-head-Semi/openc906
The C906 supports rv64gc with optional rvv 0.7.1 with a vlen of 128, but a 256 wide ALU.
They list H.264/H.265 support, but I don't think it's a standardized extension.
But see my other comment about using the pre ratification vector extension: https://news.ycombinator.com/item?id=36377439#36378911
- 386SX, 40Mhz, 2MB RAM, 40MB HDD
- Pentium, 75Mhz, 16MB RAM, 200MB HDD
- Pentium, 166Mhz, 32MB RAM, 512MB HDD
The 64 MB of RAM seems to limit this to applications comparable to Allwinner F1C200s that came out ages and ages ago, which is an SiP that integrates RAM and can do video processing (h264). It doesn't look like the SOPHGO CV1800B inside this even has proper graphics acceleration.
For making proper "intelligent" things, you would want a much more powerful chip. Something like the Rockchip RK3588 is state of the art with 4x A76 + 4x A55. Even at the lower end in terms of cost, NXP's i.MX 8M Nano has 4x A52 at only $15 ish from digikey. Their i.MX 6 line is even more affordable.
You can argue that this is a modern version of the extreme low end, but at this point why not also consider more powerful MCU options like STM32H7 or RT1170?
What's an "intelligent" lock, switch, light, or thermostat, for instance?
A priori a dual core CPU at 1GHz and 64MB of RAM is huge for one of those devices.
https://www.hackster.io/news/milk-v-unveils-its-third-risc-v...
More interesting stuff:
https://www.hackster.io/news/milk-v-s-pioneer-is-a-tall-glas...
https://www.hackster.io/news/milk-v-surprises-with-a-second-...
That being said, the vector engine is really powerful in my experience. I'm currently working on a benchmarking library, so you might see a post about that in the future.
I think it's easy to be unaware of how vastly speed outpaced memory density at some points. It's kind of what we saw a few years ago with core counts and limitations on DDR3 and early DDR4.
[1]: https://dl.dell.com/manuals/all-products/esuprt_desktop/esup...
Well, the first server I ran had 64MB of RAM and, IIRC, a 0.6GHz CPU. Ran slackware with apache and my software was written in C as CGI scripts (generated charts on page visits using, IIRC, libgd).
You can do a lot.
You won't do it in JS or Python or Ruby or C# or Java, and you won't produce AAA games or ML or cryptocurrency or similar, but you can write you useful software that runs snappily on a 64MB/1GHz machine.
TBH, I can't think of much that a 64MB/1GHz machine cannot do.
64MB and 1GHz CPU is a lot more and a lot faster, so IOT and edge-computing are able to process data locally.
But anyway I would have thought Linux could easily run on that system. Not modern desktop distros like Ubuntu of course.
So? Run FreeRTOS[1].
[1] Unless I'm mistaken, this product already supports that
I might be quite out of date but 16 MB of RAM was plenty to run Linux with something like buildroot. Is that no longer the case?
On board that only have 100Mbit ethernet? Much less useful but you could make a sound processor (effects etc), but then pinout doesn't show any I2S....
I guess you could do some image processing but RAM will be limit on that
For instance the rpi zero is 1ghz, but has 512mb of ram.
But IMHO the price is the sticking point because nearly the same can be said of an a esp32-s2 (riscV) and it has better peripherals, built in WiFi and Bluetooth, and sells for <$2 soldered on a dev board.
I think the fit here is for edge-AI. The asynchronous multiprocessing might actually be a winner here, since you could run your time-unpredictable algorithms on the Linux core and run your real-time needs on an ratos or bare metal on the other core… so kinda like a 2 in one device? Still not sure if that tracks for most cases though since a discrete RTOS/Bare metal core is about 0.5usd to solder next to your application processor.
I think something around this price point with a strong TPU integrated might make sense, especially since it seems to compare favourably with the kendryte k210 which has proven very popular in edge-AI image processing. The question here is whether or not the vector unit will compare well with the NPU on the K210 or not, and whether the power budget is good enough for battery powered devices.
Because if the SOC has a USB device hardware block, than many GPIOs, and is a real RV64 core (unfortunately, it is not the case for the pine64), this is kind of "definitive" for this board major use cases.
These types of "computers" are pretty simple electronics. All the complexity lives inside the "System on chip" - the engineer then picks a few supporting chips and makes sure the signal routing is matched. I wouldn't be surprised if the whole thing is based on a reference design from the SoC designer.
In this case, the west basically already competes - this is pretty similar to the raspberry pi zero. There's plenty of Western designed SoCs - which is where the complexity and IP lie.
Capitalism is basically strip-mining the West; there is no long-term future in it.
"Eschew flamebait. Avoid generic tangents."
For example, the Pi Pico comes with nice SDKs, comprehensive documentation, and can be flashed with a simple file drag and drop as they made it show as an USB drive.
So I'd say the West is still leading on this...
https://www.federalreserve.gov/cbdc-faqs.htm
Was Bitcoin an open source beta test?