How to use Xbox (One) Wireless Controller?

Hello,

first of all: I am new to Linux and just installed openSUSE a few days ago. I installed the most important things (nVidia driver, Thunderbird etc.) without any problems via YaST.

Now I face my first challenge: I want to play with my Xbox One Wireless Controller. I use the original Xbox Wireless Adapter for this. The adapter is plugged into a USB-port. If I try to connect the Controller it’s just blinking but doesn’t connect.

What I already did:

  • I installed xboxdrv (Xbox/Xbox360 USB Gamepad Driver for Userspace)
  • I searched for solutions but don’t get it what the next step should be

This is what lsusb looks like:

Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub 
Bus 005 Device 002: ID 045e:02fe Microsoft Corp. XBOX ACC 
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 
Bus 002 Device 002: ID 0bda:0411 Realtek Semiconductor Corp. Hub 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub 
Bus 001 Device 005: ID 045e:0768 Microsoft Corp. Sidewinder X4 
Bus 001 Device 003: ID 046d:c537 Logitech, Inc. Cordless Mouse Receiver 
Bus 001 Device 002: ID 0bda:5411 Realtek Semiconductor Corp. RTS5411 Hub 
Bus 001 Device 006: ID 0c76:161f JMTek, LLC. USB PnP Audio Device 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Because I don’t have any other Xbox hardware connected, the „Microsoft Corp. XBOX ACC“ is the wireless adapter right?

After connection the Controller via USB-cable lsusb shows me:

Bus 001 Device 007: ID 045e:02ea Microsoft Corp. Xbox One S Controller

But even with cable-connection the controller just blinks but doesn’t work.

If i run xboxdrv I get (doesn’t matter if the controller is connected via cable or not):

xboxdrv 0.8.8 - http://pingus.seul.org/~grumbel/xboxdrv/  
Copyright © 2008-2011 Ingo Ruhnke <grumbel@gmail.com>  
Licensed under GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>  
This program comes with ABSOLUTELY NO WARRANTY.  
This is free software, and you are welcome to redistribute it under certain conditions; see the file COPYING  
for details.  


--  ERROR ] ------------------------------------------------------ 
No Xbox or Xbox360 controller found

On reddit I foundand old thread and the hint, that xboxdrv is running in „userspace“ and I still need to „load the driver“ with systemctl enable --now xboxdrv. As I did Steam (Picture Mode) shows me an Xbox 360 Controller (didn’t show anything before) and the Gamecontroller menu within openSUSE shows me a controller now. But there is nothing I can do or calibrate.

That’s where I stuck right now.
As I said: I am completely new to linux and still learn everything about the console and so on. So if you could help me with a solution and maybe explaination so that I can learn from this issue I would be very thankful. :slight_smile:
Thanks for your time reading all this and if you answer also of course. I really appreaciate it.

Use default font, not yours.

Somebody brought this to my intention already but I am not able to edit and didn’t post it with this font intentionally.

But thanks for your kind words.

Hi and welcome to the Forum :slight_smile:
Looks like a newer controller and wireless device the PCI ID’s are not present…

Let me patch in those two ID’s and create a test build for you.

Hi
Either download the rpm direct and install (ignore the nokey warning please)

https://download.opensuse.org/repositories/home:/malcolmlewis:/branches:/hardware/openSUSE_Tumbleweed/x86_64/xboxdrv-0.8.8-26.1.x86_64.rpm

or via zypper (as root user)


zypper in https://download.opensuse.org/repositories/home:/malcolmlewis:/branches:/hardware/openSUSE_Tumbleweed/x86_64/xboxdrv-0.8.8-26.1.x86_64.rpm

Before you do, please rollback the systemd command you ran, now there has been systemd hardening going on, so please check the service runs (as root user) as well. If it doesn’t changes need to be made on your machine with the service file.

First of all: thank you very much for your effort and help. I will describe what I’ve done but unfortunately I still cannot connect. But maybe I did something wrong or oversee something (likely both …). But the error under xboxdrv is new and maybe helps!?

So I did:

  1. Rollback to a snapshot before installing xboxdrv at all (couldn’t find the exact snapshot before editing systemd).
  2. Checked as root with “services --status-all” if systemd is running. There was a lot of entries with systemd as active so I guess yes it runs!?
  3. Installed your modified driver via zypper.

Controller still doesn’t connect. But here is what it looks like right now:

lsusb with wireless adapter:

Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 0bda:0411 Realtek Semiconductor Corp. Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 045e:0768 Microsoft Corp. Sidewinder X4
Bus 001 Device 003: ID 046d:c537 Logitech, Inc. Cordless Mouse Receiver
Bus 001 Device 004: ID 045e:02fe Microsoft Corp. XBOX ACC
Bus 001 Device 002: ID 0bda:5411 Realtek Semiconductor Corp. RTS5411 Hub
Bus 001 Device 006: ID 0c76:161f JMTek, LLC. USB PnP Audio Device
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

xboxdrv with wireless adapter:

xboxdrv 0.8.8 - http://pingus.seul.org/~grumbel/xboxdrv/
Copyright © 2008-2011 Ingo Ruhnke <grumbel@gmail.com>
Licensed under GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it under certain conditions; see the file COPYING
for details.

Controller:        Xbox 360 Wireless Receiver (XBOX ACC)
Vendor/Product:    045e:02fe
USB Path:          001:004
Wireless Port:     0
Controller Type:   Xbox360 (wireless)

--  ERROR ] ------------------------------------------------------
 Error couldn't claim the USB interface: LIBUSB_ERROR_BUSY
Try to run 'rmmod xpad' and then xboxdrv again or start xboxdrv with the option --detach-kernel-driver.

lsusb with cable (wireless adapter still connected):

Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 0bda:0411 Realtek Semiconductor Corp. Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 045e:0768 Microsoft Corp. Sidewinder X4
Bus 001 Device 003: ID 046d:c537 Logitech, Inc. Cordless Mouse Receiver
Bus 001 Device 004: ID 045e:02fe Microsoft Corp. XBOX ACC
Bus 001 Device 002: ID 0bda:5411 Realtek Semiconductor Corp. RTS5411 Hub
Bus 001 Device 007: ID 045e:02ea Microsoft Corp. Xbox One S Controller
Bus 001 Device 006: ID 0c76:161f JMTek, LLC. USB PnP Audio Device
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

xboxdrv with cable:
same as with wireless adapter

In System Settings → Game Controller I just got the message (wireless and with cable):

No joystick device automatically found on this computer.
Checks were done in /dev/js[0-4] and /dev/input/js[0-4]
If you know that there is one attached, please enter the correct device file.

Hi
So can you ensure the systemd service is running?


systemctl status xboxdrv.service

Hi,

thanks for posting the terminal command. I’ve searched for it online but seems I didn’t find the right one.

Here’s the output of systemctl status xboxdrv.service. So seems not running.


xboxdrv.service - xboxdrv
Loaded: loaded (/usr/lib/systemd/system/xboxdrv.service; disabled; vendor preset: disabled)
Active: inactive (dead) 

Hi
Can you start the service and then check the status to see if it’s running;


systemctl start xboxdrv
systemctl status xboxdrv

I did. Here the result:

xboxdrv.service - xboxdrv 
     Loaded: loaded (/usr/lib/systemd/system/xboxdrv.service; disabled; vendor preset: disabled) 
     Active: **active (running)** since Thu 2022-02-03 18:58:58 CET; 9s ago 
   Main PID: 2496 (xboxdrv) 
      Tasks: 2 (limit: 4915) 
        CPU: 71ms 
     CGroup: /system.slice/xboxdrv.service 
             └─2496 /usr/bin/xboxdrv -D -c /etc/xboxdrv.conf 

Feb 03 18:58:58 localhost.localdomain systemd[1]: Started xboxdrv. 
Feb 03 18:58:58 localhost.localdomain xboxdrv[2496]: xboxdrv 0.8.8 - http://pingus.seul.org/~grumbel/xboxdrv/ 
Feb 03 18:58:58 localhost.localdomain xboxdrv[2496]: Copyright © 2008-2011 Ingo Ruhnke <grumbel@gmail.com> 
Feb 03 18:58:58 localhost.localdomain xboxdrv[2496]: Licensed under GNU GPL version 3 or later <http://gnu.or>
Feb 03 18:58:58 localhost.localdomain xboxdrv[2496]: This program comes with ABSOLUTELY NO WARRANTY. 
Feb 03 18:58:58 localhost.localdomain xboxdrv[2496]: This is free software, and you are welcome to redistribu>
Feb 03 18:58:58 localhost.localdomain xboxdrv[2496]: conditions; see the file COPYING for details. 
Feb 03 18:58:58 localhost.localdomain xboxdrv[2496]: [ERROR] XboxdrvDaemon::process_match(): failed to launch>
Feb 03 18:58:58 localhost.localdomain xboxdrv[2496]: Try to run 'rmmod xpad' and then xboxdrv again or start >

No connection via wireless adapter or cable (controller has still the blinking LED).
But under System Settings -> Game Controller there is now “Xbox Gamepad (userspace driver) (/dev/input/js0)”.

Should I follow the Error instruction and do rmmod xpad?

Hi
Yes, remove xpad and see how it goes.

Looks like it’s not available.

*rmmod xpad
*

rmmod: ERROR: Module xpad is not currently loaded

systemctl status xpad
*


Unit xpad.service could not be found.

Hi,

I solved my initial problem. So the wireless controller is working now. I used xow and this tutorial. Had to install some basic requirements like git, some libusb (don’t know if this was necessary) and g++.

Still curious why it isn’t working with xboxdrv but I am happy it works now. But if one of you still have an idea what I’ve done wrong or whatever, I appreicate every comment for learning reasons.

But thanks A LOT to malcolmlewis for all your help and time you spend with this - even modifing the driver. :slight_smile:

Hi
Ahhh, a different driver for those devices… I see a few community users have it built on the openSUSE Build Service.

There has been a new release of Xone (v0.2) that advertises support for the Xbox One Wireless adapter:

https://www.reddit.com/r/linux_gaming/comments/slttmm/xone_02_released_with_support_for_the_xbox_one/

WHat would be the best way to get this installed on TW x64? (it isn’t listed on software.opensuse as a oneclick/.rpm)

Connect the controller wirelessly to Xbox One
Turn on your controller by pressing and holding the Xbox button The Xbox button will flash. When the button stays lit, the controller is connected. Note If the controller doesn’t turn on, check the batteries.

thanks, apologies, i missed this reply.

Q - but how do i get the xone driver software installed on a tumbleweed x64 install?

A - Or, is this irrelevant as far as the user is concerned, because it is a kernel driver and sorted out upstream (as long as you have a recent kernel)?

New 0.3 release came out in june:
https://github.com/medusalix/xone/releases/tag/v0.3

Re: easiest way to install xone 0.3

I can see two packages available on opensuse.software:

xone:
https://software.opensuse.org/download/package?package=xone&project=home%3ARischioCinico

xone-kmp-default:
https://software.opensuse.org/download/package?package=xone-kmp-default&project=home%3ARischioCinico

Do I just need ‘xone’, or do i also need ‘xone-kmp-default’?
And if i need both - and download the .rpms, do i have to install one before the other?

Add online repo, then install from it.

Thank you.

I tried using the zypper commands from the link above and got the following:

Problem: the to be installed xone-0.3-2.25.x86_64 requires '(kmod(xone_dongle.ko) if kernel)', but this requirement cannot be provided
 Solution 1: deinstallation of kernel-default-5.19.7-1.1.x86_64
 Solution 2: do not install xone-0.3-2.25.x86_64
 Solution 3: break xone-0.3-2.25.x86_64 by ignoring some of its dependencies

Choose from above solutions by number or cancel [1/2/3/c/d/?] (c): 

i did this with the dongle removed (as per some advice in another thread), but I think I got a similar message with the dongle plugged in when trying to install via the .rpm downloads.

any advice appreciated.