* [BUG] Side buttons not detected on Telink 2.4G mouse (ID 320f:226f) @ 2025-10-05 17:57 Артем Бігдаш 2025-10-09 3:31 ` Linux Hid 0 siblings, 1 reply; 6+ messages in thread From: Артем Бігдаш @ 2025-10-05 17:57 UTC (permalink / raw) To: linux-input Hello, I am reporting an issue with a wireless mouse that uses a Telink 2.4G receiver. The side buttons (Forward/Back) are not detected by the system. Device Information: - Name: Redragon King Lite - lsusb ID: 320f:226f Telink 2.4G Wireless Receiver - System: Fedora 42, KDE Plasma Diagnostics: - Standard tools like `evtest` and `libinput debug-events` show no events when the side buttons are pressed. The kernel does not seem to create any evdev events for them. - However, `hid-recorder` on the correct hidraw interface (`/dev/hidraw1`) successfully captures the raw HID reports. Raw HID Reports: Pressing the first side button (likely Back/Forward) sends this report: E: ... 8 01 10 00 00 00 00 00 00 Releasing it sends: E: ... 8 01 00 00 00 00 00 00 00 Pressing the second side button (likely Forward/Back) sends this report: E: ... 8 01 08 00 00 00 00 00 00 Releasing it sends: E: ... 8 01 00 00 00 00 00 00 00 It seems the `usbhid` driver does not correctly parse these HID reports (report ID 1, second byte mask 0x10 and 0x08) into standard KEY_BACK/KEY_FORWARD events. Could you please advise if a quirk can be added to the kernel to support this device correctly? All the necessary diagnostic data appears to be above. Thank you for your time and work on the Linux kernel. Best regards, Btema2 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [BUG] Side buttons not detected on Telink 2.4G mouse (ID 320f:226f) 2025-10-05 17:57 [BUG] Side buttons not detected on Telink 2.4G mouse (ID 320f:226f) Артем Бігдаш @ 2025-10-09 3:31 ` Linux Hid [not found] ` <CADYkRmoNpF03Mk7fGgT48pS0daW=h79-87yURqrkgOwxZXjgnw@mail.gmail.com> 0 siblings, 1 reply; 6+ messages in thread From: Linux Hid @ 2025-10-09 3:31 UTC (permalink / raw) To: Артем Бігдаш, linux-input Hello Btema2, The problem is probably in the report descriptor from the Telink 2.4G Wireless Receiver. Can you send the Configuration, Device, and Report Descriptors from that device? The VID 0x320f belongs to Evision Semiconductor Technology and there is already a driver in the kernel (drivers/hid/hid-evision.c). It would be easy enough to add a report fixup hook to that driver. Would you be able to test the patch? Thanks, Terry On 10/5/2025 10:57 AM, Артем Бігдаш wrote: > Hello, > > I am reporting an issue with a wireless mouse that uses a Telink 2.4G > receiver. The side buttons (Forward/Back) are not detected by the > system. > > Device Information: > - Name: Redragon King Lite > - lsusb ID: 320f:226f Telink 2.4G Wireless Receiver > - System: Fedora 42, KDE Plasma > > Diagnostics: > - Standard tools like `evtest` and `libinput debug-events` show no > events when the side buttons are pressed. The kernel does not seem to > create any evdev events for them. > - However, `hid-recorder` on the correct hidraw interface > (`/dev/hidraw1`) successfully captures the raw HID reports. > > Raw HID Reports: > > Pressing the first side button (likely Back/Forward) sends this report: > E: ... 8 01 10 00 00 00 00 00 00 > Releasing it sends: > E: ... 8 01 00 00 00 00 00 00 00 > > Pressing the second side button (likely Forward/Back) sends this report: > E: ... 8 01 08 00 00 00 00 00 00 > Releasing it sends: > E: ... 8 01 00 00 00 00 00 00 00 > > It seems the `usbhid` driver does not correctly parse these HID > reports (report ID 1, second byte mask 0x10 and 0x08) into standard > KEY_BACK/KEY_FORWARD events. > > Could you please advise if a quirk can be added to the kernel to > support this device correctly? All the necessary diagnostic data > appears to be above. > > Thank you for your time and work on the Linux kernel. > > Best regards, > Btema2 > ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <CADYkRmoNpF03Mk7fGgT48pS0daW=h79-87yURqrkgOwxZXjgnw@mail.gmail.com>]
* Re: [BUG] Side buttons not detected on Telink 2.4G mouse (ID 320f:226f) [not found] ` <CADYkRmoNpF03Mk7fGgT48pS0daW=h79-87yURqrkgOwxZXjgnw@mail.gmail.com> @ 2025-11-17 21:34 ` Terry Junge 2025-11-20 1:49 ` [PATCH v1] HID: Fix Report Descriptor for Evision Wireless Receiver 320f:226f Terry Junge 0 siblings, 1 reply; 6+ messages in thread From: Terry Junge @ 2025-11-17 21:34 UTC (permalink / raw) To: Artem; +Cc: linux-input@vger.kernel.org On 11/15/2025 7:33 AM, Artem wrote: > Hello Terry, sorry for the wait. > > Yes, I am happy to test the patch once it is ready. > > I also discovered that the side buttons work correctly when the mouse > is connected directly via a USB-C cable (wired). The issue is > definitely specific to the wireless receiver. > > You asked for the Configuration, Device, and Report Descriptors. Sorry > if something is wrong, I'm not an advanced user, but I believe this is > what you asked for. The lsusb command should provide the Device and > Configuration descriptors, but fails to get the Report Descriptors. so > I used usbhid-dump to get the raw Report Descriptors. Perfect, thanks... As I suspected the Report Descriptor declares 5 buttons but only declares 3 usages. > > 007:002:000:DESCRIPTOR 1763220717.146252 05 01 Desktop Page 09 06 Keyboard Usage A1 01 Application Collection 85 06 Report ID 6 05 07 Keyboard/Keypad Page 19 E0 Usage Min Keyboard Left Control 29 E7 Usage Max Keyboard Right GUI 15 00 Logical Min 0 25 01 Logical Max 1 75 01 Report Size 1 95 08 Report Count 8 81 02 Input 95 06 Report Count 6 75 08 Report Size 8 15 00 Logical Min 0 26 FF 00 Logical Max 255 05 07 Keyboard/Keypad Page 19 00 Usage Min 0 2A 65 00 Usage Max Keyboard Application 81 00 Input C0 End Collection 05 01 Desktop Page 09 02 Mouse Usage A1 01 Application Collection 85 01 Report ID 1 09 01 Usage Pointer A1 00 Physical Collection 05 09 Button Page 19 01 Usage Min Button 1 29 03 Usage Max Button 3 -- only 3 usages - change to 5 15 00 Logical Min 0 25 01 Logical Max 1 75 01 Report Size 1 95 05 Report Count 5 -- 5 buttons 81 02 Input 75 03 Report Size 3 95 01 Report Count 1 81 01 Input 05 01 Desktop Page 09 30 Usage X 09 31 Usage Y 16 01 80 Logical Min -32767 26 FF 7F Logical Max 32767 75 10 Report Size 16 95 02 Report Count 2 81 06 Input 09 38 Usage Wheel 15 81 Logical Min -127 25 7F Logical Max 127 75 08 Report Size 8 95 01 Report Count 1 81 06 Input 05 0C Consumer Page 0A 38 02 Usage AC Pan 15 81 Logical Min -127 25 7F Logical Max 127 75 08 Report Size 8 95 01 Report Count 1 81 06 Input C0 End Collection C0 End Collection 05 0C Consumer Page 09 01 Usage Consumer Control A1 01 Application Collection 85 02 Report ID 2 75 10 Report Size 16 95 01 Report Count 1 15 01 Logical Min 1 26 8C 02 Logical Max 0x28c 19 01 Usage Min Consumer Control 2A 8C 02 Usage Max AC Send 81 00 Input C0 End Collection 05 01 Desktop Page 09 80 System Control Usage A1 01 Application Collection 85 03 Report ID 3 09 82 Usage System Sleep 09 83 Usage System Wake Up 09 81 Usage System Power Down 15 00 Logical Min 0 25 01 Logical Max 1 19 01 Usage Min 1 29 03 Usage Max 3 75 01 Report Size 1 95 03 Report Count 3 81 02 Input 95 05 Report Count 5 81 01 Input C0 End Collection 06 00 FF Vendor Page 0xff00 09 00 Usage 0 A1 01 Application Collection 85 05 Report ID 5 09 00 Usage 0 15 00 Logical Min 0 26 FF 00 Logical Max 255 75 08 Report Size 8 95 07 Report Count 7 81 02 Input 09 01 Usage 1 91 02 Output 09 02 Usage 2 B1 02 Feature C0 End Collection 06 01 FF Vendor Page 0xff01 09 00 Usage 0 A1 01 Application Collection 85 04 Report ID 4 09 01 Usage 1 15 00 Logical Min 0 26 FF 00 Logical Max 255 75 08 Report Size 8 95 07 Report Count 7 B1 02 Feature C0 End Collection > > I believe this is all the information you requested. Please let me > know if there's anything else I can do. > I'll send out a patch in the next day or two. If you could test it and let me know how it goes, it would be great. Thanks, Terry > Best regards, > Btema2 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v1] HID: Fix Report Descriptor for Evision Wireless Receiver 320f:226f 2025-11-17 21:34 ` Terry Junge @ 2025-11-20 1:49 ` Terry Junge 2025-11-21 22:58 ` Artem 2025-11-26 16:18 ` Jiri Kosina 0 siblings, 2 replies; 6+ messages in thread From: Terry Junge @ 2025-11-20 1:49 UTC (permalink / raw) To: Jiri Kosina, Benjamin Tissoires, Artem; +Cc: linux-input, linux-kernel Update help message for Evision driver Add #define for Evision device ID 0x226f Add report_fixup hook to Evision driver The mouse portion of the device's Report Descriptor declares 5 buttons but only declares 3 usages (Button 1 through Button 3). As a result events for the 2 side buttons are not generated. Detect and repair the Report Descriptor if necessary by changing the Usage Maximum value from Button 3 to Button 5. Reported-by: Artem <temabiill@gmail.com> Closes: https://lore.kernel.org/all/CADYkRmrfhRf6VmQjc+su+mepyv=TsHc+aMcL6ryRZ5HTZ8pyFg@mail.gmail.com/ Signed-off-by: Terry Junge <linuxhid@cosmicgizmosystems.com> --- drivers/hid/Kconfig | 1 + drivers/hid/hid-evision.c | 21 +++++++++++++++++++++ drivers/hid/hid-ids.h | 1 + 3 files changed, 23 insertions(+) diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig index 04420a713be0..30c4f79535fe 100644 --- a/drivers/hid/Kconfig +++ b/drivers/hid/Kconfig @@ -383,6 +383,7 @@ config HID_EVISION help Support for some EVision keyboards. Note that this is needed only when applying customization using userspace programs. + Support for some EVision devices requiring report descriptor fixups. config HID_EZKEY tristate "Ezkey BTC 8193 keyboard" diff --git a/drivers/hid/hid-evision.c b/drivers/hid/hid-evision.c index bb5997078491..3e7f43ab80bb 100644 --- a/drivers/hid/hid-evision.c +++ b/drivers/hid/hid-evision.c @@ -18,6 +18,10 @@ static int evision_input_mapping(struct hid_device *hdev, struct hid_input *hi, struct hid_field *field, struct hid_usage *usage, unsigned long **bit, int *max) { + /* mapping only applies to USB_DEVICE_ID_EVISION_ICL01 */ + if (hdev->product != USB_DEVICE_ID_EVISION_ICL01) + return 0; + if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER) return 0; @@ -37,8 +41,24 @@ static int evision_input_mapping(struct hid_device *hdev, struct hid_input *hi, return 0; } +#define REP_DSC_SIZE 236 +#define USAGE_MAX_INDEX 59 + +static const __u8 *evision_report_fixup(struct hid_device *hdev, __u8 *rdesc, + unsigned int *rsize) +{ + if (hdev->product == USB_DEVICE_ID_EV_TELINK_RECEIVER && + *rsize == REP_DSC_SIZE && rdesc[USAGE_MAX_INDEX] == 0x29 && + rdesc[USAGE_MAX_INDEX + 1] == 3) { + hid_info(hdev, "fixing EVision:TeLink Receiver report descriptor\n"); + rdesc[USAGE_MAX_INDEX + 1] = 5; // change usage max from 3 to 5 + } + return rdesc; +} + static const struct hid_device_id evision_devices[] = { { HID_USB_DEVICE(USB_VENDOR_ID_EVISION, USB_DEVICE_ID_EVISION_ICL01) }, + { HID_USB_DEVICE(USB_VENDOR_ID_EVISION, USB_DEVICE_ID_EV_TELINK_RECEIVER) }, { } }; MODULE_DEVICE_TABLE(hid, evision_devices); @@ -47,6 +67,7 @@ static struct hid_driver evision_driver = { .name = "evision", .id_table = evision_devices, .input_mapping = evision_input_mapping, + .report_fixup = evision_report_fixup, }; module_hid_driver(evision_driver); diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index 0723b4b1c9ec..c9e67b768bc7 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@ -476,6 +476,7 @@ #define USB_DEVICE_ID_EMS_TRIO_LINKER_PLUS_II 0x0118 #define USB_VENDOR_ID_EVISION 0x320f +#define USB_DEVICE_ID_EV_TELINK_RECEIVER 0x226f #define USB_DEVICE_ID_EVISION_ICL01 0x5041 #define USB_VENDOR_ID_FFBEAST 0x045b base-commit: 2953fb65481b262514ac13f24ffbc70eeace68c6 -- 2.43.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v1] HID: Fix Report Descriptor for Evision Wireless Receiver 320f:226f 2025-11-20 1:49 ` [PATCH v1] HID: Fix Report Descriptor for Evision Wireless Receiver 320f:226f Terry Junge @ 2025-11-21 22:58 ` Artem 2025-11-26 16:18 ` Jiri Kosina 1 sibling, 0 replies; 6+ messages in thread From: Artem @ 2025-11-21 22:58 UTC (permalink / raw) To: Terry Junge; +Cc: Jiri Kosina, Benjamin Tissoires, linux-input, linux-kernel Hello Terry, I have successfully compiled and tested the patch. It works perfectly! The side buttons (Forward/Back) are now correctly detected and functioning immediately after loading the patched module. I haven't encountered any issues afterwards, other functionality is unchanged. dmesg confirms the fix is applied: [10307.732966] evision 0003:320F:226F.0009: fixing EVision:TeLink Receiver report descriptor Thank you very much for your quick help and the fix. Tested-by: Artem <temabiill@gmail.com> Best regards, Btema2 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v1] HID: Fix Report Descriptor for Evision Wireless Receiver 320f:226f 2025-11-20 1:49 ` [PATCH v1] HID: Fix Report Descriptor for Evision Wireless Receiver 320f:226f Terry Junge 2025-11-21 22:58 ` Artem @ 2025-11-26 16:18 ` Jiri Kosina 1 sibling, 0 replies; 6+ messages in thread From: Jiri Kosina @ 2025-11-26 16:18 UTC (permalink / raw) To: Terry Junge; +Cc: Benjamin Tissoires, Artem, linux-input, linux-kernel Applied, thanks. -- Jiri Kosina SUSE Labs ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-11-26 16:18 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-05 17:57 [BUG] Side buttons not detected on Telink 2.4G mouse (ID 320f:226f) Артем Бігдаш
2025-10-09 3:31 ` Linux Hid
[not found] ` <CADYkRmoNpF03Mk7fGgT48pS0daW=h79-87yURqrkgOwxZXjgnw@mail.gmail.com>
2025-11-17 21:34 ` Terry Junge
2025-11-20 1:49 ` [PATCH v1] HID: Fix Report Descriptor for Evision Wireless Receiver 320f:226f Terry Junge
2025-11-21 22:58 ` Artem
2025-11-26 16:18 ` Jiri Kosina
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox