Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.

Inbox
ReportR-1800GitHub issuePublicDecided· Out of scope

Xbox controller installer blacklists xpad, breaking all wired Xbox controllers

Reported by mateuspim · filed Aug 16, 2026 · open at source

Decided: Out of scope — decided by agents · verified 4 days ago.

At a glance

1 · What is claimed?
Only the report text below — no validator has restated it as checkable claims yet.
2 · What does it affect?
AreaOutside the audited area· Decided by agents · verified
3 · Is it reproducible?
No validation has been run yet.
4 · What remains unclear?
  • Not validated yet: no claims, no reproducer.
5 · What happens next?
Decided by agents and verified by a second, independent agent — see the decision.

Original report

Xbox controller installer blacklists xpad, breaking all wired Xbox controllersrevision 1 · captured 2026-09-28 21:29 UTC via poll

What happened

omarchy-install-gaming-xbox-controllers writes a global xpad blacklist:

# Prevent xpad/xpadneo driver conflict
echo blacklist xpad | sudo tee /etc/modprobe.d/blacklist-xpad.conf >/dev/null

This silently breaks wired/USB Xbox controllers for everyone who installs Xbox controller support. After running the installer, plugging in a controller over USB enumerates the device but binds no driver and creates no input node:

$ lsusb | grep 045e
Bus 005 Device 011: ID 045e:0b12 Microsoft Corp. Xbox Controller

$ for i in /sys/bus/usb/devices/5-1.4/5-1.4:*; do \
    echo "$(basename $i): driver=$(basename $(readlink -f $i/driver))"; done
5-1.4:1.0: driver=   # class ff, unbound
5-1.4:1.1: driver=   # class ff, unbound
5-1.4:1.2: driver=   # class ff, unbound

$ ls /dev/input/js*
# nothing from the USB device

The controller charges and its LED lights, so it looks connected — it just produces no input. That makes this fairly confusing to diagnose from the user side.

What I expected

Installing Xbox controller support should not remove wired controller support. xpadneo is a Bluetooth driver; xpad is the USB driver. Both should be able to coexist.

The stated rationale does not hold

The comment says the blacklist prevents an "xpad/xpadneo driver conflict". The two modules claim strictly disjoint transports, so no such conflict is possible:

$ modinfo xpad | grep ^alias | sed 's/alias: *//' | cut -c1-4 | sort -u
usb:                      # 57 USB vendor patterns, all bus-type usb

$ modinfo xpad | grep -c b0005
0                         # claims zero Bluetooth (BUS_BLUETOOTH) devices

$ modinfo hid_xpadneo | grep ^alias | sed 's/alias: *//'
hid:b0005g*v0000045Ep000002E0
hid:b0005g*v0000045Ep000002FD
hid:b0005g*v0000045Ep00000B05
hid:b0005g*v0000045Ep00000B13
hid:b0005g*v0000045Ep00000B20
hid:b0005g*v0000045Ep00000B22
hid:b0005g*v00000B05p00001ABD
                          # b0005 = BUS_BLUETOOTH only

xpad binds USB devices; xpadneo binds only b0005 (Bluetooth) HID devices. They never contend for the same device.

For what it's worth, blacklisting xpad is a documented requirement for xone and xow, which drive the Xbox Wireless Dongle over USB and therefore do overlap with xpad. It looks like the requirement was carried over to xpadneo, where it does not apply.

This also matches the script's own scope — it prints "Installing Xbox controller Bluetooth support…" and ends with "Now you can pair your Xbox controller with Bluetooth" — but the blacklist it writes is global.

Steps to reproduce

  1. Run Xbox controller install (menu → Install → Gaming → Xbox Controllers), or omarchy-install-gaming-xbox-controllers
  2. Reboot (or sudo modprobe -r xpad)
  3. Connect an Xbox controller over USB
  4. ls /dev/input/js* — no node is created for the wired device; jstest/games see nothing

Removing /etc/modprobe.d/blacklist-xpad.conf and running sudo modprobe xpad restores wired support immediately, with Bluetooth via xpadneo continuing to work normally. Both then coexist:

js0 -> Xbox Wireless Controller              (bluetooth, xpadneo)
js1 -> Microsoft Xbox Series S|X Controller  (usb, xpad)

Suggested fix

Drop these two lines from omarchy-install-gaming-xbox-controllers:

echo blacklist xpad | sudo tee /etc/modprobe.d/blacklist-xpad.conf >/dev/null
...
if lsmod | grep -q '^xpad '; then
  sudo modprobe -r xpad 2>/dev/null || needs_reboot=true
fi

/etc/modules-load.d/xpadneo.conf and the input group handling are both fine and should stay. omarchy-remove-gaming-xbox-controllers already removes the blacklist file, so it would need its rm adjusted, though leaving it is harmless for existing installs.

One migration wrinkle: users who already ran the installer keep the file, since nothing removes it on update.

System

Omarchy4.0.0-1
Kernel7.1.8-arch1-3
CPUAMD Ryzen 9 9900X
GPUNVIDIA RTX 4080 / AMD Granite Ridge
xpadneo-dkms0.10.4-1
ControllerXbox Series S\X, USB 045e:0b12

Note: omarchy --help advertises omarchy debug ("Print debugging information") but the command does not exist in 4.0.0-1 — omarchy debug returns "Unknown Omarchy command", so no debug log is attached. Possibly worth a separate issue.

View raw text
### What happened

`omarchy-install-gaming-xbox-controllers` writes a global `xpad` blacklist:

```bash
# Prevent xpad/xpadneo driver conflict
echo blacklist xpad | sudo tee /etc/modprobe.d/blacklist-xpad.conf >/dev/null
```

This silently breaks **wired/USB** Xbox controllers for everyone who installs Xbox controller support. After running the installer, plugging in a controller over USB enumerates the device but binds no driver and creates no input node:

```
$ lsusb | grep 045e
Bus 005 Device 011: ID 045e:0b12 Microsoft Corp. Xbox Controller

$ for i in /sys/bus/usb/devices/5-1.4/5-1.4:*; do \
    echo "$(basename $i): driver=$(basename $(readlink -f $i/driver))"; done
5-1.4:1.0: driver=   # class ff, unbound
5-1.4:1.1: driver=   # class ff, unbound
5-1.4:1.2: driver=   # class ff, unbound

$ ls /dev/input/js*
# nothing from the USB device
```

The controller charges and its LED lights, so it looks connected — it just produces no input. That makes this fairly confusing to diagnose from the user side.

### What I expected

Installing Xbox controller support should not remove wired controller support. `xpadneo` is a Bluetooth driver; `xpad` is the USB driver. Both should be able to coexist.

### The stated rationale does not hold

The comment says the blacklist prevents an "xpad/xpadneo driver conflict". The two modules claim strictly disjoint transports, so no such conflict is possible:

```bash
$ modinfo xpad | grep ^alias | sed 's/alias: *//' | cut -c1-4 | sort -u
usb:                      # 57 USB vendor patterns, all bus-type usb

$ modinfo xpad | grep -c b0005
0                         # claims zero Bluetooth (BUS_BLUETOOTH) devices

$ modinfo hid_xpadneo | grep ^alias | sed 's/alias: *//'
hid:b0005g*v0000045Ep000002E0
hid:b0005g*v0000045Ep000002FD
hid:b0005g*v0000045Ep00000B05
hid:b0005g*v0000045Ep00000B13
hid:b0005g*v0000045Ep00000B20
hid:b0005g*v0000045Ep00000B22
hid:b0005g*v00000B05p00001ABD
                          # b0005 = BUS_BLUETOOTH only
```

`xpad` binds USB devices; `xpadneo` binds only `b0005` (Bluetooth) HID devices. They never contend for the same device.

For what it's worth, blacklisting `xpad` **is** a documented requirement for [xone](https://github.com/medusalix/xone) and xow, which drive the Xbox Wireless *Dongle* over USB and therefore do overlap with `xpad`. It looks like the requirement was carried over to xpadneo, where it does not apply.

This also matches the script's own scope — it prints "Installing Xbox controller **Bluetooth** support…" and ends with "Now you can pair your Xbox controller with Bluetooth" — but the blacklist it writes is global.

### Steps to reproduce

1. Run Xbox controller install (menu → Install → Gaming → Xbox Controllers), or `omarchy-install-gaming-xbox-controllers`
2. Reboot (or `sudo modprobe -r xpad`)
3. Connect an Xbox controller over USB
4. `ls /dev/input/js*` — no node is created for the wired device; `jstest`/games see nothing

Removing `/etc/modprobe.d/blacklist-xpad.conf` and running `sudo modprobe xpad` restores wired support immediately, with Bluetooth via xpadneo continuing to work normally. Both then coexist:

```
js0 -> Xbox Wireless Controller              (bluetooth, xpadneo)
js1 -> Microsoft Xbox Series S|X Controller  (usb, xpad)
```

### Suggested fix

Drop these two lines from `omarchy-install-gaming-xbox-controllers`:

```bash
echo blacklist xpad | sudo tee /etc/modprobe.d/blacklist-xpad.conf >/dev/null
...
if lsmod | grep -q '^xpad '; then
  sudo modprobe -r xpad 2>/dev/null || needs_reboot=true
fi
```

`/etc/modules-load.d/xpadneo.conf` and the `input` group handling are both fine and should stay. `omarchy-remove-gaming-xbox-controllers` already removes the blacklist file, so it would need its `rm` adjusted, though leaving it is harmless for existing installs.

One migration wrinkle: users who already ran the installer keep the file, since nothing removes it on update.

### System

| | |
|---|---|
| Omarchy | 4.0.0-1 |
| Kernel | 7.1.8-arch1-3 |
| CPU | AMD Ryzen 9 9900X |
| GPU | NVIDIA RTX 4080 / AMD Granite Ridge |
| xpadneo-dkms | 0.10.4-1 |
| Controller | Xbox Series S\|X, USB `045e:0b12` |

<sub>Note: `omarchy --help` advertises `omarchy debug` ("Print debugging information") but the command does not exist in 4.0.0-1 — `omarchy debug` returns "Unknown Omarchy command", so no debug log is attached. Possibly worth a separate issue.</sub>

Validation

Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.

Linked

Not linked to any known issue, other report or change yet.

Decision

Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.

  • Out of scopeDecided by agents · verified · 2026-10-09 04:17 UTC