* [PATCH] HID: hid-lg: Add USBID for Logitech G29 Wheel
@ 2015-07-24 1:10 Simon Wood
2015-07-29 12:10 ` Jiri Kosina
2015-09-03 2:02 ` simon
0 siblings, 2 replies; 6+ messages in thread
From: Simon Wood @ 2015-07-24 1:10 UTC (permalink / raw)
To: linux-input; +Cc: linux-kernel, Jiri Kosina, Simon Wood
Since this wheel is now available, and the USBID is listed on their website,
this patch adds it to allow the hid-lg4ff force feedback driver to find it.
I do not have this wheel to test with, but this should at least get it working
in emulation mode.
Note: There is probably more work required for adjust HID descriptor and handle
switching between emulation and native modes.
Signed-off-by: Simon Wood <simon@mungewell.org>
---
drivers/hid/hid-ids.h | 1 +
drivers/hid/hid-lg.c | 2 ++
2 files changed, 3 insertions(+)
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index b04b082..653bfd4 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -599,6 +599,7 @@
#define USB_DEVICE_ID_LOGITECH_DUAL_ACTION 0xc216
#define USB_DEVICE_ID_LOGITECH_RUMBLEPAD2 0xc218
#define USB_DEVICE_ID_LOGITECH_RUMBLEPAD2_2 0xc219
+#define USB_DEVICE_ID_LOGITECH_G29_WHEEL 0xc24f
#define USB_DEVICE_ID_LOGITECH_WINGMAN_F3D 0xc283
#define USB_DEVICE_ID_LOGITECH_FORCE3D_PRO 0xc286
#define USB_DEVICE_ID_LOGITECH_FLIGHT_SYSTEM_G940 0xc287
diff --git a/drivers/hid/hid-lg.c b/drivers/hid/hid-lg.c
index 429340d..5332fb7 100644
--- a/drivers/hid/hid-lg.c
+++ b/drivers/hid/hid-lg.c
@@ -776,6 +776,8 @@ static const struct hid_device_id lg_devices[] = {
.driver_data = LG_FF },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD2_2),
.driver_data = LG_FF },
+ { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G29_WHEEL),
+ .driver_data = LG_FF4 },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WINGMAN_F3D),
.driver_data = LG_FF },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_FORCE3D_PRO),
--
2.1.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] HID: hid-lg: Add USBID for Logitech G29 Wheel
2015-07-24 1:10 [PATCH] HID: hid-lg: Add USBID for Logitech G29 Wheel Simon Wood
@ 2015-07-29 12:10 ` Jiri Kosina
2015-09-03 2:02 ` simon
1 sibling, 0 replies; 6+ messages in thread
From: Jiri Kosina @ 2015-07-29 12:10 UTC (permalink / raw)
To: Simon Wood; +Cc: linux-input, linux-kernel
On Thu, 23 Jul 2015, Simon Wood wrote:
> Since this wheel is now available, and the USBID is listed on their website,
> this patch adds it to allow the hid-lg4ff force feedback driver to find it.
>
> I do not have this wheel to test with, but this should at least get it working
> in emulation mode.
>
> Note: There is probably more work required for adjust HID descriptor and handle
> switching between emulation and native modes.
>
> Signed-off-by: Simon Wood <simon@mungewell.org>
I have applied this to for-4.3/logitech (and kept the "Note:" above in the
changelog).
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] HID: hid-lg: Add USBID for Logitech G29 Wheel
2015-07-24 1:10 [PATCH] HID: hid-lg: Add USBID for Logitech G29 Wheel Simon Wood
@ 2015-09-03 2:02 ` simon
2015-09-03 2:02 ` simon
1 sibling, 0 replies; 6+ messages in thread
From: simon @ 2015-09-03 2:02 UTC (permalink / raw)
To: Simon Wood; +Cc: linux-input, linux-kernel, Jiri Kosina, Simon Wood
[-- Attachment #1: Type: text/plain, Size: 1999 bytes --]
> I do not have this wheel to test with, but this should at least get it
> working in emulation mode.
>
> Note: There is probably more work required for adjust HID descriptor and
> handle switching between emulation and native modes.
I was able to get some more information, but as yet have not been able to
get time on the real hardware. Attached is a 2nd patch which should
improve the support, I'll formally submit it next week.... But if anyone
can test it first that would be great.
There's a pre-built Debian/Ubuntu kernel here:
https://dl.dropboxusercontent.com/u/34518077/linux-headers-4.2.0-g29%2B_20150831_i386.deb
https://dl.dropboxusercontent.com/u/34518077/linux-image-4.2.0-g29%2B_20150831_i386.deb
The wheel will need to be in PS3 mode set with switch behind LEDs, and
should connect first as a DF-EX (220' turn) and then automatically
reconnect as G29 (900' turn).
The mode should be selectable something like
--
root@retrobox:/home/simon# cd /sys/bus/hid/devices/0003\:046D\:C29B.0002
root@retrobox:/sys/bus/hid/devices/0003:046D:C29B.0002# ls
alternate_modes country driver hidraw input leds modalias power
range real_id report_descriptor subsystem uevent
root@retrobox:/sys/bus/hid/devices/0003:046D:C29B.0002# cat alternate_modes
native: G27 Racing Wheel *
DF-EX: Driving Force / Formula EX
DFP: Driving Force Pro
G25: G25 Racing Wheel
G27: G27 Racing Wheel *
root@retrobox:/sys/bus/hid/devices/0003:046D:C29B.0002# echo G25 >
alternate_modes
--
The LEDs should also work
--
root@retrobox:/home/simon/linux-git# cd /sys/class/leds/
root@retrobox:/sys/class/leds# ls
0003:046D:C29B.0005::RPM1 0003:046D:C29B.0005::RPM4 input3::numlock
tpacpi::power tpacpi::thinkvantage
0003:046D:C29B.0005::RPM2 0003:046D:C29B.0005::RPM5 input3::scrolllock
tpacpi::standby
0003:046D:C29B.0005::RPM3 input3::capslock phy0-led
tpacpi::thinklight
root@retrobox:/sys/class/leds# echo 1 >
0003\:046D\:C29B.0005\:\:RPM1/brightness
--
Cheers,
Simon
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: g29_ps3.patch --]
[-- Type: text/x-patch; name="g29_ps3.patch", Size: 6763 bytes --]
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index e6fce23..2e9c706 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1874,6 +1874,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD_CORD) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD2_2) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G29_WHEEL) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WINGMAN_F3D) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WINGMAN_FFG ) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_FORCE3D_PRO) },
diff --git a/drivers/hid/hid-lg4ff.c b/drivers/hid/hid-lg4ff.c
index 02cec83..d0c3da5 100644
--- a/drivers/hid/hid-lg4ff.c
+++ b/drivers/hid/hid-lg4ff.c
@@ -45,7 +45,8 @@
#define LG4FF_MODE_G25_IDX 3
#define LG4FF_MODE_DFGT_IDX 4
#define LG4FF_MODE_G27_IDX 5
-#define LG4FF_MODE_MAX_IDX 6
+#define LG4FF_MODE_G29_IDX 6
+#define LG4FF_MODE_MAX_IDX 7
#define LG4FF_MODE_NATIVE BIT(LG4FF_MODE_NATIVE_IDX)
#define LG4FF_MODE_DFEX BIT(LG4FF_MODE_DFEX_IDX)
@@ -53,6 +54,7 @@
#define LG4FF_MODE_G25 BIT(LG4FF_MODE_G25_IDX)
#define LG4FF_MODE_DFGT BIT(LG4FF_MODE_DFGT_IDX)
#define LG4FF_MODE_G27 BIT(LG4FF_MODE_G27_IDX)
+#define LG4FF_MODE_G29 BIT(LG4FF_MODE_G29_IDX)
#define LG4FF_DFEX_TAG "DF-EX"
#define LG4FF_DFEX_NAME "Driving Force / Formula EX"
@@ -62,6 +64,8 @@
#define LG4FF_G25_NAME "G25 Racing Wheel"
#define LG4FF_G27_TAG "G27"
#define LG4FF_G27_NAME "G27 Racing Wheel"
+#define LG4FF_G29_TAG "G29"
+#define LG4FF_G29_NAME "G29 Racing Wheel"
#define LG4FF_DFGT_TAG "DFGT"
#define LG4FF_DFGT_NAME "Driving Force GT"
@@ -144,6 +148,7 @@ static const struct lg4ff_wheel lg4ff_devices[] = {
{USB_DEVICE_ID_LOGITECH_G25_WHEEL, lg4ff_wheel_effects, 40, 900, lg4ff_set_range_g25},
{USB_DEVICE_ID_LOGITECH_DFGT_WHEEL, lg4ff_wheel_effects, 40, 900, lg4ff_set_range_g25},
{USB_DEVICE_ID_LOGITECH_G27_WHEEL, lg4ff_wheel_effects, 40, 900, lg4ff_set_range_g25},
+ {USB_DEVICE_ID_LOGITECH_G29_WHEEL, lg4ff_wheel_effects, 40, 900, lg4ff_set_range_g25},
{USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2, lg4ff_wheel_effects, 40, 270, NULL},
{USB_DEVICE_ID_LOGITECH_WII_WHEEL, lg4ff_wheel_effects, 40, 270, NULL}
};
@@ -161,6 +166,9 @@ static const struct lg4ff_multimode_wheel lg4ff_multimode_wheels[] = {
{USB_DEVICE_ID_LOGITECH_G27_WHEEL,
LG4FF_MODE_NATIVE | LG4FF_MODE_G27 | LG4FF_MODE_G25 | LG4FF_MODE_DFP | LG4FF_MODE_DFEX,
LG4FF_G27_TAG, LG4FF_G27_NAME},
+ {USB_DEVICE_ID_LOGITECH_G29_WHEEL,
+ LG4FF_MODE_NATIVE | LG4FF_MODE_G29 | LG4FF_MODE_DFGT | LG4FF_MODE_DFP,
+ LG4FF_G29_TAG, LG4FF_G29_NAME},
};
static const struct lg4ff_alternate_mode lg4ff_alternate_modes[] = {
@@ -169,7 +177,8 @@ static const struct lg4ff_alternate_mode lg4ff_alternate_modes[] = {
[LG4FF_MODE_DFP_IDX] = {USB_DEVICE_ID_LOGITECH_DFP_WHEEL, LG4FF_DFP_TAG, LG4FF_DFP_NAME},
[LG4FF_MODE_G25_IDX] = {USB_DEVICE_ID_LOGITECH_G25_WHEEL, LG4FF_G25_TAG, LG4FF_G25_NAME},
[LG4FF_MODE_DFGT_IDX] = {USB_DEVICE_ID_LOGITECH_DFGT_WHEEL, LG4FF_DFGT_TAG, LG4FF_DFGT_NAME},
- [LG4FF_MODE_G27_IDX] = {USB_DEVICE_ID_LOGITECH_G27_WHEEL, LG4FF_G27_TAG, LG4FF_G27_NAME}
+ [LG4FF_MODE_G27_IDX] = {USB_DEVICE_ID_LOGITECH_G27_WHEEL, LG4FF_G27_TAG, LG4FF_G27_NAME},
+ [LG4FF_MODE_G29_IDX] = {USB_DEVICE_ID_LOGITECH_G29_WHEEL, LG4FF_G29_TAG, LG4FF_G29_NAME}
};
/* Multimode wheel identificators */
@@ -197,10 +206,17 @@ static const struct lg4ff_wheel_ident_info lg4ff_dfgt_ident_info = {
USB_DEVICE_ID_LOGITECH_DFGT_WHEEL
};
+static const struct lg4ff_wheel_ident_info lg4ff_g29_ident_info = {
+ 0xfff0,
+ 0x1350,
+ USB_DEVICE_ID_LOGITECH_G29_WHEEL
+};
+
/* Multimode wheel identification checklists */
static const struct lg4ff_wheel_ident_checklist lg4ff_main_checklist = {
- 4,
- {&lg4ff_dfgt_ident_info,
+ 5,
+ {&lg4ff_g29_ident_info,
+ &lg4ff_dfgt_ident_info,
&lg4ff_g27_ident_info,
&lg4ff_g25_ident_info,
&lg4ff_dfp_ident_info}
@@ -238,6 +254,12 @@ static const struct lg4ff_compat_mode_switch lg4ff_mode_switch_ext09_g27 = {
0xf8, 0x09, 0x04, 0x01, 0x00, 0x00, 0x00} /* Switch mode to G27 with detach */
};
+static const struct lg4ff_compat_mode_switch lg4ff_mode_switch_ext09_g29 = {
+ 2,
+ {0xf8, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, /* Revert mode upon USB reset */
+ 0xf8, 0x09, 0x05, 0x01, 0x00, 0x00, 0x00} /* Switch mode to G29 with detach */
+};
+
/* EXT_CMD1 - Understood by DFP, G25, G27 and DFGT */
static const struct lg4ff_compat_mode_switch lg4ff_mode_switch_ext01_dfp = {
1,
@@ -651,6 +673,19 @@ static const struct lg4ff_compat_mode_switch *lg4ff_get_mode_switch_command(cons
return NULL;
}
break;
+ case USB_DEVICE_ID_LOGITECH_G29_WHEEL:
+ switch (target_product_id) {
+ case USB_DEVICE_ID_LOGITECH_DFP_WHEEL:
+ return &lg4ff_mode_switch_ext09_dfp;
+ case USB_DEVICE_ID_LOGITECH_DFGT_WHEEL:
+ return &lg4ff_mode_switch_ext09_dfgt;
+ case USB_DEVICE_ID_LOGITECH_G29_WHEEL:
+ return &lg4ff_mode_switch_ext09_g29;
+ /* G29 can only be switched to DFP, DFGT or its native mode */
+ default:
+ return NULL;
+ }
+ break;
case USB_DEVICE_ID_LOGITECH_DFGT_WHEEL:
switch (target_product_id) {
case USB_DEVICE_ID_LOGITECH_WHEEL:
@@ -1049,12 +1084,12 @@ static u16 lg4ff_identify_multimode_wheel(struct hid_device *hid, const u16 repo
break;
case USB_DEVICE_ID_LOGITECH_G25_WHEEL:
checklist = &lg4ff_main_checklist;
- from_idx = 0;
+ from_idx = 1;
to_idx = checklist->count - 2; /* End identity check at G25 */
break;
case USB_DEVICE_ID_LOGITECH_G27_WHEEL:
checklist = &lg4ff_main_checklist;
- from_idx = 1; /* Start identity check at G27 */
+ from_idx = 2; /* Start identity check at G27 */
to_idx = checklist->count - 3; /* End identity check at G27 */
break;
case USB_DEVICE_ID_LOGITECH_DFGT_WHEEL:
@@ -1062,6 +1097,9 @@ static u16 lg4ff_identify_multimode_wheel(struct hid_device *hid, const u16 repo
from_idx = 0;
to_idx = checklist->count - 4; /* End identity check at DFGT */
break;
+ case USB_DEVICE_ID_LOGITECH_G29_WHEEL:
+ /* G29 can only be in native mode */
+ return USB_DEVICE_ID_LOGITECH_G29_WHEEL;
default:
return 0;
}
@@ -1251,7 +1289,8 @@ int lg4ff_init(struct hid_device *hid)
for (j = 0; j < 5; j++)
entry->wdata.led[j] = NULL;
- if (lg4ff_devices[i].product_id == USB_DEVICE_ID_LOGITECH_G27_WHEEL) {
+ if (lg4ff_devices[i].product_id == USB_DEVICE_ID_LOGITECH_G27_WHEEL ||
+ lg4ff_devices[i].product_id == USB_DEVICE_ID_LOGITECH_G29_WHEEL) {
struct led_classdev *led;
size_t name_sz;
char *name;
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] HID: hid-lg: Add USBID for Logitech G29 Wheel
@ 2015-09-03 2:02 ` simon
0 siblings, 0 replies; 6+ messages in thread
From: simon @ 2015-09-03 2:02 UTC (permalink / raw)
Cc: linux-input, linux-kernel, Jiri Kosina, Simon Wood
[-- Attachment #1: Type: text/plain, Size: 1999 bytes --]
> I do not have this wheel to test with, but this should at least get it
> working in emulation mode.
>
> Note: There is probably more work required for adjust HID descriptor and
> handle switching between emulation and native modes.
I was able to get some more information, but as yet have not been able to
get time on the real hardware. Attached is a 2nd patch which should
improve the support, I'll formally submit it next week.... But if anyone
can test it first that would be great.
There's a pre-built Debian/Ubuntu kernel here:
https://dl.dropboxusercontent.com/u/34518077/linux-headers-4.2.0-g29%2B_20150831_i386.deb
https://dl.dropboxusercontent.com/u/34518077/linux-image-4.2.0-g29%2B_20150831_i386.deb
The wheel will need to be in PS3 mode set with switch behind LEDs, and
should connect first as a DF-EX (220' turn) and then automatically
reconnect as G29 (900' turn).
The mode should be selectable something like
--
root@retrobox:/home/simon# cd /sys/bus/hid/devices/0003\:046D\:C29B.0002
root@retrobox:/sys/bus/hid/devices/0003:046D:C29B.0002# ls
alternate_modes country driver hidraw input leds modalias power
range real_id report_descriptor subsystem uevent
root@retrobox:/sys/bus/hid/devices/0003:046D:C29B.0002# cat alternate_modes
native: G27 Racing Wheel *
DF-EX: Driving Force / Formula EX
DFP: Driving Force Pro
G25: G25 Racing Wheel
G27: G27 Racing Wheel *
root@retrobox:/sys/bus/hid/devices/0003:046D:C29B.0002# echo G25 >
alternate_modes
--
The LEDs should also work
--
root@retrobox:/home/simon/linux-git# cd /sys/class/leds/
root@retrobox:/sys/class/leds# ls
0003:046D:C29B.0005::RPM1 0003:046D:C29B.0005::RPM4 input3::numlock
tpacpi::power tpacpi::thinkvantage
0003:046D:C29B.0005::RPM2 0003:046D:C29B.0005::RPM5 input3::scrolllock
tpacpi::standby
0003:046D:C29B.0005::RPM3 input3::capslock phy0-led
tpacpi::thinklight
root@retrobox:/sys/class/leds# echo 1 >
0003\:046D\:C29B.0005\:\:RPM1/brightness
--
Cheers,
Simon
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: g29_ps3.patch --]
[-- Type: text/x-patch; name="g29_ps3.patch", Size: 6763 bytes --]
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index e6fce23..2e9c706 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1874,6 +1874,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD_CORD) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RUMBLEPAD2_2) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_G29_WHEEL) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WINGMAN_F3D) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_WINGMAN_FFG ) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_FORCE3D_PRO) },
diff --git a/drivers/hid/hid-lg4ff.c b/drivers/hid/hid-lg4ff.c
index 02cec83..d0c3da5 100644
--- a/drivers/hid/hid-lg4ff.c
+++ b/drivers/hid/hid-lg4ff.c
@@ -45,7 +45,8 @@
#define LG4FF_MODE_G25_IDX 3
#define LG4FF_MODE_DFGT_IDX 4
#define LG4FF_MODE_G27_IDX 5
-#define LG4FF_MODE_MAX_IDX 6
+#define LG4FF_MODE_G29_IDX 6
+#define LG4FF_MODE_MAX_IDX 7
#define LG4FF_MODE_NATIVE BIT(LG4FF_MODE_NATIVE_IDX)
#define LG4FF_MODE_DFEX BIT(LG4FF_MODE_DFEX_IDX)
@@ -53,6 +54,7 @@
#define LG4FF_MODE_G25 BIT(LG4FF_MODE_G25_IDX)
#define LG4FF_MODE_DFGT BIT(LG4FF_MODE_DFGT_IDX)
#define LG4FF_MODE_G27 BIT(LG4FF_MODE_G27_IDX)
+#define LG4FF_MODE_G29 BIT(LG4FF_MODE_G29_IDX)
#define LG4FF_DFEX_TAG "DF-EX"
#define LG4FF_DFEX_NAME "Driving Force / Formula EX"
@@ -62,6 +64,8 @@
#define LG4FF_G25_NAME "G25 Racing Wheel"
#define LG4FF_G27_TAG "G27"
#define LG4FF_G27_NAME "G27 Racing Wheel"
+#define LG4FF_G29_TAG "G29"
+#define LG4FF_G29_NAME "G29 Racing Wheel"
#define LG4FF_DFGT_TAG "DFGT"
#define LG4FF_DFGT_NAME "Driving Force GT"
@@ -144,6 +148,7 @@ static const struct lg4ff_wheel lg4ff_devices[] = {
{USB_DEVICE_ID_LOGITECH_G25_WHEEL, lg4ff_wheel_effects, 40, 900, lg4ff_set_range_g25},
{USB_DEVICE_ID_LOGITECH_DFGT_WHEEL, lg4ff_wheel_effects, 40, 900, lg4ff_set_range_g25},
{USB_DEVICE_ID_LOGITECH_G27_WHEEL, lg4ff_wheel_effects, 40, 900, lg4ff_set_range_g25},
+ {USB_DEVICE_ID_LOGITECH_G29_WHEEL, lg4ff_wheel_effects, 40, 900, lg4ff_set_range_g25},
{USB_DEVICE_ID_LOGITECH_MOMO_WHEEL2, lg4ff_wheel_effects, 40, 270, NULL},
{USB_DEVICE_ID_LOGITECH_WII_WHEEL, lg4ff_wheel_effects, 40, 270, NULL}
};
@@ -161,6 +166,9 @@ static const struct lg4ff_multimode_wheel lg4ff_multimode_wheels[] = {
{USB_DEVICE_ID_LOGITECH_G27_WHEEL,
LG4FF_MODE_NATIVE | LG4FF_MODE_G27 | LG4FF_MODE_G25 | LG4FF_MODE_DFP | LG4FF_MODE_DFEX,
LG4FF_G27_TAG, LG4FF_G27_NAME},
+ {USB_DEVICE_ID_LOGITECH_G29_WHEEL,
+ LG4FF_MODE_NATIVE | LG4FF_MODE_G29 | LG4FF_MODE_DFGT | LG4FF_MODE_DFP,
+ LG4FF_G29_TAG, LG4FF_G29_NAME},
};
static const struct lg4ff_alternate_mode lg4ff_alternate_modes[] = {
@@ -169,7 +177,8 @@ static const struct lg4ff_alternate_mode lg4ff_alternate_modes[] = {
[LG4FF_MODE_DFP_IDX] = {USB_DEVICE_ID_LOGITECH_DFP_WHEEL, LG4FF_DFP_TAG, LG4FF_DFP_NAME},
[LG4FF_MODE_G25_IDX] = {USB_DEVICE_ID_LOGITECH_G25_WHEEL, LG4FF_G25_TAG, LG4FF_G25_NAME},
[LG4FF_MODE_DFGT_IDX] = {USB_DEVICE_ID_LOGITECH_DFGT_WHEEL, LG4FF_DFGT_TAG, LG4FF_DFGT_NAME},
- [LG4FF_MODE_G27_IDX] = {USB_DEVICE_ID_LOGITECH_G27_WHEEL, LG4FF_G27_TAG, LG4FF_G27_NAME}
+ [LG4FF_MODE_G27_IDX] = {USB_DEVICE_ID_LOGITECH_G27_WHEEL, LG4FF_G27_TAG, LG4FF_G27_NAME},
+ [LG4FF_MODE_G29_IDX] = {USB_DEVICE_ID_LOGITECH_G29_WHEEL, LG4FF_G29_TAG, LG4FF_G29_NAME}
};
/* Multimode wheel identificators */
@@ -197,10 +206,17 @@ static const struct lg4ff_wheel_ident_info lg4ff_dfgt_ident_info = {
USB_DEVICE_ID_LOGITECH_DFGT_WHEEL
};
+static const struct lg4ff_wheel_ident_info lg4ff_g29_ident_info = {
+ 0xfff0,
+ 0x1350,
+ USB_DEVICE_ID_LOGITECH_G29_WHEEL
+};
+
/* Multimode wheel identification checklists */
static const struct lg4ff_wheel_ident_checklist lg4ff_main_checklist = {
- 4,
- {&lg4ff_dfgt_ident_info,
+ 5,
+ {&lg4ff_g29_ident_info,
+ &lg4ff_dfgt_ident_info,
&lg4ff_g27_ident_info,
&lg4ff_g25_ident_info,
&lg4ff_dfp_ident_info}
@@ -238,6 +254,12 @@ static const struct lg4ff_compat_mode_switch lg4ff_mode_switch_ext09_g27 = {
0xf8, 0x09, 0x04, 0x01, 0x00, 0x00, 0x00} /* Switch mode to G27 with detach */
};
+static const struct lg4ff_compat_mode_switch lg4ff_mode_switch_ext09_g29 = {
+ 2,
+ {0xf8, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, /* Revert mode upon USB reset */
+ 0xf8, 0x09, 0x05, 0x01, 0x00, 0x00, 0x00} /* Switch mode to G29 with detach */
+};
+
/* EXT_CMD1 - Understood by DFP, G25, G27 and DFGT */
static const struct lg4ff_compat_mode_switch lg4ff_mode_switch_ext01_dfp = {
1,
@@ -651,6 +673,19 @@ static const struct lg4ff_compat_mode_switch *lg4ff_get_mode_switch_command(cons
return NULL;
}
break;
+ case USB_DEVICE_ID_LOGITECH_G29_WHEEL:
+ switch (target_product_id) {
+ case USB_DEVICE_ID_LOGITECH_DFP_WHEEL:
+ return &lg4ff_mode_switch_ext09_dfp;
+ case USB_DEVICE_ID_LOGITECH_DFGT_WHEEL:
+ return &lg4ff_mode_switch_ext09_dfgt;
+ case USB_DEVICE_ID_LOGITECH_G29_WHEEL:
+ return &lg4ff_mode_switch_ext09_g29;
+ /* G29 can only be switched to DFP, DFGT or its native mode */
+ default:
+ return NULL;
+ }
+ break;
case USB_DEVICE_ID_LOGITECH_DFGT_WHEEL:
switch (target_product_id) {
case USB_DEVICE_ID_LOGITECH_WHEEL:
@@ -1049,12 +1084,12 @@ static u16 lg4ff_identify_multimode_wheel(struct hid_device *hid, const u16 repo
break;
case USB_DEVICE_ID_LOGITECH_G25_WHEEL:
checklist = &lg4ff_main_checklist;
- from_idx = 0;
+ from_idx = 1;
to_idx = checklist->count - 2; /* End identity check at G25 */
break;
case USB_DEVICE_ID_LOGITECH_G27_WHEEL:
checklist = &lg4ff_main_checklist;
- from_idx = 1; /* Start identity check at G27 */
+ from_idx = 2; /* Start identity check at G27 */
to_idx = checklist->count - 3; /* End identity check at G27 */
break;
case USB_DEVICE_ID_LOGITECH_DFGT_WHEEL:
@@ -1062,6 +1097,9 @@ static u16 lg4ff_identify_multimode_wheel(struct hid_device *hid, const u16 repo
from_idx = 0;
to_idx = checklist->count - 4; /* End identity check at DFGT */
break;
+ case USB_DEVICE_ID_LOGITECH_G29_WHEEL:
+ /* G29 can only be in native mode */
+ return USB_DEVICE_ID_LOGITECH_G29_WHEEL;
default:
return 0;
}
@@ -1251,7 +1289,8 @@ int lg4ff_init(struct hid_device *hid)
for (j = 0; j < 5; j++)
entry->wdata.led[j] = NULL;
- if (lg4ff_devices[i].product_id == USB_DEVICE_ID_LOGITECH_G27_WHEEL) {
+ if (lg4ff_devices[i].product_id == USB_DEVICE_ID_LOGITECH_G27_WHEEL ||
+ lg4ff_devices[i].product_id == USB_DEVICE_ID_LOGITECH_G29_WHEEL) {
struct led_classdev *led;
size_t name_sz;
char *name;
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] HID: hid-lg: Add USBID for Logitech G29 Wheel
2015-09-03 2:02 ` simon
@ 2015-09-28 19:18 ` Simon Wood
-1 siblings, 0 replies; 6+ messages in thread
From: Simon Wood @ 2015-09-28 19:18 UTC (permalink / raw)
To: simon; +Cc: Simon Wood, linux-input, linux-kernel, Jiri Kosina
[-- Attachment #1: Type: text/plain, Size: 2256 bytes --]
> I was able to get some more information, but as yet have not been able to
> get time on the real hardware. Attached is a 2nd patch which should
> improve the support, I'll formally submit it next week.... But if anyone
> can test it first that would be great.
Obviously the 'submit next week' never happened... but I now have one of
these wheels to work on. The bad news is that the information we got does
not appear to be complete.
At present the wheel is mis-recognised as a G27 and forced into an
emulation state, it is somewhat usable in that mode.
If we send the 'G29 mode' command the wheel comes back with a device with
2x HID interfaces and that appears to screw up the probe (full log
attached).
--
Sep 28 12:30:33 retrobox kernel: [11079.944056] usb 2-1: new full-speed
USB device number 3 using uhci_hcd
Sep 28 12:30:33 retrobox kernel: [11080.113102] usb 2-1: New USB device
found, idVendor=046d, idProduct=c24f
Sep 28 12:30:33 retrobox kernel: [11080.113113] usb 2-1: New USB device
strings: Mfr=1, Product=2, SerialNumber=0
Sep 28 12:30:33 retrobox kernel: [11080.113120] usb 2-1: Product: G29
Driving Force Racing Wheel
Sep 28 12:30:33 retrobox kernel: [11080.113125] usb 2-1: Manufacturer:
Logitech
Sep 28 12:30:33 retrobox kernel: [11080.124431] input: Logitech G29
Driving Force Racing Wheel as
/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/0003:046D:C24F.0002/input/input10
Sep 28 12:30:33 retrobox kernel: [11080.125134] logitech
0003:046D:C24F.0002: input,hidraw0: USB HID v1.11 Joystick [Logitech G29
Driving Force Racing Wheel] on usb-0000:00:1d.0-1/input0
Sep 28 12:30:33 retrobox kernel: [11080.126094] logitech
0003:046D:C24F.0002: Force feedback support for Logitech Gaming Wheels
Sep 28 12:30:33 retrobox kernel: [11080.134307] logitech
0003:046D:C24F.0003: hiddev0,hidraw1: USB HID v1.11 Device [Logitech G29
Driving Force Racing Wheel] on usb-0000:00:1d.0-1/input1
Sep 28 12:30:33 retrobox kernel: [11080.134319] logitech
0003:046D:C24F.0003: not enough values in HID_OUTPUT_REPORT 0 field 0
Sep 28 12:30:33 retrobox kernel: [11080.134339] logitech: probe of
0003:046D:C24F.0003 failed with error -1
--
Any suggestions as to how we can 'ignore' or unbind the 2nd interface in
order to only work with the 1st?
Simon
[-- Attachment #2: g29_syslog.txt --]
[-- Type: text/plain, Size: 8134 bytes --]
G29 connected, appears as DFEX then we send command to get it to reconnect
--
Sep 28 12:30:32 retrobox kernel: [11078.904047] usb 2-1: new full-speed USB device number 2 using uhci_hcd
Sep 28 12:30:32 retrobox kernel: [11079.077104] usb 2-1: New USB device found, idVendor=046d, idProduct=c294
Sep 28 12:30:32 retrobox kernel: [11079.077115] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Sep 28 12:30:32 retrobox kernel: [11079.077122] usb 2-1: Product: G29 Driving Force Racing Wheel
Sep 28 12:30:32 retrobox kernel: [11079.077128] usb 2-1: Manufacturer: Logitech
Sep 28 12:30:32 retrobox mtp-probe: checking bus 2, device 2: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1"
Sep 28 12:30:32 retrobox mtp-probe: bus: 2, device: 2 was not an MTP device
Sep 28 12:30:32 retrobox kernel: [11079.266693] input: Logitech G29 Driving Force Racing Wheel as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/0003:046D:C294.0001/input/input9
Sep 28 12:30:32 retrobox kernel: [11079.267441] logitech 0003:046D:C294.0001: input,hidraw0: USB HID v1.00 Joystick [Logitech G29 Driving Force Racing Wheel] on usb-0000:00:1d.0-1/input0
Sep 28 12:30:32 retrobox kernel: [11079.276117] usbcore: registered new interface driver usbhid
Sep 28 12:30:32 retrobox kernel: [11079.276127] usbhid: USB HID core driver
Sep 28 12:30:32 retrobox kernel: [11079.320193] usb 2-1: USB disconnect, device number 2
Sep 28 12:30:32 retrobox systemd-udevd[243]: error opening USB device 'descriptors' file
Sep 28 12:30:33 retrobox kernel: [11079.944056] usb 2-1: new full-speed USB device number 3 using uhci_hcd
Sep 28 12:30:33 retrobox kernel: [11080.113102] usb 2-1: New USB device found, idVendor=046d, idProduct=c24f
Sep 28 12:30:33 retrobox kernel: [11080.113113] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Sep 28 12:30:33 retrobox kernel: [11080.113120] usb 2-1: Product: G29 Driving Force Racing Wheel
Sep 28 12:30:33 retrobox kernel: [11080.113125] usb 2-1: Manufacturer: Logitech
Sep 28 12:30:33 retrobox kernel: [11080.124431] input: Logitech G29 Driving Force Racing Wheel as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/0003:046D:C24F.0002/input/input10
Sep 28 12:30:33 retrobox kernel: [11080.125134] logitech 0003:046D:C24F.0002: input,hidraw0: USB HID v1.11 Joystick [Logitech G29 Driving Force Racing Wheel] on usb-0000:00:1d.0-1/input0
Sep 28 12:30:33 retrobox kernel: [11080.126094] logitech 0003:046D:C24F.0002: Force feedback support for Logitech Gaming Wheels
Sep 28 12:30:33 retrobox kernel: [11080.134307] logitech 0003:046D:C24F.0003: hiddev0,hidraw1: USB HID v1.11 Device [Logitech G29 Driving Force Racing Wheel] on usb-0000:00:1d.0-1/input1
Sep 28 12:30:33 retrobox kernel: [11080.134319] logitech 0003:046D:C24F.0003: not enough values in HID_OUTPUT_REPORT 0 field 0
Sep 28 12:30:33 retrobox kernel: [11080.134339] logitech: probe of 0003:046D:C24F.0003 failed with error -1
Sep 28 12:30:33 retrobox mtp-probe: checking bus 2, device 3: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1"
Sep 28 12:30:33 retrobox mtp-probe: bus: 2, device: 3 was not an MTP device
--
New device has 2 interfaces, the second one is not liked at all... as noted above the probe fails. Also note that there is no report descripter presented in the 2nd interface's '/sys/bus/hid/devices/...' directory
$ lsusb --vv
--
Bus 002 Device 003: ID 046d:c24f Logitech, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x046d Logitech, Inc.
idProduct 0xc24f
bcdDevice 89.00
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 66
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 4
bmAttributes 0x80
(Bus Powered)
MaxPower 200mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 125
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 2
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 2
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 54
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0014 1x 20 bytes
bInterval 2
--
$ ls -la /sys/bus/hid/devices/0003\:046D\:C24F.0002/
--
total 0
drwxr-xr-x 6 root root 0 Sep 28 12:37 .
drwxr-xr-x 6 root root 0 Sep 28 12:37 ..
-rw-rw-r-- 1 root root 4096 Sep 28 12:37 alternate_modes
-r--r--r-- 1 root root 4096 Sep 28 12:37 country
lrwxrwxrwx 1 root root 0 Sep 28 12:37 driver -> ../../../../../../../bus/hid/drivers/logitech
drwxr-xr-x 3 root root 0 Sep 28 12:37 hidraw
drwxr-xr-x 3 root root 0 Sep 28 12:37 input
drwxr-xr-x 7 root root 0 Sep 28 12:37 leds
-r--r--r-- 1 root root 4096 Sep 28 12:37 modalias
drwxr-xr-x 2 root root 0 Sep 28 12:37 power
-rw-rw-r-- 1 root root 4096 Sep 28 12:37 range
-r--r--r-- 1 root root 4096 Sep 28 12:37 real_id
-r--r--r-- 1 root root 4096 Sep 28 12:37 report_descriptor
lrwxrwxrwx 1 root root 0 Sep 28 12:37 subsystem -> ../../../../../../../bus/hid
-rw-r--r-- 1 root root 4096 Sep 28 12:37 uevent
--
$ ls -la /sys/bus/hid/devices/0003\:046D\:C24F.0003/
--
total 0
drwxr-xr-x 4 root root 0 Sep 28 12:35 .
drwxr-xr-x 6 root root 0 Sep 28 12:35 ..
-r--r--r-- 1 root root 4096 Sep 28 12:35 country
drwxr-xr-x 3 root root 0 Sep 28 12:35 hidraw
-r--r--r-- 1 root root 4096 Sep 28 12:35 modalias
drwxr-xr-x 2 root root 0 Sep 28 12:35 power
-r--r--r-- 1 root root 4096 Sep 28 12:35 report_descriptor
lrwxrwxrwx 1 root root 0 Sep 28 12:35 subsystem -> ../../../../../../../bus/hid
-rw-r--r-- 1 root root 4096 Sep 28 12:35 uevent
--
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] HID: hid-lg: Add USBID for Logitech G29 Wheel
@ 2015-09-28 19:18 ` Simon Wood
0 siblings, 0 replies; 6+ messages in thread
From: Simon Wood @ 2015-09-28 19:18 UTC (permalink / raw)
Cc: Simon Wood, linux-input, linux-kernel, Jiri Kosina
[-- Attachment #1: Type: text/plain, Size: 2256 bytes --]
> I was able to get some more information, but as yet have not been able to
> get time on the real hardware. Attached is a 2nd patch which should
> improve the support, I'll formally submit it next week.... But if anyone
> can test it first that would be great.
Obviously the 'submit next week' never happened... but I now have one of
these wheels to work on. The bad news is that the information we got does
not appear to be complete.
At present the wheel is mis-recognised as a G27 and forced into an
emulation state, it is somewhat usable in that mode.
If we send the 'G29 mode' command the wheel comes back with a device with
2x HID interfaces and that appears to screw up the probe (full log
attached).
--
Sep 28 12:30:33 retrobox kernel: [11079.944056] usb 2-1: new full-speed
USB device number 3 using uhci_hcd
Sep 28 12:30:33 retrobox kernel: [11080.113102] usb 2-1: New USB device
found, idVendor=046d, idProduct=c24f
Sep 28 12:30:33 retrobox kernel: [11080.113113] usb 2-1: New USB device
strings: Mfr=1, Product=2, SerialNumber=0
Sep 28 12:30:33 retrobox kernel: [11080.113120] usb 2-1: Product: G29
Driving Force Racing Wheel
Sep 28 12:30:33 retrobox kernel: [11080.113125] usb 2-1: Manufacturer:
Logitech
Sep 28 12:30:33 retrobox kernel: [11080.124431] input: Logitech G29
Driving Force Racing Wheel as
/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/0003:046D:C24F.0002/input/input10
Sep 28 12:30:33 retrobox kernel: [11080.125134] logitech
0003:046D:C24F.0002: input,hidraw0: USB HID v1.11 Joystick [Logitech G29
Driving Force Racing Wheel] on usb-0000:00:1d.0-1/input0
Sep 28 12:30:33 retrobox kernel: [11080.126094] logitech
0003:046D:C24F.0002: Force feedback support for Logitech Gaming Wheels
Sep 28 12:30:33 retrobox kernel: [11080.134307] logitech
0003:046D:C24F.0003: hiddev0,hidraw1: USB HID v1.11 Device [Logitech G29
Driving Force Racing Wheel] on usb-0000:00:1d.0-1/input1
Sep 28 12:30:33 retrobox kernel: [11080.134319] logitech
0003:046D:C24F.0003: not enough values in HID_OUTPUT_REPORT 0 field 0
Sep 28 12:30:33 retrobox kernel: [11080.134339] logitech: probe of
0003:046D:C24F.0003 failed with error -1
--
Any suggestions as to how we can 'ignore' or unbind the 2nd interface in
order to only work with the 1st?
Simon
[-- Attachment #2: g29_syslog.txt --]
[-- Type: text/plain, Size: 8134 bytes --]
G29 connected, appears as DFEX then we send command to get it to reconnect
--
Sep 28 12:30:32 retrobox kernel: [11078.904047] usb 2-1: new full-speed USB device number 2 using uhci_hcd
Sep 28 12:30:32 retrobox kernel: [11079.077104] usb 2-1: New USB device found, idVendor=046d, idProduct=c294
Sep 28 12:30:32 retrobox kernel: [11079.077115] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Sep 28 12:30:32 retrobox kernel: [11079.077122] usb 2-1: Product: G29 Driving Force Racing Wheel
Sep 28 12:30:32 retrobox kernel: [11079.077128] usb 2-1: Manufacturer: Logitech
Sep 28 12:30:32 retrobox mtp-probe: checking bus 2, device 2: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1"
Sep 28 12:30:32 retrobox mtp-probe: bus: 2, device: 2 was not an MTP device
Sep 28 12:30:32 retrobox kernel: [11079.266693] input: Logitech G29 Driving Force Racing Wheel as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/0003:046D:C294.0001/input/input9
Sep 28 12:30:32 retrobox kernel: [11079.267441] logitech 0003:046D:C294.0001: input,hidraw0: USB HID v1.00 Joystick [Logitech G29 Driving Force Racing Wheel] on usb-0000:00:1d.0-1/input0
Sep 28 12:30:32 retrobox kernel: [11079.276117] usbcore: registered new interface driver usbhid
Sep 28 12:30:32 retrobox kernel: [11079.276127] usbhid: USB HID core driver
Sep 28 12:30:32 retrobox kernel: [11079.320193] usb 2-1: USB disconnect, device number 2
Sep 28 12:30:32 retrobox systemd-udevd[243]: error opening USB device 'descriptors' file
Sep 28 12:30:33 retrobox kernel: [11079.944056] usb 2-1: new full-speed USB device number 3 using uhci_hcd
Sep 28 12:30:33 retrobox kernel: [11080.113102] usb 2-1: New USB device found, idVendor=046d, idProduct=c24f
Sep 28 12:30:33 retrobox kernel: [11080.113113] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Sep 28 12:30:33 retrobox kernel: [11080.113120] usb 2-1: Product: G29 Driving Force Racing Wheel
Sep 28 12:30:33 retrobox kernel: [11080.113125] usb 2-1: Manufacturer: Logitech
Sep 28 12:30:33 retrobox kernel: [11080.124431] input: Logitech G29 Driving Force Racing Wheel as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/0003:046D:C24F.0002/input/input10
Sep 28 12:30:33 retrobox kernel: [11080.125134] logitech 0003:046D:C24F.0002: input,hidraw0: USB HID v1.11 Joystick [Logitech G29 Driving Force Racing Wheel] on usb-0000:00:1d.0-1/input0
Sep 28 12:30:33 retrobox kernel: [11080.126094] logitech 0003:046D:C24F.0002: Force feedback support for Logitech Gaming Wheels
Sep 28 12:30:33 retrobox kernel: [11080.134307] logitech 0003:046D:C24F.0003: hiddev0,hidraw1: USB HID v1.11 Device [Logitech G29 Driving Force Racing Wheel] on usb-0000:00:1d.0-1/input1
Sep 28 12:30:33 retrobox kernel: [11080.134319] logitech 0003:046D:C24F.0003: not enough values in HID_OUTPUT_REPORT 0 field 0
Sep 28 12:30:33 retrobox kernel: [11080.134339] logitech: probe of 0003:046D:C24F.0003 failed with error -1
Sep 28 12:30:33 retrobox mtp-probe: checking bus 2, device 3: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1"
Sep 28 12:30:33 retrobox mtp-probe: bus: 2, device: 3 was not an MTP device
--
New device has 2 interfaces, the second one is not liked at all... as noted above the probe fails. Also note that there is no report descripter presented in the 2nd interface's '/sys/bus/hid/devices/...' directory
$ lsusb --vv
--
Bus 002 Device 003: ID 046d:c24f Logitech, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x046d Logitech, Inc.
idProduct 0xc24f
bcdDevice 89.00
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 66
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 4
bmAttributes 0x80
(Bus Powered)
MaxPower 200mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 125
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 2
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 2
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 54
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0014 1x 20 bytes
bInterval 2
--
$ ls -la /sys/bus/hid/devices/0003\:046D\:C24F.0002/
--
total 0
drwxr-xr-x 6 root root 0 Sep 28 12:37 .
drwxr-xr-x 6 root root 0 Sep 28 12:37 ..
-rw-rw-r-- 1 root root 4096 Sep 28 12:37 alternate_modes
-r--r--r-- 1 root root 4096 Sep 28 12:37 country
lrwxrwxrwx 1 root root 0 Sep 28 12:37 driver -> ../../../../../../../bus/hid/drivers/logitech
drwxr-xr-x 3 root root 0 Sep 28 12:37 hidraw
drwxr-xr-x 3 root root 0 Sep 28 12:37 input
drwxr-xr-x 7 root root 0 Sep 28 12:37 leds
-r--r--r-- 1 root root 4096 Sep 28 12:37 modalias
drwxr-xr-x 2 root root 0 Sep 28 12:37 power
-rw-rw-r-- 1 root root 4096 Sep 28 12:37 range
-r--r--r-- 1 root root 4096 Sep 28 12:37 real_id
-r--r--r-- 1 root root 4096 Sep 28 12:37 report_descriptor
lrwxrwxrwx 1 root root 0 Sep 28 12:37 subsystem -> ../../../../../../../bus/hid
-rw-r--r-- 1 root root 4096 Sep 28 12:37 uevent
--
$ ls -la /sys/bus/hid/devices/0003\:046D\:C24F.0003/
--
total 0
drwxr-xr-x 4 root root 0 Sep 28 12:35 .
drwxr-xr-x 6 root root 0 Sep 28 12:35 ..
-r--r--r-- 1 root root 4096 Sep 28 12:35 country
drwxr-xr-x 3 root root 0 Sep 28 12:35 hidraw
-r--r--r-- 1 root root 4096 Sep 28 12:35 modalias
drwxr-xr-x 2 root root 0 Sep 28 12:35 power
-r--r--r-- 1 root root 4096 Sep 28 12:35 report_descriptor
lrwxrwxrwx 1 root root 0 Sep 28 12:35 subsystem -> ../../../../../../../bus/hid
-rw-r--r-- 1 root root 4096 Sep 28 12:35 uevent
--
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-09-28 20:03 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-24 1:10 [PATCH] HID: hid-lg: Add USBID for Logitech G29 Wheel Simon Wood
2015-07-29 12:10 ` Jiri Kosina
2015-09-03 2:02 ` simon
2015-09-03 2:02 ` simon
2015-09-28 19:18 ` Simon Wood
2015-09-28 19:18 ` Simon Wood
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.