From 13cdcd24b0020c69cda561db1c587e6c76e7ce6b Mon Sep 17 00:00:00 2001 From: Přemysl Eric Janouch Date: Wed, 18 Mar 2026 11:37:35 +0100 Subject: WIP: EKX5S-T 2025 --- elksmart-comm.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'elksmart-comm.c') diff --git a/elksmart-comm.c b/elksmart-comm.c index 1e281cc..8d2a146 100644 --- a/elksmart-comm.c +++ b/elksmart-comm.c @@ -251,6 +251,8 @@ enum { // 0x184 (EKX5S-T, international edition) USB_PRODUCT_SMTCTL_SMART_EKX4S = 0x0195, USB_PRODUCT_SMTCTL_SMART_EKX5S_T = 0x0184, + // 0x132 (EKX5S-T, to be reverse-engineered) + USB_PRODUCT_SMTCTL_SMART_EKX5S_T_2025 = 0x0132, // There should only ever be one interface. USB_INTERFACE = 0, @@ -277,7 +279,8 @@ init_device_from_desc(struct libusb_config_descriptor *desc, struct error **e) return error_set(e, "unexpected alternate setting count"); const struct libusb_interface_descriptor *asd = desc->interface->altsetting; - if (asd->bInterfaceClass != LIBUSB_CLASS_COMM) + if (asd->bInterfaceClass != LIBUSB_CLASS_COMM && + asd->bInterfaceClass != LIBUSB_CLASS_VENDOR_SPEC /* 045c:0132 */) return error_set(e, "unexpected USB interface class"); if (asd->bNumEndpoints != 2) return error_set(e, "unexpected endpoint count"); @@ -647,6 +650,9 @@ main(int argc, char *argv[]) if (!device && !result) device = find_device( USB_VENDOR_SMTCTL, USB_PRODUCT_SMTCTL_SMART_EKX5S_T, &result); + if (!device && !result) + device = find_device( + USB_VENDOR_SMTCTL, USB_PRODUCT_SMTCTL_SMART_EKX5S_T_2025, &result); if (result) exit_fatal("couldn't open device: %s", libusb_strerror(result)); -- cgit v1.2.3-70-g09d2