• We did not send an email asking for donations - please read this post.

Rockchip tough as a rock when it comes to getting its graphics working. Any suggestions?

shimmy00

New Member
Joined
Sep 13, 2022
Messages
6
Reaction score
0
Credits
125
I've asked about this thing on a range of forums now, often with little luck in getting responses, so I've had to slog and fiddle my way through it mostly by trial and error, but this last problem really has me stumped - it's been really hard going because while I've used Linux a lot, virtually all my experience has been on standard x86 PCs where things mostly "just work", but this interesting little bit of Chinese hardware is quite a different story.

What I have, folks, is a "Firefly ITX-3588J" board, which has been given a home in a small form desktop case. It's a very interesting little thing: it's got the form factor of a small PC board, but it uses a "Rockchip RK3588" ARM processor and is built in many ways like a smartphone or mobile tablet would be: it runs Android as well as Linux natively, it has a flash memory chip (embedded MultiMediaCard or eMMC), and an "M.2" port onboard that one could actually use to affix a network card for xG (3G/4G/5G) phone network access, among other possible devices. I got it because I wanted to try something different to the long-standing x86 monopoly, because it has low power usage thanks to the ARM processor, and because I do, indeed, at some point want to actually try to see if it will work as an honest phone, ideally as a land-line replacement for a home phone.

The trouble is, and as I've discovered after much digging around how things work in the ARM world which is typified by many compact and low-power devices (not surprising) like this, that you can't just set up OSes on these things like you do on a PC. Instead the process looks to be much more like loading ROMs to an Android phone, and what I am trying to doing is, in effect, what would be called in smartphone land "creating a custom ROM". For you see, unlike a smartphone, the board does feature a rather generous 4 (yes!) SATA ports, and when I saw those I realized what I wanted: loading an OS to an attached hard drive. I naturally bought a 250 GB SSD along with the board and hooked it up. Trouble is, the vendor ROMs for both Android 12 and Ubuntu 20.04, are mutually exclusive as they are made: you can only have one on the eMMC at a time, they're cohesive flash packs. So to make this work, I had to create my own flash pack ("custom ROM") and fortunately the vendors (Firefly, and Rockchip) provide a generous SDK full of open source code (including for the modified 5.10.66 kernel with the RK3588 support) and tools to do this. And that's what I've done. I have a pack now where the kernels are on the eMMC and have gotten it so the Android user data and Ubuntu 20.04 root file system are both loaded onto the SSD.

And yet there's a problem. First off (and it was a lot of trial-and-error work in its own right!), Android works beautifully (though unfortunately shows some design quirks when it comes to being driven with a mouse instead of a touch screen), but Ubuntu 20.04, sadly, does not. In particular, one big thing: graphics. You see, when you load the Ubuntu 20.04 stock ROM, it goes just fine - the desktop comes up without a hitch. But in my custom ROM, after loading the kernels I then used Android via ADB to push a primitive Ubuntu rootfs (generated via "debootstrap" with suitable --arch and --foreign options) to the SSD and then was able to log in via serial console to it and pull the rest of the system via APT from the Internet (i.e. "apt-get install ubuntu-desktop"). And after that: no graphics. X doesn't come up. All I have is serial debug. Neither on boot, nor when giving a "startx", "xinit" or the like via the serial debug console (fwiw, that's listed by the system as /dev/ttyFIQ0 - there is also no framebuffer console apparently [also there doesn't look to be in the stock image either so not sure that is even supported at all], but there are still devices like /dev/tty0, /dev/tty1, etc. as though there were. Hardware wise, it's a 3-prong UART terminal on the board that requires a converter to be wired to it to get USB access on a hosting computer.).

Looking at my /var/log/Xorg.0.log isn't too helpful - on my latest try and yet another reconfiguration of the kernel, I am getting "glamor initialization failed", and when I look further into /var/log/syslog, I find "systemd-logind: failed to take device /dev/dri/card0 [and card2]: Device or resource busy", "glamor initialization failed", and "modeset(0): drmSetMaster failed: Device or resource busy". It does seem like it is sensing my monitor though because it gives a bunch of modelines that look right and it identifies it by name - just can't bring up the screen. FWIW, apparently the RK3588 has an integrated ARM Mali G610 "Valhall" GPU, and this does not appear to have mainstream kernel support as of yet (nor does the RK3588 itself even), but since I'm using the vendor-supplied kernel which is what I believe they use in the Ubuntu stock ROM, it should work, no? Can Ubuntu be gotten working on this thing, or what?

Of course, there may be one more option here: the board also has one PCI Express x4 slot. I could theoretically get a breakout GPU card and screw the on-chip Mali. The trouble is, I rather not shell out money on hardware if software can do somehow. Not to mention finding a suitably low-profile and x4 (instead of x16) GPU card is a tricky matter in its own right.
 


Brickwizard

Well-Known Member
Joined
Apr 28, 2021
Messages
3,167
Reaction score
2,058
Credits
23,570
Not an easy one
Do you have a separate graphics controller on the motherboard [Malia graphics work in a weird way and need to be used in conjunction with one] or a separate graphic card would probably be best as they have more support
there are a limited number of ARM distributions, try Debian For arm [3 variations of arm chip supported] or there is Arch for Arm [I am not sure how many versions of arm it supports]
 
OP
S

shimmy00

New Member
Joined
Sep 13, 2022
Messages
6
Reaction score
0
Credits
125
Thanks, yeah. That's what I said about breakout GPUs via the onboard PCIe slot, but that means shelling out $$$ on hardware that I'd rather not do unless and until absolutely necessary. Not to mention I have had tough luck finding a graphics card that can use an x4 slot and that is like half the height of a standard PC graphics card because I am using a small form factor case (Mini-ITX is the size of the board). The reason I think it must be possible is because I have a vendor-supplied kernel package (with a lot of open source code), and their stock Ubuntu ROM does have graphics. So there must be something I can dig out of that that I can use to get it going - perhaps binary blobs with ARM's proprietary driver, perhaps something else. Especially given I'm trying to install the same Ubuntu version (20.04).
 

Brickwizard

Well-Known Member
Joined
Apr 28, 2021
Messages
3,167
Reaction score
2,058
Credits
23,570
Why not just try the distributions I mentioned, it will only cost you a bit of time and effort , and you never know it may just work with one of them
 
OP
S

shimmy00

New Member
Joined
Sep 13, 2022
Messages
6
Reaction score
0
Credits
125
I could, but can you use an older kernel with them? Because support for this SoC is not yet in the mainstream kernel at a suitable level.
 

kapouer

New Member
Joined
Sep 17, 2022
Messages
2
Reaction score
1
Credits
18
Hi there, I've just spent some time installing debian on asus c201 laptop, which has rockchip 3288 cpu and some mali gpu, emmc, and so on. Support for that kind of platform (including RK3588 and Valhall gpu) has landed quite recently: around june, and it is still being stabilized by awesome linux developers.
For example on that laptop linux 6.0.0-rc4 has several annoying bugs fixed when compared to linux 5.19.8.
I mean, follow advices, install debian, install latest versions of anything you can.
Also understand that X is replaced by Wayland - you won't get something working with X on that kind of hardware.
 

Brickwizard

Well-Known Member
Joined
Apr 28, 2021
Messages
3,167
Reaction score
2,058
Credits
23,570
@kapouer Welcome to the forums, and thanks for the input
 
OP
S

shimmy00

New Member
Joined
Sep 13, 2022
Messages
6
Reaction score
0
Credits
125
Hi there, I've just spent some time installing debian on asus c201 laptop, which has rockchip 3288 cpu and some mali gpu, emmc, and so on. Support for that kind of platform (including RK3588 and Valhall gpu) has landed quite recently: around june, and it is still being stabilized by awesome linux developers.
For example on that laptop linux 6.0.0-rc4 has several annoying bugs fixed when compared to linux 5.19.8.
I mean, follow advices, install debian, install latest versions of anything you can.
Also understand that X is replaced by Wayland - you won't get something working with X on that kind of hardware.

Thanks, and yes because the platform itself is still quite new, too. The thing is though, they shipped with it an Ubuntu 20.04 image with their own patched kernel and what I am trying to figure out is if I can install that same version and with same patched kernel (5.10.66) (they are also good enough to provide the source code [though technically they have to because the GPL, etc.] for it). And that's what I've been trying to do, but the graphics don't want to work even with that - there's something "magic" about the provided disk image, which can only flash to eMMC and I want to make it hard drive-based so why I don't use it. You also mention about using wayland, and apparently some more digging showed me the stock image also uses wayland, but I am not familiar with it. How would you set it up and cannibalize whatever's needed from the stock image (including any proprietary drivers) to get it to at least bring up the graphical display?

Also, cool to see there is an RK3x88 that works here but probably that would have been much worse due to lack of vroom. The RK3588 seems from my testing on what does work at least as good if not somewhat faster than a 2018-era Core i3 core-for-core and has twice the cores (but not all of same capability due to the ARM big.LITTLE philosophy), which was what I got it to replace because I wanted something with lower power consumption, alternative to Intel's desktop monopoly (and not Apple's walled garden stuff so, while super performant, the Mx stuff was out), and more physical portability, and the small-form ARM boards that float around out there looked like interesting options. (RISC-V also looks really interesting and is more open than ARM but really lags as a prime-time platform in the hardware performance itself so far so I didn't go for it.) Overall I really like my RK3588 so far, but I want to be able to run stuff on it other than just Android, but if it is not yet up to prime time in terms of software support maybe I just have to wait on it (but still, why then can't I get 20.04 Ubuntu with the provided board kernel to show graphics)?
 

Brickwizard

Well-Known Member
Joined
Apr 28, 2021
Messages
3,167
Reaction score
2,058
Credits
23,570
OP
S

shimmy00

New Member
Joined
Sep 13, 2022
Messages
6
Reaction score
0
Credits
125
$100 Digital Ocean Credit
Get a free VM to test out Linux!

Linux.org Hosting Donations
Consider making a donation

Members online


Latest posts

Top