paroj / xpad

Linux Kernel Driver for the Xbox/ Xbox 360/ Xbox One Controllers
825 stars 182 forks source link

Some controllers that mimic the Xbox 360 Controller are not initialized correctly #119

Open dnmodder opened 5 years ago

dnmodder commented 5 years ago

I have a fake Xbox 360 controller, specifically a Fantech GP11 Shooter, it happens that this type of controllers have problems to work on Linux because they are first recognized by usbhid and then disconnected and reconnected as controllers of xbox 360, to then not generate any key event.

In this case my problem is identical to this: Linux gamepad - no input events

And this is very similar: #118

Using VirtualBox, Wireshark and usbmon I analyzed the traffic between the device and the linux driver looking for the initialization codes, after finding them I wrote the following script: fixcontroller.py

I do not provide more data, like the output of dmesg, because they are the same as the first link I left.

But if necessary I can provide more information or try any solution they propose, in advance I apologize if something is not well understood, since this was translated from Spanish.

Oblomov commented 1 year ago

Sorry, the axis information may have been a glitch in jstest-gtk. However, the leds are still not working as expected.

rufreakde commented 1 year ago

So I recently bought an X-input controller from 8BitDo facing a similar issue.

Device is being recognized in USB but not working in xpad... it is not even creating an /dev/input file? (not listed in cat /proc/bus/input/devices)

Any idea how to troubleshoot this?

lsusb
...
Bus 001 Device 002: ID 2dc8:3106 8BitDo Ultimate Wireless Controller
sudo lsusb -v -d 2dc8:3106
Bus 001 Device 002: ID 2dc8:3106 8BitDo Ultimate Wireless Controller
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass       255 Vendor Specific Subclass
  bDeviceProtocol       255 Vendor Specific Protocol
  bMaxPacketSize0        64
  idVendor           0x2dc8 8BitDo
  idProduct          0x3106 
  bcdDevice            1.14
  iManufacturer           1 8BitDo
  iProduct                2 Ultimate Wireless Controller
  iSerial                 3 5b1212d817e4
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0030
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass     93 
      bInterfaceProtocol      1 
      iInterface              0 
      ** UNRECOGNIZED:  10 21 10 01 01 24 81 14 03 00 03 13 02 00 03 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               4
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               8
Device Status:     0x0000
  (Bus Powered)

The information I get on connect:

journalctl -f
Mai 07 14:24:57 mini-pc kernel: usb 1-3: New USB device found, idVendor=2dc8, idProduct=3109, bcdDevice= 2.00
Mai 07 14:24:57 mini-pc kernel: usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Mai 07 14:24:57 mini-pc kernel: usb 1-3: Product: Ultimate Wireless Controller
Mai 07 14:24:57 mini-pc kernel: usb 1-3: Manufacturer: 8BitDo
Mai 07 14:24:57 mini-pc kernel: usb 1-3: SerialNumber: 5b1212d817e4
Mai 07 14:24:57 mini-pc kernel: hid-generic 0003:2DC8:3109.0004: hiddev96,hidraw3: USB HID v1.11 Device [8BitDo Ultimate Wireless Controller] on usb-0000:02:00.0-3/input0
Mai 07 14:24:57 mini-pc mtp-probe[3735]: checking bus 1, device 6: "/sys/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-3"
Mai 07 14:24:57 mini-pc mtp-probe[3735]: bus: 1, device: 6 was not an MTP device
Mai 07 14:24:57 mini-pc mtp-probe[3752]: checking bus 1, device 6: "/sys/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-3"
Mai 07 14:24:57 mini-pc mtp-probe[3752]: bus: 1, device: 6 was not an MTP device
Mai 07 14:26:39 mini-pc kernel: usb 1-3: USB disconnect, device number 6
Mai 07 14:26:40 mini-pc kernel: usb 1-3: new full-speed USB device number 7 using xhci_hcd
Mai 07 14:26:40 mini-pc kernel: usb 1-3: New USB device found, idVendor=2dc8, idProduct=3106, bcdDevice= 1.14
Mai 07 14:26:40 mini-pc kernel: usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Mai 07 14:26:40 mini-pc kernel: usb 1-3: Product: Ultimate Wireless Controller
Mai 07 14:26:40 mini-pc kernel: usb 1-3: Manufacturer: 8BitDo
Mai 07 14:26:40 mini-pc kernel: usb 1-3: SerialNumber: 5b1212d817e4
Mai 07 14:26:40 mini-pc mtp-probe[3797]: checking bus 1, device 7: "/sys/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-3"
Mai 07 14:26:40 mini-pc mtp-probe[3797]: bus: 1, device: 7 was not an MTP device
Mai 07 14:26:40 mini-pc mtp-probe[3798]: checking bus 1, device 7: "/sys/devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-3"
Mai 07 14:26:40 mini-pc mtp-probe[3798]: bus: 1, device: 7 was not an MTP device

I used this script provided here in the thread in hopes to have it working correctly but it did not work. (script succeeded without issues though / also generated a rule )

cat /etc/udev/rules.d/99-gamesir-g3w-fix.rules
ACTION=="add", ATTRS{idProduct}=="3109", ATTRS{idVendor}=="2dc8", DRIVERS=="usb", RUN+="/usr/local/bin/gamesir-g3w-fix.py"

adding also some additional info:

sudo dmesg | grep -A 5 "usb 1-3"
[    1.088920] usb 1-3: new full-speed USB device number 2 using xhci_hcd
[    1.348623] ata2: SATA link down (SStatus 0 SControl 330)
[    1.398401] tsc: Refined TSC clocksource calibration: 3599.998 MHz
[    1.398414] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x33e451ab1a6, max_idle_ns: 440795278720 ns
[    1.398454] clocksource: Switched to clocksource tsc
[    1.457417] usb 1-3: New USB device found, idVendor=2dc8, idProduct=3106, bcdDevice= 1.14
[    1.457422] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    1.457424] usb 1-3: Product: Ultimate Wireless Controller
[    1.457425] usb 1-3: Manufacturer: 8BitDo
[    1.457426] usb 1-3: SerialNumber: 5b1212d817e4
[    1.642400] usb 1-4: new full-speed USB device number 3 using xhci_hcd
[    1.659808] ata5: SATA link down (SStatus 0 SControl 330)
[    1.972093] ata6: SATA link down (SStatus 0 SControl 330)
[    1.973479] Freeing unused decrypted memory: 2036K
[    1.973904] Freeing unused kernel image (initmem) memory: 4360K
--
[  516.782343] usb 1-3: USB disconnect, device number 2
[  517.565300] usb 1-3: new full-speed USB device number 6 using xhci_hcd
[  517.855313] usb 1-3: New USB device found, idVendor=2dc8, idProduct=3109, bcdDevice= 2.00
[  517.855321] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  517.855324] usb 1-3: Product: Ultimate Wireless Controller
[  517.855327] usb 1-3: Manufacturer: 8BitDo
[  517.855329] usb 1-3: SerialNumber: 5b1212d817e4
[  517.875203] hid-generic 0003:2DC8:3109.0004: hiddev96,hidraw3: USB HID v1.11 Device [8BitDo Ultimate Wireless Controller] on usb-0000:02:00.0-3/input0
[  619.837990] usb 1-3: USB disconnect, device number 6
[  620.620652] usb 1-3: new full-speed USB device number 7 using xhci_hcd
[  620.991131] usb 1-3: New USB device found, idVendor=2dc8, idProduct=3106, bcdDevice= 1.14
[  620.991137] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  620.991140] usb 1-3: Product: Ultimate Wireless Controller
[  620.991143] usb 1-3: Manufacturer: 8BitDo
[  620.991145] usb 1-3: SerialNumber: 5b1212d817e4
modinfo xpad
filename:       /lib/modules/6.2.12-200.fsync.fc37.x86_64/kernel/drivers/input/joystick/xpad.ko.xz
license:        GPL
description:    X-Box pad driver
author:         Marko Friedemann <mfr@bmx-chemnitz.de>
alias:          usb:v3285p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v3285p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v31E3p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v31E3p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v2F24p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v2F24p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v2E24p*d*dc*dsc*dp*icFFisc47ipD0in*
alias:          usb:v2DC8p*d*dc*dsc*dp*icFFisc47ipD0in*
alias:          usb:v260Dp*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v260Dp*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v2563p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v2563p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v24C6p*d*dc*dsc*dp*icFFisc47ipD0in*
alias:          usb:v24C6p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v24C6p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v20D6p*d*dc*dsc*dp*icFFisc47ipD0in*
alias:          usb:v20D6p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v20D6p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v1BADp*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v1BADp*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v1949p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v1949p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v1689p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v1689p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v162Ep*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v162Ep*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v15E4p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v15E4p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v1532p*d*dc*dsc*dp*icFFisc47ipD0in*
alias:          usb:v1532p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v1532p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v146Bp*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v146Bp*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v1430p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v1430p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v12ABp*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v12ABp*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v1209p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v1209p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v11C9p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v11C9p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v1038p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v1038p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v0F0Dp*d*dc*dsc*dp*icFFisc47ipD0in*
alias:          usb:v0F0Dp*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v0F0Dp*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v0E6Fp*d*dc*dsc*dp*icFFisc47ipD0in*
alias:          usb:v0E6Fp*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v0E6Fp*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v0C12p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v0C12p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v07FFp*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v07FFp*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v0738p*d*dc*dsc*dp*icFFisc47ipD0in*
alias:          usb:v0738p4540d*dc*dsc*dp*ic*isc*ip*in*
alias:          usb:v0738p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v0738p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v06A3p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v06A3p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v056Ep*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v056Ep*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v046Dp*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v046Dp*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v045Ep*d*dc*dsc*dp*icFFisc47ipD0in*
alias:          usb:v045Ep*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v045Ep*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v044Fp*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v044Fp*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v03EBp*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v03EBp*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v0079p*d*dc*dsc*dp*icFFisc5Dip81in*
alias:          usb:v0079p*d*dc*dsc*dp*icFFisc5Dip01in*
alias:          usb:v*p*d*dc*dsc*dp*ic58isc42ip00in*
depends:        ff-memless
retpoline:      Y
intree:         Y
name:           xpad
vermagic:       6.2.12-200.fsync.fc37.x86_64 SMP preempt mod_unload 
sig_id:         PKCS#7
signer:         Fedora kernel signing key
sig_key:        3B:72:B8:C1:F7:A2:06:4F:BD:05:AC:75:3A:D6:34:29:66:5D:4E:40
sig_hashalgo:   sha256
signature:      AC:16:42:35:92:22:D5:07:8B:25:D5:3C:58:0A:B6:F8:87:C3:5A:27:
                AF:62:6C:1A:A0:8A:57:A1:C2:F5:23:FA:3F:75:B8:73:8B:AA:AB:FF:
                54:BF:DF:32:84:E4:25:D0:0B:14:66:42:7C:5B:B1:DF:E6:66:D7:63:
                04:AA:53:BA:F2:8D:4E:DD:44:61:8A:52:BE:48:41:14:43:F4:AF:9D:
                D4:F8:22:BE:57:E0:12:A3:E0:5B:D2:5B:3B:B0:91:45:A3:97:23:61:
                99:5D:65:2D:4F:B4:F3:12:DF:3E:A9:83:7D:42:CF:DB:48:24:A1:DD:
                E4:BB:51:87:A4:6A:6D:0D:B4:5F:4A:58:6A:03:95:2F:6E:39:E0:06:
                40:2D:BB:B7:E7:A2:76:3D:DB:8D:37:3E:C5:EA:AD:50:08:0E:07:19:
                F2:4B:54:A8:7F:0C:03:2F:A5:B0:95:C6:F1:3B:03:BA:EB:6B:76:20:
                DB:B4:25:7B:D5:88:D6:9E:B7:E9:A5:7B:BE:CF:FF:37:FE:14:DB:18:
                38:88:D7:77:0B:B7:60:42:BD:25:56:54:D0:57:13:D9:77:EE:A7:F3:
                4A:2B:5B:C7:98:36:43:73:45:6D:8E:33:B7:7B:CF:1F:B2:B4:F9:83:
                EC:FA:FD:BA:12:DF:EA:90:07:30:34:99:C0:74:08:1F:D3:3D:FC:6E:
                36:0A:BA:8B:F4:EA:10:98:C2:C8:CB:1E:DB:C3:55:47:5B:AC:AD:E8:
                DA:ED:54:15:73:B6:E3:2F:6D:81:AD:9C:3F:88:9A:D2:A4:9F:ED:B4:
                4A:4E:60:BB:CF:51:42:34:6E:0D:8A:DD:B2:62:19:3B:15:20:23:E1:
                DC:3B:9A:F8:F7:FD:78:7C:AE:8C:04:A9:16:DA:FD:EA:3A:F3:6B:F6:
                95:81:82:E0:50:1E:D5:F1:8C:5B:EE:2F:B6:F0:37:A3:F3:87:E3:FA:
                B3:9A:AE:6B:62:95:B3:C2:F8:BA:1D:DD:81:EB:86:1A:8C:29:2C:2B:
                99:8C:09:03:18:6D:38:8C:9C:97:E2:03:04:AC:23:CE:DF:B0:7A:08:
                3C:B7:42:BA:B9:42:F9:5E:B6:A8:7F:D2:9E:34:27:8A:47:51:FB:71:
                72:AD:BB:00:14:03:15:5C:99:EE:8C:FF:6A:6F:23:AC:C0:68:CA:43:
                EB:65:92:47:B1:9A:90:55:63:97:D8:57:30:37:97:73:1A:A7:6C:E4:
                E3:78:29:35:C2:F2:7F:17:D7:2D:F2:79:74:2E:BE:60:3B:B0:A8:16:
                F8:82:52:34:03:E7:76:56:53:7D:5D:8B:C3:94:C6:A8:63:5E:5E:9E:
                85:CC:2C:C1:52:44:01:BF:33:6C:E1:35
parm:           dpad_to_buttons:Map D-PAD to buttons rather than axes for unknown pads (bool)
parm:           triggers_to_buttons:Map triggers to buttons rather than axes for unknown pads (bool)
parm:           sticks_to_null:Do not map sticks at all for unknown pads (bool)
parm:           auto_poweroff:Power off wireless controllers on suspend (bool)

What should I try next any ideas? In steam and in system settings no gamepad is found. (I guess because its not in /dev/inputs)

AndrewPrzelucki commented 9 months ago

Hi, is there any chance for a driver for a wireless PC/PS3 gamepad that is identified under Linux as 2563:0526 (vendor:product)? The pad is named "SHANWAN Android Gamepad" and from what I found out it's made by ShenZhen ShanWan Technology. The Windows driver is [here (link)] (https://esperanza.pl/esperanza-gamepad-bezprzewodowy-2-4ghz-ps3-pc-usb-gladiator-czarny,176,1697.html). The gamepad offers rumble but it's not working under Linux, and also the analog/digital switch isn't working under Linux. I found a driver on GitHub (link) but it's for a different product ID, namely 2563:0575. The ShenZhen ShanWan Technology Co., Ltd webpage lists a few they make and I found a similar one here (link), but I don't have any information about the product number other than that mine is 2563:0526 but the webpage calls it BM-977. Any information is welcomed, maybe someone knows about a Linux driver somewhere. I found a python script (link) for another model, but it doesn't work for my product ID. Thanks!

SteavenGamerYT commented 6 months ago

any workaround? i have Bus 007 Device 002: ID 2563:0526 ShenZhen ShanWan Technology Co., Ltd. Android Gamepad

MirceaKitsune commented 6 months ago

The issue has been fixed for me! Manjaro is now on Kernel 6.7.7: My controller is recognized on the X-box setting automatically, no need to use the workaround Python script to reset it. Has the problem been solved for everyone? If others are still experiencing it, that must mean I'm among the lucky ones to get an exception for my model, an ideal solution should be universal and recognize all such devices.

SteavenGamerYT commented 5 months ago

give me the python script pls

MirceaKitsune commented 5 months ago

give me the python script pls

#!/usr/bin/env python3

# 1: etc/udev/rules.d/99-fixcontroller.rules
# 2: ACTION=="add", ATTRS{idProduct}=="028e", ATTRS{idVendor}=="045e", DRIVERS=="usb", RUN+="/path/to/script.py"
# 3: sudo udevadm control --reload

import os
import sys

try:
    import usb.core
    import usb.util
except ImportError:
    print("First, install the pyusb module with PIP or your package manager.")
else:
    if os.geteuid() != 0:
        print("You need to run this script with sudo")
        sys.exit()

    dev = usb.core.find(find_all = True)

    for d in dev:
        if d.idVendor == 0x045e and d.idProduct == 0x028e:
            d.ctrl_transfer(0xc1, 0x01, 0x0100, 0x00, 0x14)
finally:
    sys.exit()
SteavenGamerYT commented 5 months ago

Bus 005 Device 006: ID 2563:0526 ShenZhen ShanWan Technology Co., Ltd. Android Gamepad

SteavenGamerYT commented 5 months ago

defernt ids in the script tho

SteavenGamerYT commented 5 months ago

sometimes it appears as Bus 005 Device 002: ID 057e:2009 Nintendo Co., Ltd Switch Pro Controller

amardhruva commented 5 months ago

Try holding down X while connecting the controller to usb

On Thu, Apr 18, 2024, 1:13 AM SteavenGamerYT @.***> wrote:

sometimes it appears as Bus 005 Device 002: ID 057e:2009 Nintendo Co., Ltd Switch Pro Controller

— Reply to this email directly, view it on GitHub https://github.com/paroj/xpad/issues/119#issuecomment-2063076607, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABZ3C3YOHGVR2L46CTMUVG3Y55P7NAVCNFSM4GHWG6TKU5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TEMBWGMYDONRWGA3Q . You are receiving this because you commented.Message ID: @.***>

NintyS commented 4 months ago

Bus 005 Device 006: ID 2563:0526 ShenZhen ShanWan Technology Co., Ltd. Android Gamepad

Did you found the answer? We can't switch our controllers into X-Input mode maybe because controllers sees ours PCs as a console.

SteavenGamerYT commented 2 months ago

Did you found the answer?

no i didnt yet

P-rth commented 1 month ago

Update pls

SteavenGamerYT commented 2 weeks ago

pls fix this