Xbox controller works fine but ..

I bought an Xbox controller to play Robotron through MAME.

This works, but there is one annoying thing.

I sometime have to reboot my pc, to have the controller working. Is there a way , maybe through the command line to turn the controller on without a reboot?

Or do I just need to install this:
| xboxdrv - Xbox/Xbox360 USB Gamepad Driver for Userspace
|

|

This driver causes some confusion for me, because the controller already works without it. :slight_smile:

I installed that driver, and then the light on my controller lit up. ( so no reboot needed) Interesting. :slight_smile:

And now it seems to have stopped working all together, although it did work at first.

guus@linux-2ls4:~> lsusb 
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub 
Bus 003 Device 003: ID 0e6f:02a4 Logic3 PDP Wired Controller for Xbox One - Stealth Series | Phantom Black 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub 
Bus 001 Device 003: ID 046d:c084 Logitech, Inc. G203 Gaming Mouse 
Bus 001 Device 002: ID 1a2c:0e24 China Resource Semico Co., Ltd USB Keyboard 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

I am getting more and more confused, before I rebooted it worked. Now unplugging and plugging it in again does not work for mame, although Linux sees it. :confused:

Hi
There are two items, one xpad kernel driver (likely what you are using) and xboxdrv the alternative, suggest you install that instead… It has a systemd service as well, or just use the binary to test.

Yes I was using the kernel driver.

Then installed the userspace one, xboxdrv

It worked at first, I started MAME and controller was working.

Then after a reboot, nothing. :confused:

Then I typed

lsusb

, and there I see the controller. But it does not work in MAME (any more)

Before this when using the kernel driver, the only annoyance was that the controller sometimes seemed to switch off. A reboot fixed that.
That’s why I tried the userspace driver.

I do not understand the systemd service nor the binary part.

Hi
Is the service running?

Test via command line first… as root user…


lsusb | grep Xbox

Bus 002 Device 008: ID 045e:0719 Microsoft Corp. Xbox 360 Wireless Adapter

{as root user}

xboxdrv --verbose

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
Vendor/Product:    045e:0719
USB Path:          002:010
Wireless Port:     0
Controller Type:   Xbox360 (wireless)

Your Xbox/Xbox360 controller should now be available as:
  /dev/input/js0
  /dev/input/event27

Press Ctrl-C to quit, use '--silent' to suppress the event output
[INFO]  Xbox360WirelessController::parse(): connection status: controller connected
[INFO]  Xbox360WirelessController::parse(): Serial: 92:68:a0:43:79: e:40
[INFO]  Xbox360WirelessController::parse(): Battery Status: 98
[INFO]  Xbox360WirelessController::parse(): battery status: 98
[INFO]  Xbox360WirelessController::parse(): battery status: 98

{exit above via ctrl C}

systemctl start xboxdrv.service 
grover:~ # systemctl status xboxdrv.service 
● xboxdrv.service - xboxdrv
     Loaded: loaded (/usr/lib/systemd/system/xboxdrv.service; disabled; vendor preset: disabled)
     Active: active (running) since Mon 2021-05-17 18:40:42 CDT; 7s ago
   Main PID: 5604 (xboxdrv)
      Tasks: 2 (limit: 4915)
        CPU: 73ms
     CGroup: /system.slice/xboxdrv.service
             └─5604 /usr/bin/xboxdrv -D -c /etc/xboxdrv.conf

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

{enable to start with system, or not...}
systemctl enable xboxdrv.service

lsusb | grep Xbox 
Bus 003 Device 002: ID 0e6f:02a4 Logic3 PDP Wired Controller for **Xbox** One - Stealth Series | Phantom Black

guus # xboxdrv --verbose
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


WTF ?

Hi
Because it’s (PCI ID) not there… let me branch and patch, give me a few…

Hi
Install this package;
https://download.opensuse.org/repositories/home:/malcolmlewis:/branches:/hardware/openSUSE_Tumbleweed/x86_64/

Ref: https://build.opensuse.org/package/show/home:malcolmlewis:branches:hardware/xboxdrv
Patch: https://build.opensuse.org/package/view_file/home:malcolmlewis:branches:hardware/xboxdrv/xboxdrv-add-new-device.patch?expand=1

Should see it working, if so can update in development repo and Tumbleweed.

Thank you , but that did not work. :slight_smile:

I opened the rpm with yast,and then yast complained about the key. I choose to ignore that, and the package got installed.

But controller is not working.

**linux-2ls4:/home/guus #** xboxdrv --verbose 
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:        Logic3 PDP Wired Controller for Xbox One - Stealth Series | Phantom Black 
Vendor/Product:    0e6f:02a4 
USB Path:          003:002 
Controller Type:   Xbox360 

--  ERROR ] ------------------------------------------------------ 
USBController::usb_find_ep(): couldn't find matching endpoint 
**linux-2ls4:/home/guus #**



I do notice the error changed a bit.

What type of USB port is the device plugged into, 2.0, 3.0 > 3.0?

Can you run the command as root user;


udevadm trigger

To ensure changes are applied, unplug controller, plug back in and then try command again.

I had to look in the manual of the mobo, but found it. :slight_smile:

USB 3.1

I run the command but controller still not working. ( also unplugged it , and plugged it back in)

**linux-2ls4:/home/guus #** xboxdrv --verbose 
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:        Logic3 PDP Wired Controller for Xbox One - Stealth Series | Phantom Black 
Vendor/Product:    0e6f:02a4 
USB Path:          003:004 
Controller Type:   Xbox360 

--  ERROR ] ------------------------------------------------------ 
USBController::usb_find_ep(): couldn't find matching endpoint



Hi
Can you check BIOS for USB legacy support? Also the output from;


lsusb -tv
usb-devices

Just for the device… :wink:

I went into the bios, but could not find any setting like that. (USB legacy support)

My case however has two types of usb ports, both work, I am 99% sure that’s an 2.0 and a 3.1 port

Not using those for the controller though, controller is plugged straight into the mobo.

lsusb -tv 
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M 
    ID 1d6b:0003 Linux Foundation 3.0 root hub 
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M 
    ID 1d6b:0002 Linux Foundation 2.0 root hub 
    |__ Port 4: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 12M 
        ID 0e6f:02a4 Logic3  
    |__ Port 4: Dev 2, If 1, Class=Vendor Specific Class, Driver=, 12M 
        ID 0e6f:02a4 Logic3  
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M 
    ID 1d6b:0003 Linux Foundation 3.0 root hub 
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 480M 
    ID 1d6b:0002 Linux Foundation 2.0 root hub 
    |__ Port 5: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M 
        ID 1a2c:0e24 China Resource Semico Co., Ltd  
    |__ Port 5: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M 
        ID 1a2c:0e24 China Resource Semico Co., Ltd  
    |__ Port 6: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M 
        ID 046d:c084 Logitech, Inc. G203 Gaming Mouse 
    |__ Port 6: Dev 3, If 1, Class=Human Interface Device, Driver=usbhid, 12M 
        ID 046d:c084 Logitech, Inc. G203 Gaming Mouse


**linux-2ls4:/home/guus #** usb-devices 

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh=10 
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1 
P:  Vendor=1d6b ProdID=0002 Rev=05.12 
S:  Manufacturer=Linux 5.12.3-1-default xhci-hcd 
S:  Product=xHCI Host Controller 
S:  SerialNumber=0000:01:00.0 
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA 
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub 

T:  Bus=01 Lev=01 Prnt=01 Port=04 Cnt=01 Dev#=  2 Spd=1.5 MxCh= 0 
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1 
P:  Vendor=1a2c ProdID=0e24 Rev=01.10 
S:  Manufacturer=SEM 
S:  Product=USB Keyboard 
C:  #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=98mA 
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid 
I:  If#=0x1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid 

T:  Bus=01 Lev=01 Prnt=01 Port=05 Cnt=02 Dev#=  3 Spd=12  MxCh= 0 
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1 
P:  Vendor=046d ProdID=c084 Rev=07.03 
S:  Manufacturer=Logitech 
S:  Product=G203 Prodigy Gaming Mouse 
S:  SerialNumber=088D38563231 
C:  #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=300mA 
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid 
I:  If#=0x1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid 

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=10000 MxCh= 4 
D:  Ver= 3.10 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1 
P:  Vendor=1d6b ProdID=0003 Rev=05.12 
S:  Manufacturer=Linux 5.12.3-1-default xhci-hcd 
S:  Product=xHCI Host Controller 
S:  SerialNumber=0000:01:00.0 
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA 
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub 

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 4 
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1 
P:  Vendor=1d6b ProdID=0002 Rev=05.12 
S:  Manufacturer=Linux 5.12.3-1-default xhci-hcd 
S:  Product=xHCI Host Controller 
S:  SerialNumber=0000:07:00.3 
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA 
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub 

T:  Bus=03 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#=  2 Spd=12  MxCh= 0 
D:  Ver= 2.00 Cls=ff(vend.) Sub=47 Prot=d0 MxPS=64 #Cfgs=  1 
P:  Vendor=0e6f ProdID=02a4 Rev=01.0f 
S:  Manufacturer=Performance Designed Products 
S:  Product=PDP Wired Controller for Xbox One - Stealth Series | Phantom Black 
S:  SerialNumber=000047B9143CE72F 
C:  #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=500mA 
I:  If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=47 Prot=d0 Driver=(none) 
I:  If#=0x1 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=47 Prot=d0 Driver=(none)

[FONT=monospace]T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 4 
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1 
P:  Vendor=1d6b ProdID=0003 Rev=05.12 
S:  Manufacturer=Linux 5.12.3-1-default xhci-hcd 
S:  Product=xHCI Host Controller 
S:  SerialNumber=0000:07:00.3 
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA 
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

[/FONT]

Hi
The blue ones are 3.0+ and black is USB 2.0, can you ensure it’s plugged into one of those?

It’s plugged into a blue one :slight_smile: so 3.1

Hi
So no black ones on the motherboard?

I looked for that , there are two but those are for the keyboard and mouse.

Then there are 6 other all USB 3.1 (4 blue).

From the manual:

USB 3.1.Gen1 Ports USB3_34 (2x)
USB 3.1.Gen1 Ports USB3_12 (2x)

USB 3.1 Gen 2 Type A port (USB31_TA_1) (1x)
USB 3.1 Gen 2 Type A port (USB31_TC_1) (1x)

Controller wont fit in last two though, unless you use a hammer. :wink:

Asrock B450M Pro4

If the layout of the ports match the layout on the mother board, its now plugged into one of the two Gen2.

Controller is plugged into one of the two Type 1 ports.
The controller did work most of the time with the Kernel Driver. :slight_smile:

Oops:

I said, Controller is plugged into one of the two Type 1 ports.

That should be Gen 1 ports.

Hi
Don’t have another computer you can test the controller on?