What do you think of this module?

Ouch. Yeah, I’d be worried if it hit the 90s.

I have kind of a pile of SBC heatsinks, I probably would have cut a hole in the back to fit one if it didn’t come with something to cool it off. The CM-4 can barely get by without a heatsink, the A-06 really needs one. The RK1 (similar CPU, 3588 vs. the A-06’s 3399) has a heatsink with a built-in a fan and case fans and it idles at ambient room temperature, but that wouldn’t work on a machine like the DevTerm (bulky heatsink plus all the fans uses a little more juice).

The R-01 I’ve been running with no heatsink. 40 degrees, never gets past 50 when its single core is fully loaded. I’d be really excited about a beefier RISC-V one; it seems about time for a new CPU board, but the existing ones still do the job fine; I use the A-06 about as much as I use my desktop machine.

I seem to remember reading about upgraded components in later shipments.

Yeah, basically moves the heat to the sheet and also covers the vent slots in the back of the case up to the fan, so it makes a little duct instead of just shooting air in the general direction of the CPU and hoping for the best. I didn’t see pictures of it in anyone’s build (I spent an excessive amount of time looking at pictures before the DevTerm arrived; I was very excited) and it came with separate instructions so I figured that it wasn’t part of the first run.

I think cranked all the way down the A06 is probably friendlier with battery life than the CM4?

I think so, but you can turn off cores in the CM-4 by doing sudo sh -c 'echo 0 > /sys/devices/system/cpu/cpuN/online' (replacing N) for as many cores as you want to turn off, and setting the powersave governor. I kind of wonder why the gear system doesn’t just change governors around instead of setting max frequency; like you can set the CPU governors independently, and that caps all of them at the min frequency, and adjust. There’s a “conservative” governor that is like ondemand or schedutil but it has a delay when changing frequencies so there’s a ramp-up and ramp-down period, but I think (don’t quote me on this, haven’t checked, going from memory) that it’s not included for the CM-4.


What do you think of this module?

like other folks I’ve read comments from here, I too have turned my A06 Devterm into a CM4 device

I have the opposite experience: the CM4 is sluggish and I almost only ever use my A06 (really nice performance) or R01 (runs 6-8 hours and “not fast enough for a browser besides w3m/lynx” turns out to be a benefit). I have the CM4 in my uConsole and it’s fine but the A06 is speedy and works fine for me. (I even sprang for the 8GB CM4.) I ended up putting the CM4 into a module and slotting it into the TPi to use as a NAS.

it generally ran too hot to use them all

I think the big piece of copper and thermal paste came with later orders, or at least mine came with one; mine gets hot when it’s cranked all the way up but I rebuilt everything on-device except qt webengine (because it required more RAM to link than I could muster even after plugging in extra USB drives to use as swap). All the cores maxed out, it got up to 71C, kinda hot but still fine.

It’s possible I never got my scheduler and gear-shifting settings just right

I think what was helpful for me was I keep conky on the side (ratpoison with set padding 280 0 0 0, but I set it to toggle so I can hide conky if I want the rest of the screen), so I can see what’s going on and shift appropriately. I usually keep it cranked all the way down (-s 1 or -s 2) and turn it up when I am compiling something or if I attempt to use Firefox or mplayer or something starts to eat a lot of CPU. It’s on -s 1 right now, so just the ambient X/conky/ssh/drawterm stuff eats 13%, but it still lasts a long time. I tried to attach my .conkyrc but it’s not an allowed file type so here’s a screenshot and a gist The .conkyrc I am using on my DevTerm. · GitHub . Anyway, long way of saying it’s easier to figure out when you need to crank the gears up or down when you have a CPU monitor running.

As far as performance, I did some test compiles, the performance cores are about twice as fast at the same clock rate.


Delivery 90 working days.

Maybe it’s a real photo of a large stack of empty boxes. Anyone can print a label on a box.


Delivery 90 working days.

How should this be understood?

They’re scalpers. This happens with any product that has a supply bottleneck.

Where do these sellers get whole cabinets with finished products?

Same place everyone else does, if they even have them. Sometimes they just have boxes, sometimes they have photos from Twitter or Weibo or whatever.


Compiling custom keyboard firmware

Every time I bump the keyboard and it gets disconnected and I have to pop the front off to do the plug/unplug dance, I play a little more with getting my custom firmware onto the keyboard. (I use acme so I need a proper middle-mouse button, so I am using v0.1, but I want some of the bug fixes from newer version, like yatli’s fix: Keyboard stuck in Bootloader mode - #2 by yatli . Also there are some things I want to play with, hacking the keyboard firmware is fun!)

So I have gotten the Arduino SDK installed, I have gotten my changes in, I think it should work, I know how to get .bin files loaded (I use the programmer from the repo rather than trying to get the Arduino SDK to do it; it would be nice not to have to use the Arduino SDK), and now I’m stuck at the last piece:

In file included from /tmp/arduino_build_81750/sketch/devterm.h:5:0,
Alternatives for USBHID_Types.h:
ResolveLibrary(USBHID_Types.h)
from /tmp/arduino_build_81750/sketch/keyboard.h:9, → candidates:

             from DevTerm/Code/devterm_keyboard/devterm_keyboard.ino:1:

state.h:1:26: fatal error: USBHID_Types.h: No such file or directory
#include
^
compilation terminated.
exit status 1
USBHID_Types.h: No such file or directory

I think this is probably a missing library, something I didn’t click, something I wasn’t supposed to click but did, something I didn’t install; I do not know, though.

I’ve got the settings correct, I believe, or at least what I have matches the wiki ( Compile keyboard bootloader and firmware · clockworkpi/DevTerm Wiki · GitHub ):

settings

I’m sure I’m doing something trivially wrong (or at least I hope the solution is simple and I have zero confidence that I understand what is going on and I really wish I was dealing with a Makefile).


CRUX for DevTerm A06, dev notes

I still have to produce the full image, but I’m still running the working image I built.

There is no major blocker, just I haven’t taken the time to build it and to figure out a better hosting situation. (Hosting it where my website/email/whatever live is fine but the upstream is bad so I’d have to throttle and my main hosting setup has metered bandwidth, so I will probably end up throwing it onto a Frantech slab.) In the mean time, I don’t know how easily people on this forum can get to a Tor server.

The plan is mostly to take take the kernel/bootloader/partition table from the official image, copy the kernel modules into /lib/modules, add all the packages (prebuilt packages available here, will figure out a method for hosting some bigger files: http://s3ldbb3l5eqd6tjsklzmxy6i47i3fim55fpxmgeaa6rvpcllkt4ci4yd.onion/a06/crux/ ), and do test-boots, debug it, etc., then remove the ssh keys (so new ones are created on startup), set the root password to something simple so that you can log in and create your user account. Basic nice stuff.

I have acquired a TuringPi 2 and some of their RK-1 boards, so I don’t need to use the qemu chroot any more: distccd lets them function as a small build farm, and their CPUs are similar enough (CPi’s A-06 is a RK3399, big.LITTLE 4/2, the TuringPi RK-1 uses an RK3588, which is dynamIQ and 4/4) that I actually used the DevTerm packages to build out the CRUX image for the RK-1. (I’m running it on a couple of headless CM-4s also, so I guess it’s also compatible, drivers aside.) I wish I had gotten one of them sooner (they had the same supply chain issues that Clockwork Pi had): it was painful trying to get the stupid qt6 stuff to build, but if I had a few nodes with excessive amounts of RAM, I wouldn’t have needed to do hacks.

It is just regular Linux, so the screenshots have more to do with what I am doing to the system than they do with what the system does, but I did like CPi’s amber setup so much that I cloned it on my R-01 Slackware image (They look orange in screenshots, but the bluish cast of the LCD makes them amber: Slackware image for DevTerm R01 .), and the view is a little more conventional on the A-06: running Firefox to view AwkiAwki ( GitHub - pete/awki: Awki is a lightweight wiki written in awk. These are my patches, original here: http://awkiawki.bogosoft.com/ ), dvtm in urxvt, cool-retro-term (power-hungry, I don’t use it too often), drawterm to edit code on the Plan 9 system (and in front of it, 9front’s vt(1), showing an ssh interface to a Pleroma instance), and trusty old xpdf showing “Coders at Work”.


µConsole's emulation

I like it! I use it all the time. I should probably say that I’m running a kind of minimal environment on the R-01 DevTerm: lightweight UI (ratpoison, conky), some small programs (urxvt, xpdf, lighttpd, w3m), and most of the time it is connected to another machine that is doing more work (drawterm to the Plan 9 systems, ssh to the Linux systems). I run gcc and the go compiler sometimes, I use awk a lot, Ruby once in a while.

All of that stuff that I have up and running, the CPU sits at about 3% used, using about 150MB RAM. Because of that, the batteries last 6-8 hours (depending on how I set the backlight), and this is incredibly useful.


µConsole's emulation

That would be very interesting, yes. The A-06 is very capable of compiling anything, but linking qt6 required an obscene amount of RAM and, after much trial and error, I landed on using qemu-binfmt on my desktop system. Some fiddling was required to get a functional chroot: since I registered qemu as the handler for 64-bit ARM binaries, I had to make sure that qemu-aarch64 was available inside the chroot and all the libraries it linked against.

I think something like that would work fine for a RISC-V CPU, but very interested in how you’ve set yours up. I mostly used the prebuilt packages from slarm64 ([sic], the ARM-64 Slackware project has sort of taken custody of the RISC-V Slackware port), and for anything else that I needed, it was fast enough to compile on-device. (I am not likely to try to run Firefox on it. I really like the D1, I don’t wanna fill its memory with JavaScript.)

For builds now, I actually use a TPi2 RK1; I should probably write that up in the thread ( CRUX for DevTerm A06, dev notes ). I imagine that you could do something analogous by getting one of those Lychee Clusters: LicheePi Cluster 4A - Sipeed Wiki . Very cool gear, but possibly overkill just to speed up your builds.


LCD driver source?

You should be able to find it here: GitHub - yatli/xf86-video-fbturbo: Xorg DDX driver for AllWinner D1


R-01 / toot & exchange client

That is what I am talking about. They could post, or even cross-post the same stuff. They don’t need a moderation team.

I think there definitely would be less anxiety about shipping on these forums if they had a community manager who could speak about delays proactively

To be fair, they appear to have been posting in zh-CN elsewhere, which is fine. I ordered a uConsole the day after the announcement and followed it here, and there were a lot of really hostile people throwing accusations and insults. In CPi’s position, I would probably have stayed away from the place where that was going on.

They’re making these cool devices that appeal to hackers, and the uConsole is enough of a “product” that it attracted a broader audience, people that don’t really understand the engineering process or what “lead time” means or how thin the margins can be, and thus were somewhat less sympathetic.


R-01 / toot & exchange client

the CEO of Mastodon (LOL) blocked me

Ha! Everything I have to say about that is off-topic here.

moderating is a pain

I have spent most of my time on there actively avoiding doing moderation and it is still a pain. Some people sign up just to try to grief the mods, so whatever the rules are, they will come up with something.


R-01 / toot & exchange client

You’d want an organization running a mastodon server to be capable of moderating the service. There’s one staff member here who posts in one thread once a month.

You might need to moderate it if it’s got open registrations, but if the only people with accounts on the instance are CPi staff, you don’t need a moderation team.

It doesn’t have to be something grandiose, that’s the point: if they are on fedi, people with accounts on other fedi servers can follow them.


What should we work on next?

I’m actually really delighted with the R01. I expected it to be fun, but it’s very usable and runs super cool and it’s kind of astonishing how well-supported the chip is: everything compiles cleanly, no strange crashes. I was able to get Slackware installed and it works great for daily use.

A RISC-V board with a little more RAM and a few more cores would be an amazing addition for the DevTerm and the uConsole.


R-01 / toot & exchange client

What I use on my R01 is usually just bloat ( bloat - A web client for Mastadon Network , I have a version with a lot of changes at GitHub - pete/bloat: Mirror of a minimal set of changes to BloatFE / git.debu.gs Git - bloat/summary ). It runs fine on w3m or other super-minimal browsers. I use bloat from mothra: the R-01 runs drawterm ( http://drawterm.9front.org/ ) just fine, so I can connect to the Plan 9 machines.

There’s also sshocial ( Duponin / sshocial · GitLab ) which doesn’t require a browser, but I haven’t used it; the instance I’m on has an ssh interface built in.

I kind of wonder why CPi doesn’t run an instance. It’d be pretty cool to be able to get news there. (I locked my Twitter account and quit using it in 2018, but you can’t even use Nitter to read Twitter accounts any more.) On the other hand, every time I talk about the DevTerm or uConsole on fedi, people tell me it’s not a useful device and that it’s impossible to do work on it, even if I am talking about having worked on it all day.


uPico Expansion Card

You’re missing a space. sudo cp target/release/upico /usr/local/bin.


Screen sleeps/blanks, KB and trackball won’t wake

I finally decided to try another way to wake it up, by plugging in an external mouse and keyboard, and I discovered the system immediately woke up and was responsive.

Check powertop. One of the screens in it has a list of USB devices and whether their power management status puts them to sleep or not. If the internal keyboard/trackball go to sleep (or maybe are put to sleep by the OS/DE combination you are using, so if you are using a DE, check if it does any power management in its settings), but an external keyboard doesn’t, then that might be that the reason your device has trouble waking up.


Can I put the Core R-01 in the uconsole?

They’re compatible, yeah, even swapping between DevTerm and uConsole. The R01 is really fun and it has ridiculous battery life. A few times I was reading on my DevTerm and fell asleep and it was still running when I woke up.


Gamepad button as mod key for Sway?

relies heavily on the “mod” key, which is the “Super” key by default so Fn + AltL on the uConsole

I do not know how easy it is to remap things under Wayland, but on the uConsole, I use the volume button for the window manager’s meta key. (escape XF86AudioLowerVolume in ratpoison. I use ratpoison on the DevTerm, too, but I use the Cmd key, which is Super_R. I have the volume up/down buttons mapped to screen brightness, and Fn+< and Fn+> cycle through windows.) One thing you might try is remapping the right Ctrl/Alt keys, depending on whether you need both pairs.

I was wondering if there is a way to use one of the gamepad buttons

There are some dip switches on the back of the keyboard that can be used to send normal keypresses instead of gamepad keypresses, but they’re mapped to letter keys. (I seem to recall the dip switches are actually on the board, but it’s a bit more involved to disassemble than the DevTerm is.)

You could try getting the Arduino devkit to work (if anyone knows a way to rebuild the firmware for the keyboard without going through Arduino’s IDE, please let me know) and that’d enable you to just tweak the appropriate bits in the firmware and reflash. Remapping a single key is not difficult. Have a look at uConsole/Code/uconsole_keyboard at master · clockworkpi/uConsole · GitHub . The bit that handles the presses for the A button is here: uConsole/Code/uconsole_keyboard/keymaps.ino at master · clockworkpi/uConsole · GitHub . It looks like it’s mapped to “j” when the switch is toggled, so if you wanted it to send the same keycode as Cmd/Fn+Alt does, then, per line 670, it looks like you want to use _CMD_KEY.


Would a DevTerm R-01 kit be appropriate for doing Linux From Scratch for the first time?

For a first LFS, you’ll have an easier time doing it for a more standard machine first before doing it for a quirky SOC with a lot of custom hardware. Especially if it’s your first time, it can be tricky to determine if something breaks because you haven’t done it before and you missed something, or because it’s a different CPU, or your cross-compiling toolkit has some problem, or whatever else. It will take a while to build some things and you’ll have to deviate from standard LFS for the bootloader and image format, you’ll have to add some of the CPi-specific bits for hardware support (like the gearbox if you go with A-06, drivers for the fan, printer, etc.).

That aside, I’ve been playing with ARM stuff for years and I love ARM (and the A-06 is wonderful, I love it), but so far, riscv64 is really nice and compiling stuff goes a little smoother. The chip’s less beefy than the ARM offerings by quite a bit but RISC-V is open (so dev support is pretty enthusiastic) and there’s so much variance in ARM that the R-01 goes a lot smoother when compiling anything.


Clockpi A06 what for?

It is the explaination . I have to find why .batteries are 9900 mAh GTF

That’s why. The 9900mAh batteries are false advertising. There’s a thread about it: Large Capacity Batteries in uConsole . Regardless of the advertised capacity, most of the Chinese batteries on Amazon are about 1000-1200mAh. There’s a link in there to a video, a place to buy reasonable batteries, etc. I haven’t used the store they link to, but I have had the same experience with Amazon batteries; I have had the best luck with the MXJO brand, the A06 lasts 4-6 hours on that easily. If you try out sudo powertop, you can see a lot of information, the screen brightness takes more power than the CPU sometimes.


Update: uConsole shipping related

I got the R01 just for fun but I think I use it more than the A06. It’s a really delightful chip.