Feature request: Official Anki build for Linux ARM

It would be great to see official Linux ARM builds for Anki.
This would benefit:

  • ARM-based Chromebooks running Linux
  • Raspberry Pi and other ARM SBCs
  • Android tablets/phones using the Linux terminal environment introduced in newer Android versions

With Android adding native Linux terminal support and ARM devices becoming more common, an official ARM build could make Anki much more accessible on low-power and portable devices without relying on unofficial packages or emulation.

Anki 25.07+ supports ARM. Have you tried that?

Try the latest launcher release: Release 25.09 · ankitects/anki · GitHub

I tested the ARM64 launcher on Debian 13 ARM in a UTM VM and managed to get it running, but I hit a number of missing runtime dependencies along the way (libminizip.so.1, libxcb-cursor0, etc.).

Would it be possible for the installer/launcher to:

  • check for required system libraries before launch, and
  • either auto-install them when possible or at least print the exact package names/commands needed at the end?

Right now the launcher installs successfully, but users only discover missing dependencies one at a time through Python/Qt errors after attempting to start Anki.

Since ARM Linux environments are becoming more relevant (Android 16 Linux Terminal, Chromebooks, ARM laptops, Apple Silicon VMs, etc.), having dependency detection built into the launcher could make ARM onboarding much smoother.

Terminal Session / Error Log During ARM64 Anki Installation on Debian 13 (UTM VM)

debian@debian:~/Downloads/anki-launcher-25.09-linux$ anki
Traceback (most recent call last):
File “”, line 1, in 
import aqt, sys; sys.argv[0] = ‘Anki’; aqt.run()
^^^^^^^^^^^^^^^
File “/home/debian/.local/share/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/init.py”, line 65, in 
from aqt import gui_hooks
File “/home/debian/.local/share/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/gui_hooks.py”, line 11, in 
from _aqt.hooks import *
File “/home/debian/.local/share/AnkiProgramFiles/.venv/lib/python3.13/site-packages/_aqt/hooks.py”, line 18, in 
from aqt.qt import QDialog, QEvent, QMenu, QModelIndex, QWidget, QMimeData
File “/home/debian/.local/share/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/qt/init.py”, line 19, in 
from .qt6 import *
File “/home/debian/.local/share/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/qt/qt6.py”, line 18, in 
from PyQt6.QtWebEngineCore import *
ImportError: libminizip.so.1: cannot open shared object file: No such file or directory
debian@debian:~/Downloads/anki-launcher-25.09-linux$ anki

Traceback (most recent call last):
File “”, line 1, in 
import aqt, sys; sys.argv[0] = ‘Anki’; aqt.run()
^^^^^^^^^^^^^^^
File “/home/debian/.local/share/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/init.py”, line 65, in 
from aqt import gui_hooks
File “/home/debian/.local/share/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/gui_hooks.py”, line 11, in 
from _aqt.hooks import *
File “/home/debian/.local/share/AnkiProgramFiles/.venv/lib/python3.13/site-packages/_aqt/hooks.py”, line 18, in 
from aqt.qt import QDialog, QEvent, QMenu, QModelIndex, QWidget, QMimeData
File “/home/debian/.local/share/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/qt/init.py”, line 19, in 
from .qt6 import *
File “/home/debian/.local/share/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/qt/qt6.py”, line 18, in 
from PyQt6.QtWebEngineCore import *
ImportError: libminizip.so.1: cannot open shared object file: No such file or directory
debian@debian:~/Downloads/anki-launcher-25.09-linux$ sudo apt install libminizip1
Note, selecting ‘libminizip1t64’ instead of ‘libminizip1’
Installing:
libminizip1t64

Summary:
Upgrading: 0, Installing: 1, Removing: 0, Not Upgrading: 0
Download size: 0 B / 52.6 kB
Space needed: 121 kB / 188 GB available

Media change: please insert the disc labeled
‘Debian GNU/Linux 13.4.0 Trixie - Official arm64 DVD Binary-1 with firmware 20260314-11:55’
in the drive ‘/media/cdrom/’ and press [Enter]

Get:1 cdrom://[Debian GNU/Linux 13.4.0 Trixie - Official arm64 DVD Binary-1 with firmware 20260314-11:55] trixie/main arm64 libminizip1t64 arm64 1:1.3.dfsg+really1.3.1-1+b1 [52.6 kB]
Selecting previously unselected package libminizip1t64:arm64.
(Reading database … 137642 files and directories currently installed.)
Preparing to unpack …/libminizip1t64_1.3.dfsg+really1.3.1-1+b1_arm64.deb …
Unpacking libminizip1t64:arm64 (1:1.3.dfsg+really1.3.1-1+b1) …
Setting up libminizip1t64:arm64 (1:1.3.dfsg+really1.3.1-1+b1) …
Processing triggers for libc-bin (2.41-12+deb13u2) …
debian@debian:~/Downloads/anki-launcher-25.09-linux$ anki
Starting Anki 25.09.4…
Wayland support is disabled by default due to bugs:






You can force it on with an env var: ANKI_WAYLAND=1
Qt warning: From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.
Qt info: Could not load the Qt platform plugin “xcb” in “” even though it was found.
Qt fatal: This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: wayland, minimalegl, vkkhrdisplay, xcb, linuxfb, wayland-egl, eglfs, minimal, vnc, offscreen.

Aborted
debian@debian:~/Downloads/anki-launcher-25.09-linux$ sudo apt install libxcb-cursor0
Installing:
libxcb-cursor0

Summary:
Upgrading: 0, Installing: 1, Removing: 0, Not Upgrading: 0
Download size: 0 B / 17.1 kB
Space needed: 92.2 kB / 188 GB available

Get:1 cdrom://[Debian GNU/Linux 13.4.0 Trixie - Official arm64 DVD Binary-1 with firmware 20260314-11:55] trixie/main arm64 libxcb-cursor0 arm64 0.1.5-1 [17.1 kB]
Selecting previously unselected package libxcb-cursor0:arm64.
(Reading database … 137650 files and directories currently installed.)
Preparing to unpack …/libxcb-cursor0_0.1.5-1_arm64.deb …
Unpacking libxcb-cursor0:arm64 (0.1.5-1) …
Setting up libxcb-cursor0:arm64 (0.1.5-1) …
Processing triggers for libc-bin (2.41-12+deb13u2) …
debian@debian:~/Downloads/anki-launcher-25.09-linux$ anki
Starting Anki 25.09.4…
Wayland support is disabled by default due to bugs:






You can force it on with an env var: ANKI_WAYLAND=1
File “”, line 1, in 
import aqt, sys; sys.argv[0] = ‘Anki’; aqt.run()
File “/home/debian/.local/share/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/init.py”, line 565, in run
_run()
File “/home/debian/.local/share/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/init.py”, line 637, in _run
pmLoadResult = pm.setupMeta()
File “/home/debian/.local/share/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/profiles.py”, line 143, in setupMeta
res = self._loadMeta()
File “/home/debian/.local/share/AnkiProgramFiles/.venv/lib/python3.13/site-packages/aqt/profiles.py”, line 432, in _loadMeta
traceback.print_stack()
resetting corrupt _global
Qt info: OpenType support missing for “Cantarell”, script 15
Qt info: OpenType support missing for “DejaVu Sans”, script 15
Qt info: OpenType support missing for “Nimbus Sans”, script 15
Qt info: OpenType support missing for “URW Gothic”, script 15
Qt info: OpenType support missing for “Nimbus Sans Narrow”, script 15
Qt info: OpenType support missing for “OpenSymbol”, script 15
Qt info: OpenType support missing for “Quicksand”, script 15
Qt info: OpenType support missing for “DejaVu Math TeX Gyre”, script 15
Qt info: OpenType support missing for “DejaVu Sans Mono”, script 15
Qt info: OpenType support missing for “DejaVu Serif”, script 15
Qt info: OpenType support missing for “Liberation Mono”, script 15
Qt info: OpenType support missing for “Liberation Sans”, script 15
Qt info: OpenType support missing for “Liberation Serif”, script 15
Qt info: OpenType support missing for “Noto Sans Mono”, script 15
Qt info: OpenType support missing for “D050000L”, script 15
Qt info: OpenType support missing for “Standard Symbols PS”, script 15
Qt info: OpenType support missing for “C059”, script 15
Qt info: OpenType support missing for “Nimbus Mono PS”, script 15
Qt info: OpenType support missing for “Nimbus Roman”, script 15
Qt info: OpenType support missing for “P052”, script 15
Qt info: OpenType support missing for “Noto Mono”, script 15
Qt info: OpenType support missing for “Droid Sans Fallback”, script 15
Qt info: OpenType support missing for “Courier 10 Pitch”, script 15
Qt info: OpenType support missing for “Bitstream Charter”, script 15
Qt info: OpenType support missing for “Symbola”, script 15
Qt info: OpenType support missing for “Liberation Sans Narrow”, script 15
Qt info: OpenType support missing for “Quicksand Medium”, script 15
Qt info: OpenType support missing for “Quicksand Light”, script 15
Qt info: OpenType support missing for “URW Bookman”, script 15
Qt info: OpenType support missing for “Z003”, script 15
Qt info: OpenType support missing for “Noto Color Emoji”, script 15
Qt info: OpenType support missing for “”, script 15
Qt info: OpenType support missing for “”, script 15
Qt info: OpenType support missing for “”, script 15
2026-05-09 09:44:53,339:INFO:aqt.mediasrv: Serving on http://127.0.0.1:42311
Starting main loop…
libva error: /usr/lib/aarch64-linux-gnu/dri/virtio_gpu_drv_video.so init failed
mpv not found, reverting to mplayer
[3268:7:0509/094453.786437:ERROR:command_buffer_proxy_impl.cc(131)] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.
[3280:7:0509/094453.872828:ERROR:command_buffer_proxy_impl.cc(131)] ContextResult::kTransientFailure: Failed to send GpuControl.CreateCommandBuffer.

This is also an issue with the x64 build: Install & Upgrade - Anki Manual

The proper solution is probably to provide a .deb package, but that might require building several ones for different distros.

Yeah, a proper .deb package would definitely be ideal, but I can understand how maintaining distro-specific packages across different distros/releases/architectures would become tedious.

Maybe as an interim improvement, the install script/launcher could check for required runtime dependencies beforehand and then either:

  • automatically install them when possible, or
  • print a consolidated list of missing packages with the corresponding sudo apt install … command for the user to run manually.

Right now the process tends to fail one dependency at a time during launch, which makes troubleshooting harder than it probably needs to be.

Not all distros use sudo apt. Anyways, maybe just print a message if unmet dependencies are detected saying something along the lines of:

Make sure all dependencies are installed, see https://docs.ankiweb.net/platform/linux/installing.html#requirements

That way, we would only have to update a single place regarding dependencies.

We have some system dependencies specified here for the new (unreleased) installer, but they are currently unused as we decided against building .deb packages for now: anki/qt/installer/app/pyproject.toml at fc88f585248c9096176afac5b2629747cbe4b958 · ankitects/anki · GitHub

We can install them in the custom install script for Debian-based distros at least.

That sounds like a great middle ground honestly since Chromebooks and android linux vm are debian

Logged here: