Ubuntu 20.02 & Mali Drivers


Does anyone know how to correctly install the Mail drivers to the Ubuntu 20.02 images? I’m not finding any clear instructions online…



apt-cache search mali

Installing that package causes the desktop to not load, just a blinking cursor…

Dunno as on Ubuntu haven’t used a desktop but using that driver for OpenCL

I guess you have to enable Glamour and get the desktop conf correct, which haven’t had a go at.

The are guys who are trying to optimise things at the moment in

Or shout out in the discourse group, but desktops are not really my thing as use headless.

Radxa Rock 5B is intented to be used as normal machine, for headless usually you don’t need such horespower and GPU

To answer my own question and to maybe help others. I was able to get the following going:

This gets a Ubuntu desktop using the Mali-G610 (Panfrost) driver


Legend! I wanna try this right after I get mine !

Do you mean that you made it working in armbian not ubuntu?

Correct, my mistake, they are just very compatible

Ok but, afaik, it does not boot from nvme.

I’m using eMMC, I think the nvme booting is a known issue currently

Did you find that stable? As for me it often crashed and also the Glmark2-es2-wayland results where better but still far from where I expect they should be.
Having a browse Khadas seem to have a relatively solid ubuntu 22.04 wayland image that returns Glmark2-es2-wayland results of approx 4000 which is very much what I would expect.
Still a legacy kernel 5.10 maybe has mesa backports, but from https://www.cnx-software.com/2022/09/20/khadas-edge2-pro-review-rockchip-rk3588s-sbc-ubuntu-22-04/ seems much more stable than above.

Can we get this going on the Rock 5b? What are your scores btw?

In the Radxa image with x11 in the 600’s then with above 700’s and crashes as opposed to the Khadas image on a rk3588s managing 4005 which is somewhere around what I was expecting with the initial Android benches that where posted.

Guess you just need to figure out what Khadas have done.
https://github.com/armbian/build/releases/tag/22.11.0-trunk.0087 seems stable enough with Wayland without ppa:liujianfeng1994/panfork-mesa as that seems to make things unstable but that leaves you without a Mali driver and running LLVM pipes.

I dunno if its just copy these to /usr/lib/aarch64-linux-gnu with better naming and a symlink

Copy this to /lib/firmware

But presume there must be more to it to get the Khadas results as @icecream95 & @amazingfate of the above ppa have been trying

dl.khadas.com - Index of /firmware/Krescue/images/edge2/


glmark2 is a very synthetic benchmark, so while it can be useful for driver developers, it is not a good way of measuring the actual performance of a GPU. 2000 vs 4000 FPS means nothing for actual performance.

Why not fire up an actual game like Xonotic on that Khadas image and compare… wait no you can’t, you’ll only get llvmpipe. Xonotic does work with that PPA; surprisingly well if I say so myself. (At least if there were no mistakes in building the PPA; I haven’t got Ubuntu installed so I can’t test it.)

Yes, performance is sometimes bad even in real applications, such as SuperTuxKart
with the “Advanced pipeline” enabled, but that can be fixed in time. It will take a lot of effort to do so, though. More important to me is compatibility with applications that will never run with the blob.

One thing that often does help a lot is using the performance governor for the CPU and optionally DRAM:

$ glmark2-es2-wayland | tail -n3
                                  glmark2 Score: 1129 
$ echo performance | sudo tee /sys/bus/cpu/devices/cpu[046]/cpufreq/scaling_governor /sys/class/devfreq/dmc/governor
$ glmark2-es2-wayland | tail -n3
                                  glmark2 Score: 2089 

(That was using Sway.)

About stability: Yesterday I fixed a bug that caused crashes in applications that had multiple windows open, but that change is not in the PPA yet. Maybe it will fix the crashes you are seeing.


Here are the generic and emmc Ubuntu images for Edge2

build.khadas.com - Index of /khadas/fenix/images/

I don’t think that Khadas are doing anything special, it looks to me like stock Ubuntu packages except for the mali blob.

One difference is the version of glmark2—I’m using Debian sid, which has a newer version that also runs quite a bit slower.

Using their glmark2-es2-wayland with blob mutter and adding taskset to only run on the big cores:

                                  glmark2 Score: 4637

All you can do with synthetics is run like for like and when you run on a different distro and use taskset you are no longer like for like.

The only thing I can see in the cnx soft example is switching the performance governor to performance, but not using taskset.
Can we run a like for like? Also we don’t have to use repo versions as the compile of the master is very easy so we can be sure of like for like.

I have no idea with Xonotic as presume it requires X11 as we still have this transition or preference to deal with, but if it doesn’t run then pick something that does under Wayland than something that does not.
I have been using the ArmNN delegate for TFlite and the difference between CpuAcc & GpuAcc is just a slight reduction in load of all cores when running GpuAcc. (CpuAcc (Neon), CpuRef (Non Neon))
Dram, like all integrated graphics has much effect but pretty sure the Khadas is using the same 2112Mhz DDR4 (or is it?).

Yes you can change the environment of synthetics and greatly change results but that is not the point as all we need to do is create like for like environments as close as we can and use it purely as a rough metric as gaming benchmarks have for decades.

With what I was doing with ArmNN its got me scratching my head because for a GPU driver much work would seem to be CPU based?!
There are a load of apps we could choose doesn’t have to be ArmNN but could we choose one and get access to a stable version of Wayland on ubuntu 22.04 as you have pasted a figure and so far on any environment I have not been anywhere close to that?

I don’t really care about games as the GPU with OpenCL has more uses than that but a game that runs is as equally valid if its optimised to use a GPU.
I am trying to figure out my possible usages and that maybe things like Mesa and Vulkan may be needed and I am likely in for a long wait?
With OpenCl I can just point the icd loader to the driver without this confusion of wayland/x11 and trying to get display accelerated graphics and results don’t seem to be that great.

On the Radxa Debian image with the governor set to performance I get currently glmark2-es2

glmark2 Score: 986

Now what I need to do is set up a similar environment and also use the performance governor to get another approximate metric of a different GPU.

Even with taskset the only way I can get close to the above is by copying & pasting glmark2 Score: 4637

When using the userspace stack from the Khadas images, and the performance governor but not taskset, the result is just exactly the same as CNX Software got—just a tad above 4000. Using taskset -c 4-7 on gnome-shell and glmark2-es2-wayland improves the result by about 10%, and the rest of the gain is from switching the compositor to a newer mutter from Debian sid.

For the result you get with the Debian image, a lot of that is just because the mali blob is not well integrated with Xorg. There seem to be some hacks in the Wayland blob to improve performance beyond what should be possible given the kernel limitations, possibly at the cost of latency.

I can try to look to see why ArmNN doesn’t work as well as you expect it to…