Skip to content

AYANEO Devices: ensure deck-uhid is selected - #222

Open
jesherman wants to merge 1 commit into
armada-os:mainfrom
jesherman:fix/ayaneo-controller-type-per-device
Open

AYANEO Devices: ensure deck-uhid is selected#222
jesherman wants to merge 1 commit into
armada-os:mainfrom
jesherman:fix/ayaneo-controller-type-per-device

Conversation

@jesherman

@jesherman jesherman commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

controller-type hardcodes DEFAULT_TYPE = "deck-uhid", so every AYANEO gets it regardless of the [xb360, keyboard] its composite config asks for. InputPlumber applies the configured target at startup, then armada-controller-type.service overwrites it a second later over D-Bus:

Setting target devices: [xb360, keyboard]        <- 01-ayaneo-controller.yaml
Setting target devices: [deck-uhid, keyboard]    <- controller-type apply, ~1s later

deck-uhid presents to Steam as a Steam Deck Controller, which has a physical QAM button. Steam only offers its Guide+A → QAM fallback to controllers without one, so a device with no QuickAccess source of its own is left with no way into the Quick Access Menu at all.

Take the default from the device profile instead. /etc/armada/controller.conf and the Armada Control toggle still override it; an invalid or missing value falls back to deck-uhid.

  • Pocket EVOdeck-uhid. AYA SPACE is a real QuickAccess button, and =, LC and RC are paddles, which only exist on that target.
  • Pocket S 2Kxb360. Its device tree declares no aya-keys node and its MCU reports 11 buttons, so it emits neither BTN5 (QuickAccess) nor any paddle button in ayaneo_mcu_xbox.yaml. Nothing live is lost, and Guide+A works again. Should move back to deck-uhid when it gets an aya-keys node, since paddles only exist there.
  • Everything else keeps deck-uhid via defaults.conf.

Pocket DS is deliberately left alone: if its MCU emits BTN5 it already has QAM today, and xb360 would risk its paddles.

Measured on a Pocket EVO

Target AYA SPACE → QAM Guide+A Guide+X paddles
deck-uhid works dead dead work
xb360 works opens QAM opens menu dead

QuickAccess reaches Steam on both targets, so the paddles decide the split. This is not caused by advertising the capability — with every QuickAccess mapping removed, Guide+A still did nothing on deck-uhid, so #75 is not implicated.

Testing

S 2K owners can reproduce without a build: sudo /usr/libexec/armada/controller-type set xb360. DS owners, check whether your AYA button and paddles work today — that decides whether the DS should join.

Addresses the missing QAM half of #191 / #50 with no device-tree change.

Guide+X is unaffected either way: SHOW_KEYBOARD never fires on ARM, and xb360 loads no chord file. The README known-issue entry is updated to say so.

🤖 Generated with Claude Code

@jesherman jesherman changed the title Pick the emulated controller per device AYANEO Devices: Pick the emulated controller per device Aug 5, 2026
@jesherman
jesherman force-pushed the fix/ayaneo-controller-type-per-device branch from bcc61e9 to 8b7ba00 Compare August 5, 2026 14:59
@jesherman jesherman changed the title AYANEO Devices: Pick the emulated controller per device AYANEO Devices: ensure deck-uhid is selected Aug 5, 2026
@jesherman
jesherman force-pushed the fix/ayaneo-controller-type-per-device branch from 8b7ba00 to 0fef4cb Compare August 5, 2026 15:04
armada decides the emulated controller in two places, and they disagree.
InputPlumber creates the composite device with the target_devices from its
device config - for all three AYANEO profiles that is [xb360, keyboard]. About
a second later armada-controller-type.service runs `controller-type apply`,
which re-sets the target over D-Bus. controller-type hardcodes
DEFAULT_TYPE = "deck-uhid" and has no per-device notion, so that second write
always wins and the yaml value never survives boot.

deck-uhid presents to Steam as a Valve Steam Deck Controller, hardware with a
physical QAM button. Steam only offers its Guide+A -> QAM fallback to
controllers without one, so emulating a Deck switches it off. A device with no
QuickAccess source of its own is then left with no way into the Quick Access
Menu at all.

Take the default from the device profile instead, so the two places agree.
/etc/armada/controller.conf and the Armada Control toggle still win over it.

Pocket EVO stays on deck-uhid: AYA SPACE is a real QuickAccess button and =, LC
and RC are paddles, which only exist on that target. Pocket S 2K moves to
xb360. It has the same extra buttons physically, but its device tree declares
no aya-keys node and its MCU reports only 11 buttons, so none of them reach
userspace and there is nothing live to lose - while Guide+A works again. That
should move back to deck-uhid once the device gets its aya-keys node, since
paddles only exist there. Everything else keeps deck-uhid through defaults.conf.

Measured on a Pocket EVO: on deck-uhid AYA SPACE opens the QAM and Guide+A does
nothing; on xb360 both open it but the paddles go dead. QuickAccess reaches
Steam on either target, so the paddles are what decide the split.

Update the README to match, and replace the QAM known issue with the one that
is still true: Steam + X reaches Steam but the keyboard action never fires.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@jesherman
jesherman force-pushed the fix/ayaneo-controller-type-per-device branch from 0fef4cb to ca99f4f Compare August 5, 2026 15:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant