Twister OS Armbian 2.01 on VIM3! GL Acceleration Fan and AUDIO - Full HOWTO and Working Image DL

@JeremiahCornelius you guys managed to overclock the CPU in the mainline kernel ?

1 Like

This is mainline kernel/uboot, yes. Stock Armbian meson kernel.

I have been running mine at standard clock, as I am building this image. I needed to test for stability, etc., before launching system images at the unsuspecting public! :slight_smile:

@jtremblant is an early adopter, and because he works on the TwisterOS team, he hasn’t been ginger about turning the knobs to 11.

I’ll be following in his footsteps, shortly.

Now this works, I have a couple other VIM3 ports in mind, as community image builds, leveraging the Armbian/Focal base. Being able to confidently OC these is a plus - as I want to use this as my build platform, rather than xcompile on IA64.

1 Like

can you share the necessary changes you made to overclock ?, might be helpful to some folks in the community wanting the extra bit of speed on mainline :slightly_smiling_face:

sudo armbian-config


@jtremblant I am referring to the changes in the kernel and dtb, etc.

Nothing done there. It worked out-of-the-box for me. Of course there’s always the silicon lottery matter. Even without a khadas FAN mine is running totally passive, it reached a max temp of 56 degrees Celsius at full load with max overclocking speeds & performance governor.

1 Like

The kernel in this image is the Armbian Mainline Current kernel dpkg, as noted in my original topic-head posting.
Ditto for the dtb. That’s the dtb that shipped with this kernel package - it is the SAME dtb that is shipped with Armbian universal images, which is how I was able to first get this platform port of TwisterOS from RK3399 started!

1 Like

I see, then I will have too look at that kernel source to see the differences, thanks for the info :slightly_smiling_face:

Hi @JeremiahCornelius

Thank you so much for your great work and excellent port of Twister OS!

It booted well from SD card and hyphop Krescue mainline uboot burned to SPI.
I have this configuration because I prefer keeping Android om emmc.

I have only one error during the boot sequence:

Failed to load /boot/dtb/rockchip/overlay/amlogic-fixup.scr

As Overlay folder was in /dtb/amlogic I copied it also to rockchip folder but there is only
meson-fixup.scr instead of amlogic-fixup.scr inside. What is this script for and is it necessary to
pay attention on it as it booted well even with this error?

Can you also add support to NVME M.2 SSD like it was made in Ubuntu with mainline kernel v.5.7.x?
It seems that this is the only distro with mainline uboot and kernel for VIM3 with functional NVME support. Although the only way currently is to start this Ubuntu rom from fat boot partition on SD card and then load Rootfs from NVME SSD . But I confirm that everything started working much faster in this configuration comparing with Rootfs mounted from SD card or even from USB3 .

It would be great if you could make it!

1 Like

nand-sata-install worked like a charm with latest Twister OSArmbian Vim 3 V 2 0 1b.img image. It wasn’t working before with previous image.
TwisterOS Armbian 2.0.1 booting now from eMMC on Vim3 Pro. Blazing Fast boot up times from eMMC and superb desktop experience when running at 2.4Ghz/2.016Ghz with governor performance.

1 Like

Dingo, I’m glad for your good experience. I’ll look into the overlay issue. This is probably a coded startup artifact from moving to Amlogic, from the parent distribution - which is universal Armbian, configured for RK3399.

I’m surprised NVME is not in the mainline kernel. It worked OOB for me on PinebookPro, with DanielT’s Debian image builder. He does lift his Rockchip kernel blobs from Manjaro in this, tho’.

The kernel in this TwisterOS image is bog-standard Linux mainline current meson, as provided by Armbian. apt-get install. I’m loath to change this in the image with patches. I may play with patching-up a .deb, but it isn’t in my list of things to do - it would still diverge the image from the Armbian upgrades path.

Another thing I didn’t do for the image is customize modules - mostly because kernel source would bloat the size, for a fraction of users who’d use dkms. On my own system, I use ecryptfs /home/ directories, on separate USB-SD. Armbian doesn’t include this in their built modules. In the interest of keeping this clean, I’ve kept this out of the image - or it WILL bite someone at the mkinitdr stages of kernel upgrade.

I’m glad for the independent confirmation, without my variables!

It looks awesome. It’s the prettiest of VIM3 desktops that I’ve seen, for sure. That it keeps all of its candy when running top-speed is frizzikin’ brilliant.

Chromium browser is also working great with Panfrost on TwisterOS armbian 2.0.1 on Vim3 Pro. It also has video decoding capabilities on browser. 33 FPS on browser with webgl on aquarium test is the highest I’ve ever seen and that includes all my N2+ and RK3399 boards.

1 Like

Like I said in the topic top-post - if you want the GUI goodies, TwisterOS is the build for your Amlogic SBC. The 32-bit userland is a good compromise for broad compatibility with the huge armhf ecosystem, spawned by RaspberryPi.

Kodi is still a mess with the different repositories in this build - but I only use Kodi for 10-foot experiences, not desktops.

1 Like

I just checked about NVME on VIM3. Enabling it requires disabling the USB3 channel, and the NVME is limited to USB3 speeds. This I/O design is really the weak-spot of this SBC, for a number of alternative use cases.

You can’t “soft enable” NVME in configuration, ether. There’s no /sys/class/mcu/ hierarchy in this running kernel config. I don’t see it’s worth additional effort, for form-factor convenience. You may have a different opinion, and I’d be interested in seeing any effort you’d contribute as an alternate kernel build. For me, that’s still a big tradeoff, moving away from Armbian repository.

I found a display resolution bug on latest TwisterOS armbian 2.0.1 for Vim3 Pro running from eMMC. Similar to the one I had on mainline Archlinux, and Wayfire on my N2+. The Issue is related to a switching resolution problem which defaults to 4K resolution after turn it off Vim3 Pro or when switching HDMI port signals on a 4K PC Monitor or 4K TV.

My desktop resolution is set at 1080p(1920x1080), and TwisterOS Armbian for vim3 pro supports up to 3840x2160(4K) display resolution. I tested it with 3 4K monitors and TV’s and it happened every time.

Here’s a permanent fix:

  • edit /boot/boot.ini
    sudo nano /boot/boot.ini

  • add the following lines:
    setenv display_autodetect "false"
    setenv hdmimode "1080p60hz"
    setenv disablehpd "true"

  • Reboot

  • Problem solved.


Note: This may happen only if you have a 4K PC monitor or 4K TV and you set your display resolution to 1080p(1920x1080) on TwisterOS Armbian 2.0.1 for Vim3 Pro running from eMMC


This is great. I’ve only ever tested on a NexDock Touch, and my antique Dell 1905FP, 1280x1024 19" - which is a rock-solid display.

I will put these tested config changes in an updated image, ASAP!

1 Like

I’ve updated a third rev of the image, including the environment settings you spec’d for boot.ini.
I don’t have a 4K monitor for testing, so do your worst, when you get the chance!

TORRENT: twister-osarmbian-vim-3-v-2-0-1c.img_archive.torrent

HTTP: TwisterOSArmbianVim3-V2-0-1c.img.xz

MD5sum: TwisterOSArmbianVim3-V2-0-1c.img.md5


Thank you for your notes, but it seems that it doesn’t necessary to have /sys/class/mcu/ hierarchy to enable NVME. Actually it is enabled inTwister OS but nvme drive cannot be mounted because of APST (power saving) failure:

pi@twisteros-vim3:~$ dmesg | grep -i nvme
[    2.165437] nvme nvme0: pci function 0000:01:00.0
[    2.165520] nvme 0000:01:00.0: enabling device (0000 -> 0002)
[    2.168788] nvme nvme0: missing or invalid SUBNQN field.
[    2.168899] nvme nvme0: Shutdown timeout set to 8 seconds
[    2.182578] nvme nvme0: 6/0/0 default/read/poll queues
[    2.191107]  nvme0n1: p1 p2 p3
[    2.662035] BTRFS: device label ROOTFS3 devid 1 transid 55 /dev/nvme0n1p3 scanned by btrfs (1514)
[   37.852462] nvme nvme0: controller is down; will reset: CSTS=0xffffffff, PCI_STATUS=0x10
[   37.912576] blk_update_request: I/O error, dev nvme0n1, sector 488396928 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 0
[   37.932473] nvme 0000:01:00.0: enabling device (0000 -> 0002)
[   37.932529] nvme nvme0: Removing after probe failure status: -19 

Than a number of buffer I/O errors and finaly this one:

[   37.985092] nvme nvme0: failed to set APST feature (-19)

Good details of the issue in the end of this article - Solid state drive/NVMe - ArchWiki

I had same issues in Ubuntu 5.7x and in Manjaro and the last imho also doesn’t use MCU. But finally I managed to make NVME mounted even in Manjaro with latest kernel by sending user kernel arguments at the boot.
It can be made in Ubuntu by adding the following line in /Boot/Env.txt


or any number below 1000 or 0 to completely disable APST

The same can be made in Manjaro in /boot/extlinux/extlinux.conf with adding the same line in the end of APPEND section and after reboot we have a different result:

[khadas@ManjaroARM ~]$ dmesg | grep -i nvme
[    0.000000] Kernel command line: root=LABEL=ROOT_MNJRO rootflags=data=writeback rw console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes net.ifnames=0 nvme_core.default_ps_max_latency_us=1000 bootsplash.bootfile=bootsplash-themes/manjaro/bootsplash
[   13.274678] nvme nvme0: pci function 0000:01:00.0
[   13.274819] nvme 0000:01:00.0: enabling device (0000 -> 0002)
[   13.277768] nvme nvme0: missing or invalid SUBNQN field.
[   13.277852] nvme nvme0: Shutdown timeout set to 8 seconds
[   13.346393] nvme nvme0: 6/0/0 default/read/poll queues
[   13.350922]  nvme0n1: p1 p2 p3
[   13.455664] BTRFS: device label ROOTFS3 devid 1 transid 58 /dev/nvme0n1p3 scanned by systemd-udevd (368)
[  176.118936] EXT4-fs (nvme0n1p2): mounted filesystem with ordered data mode. Opts: (null). Quota mode: none.
[  176.167647] BTRFS info (device nvme0n1p3): disk space caching is enabled
[  176.168717] BTRFS info (device nvme0n1p3): has skinny extents
[  176.180069] BTRFS info (device nvme0n1p3): enabling ssd optimizations 

[khadas@ManjaroARM ~]$ lsblk
mmcblk1      179:0    0  59,6G  0 diskresult
└─mmcblk1p2  179:2    0  59,4G  0 part /
mmcblk2      179:32   0  29,1G  0 disk
mmcblk2boot0 179:64   0     4M  1 disk
mmcblk2boot1 179:96   0     4M  1 disk
zram0        254:0    0   5,6G  0 disk [SWAP]
nvme0n1      259:0    0 232,9G  0 disk
├─nvme0n1p1  259:1    0   240M  0 part /run/media/khadas/BOOT
├─nvme0n1p2  259:2    0 100,6G  0 part /run/media/khadas/ROOTFS
└─nvme0n1p3  259:3    0 100,6G  0 part /run/media/khadas/ROOTFS3

I tried to do the same in Twister by adding this line in boot / armbianEnv.txt and env.txt but it makes no effect.

Do you have any idea where else is it possible to write this recommended user kernel arguments to make NVME work in Twister OS?

@jtremblant Can correct me if I am wrong - I think this goes into /boot/boot.ini with a setenv statement.