I’ve been using the Unleashed in the past and have now obtained an Unmatched (both for academic research purposes). The main reason for the latter was the prospect of having better I/O. If you have been working on this project please don’t take the critique personally. I write this primarily in the hope that it leads to improvements and to document these issues for others (because apart from the fan I could not find a lot of other experience reports on these topics).
I like quiet computers. I also had no big problem with the Unleashed fan because I saw it as a very first step and an engineering board.
However, the Unmatched fan is even (slightly) worse albeit the board being clearly marketed to not only engineers but also enthusiastic end users.
Taking that and the fact that the SoC could easily be cooled (semi-)passively into account, this cheap and unbalanced 25mm turbine is simply inexcusable.
I couldn’t find any power ratings actually but I’d be surprised if it dissipates more than 30W max.
On future boards please add at least some holes around the SoC so that we can fix this more easily than this plastic contraption that I don’t even rare to touch.
SATA SSD in M.2 Slot
Due to the B-Key of the M.2 slot I was expecting that at least in theory SATA SSDs could be made to work as this indicates that there are SATA pins. I should have checked that more carefully since this is really the only indicator that SATA could work (which it cannot because there is not even a SATA IP in the SoC AFAICT). A small hint regarding the non-obvious keying in the documentation would be nice.
I guess the B-M-Key slot was used eventually because it was cheaper? The schematic does have an M-only-key slot.
Spacers/Standoffs for the M.2 Slots
In the package there are 4 screws and 4 plastic washers that are supposed to be used to hold the M.2 cards down in the two slots. Depending on the physical size there has to be a spacer between the two PCBs that the screws can hold on to.
On the Unmatched there are only spaces for the maximum sizes and they are pressed into the board. So if you would want to use smaller cards the package contents are not sufficient (but you have two spare screws and washers to spare).
@jwim told me on IRC (thx!) that for the other holes one needs some optional hardware mentioned in the BOM: SMTSO-M25-2ET
These are less than a dollar (excluding shipping) and I won’t write what I think about not including them with a 600$ board.
Fortunately this is not a big issue and one can rather easily hack around this, e.g., with 10mm M3 screws and 2 nuts.
SD Card Support
The documentation talks a bit about issues with Application Performance Class 2 (A2) cards. In the Getting Started they are referred to as “Class 2” cards and the recommended SanDisk A1 as “Class 1”. It is understandable from the context but “Class x” (Cx) is another classification for SD cards that refers to their minimum sequential writing speed. Class 2 would be 2MB/s minimum writing speed.
The Ax classes are newer and specify minimum IOPS.
I can only speculate at this point but I think it is very unlikely that the classification alone (or I/O performance itself) is a good indicator for compatibility as it is stated in the documentation. I presume, only very few cards were tested (maybe even only 2) and the only obvious difference between them was the Application Performance Class. I’d rather expect some timing/race condition to be the culprit.
To keep the original SD card as a backup I tried to use another card that I have been using with the Unleashed without problems.
This is a quite old card from 2014: Samsung MB-MP32D, 32GB, Class 10, UHS-I
With that card I cannot get the ZSBL to execute correctly. I receive different low-number error codes (5 and 9 so far) indicating that some essential SD commands fail. It is independent of the image used (I have tried the latest SDK release (demo-coreip-cli-unmatched-2021.08.00.rootfs.wic.xz) as well as the Preinstalled Ubuntu 21.04 image (ubuntu-21.04-preinstalled-server-riscv64+unmatched.img.xz)).
The same images work fine with two different similarly old but slower 8GB SanDisk cards.
Since I’d like to get away from SD cards altogether I won’t look into that further but it’s worth to note online that if you see output from the ZSBL like “Error 0x0000000000000005” or “Error 0x0000000000000009” that it is a good idea to try another card.
Baud Rate of the ZSBL
The SW reference manual states “[…] boot fail messages from ZSBL are output to the console at 89856 baud instead
of the default 115200 baud.”
I don’t think that’s correct because the above mentioned output was only visible to me when using 57600 baud (which is a much more sensible value too). I only know one other SoC that uses a similarly off UART configuration: PULPino… what’s up with RISC-V devices and funky UART baud rates?