[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID:
<CAGwozwFXmye4kJzjFbZzUmgmhHn0YyX2eEwidkUJBs7ZhpXhNw@mail.gmail.com>
Date: Sat, 7 Feb 2026 13:00:05 +0100
From: Antheas Kapenekakis <lkml@...heas.dev>
To: Shengyu Qu <wiagn233@...look.com>
Cc: dmitry.torokhov@...il.com, vi@...rift.com, niltonperimneto@...il.com,
linux-input@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v1] input: xpad: Add support for BETOP BTP-KP50B/C
controller's wireless mode
On Sat, 7 Feb 2026 at 05:57, Shengyu Qu <wiagn233@...look.com> wrote:
>
> Update on commit info: seems these controllers support Xbox mode when
> using wired mode, however, their firmware has some weird enumeration
> logic that won't work with current xpad driver(It would enum as xbox
> first if no driver is loaded, then disconnect and re-enum as NS
> controller, finally something else), and by default wired mode would end
> with nintendo driver.
Hi,
if I recall, this logic abuses some HID descriptor logic to cycle the
mode depending on the OS. The arch wiki has a potential fix for
certain controllers.
This makes you end up in Android mode since linux kernel. Nintendo
uses a BSD-based kernel, and the Windows NT kernel is different. So by
breaking the protocol in different ways they get it to cycle.
Antheas
> 在 2026/2/5 22:15, Shengyu Qu 写道:
> > BETOP's BTP-KP50B and BTP-KP50C controller's wireless dongles are both
> > working as standard Xbox 360 controllers. Add USB device IDs for them to
> > xpad driver.
> >
> > Both controllers can't work as Xbox controllers when using wired mode and
> > have different USB IDs.
> >
> > Signed-off-by: Shengyu Qu <wiagn233@...look.com>
> > ---
> > drivers/input/joystick/xpad.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
> > index 363d50949386..260dd41ea6e5 100644
> > --- a/drivers/input/joystick/xpad.c
> > +++ b/drivers/input/joystick/xpad.c
> > @@ -360,6 +360,8 @@ static const struct xpad_device {
> > { 0x1bad, 0xfd00, "Razer Onza TE", 0, XTYPE_XBOX360 },
> > { 0x1bad, 0xfd01, "Razer Onza", 0, XTYPE_XBOX360 },
> > { 0x1ee9, 0x1590, "ZOTAC Gaming Zone", 0, XTYPE_XBOX360 },
> > + { 0x20bc, 0x5134, "BETOP BTP-KP50B Xinput Dongle", 0, XTYPE_XBOX360 },
> > + { 0x20bc, 0x514a, "BETOP BTP-KP50C Xinput Dongle", 0, XTYPE_XBOX360 },
> > { 0x20d6, 0x2001, "BDA Xbox Series X Wired Controller", 0, XTYPE_XBOXONE },
> > { 0x20d6, 0x2009, "PowerA Enhanced Wired Controller for Xbox Series X|S", 0, XTYPE_XBOXONE },
> > { 0x20d6, 0x2064, "PowerA Wired Controller for Xbox", MAP_SHARE_BUTTON, XTYPE_XBOXONE },
> > @@ -562,6 +564,7 @@ static const struct usb_device_id xpad_table[] = {
> > XPAD_XBOX360_VENDOR(0x1a86), /* Nanjing Qinheng Microelectronics (WCH) */
> > XPAD_XBOX360_VENDOR(0x1bad), /* Harmonix Rock Band guitar and drums */
> > XPAD_XBOX360_VENDOR(0x1ee9), /* ZOTAC Technology Limited */
> > + XPAD_XBOX360_VENDOR(0x20bc), /* BETOP wireless dongles */
> > XPAD_XBOX360_VENDOR(0x20d6), /* PowerA controllers */
> > XPAD_XBOXONE_VENDOR(0x20d6), /* PowerA controllers */
> > XPAD_XBOX360_VENDOR(0x2345), /* Machenike Controllers */
>
Powered by blists - more mailing lists