Created
February 28, 2026 06:49
-
-
Save Bortus-AI/c9a79371b561c716874ba2cc2bd2f3cf to your computer and use it in GitHub Desktop.
Intel Arc Pro B50 (Battlemage) on Linux — Setup Guide
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Debian 12 Guide | |
| # Intel Arc Pro B50 (Battlemage) on Linux — Setup Guide | |
| Getting Intel Arc Pro B50 GPUs working on Debian 12 (Bookworm) with SR-IOV passthrough. | |
| ## The Problem | |
| The Intel Arc Pro B50 uses the **Battlemage G21** GPU (`8086:e212`), which requires the | |
| **`xe` kernel driver**. Out of the box on Debian Bookworm, you'll hit two issues: | |
| 1. **Kernel too old** — Debian Bookworm ships kernel 6.1, which doesn't include the `xe` driver at all. Even the backports kernel (6.12) includes `xe` but lacks SR-IOV Virtual Function (VF) support. | |
| 2. **PCODE timeout on VFs** — If the GPUs are passed through as SR-IOV Virtual Functions, kernels before 6.17 will fail with: | |
| ``` | |
| xe 0000:00:10.0: [drm] *ERROR* PCODE initialization timedout after: 3 min | |
| xe 0000:00:10.0: probe with driver xe failed with error -110 | |
| ``` | |
| This happens because the PCODE mailbox only exists on the Physical Function (PF), and older `xe` drivers don't know how to handle VFs. | |
| ## Requirements | |
| - Debian 12 (Bookworm) — amd64 | |
| - Intel Arc Pro B50 GPUs (device ID `8086:e212`) | |
| - Root access | |
| ## Step 1: Install Kernel 6.19+ | |
| Kernel 6.17+ added VF support to the xe driver. We use the Ubuntu mainline kernel PPA | |
| packages, which work on Debian. | |
| ```bash | |
| mkdir -p /tmp/kernel619 && cd /tmp/kernel619 | |
| # Download kernel 6.19 packages | |
| wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.19/amd64/linux-image-unsigned-6.19.0-061900-generic_6.19.0-061900.202602082231_amd64.deb | |
| wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.19/amd64/linux-modules-6.19.0-061900-generic_6.19.0-061900.202602082231_amd64.deb | |
| ``` | |
| > **Note:** You only need the image and modules packages. The headers packages have | |
| > Ubuntu-specific dependencies (`libc6 >= 2.38`, `libdw1t64`, etc.) that won't resolve | |
| > on Bookworm. Headers are only needed if you're compiling kernel modules — skip them | |
| > for a basic install. | |
| Install the `wireless-regdb` dependency first, then the kernel: | |
| ```bash | |
| apt update | |
| apt install -y wireless-regdb | |
| dpkg -i linux-modules-6.19.0-061900-generic_6.19.0-061900.202602082231_amd64.deb \ | |
| linux-image-unsigned-6.19.0-061900-generic_6.19.0-061900.202602082231_amd64.deb | |
| ``` | |
| ## Step 2: Install Battlemage GPU Firmware | |
| The `xe` driver needs firmware files that aren't included in Debian's firmware packages. | |
| ```bash | |
| git clone --depth 1 https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git /tmp/linux-firmware | |
| cp -r /tmp/linux-firmware/xe /lib/firmware/xe/ | |
| cp -r /tmp/linux-firmware/i915 /lib/firmware/i915/ | |
| ``` | |
| Key firmware files for Battlemage: | |
| - `/lib/firmware/xe/bmg_guc_70.bin` — GuC microcontroller firmware | |
| - `/lib/firmware/xe/bmg_huc.bin` — HuC media firmware | |
| ## Step 3: Update GRUB and Reboot | |
| ```bash | |
| update-grub | |
| reboot | |
| ``` | |
| GRUB should automatically pick up the new kernel as the default entry. If not, select | |
| `6.19.0-061900-generic` from the GRUB menu at boot. | |
| ## Step 4: Verify | |
| After reboot, confirm everything is working: | |
| ```bash | |
| # Kernel version | |
| uname -r | |
| # Expected: 6.19.0-061900-generic | |
| # Driver binding | |
| lspci -nnk -d 8086:e212 | |
| # Expected: "Kernel driver in use: xe" on each GPU | |
| # Render nodes | |
| ls /dev/dri/ | |
| # Expected: card1, card2, renderD128, renderD129 (card0 is typically the virtual VGA) | |
| ``` | |
| Successful output looks like: | |
| ``` | |
| 00:10.0 VGA compatible controller [0300]: Intel Corporation Battlemage G21 [Intel Graphics] [8086:e212] | |
| Subsystem: Intel Corporation Battlemage G21 [Intel Graphics] [8086:1114] | |
| Kernel driver in use: xe | |
| Kernel modules: xe | |
| ``` | |
| ## Troubleshooting | |
| ### PCODE timeout (error -110) | |
| You're on a kernel older than 6.17, or the GPUs are passed through as VFs without | |
| proper xe VF support. Upgrade the kernel. | |
| ### Missing firmware | |
| Check `dmesg | grep -i firmware` for errors. Ensure `/lib/firmware/xe/bmg_guc_70.bin` | |
| and `/lib/firmware/xe/bmg_huc.bin` exist. | |
| ### No render nodes (`/dev/dri/renderD*`) | |
| Check `dmesg | grep -i xe` for probe errors. If the driver loaded but no render nodes | |
| appeared, try `modprobe -r xe && modprobe xe`. | |
| ### OOM on probe (error -12) | |
| The xe driver needs sufficient system memory to map GPU BARs. Ensure the system has | |
| enough free RAM (each B50 maps a 2GB BAR). | |
| ## References | |
| - [Level1Techs: Proxmox 9.0 + Intel B50 SR-IOV Guide](https://forum.level1techs.com/t/proxmox-9-0-intel-b50-sr-iov-finally-its-almost-here-early-adopters-guide/238107?page=5) | |
| - [Ubuntu Mainline Kernel PPA](https://kernel.ubuntu.com/~kernel-ppa/mainline/) | |
| - [Linux upstream firmware repository](https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment