docs/en/resources/troubleshooting.mdx
import Feedback from "/snippets/page-feedback.mdx";
```powershell
Set-Alias geniex (where.exe geniex)
```
- **llama.cpp (GGUF):** raise it at runtime, e.g. `geniex infer <model> --nctx 8192`, up to the model's trained maximum. A larger window uses more memory.
- **Qualcomm AI Engine Direct (NPU):** the window is fixed in the compiled bundle and `--nctx` has no effect. Add `--sliding-window` to keep chatting (evicts the oldest context), or pull a bundle built for a longer context.
See [Increasing the context length](/en/run/cli/reference#increasing-the-context-length).
```bash
geniex pull ai-hub-models/Qwen3-4B-Instruct-2507
```
Then restart `geniex serve`.
1. **Registry login.** Docker Hub (`docker.io/qualcomm/geniex`) is public and needs no login. For the Qualcomm Container Registry, log in first:
```bash bash
# Qualcomm Container Registry:
docker login docker-registry.qualcomm.com -u '$app' -p GB2S6KXMJXTPV8VHNFNS7Q6LVH75LOOBTLT8D723WUX6PSFZMTX95GIQG4EFWH5C021ONZ5763VI9IDHU96Q7VAZJ2830CLX3NPI6STQOJWRYXLLA2ZYTL1S
```
You should see `Login Succeeded`.
2. **Docker group membership.** If `docker pull` returns `permission denied while trying to connect to the docker API at unix:///var/run/docker.sock`, your user isn't in the `docker` group:
```bash bash
sudo usermod -aG docker $USER
newgrp docker # apply the new group in the current shell
```
Then retry the pull.
```bash bash
sudo ln -sf /usr/lib/aarch64-linux-gnu/libcdsprpc.so.1 /usr/lib/aarch64-linux-gnu/libcdsprpc.so
sudo ln -sf /usr/lib/aarch64-linux-gnu/libadsprpc.so.1 /usr/lib/aarch64-linux-gnu/libadsprpc.so
sudo ldconfig
```
This check is global: every backend needs those instructions, so switching `--compute` to `cpu`, `gpu`, or `npu` won't help on such a device. Check what your CPU reports:
```bash bash
LD_SHOW_AUXV=1 /bin/true | grep AT_HWCAP # look for atomics, asimdrdm, asimddp, fphp, asimdhp
cat /proc/cpuinfo | grep Features # same features, under the kernel's names
```
If those features are absent, install the **CPU-only** build instead. It is compiled for plain `armv8.0-a` with no ISA extensions, ships CPU inference only (no QAIRT/NPU, no OpenCL/GPU, no Hexagon), and is correspondingly slower — ggml falls back to its fp32 quant kernels without `dotprod`/`fp16`. Every channel asks for it explicitly; nothing is auto-detected:
```bash bash
curl -fsSL https://raw.githubusercontent.com/qualcomm/GenieX/main/cli/release/linux/install.sh | sh -s -- --cpu-only
```
| Channel | How to select the CPU-only build |
| --- | --- |
| `install.sh` | `--cpu-only` |
| `pip install geniex` | `GENIEX_SDK_VARIANT=cpu` |
| Docker | the `-cpu` tag — `docker.io/qualcomm/geniex:latest-cpu` |
`geniex-qairt` has no CPU-only build at all: QAIRT needs an NPU, and these boards have none. Use `geniex-llama-cpp` (or the `geniex` meta package, which drops the QAIRT backend automatically on such a board).
If the CPU-only build still fails, report it in [GitHub Issues](https://github.com/qualcomm/GenieX/issues) or Slack with the output above.
Ship the **CPU-only** AAR on those devices — `geniex-android-aar-cpu-<tag>.aar` from the [release assets](https://github.com/qualcomm/GenieX/releases). It is compiled for plain `armv8.0-a` with no ISA extensions, ships CPU inference only (no Qualcomm AI Engine Direct, no OpenCL, no Hexagon), and is correspondingly slower. Otherwise it is a drop-in replacement: same `com.geniex.sdk` namespace and API. Only the default AAR is published to Maven Central.