Re: i2c_hid issues with sensor hub on Surface Pro 3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Indeed you are correct, looks like one of the devices listed there is
the sensor hub - so I'm barking up the wrong tree.

Will have to move on to the sensor drivers themselves I guess. Thanks
for your help!

Yani

On Thu, Feb 5, 2015 at 6:10 PM, Benjamin Tissoires
<benjamin.tissoires@xxxxxxxxx> wrote:
> On Thu, Feb 5, 2015 at 12:56 PM, Yani Ioannou <yani.ioannou@xxxxxxxxx> wrote:
>> Hi Benjamin,
>>
>> As far as I'm aware the sensor hub didn't show up under any kernel (I'll try
>> an earlier kernel to figure out if this is true) I didn't mean to say this
>> is a regression, sorry.
>
> Oh, my bad.
>
>>
>> The errors for the MSHW0030 device seem to be fatal - since the initial
>> report request fails, the driver doesn't try to work with the device. The
>> NTRG device however, is as you suggest, and it is fine - I shouldn't have
>> included the output for that device perhaps.
>
> Not being able to retrieve the reports should not be fatal in i2c_hid.
>
> There should be 2 devices showing up in:
> /sys/kernel/debug/hid/
> (if you have debugfs mounted in /sys/kernel/debug)
>
> One of them is the Ntrig (0018:1B96:1B05.*), the other should be the sensor hub.
>
> Can you paste here the content of the rdesc file which is in the sensor_hub dir?
>
> And yes, if there is no sensor hub device showing under the hid
> debugfs dir (or under /sys/bus/hid/devices), that means that i2c-hid
> has removed the device.
>
> Cheers,
> Benjamin
>
>>
>> So in summary I'm trying to work out why the sensor hub driver is never
>> loaded, and as far as I can tell this is why.
>>
>> Thanks,
>> Yani
>>
>>
>> On Thu, Feb 5, 2015, 17:44 Benjamin Tissoires <benjamin.tissoires@xxxxxxxxx>
>> wrote:
>>>
>>> Hi,
>>>
>>> On Thu, Feb 5, 2015 at 11:29 AM, Yani Ioannou <yani.ioannou@xxxxxxxxx>
>>> wrote:
>>> > Hi,
>>> >
>>> > I've been trying to debug why the sensor hub on a Surface pro 3 isn't
>>> > detected in the latest mainline kernel (3.19-rc6). When I enable debug
>>> > I get the following output showing a bunch of errors trying to
>>> > communicate with the device MSHW0030, which seems to be the sensor
>>> > hub.
>>>
>>> These errors do not bother me that much. They appear when we try to
>>> read the reports from the device, and this has been known to not work
>>> on many devices.
>>> As long as the device emits by itself the reports, we are fine.
>>>
>>> There has been very few changes in the v3.19 series regarding i2c-hid,
>>> so if you get the same debug output on a v3.18 kernel (and the sensor
>>> hub works), I would think that the problem you are having is in the
>>> IIO subsystem.
>>>
>>> Cheers,
>>> Benjamin
>>>
>>> >
>>> > I've looked into the code/protocol a little and it seems the initial
>>> > feature reports that are returned are of incorrect size, but I don't
>>> > understand why without much prior knowledge of the domain.
>>> >
>>> > Any help and/or further debugging tips would be greatly appreciated.
>>> >
>>> > Thanks,
>>> > Yani
>>> >
>>> > [ 83.133219] i2c_hid i2c-MSHW0030:00: Fetching the HID descriptor
>>> > [ 83.133224] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=01 00
>>> > [ 83.134826] i2c_hid i2c-MSHW0030:00: HID Descriptor: 1e 00 00 01 bf
>>> > 08 02 00 03 00 3f 00 04 00 3f 00 05 00 06 00 5e 04 c4 07 04 00 00 00
>>> > 00 00
>>> > [ 83.134928] i2c_hid i2c-MSHW0030:00: entering i2c_hid_parse
>>> > [ 83.134932] i2c_hid i2c-MSHW0030:00: i2c_hid_hwreset
>>> > [ 83.134935] i2c_hid i2c-MSHW0030:00: i2c_hid_set_power
>>> > [ 83.134938] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 00 08
>>> > [ 83.135629] i2c_hid i2c-MSHW0030:00: resetting...
>>> > [ 83.135633] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 00 01
>>> > [ 83.136305] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: waiting...
>>> > [ 83.138471] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: finished.
>>> > [ 83.138475] i2c_hid i2c-MSHW0030:00: asking HID report descriptor
>>> > [ 83.138477] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=02 00
>>> > [ 83.191568] i2c_hid i2c-MSHW0030:00: Report Descriptor: 05 20 09 01
>>> > a1 01 85 01 05 20 09 73 a1 00 0a 09 03 15 00 25 02 75 08 95 01 a1 02
>>> > 0a 30 08 0a 31 08 0a 32 08 b1 00 c0 0a 0e 03 15 00 27 ff ff ff ff 75
>>> > 20 95 01 55 00 b1 02 0a 52 14 15 00 26 ff
>>> > [ 83.193819] i2c_hid i2c-MSHW0030:00: i2c_hid_get_report
>>> > [ 83.193822] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 31 02
>>> > 06 00
>>> > [ 83.194952] i2c_hid i2c-MSHW0030:00: report (len=14): 0e 00 01 01 60
>>> > 00 00 00 14 00 01 06 02 10
>>> > [ 83.194957] i2c_hid i2c-MSHW0030:00: i2c_hid_get_report
>>> > [ 83.194959] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 32 02
>>> > 06 00
>>> > [ 83.196162] i2c_hid i2c-MSHW0030:00: report (len=14): 0e 00 02 01 10
>>> > 00 00 00 00 00 01 06 02 10
>>> > [ 83.196166] i2c_hid i2c-MSHW0030:00: i2c_hid_get_report
>>> > [ 83.196167] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 33 02
>>> > 06 00
>>> > [ 83.196991] i2c_hid i2c-MSHW0030:00: report (len=14): 0e 00 03 01 c8
>>> > 00 00 00 00 00 01 06 02 c8
>>> > [ 83.196998] i2c_hid i2c-MSHW0030:00: i2c_hid_get_report
>>> > [ 83.197000] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 34 02
>>> > 06 00
>>> > [ 83.198233] i2c_hid i2c-MSHW0030:00: report (len=30): 1e 00 04 01 64
>>> > 00 00 00 3c 00 0a 00 64 00 0b 00 64 00 40 1f f4 01 41 1f 64 00 01 06
>>> > 02 64
>>> > [ 83.198238] i2c_hid i2c-MSHW0030:00: i2c_hid_get_report
>>> > [ 83.198240] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 35 02
>>> > 06 00
>>> > [ 83.199093] i2c_hid i2c-MSHW0030:00: report (len=14): 0e 00 05 01 10
>>> > 00 00 00 00 00 01 06 02 10
>>> > [ 83.199096] i2c_hid i2c-MSHW0030:00: i2c_hid_get_report
>>> > [ 83.199098] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 36 02
>>> > 06 00
>>> > [ 83.199699] i2c_hid i2c-MSHW0030:00: report (len=14): 0e 00 06 01 10
>>> > 00 00 00 00 00 01 06 02 10
>>> > [ 83.199703] i2c_hid i2c-MSHW0030:00: i2c_hid_get_report
>>> > [ 83.199705] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 3f
>>> > 02 20 06 00
>>> > [ 83.202008] i2c_hid i2c-MSHW0030:00: report (len=63): 00 00 00 00 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00
>>> > [ 83.202011] i2c_hid i2c-MSHW0030:00: error in i2c_hid_init_report
>>> > size:63 / ret_size:0
>>> > [ 83.202014] i2c_hid i2c-MSHW0030:00: i2c_hid_get_report
>>> > [ 83.202015] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 3f
>>> > 02 21 06 00
>>> > [ 83.204331] i2c_hid i2c-MSHW0030:00: report (len=63): 00 00 00 00 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00
>>> > [ 83.204335] i2c_hid i2c-MSHW0030:00: error in i2c_hid_init_report
>>> > size:63 / ret_size:0
>>> > [ 83.204337] i2c_hid i2c-MSHW0030:00: i2c_hid_get_report
>>> > [ 83.204339] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 3f
>>> > 02 22 06 00
>>> > [ 83.205447] i2c_hid i2c-MSHW0030:00: report (len=19): 13 00 22 cb a8
>>> > 07 02 03 00 00 00 00 00 00 00 00 00 00 00
>>> > [ 83.205451] i2c_hid i2c-MSHW0030:00: i2c_hid_get_report
>>> > [ 83.205453] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 3f
>>> > 02 23 06 00
>>> > [ 83.206745] i2c_hid i2c-MSHW0030:00: report (len=19): 00 00 00 00 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> > [ 83.206749] i2c_hid i2c-MSHW0030:00: error in i2c_hid_init_report
>>> > size:19 / ret_size:0
>>> > [ 83.206752] i2c_hid i2c-MSHW0030:00: i2c_hid_get_report
>>> > [ 83.206753] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 3f
>>> > 02 24 06 00
>>> > [ 83.207780] i2c_hid i2c-MSHW0030:00: report (len=19): 00 00 00 00 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> > [ 83.207783] i2c_hid i2c-MSHW0030:00: error in i2c_hid_init_report
>>> > size:19 / ret_size:0
>>> > [ 83.207786] i2c_hid i2c-MSHW0030:00: i2c_hid_get_report
>>> > [ 83.207788] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 3f
>>> > 02 25 06 00
>>> > [ 83.208803] i2c_hid i2c-MSHW0030:00: report (len=19): 00 00 00 00 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> > [ 83.208806] i2c_hid i2c-MSHW0030:00: error in i2c_hid_init_report
>>> > size:19 / ret_size:0
>>> > [ 83.208809] i2c_hid i2c-MSHW0030:00: i2c_hid_get_report
>>> > [ 83.208811] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 3f
>>> > 02 26 06 00
>>> > [ 83.209824] i2c_hid i2c-MSHW0030:00: report (len=19): 00 00 00 00 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> > [ 83.209826] i2c_hid i2c-MSHW0030:00: error in i2c_hid_init_report
>>> > size:19 / ret_size:0
>>> > [ 83.209828] i2c_hid i2c-MSHW0030:00: i2c_hid_get_report
>>> > [ 83.209830] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 3f
>>> > 02 27 06 00
>>> > [ 83.210588] i2c_hid i2c-MSHW0030:00: report (len=19): 00 00 00 00 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> > [ 83.210590] i2c_hid i2c-MSHW0030:00: error in i2c_hid_init_report
>>> > size:19 / ret_size:0
>>> > [ 83.210592] i2c_hid i2c-MSHW0030:00: i2c_hid_get_report
>>> > [ 83.210594] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 3f
>>> > 02 28 06 00
>>> > [ 83.211659] i2c_hid i2c-MSHW0030:00: report (len=19): 00 00 00 00 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> > [ 83.211661] i2c_hid i2c-MSHW0030:00: error in i2c_hid_init_report
>>> > size:19 / ret_size:0
>>> > [ 83.211663] i2c_hid i2c-MSHW0030:00: i2c_hid_get_report
>>> > [ 83.211665] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 3f
>>> > 02 29 06 00
>>> > [ 83.212971] i2c_hid i2c-MSHW0030:00: report (len=19): 00 00 00 00 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> > [ 83.212975] i2c_hid i2c-MSHW0030:00: error in i2c_hid_init_report
>>> > size:19 / ret_size:0
>>> > [ 83.215406] i2c_hid i2c-MSHW0030:00: i2c_hid_set_power
>>> > [ 83.215410] i2c_hid i2c-MSHW0030:00: __i2c_hid_command: cmd=05 00 01 08
>>> > [ 83.268607] i2c_hid i2c-NTRG0001:01: Fetching the HID descriptor
>>> > [ 83.268613] i2c_hid i2c-NTRG0001:01: __i2c_hid_command: cmd=01 00
>>> > [ 83.270130] i2c_hid i2c-NTRG0001:01: HID Descriptor: 1e 00 00 01 c7
>>> > 01 02 00 03 00 1f 00 00 00 00 00 05 00 06 00 96 1b 05 1b 04 00 00 00
>>> > 00 00
>>> > [ 83.270211] i2c_hid i2c-NTRG0001:01: entering i2c_hid_parse
>>> > [ 83.270213] i2c_hid i2c-NTRG0001:01: i2c_hid_hwreset
>>> > [ 83.270215] i2c_hid i2c-NTRG0001:01: i2c_hid_set_power
>>> > [ 83.270216] i2c_hid i2c-NTRG0001:01: __i2c_hid_command: cmd=05 00 00 08
>>> > [ 83.270902] i2c_hid i2c-NTRG0001:01: resetting...
>>> > [ 83.270904] i2c_hid i2c-NTRG0001:01: __i2c_hid_command: cmd=05 00 00 01
>>> > [ 83.271685] i2c_hid i2c-NTRG0001:01: __i2c_hid_command: waiting...
>>> > [ 83.461132] i2c_hid i2c-NTRG0001:01: __i2c_hid_command: finished.
>>> > [ 83.461137] i2c_hid i2c-NTRG0001:01: asking HID report descriptor
>>> > [ 83.461140] i2c_hid i2c-NTRG0001:01: __i2c_hid_command: cmd=02 00
>>> > [ 83.471968] i2c_hid i2c-NTRG0001:01: Report Descriptor: 05 0d 09 02
>>> > a1 01 85 01 09 20 35 00 a1 00 09 32 09 42 09 44 09 3c 09 45 15 00 25
>>> > 01 75 01 95 05 81 02 95 03 81 03 05 01 09 30 75 10 95 01 a4 55 0e 65
>>> > 11 46 ec 09 26 80 25 81 42 09 31 46 9d 06
>>> > [ 83.472540] i2c_hid i2c-NTRG0001:01: i2c_hid_get_report
>>> > [ 83.472542] i2c_hid i2c-NTRG0001:01: __i2c_hid_command: cmd=05 00 3c 02
>>> > 06 00
>>> > [ 83.473498] i2c_hid i2c-NTRG0001:01: report (len=9): 00 00 00 00 00 00
>>> > 00 00 00
>>> > [ 83.473507] i2c_hid i2c-NTRG0001:01: error in i2c_hid_init_report
>>> > size:9 / ret_size:0
>>> > [ 83.473515] i2c_hid i2c-NTRG0001:01: i2c_hid_get_report
>>> > [ 83.473520] i2c_hid i2c-NTRG0001:01: __i2c_hid_command: cmd=05 00 3b 02
>>> > 06 00
>>> > [ 83.473867] i2c_hid i2c-NTRG0001:01: report (len=5): 00 00 00 00 00
>>> > [ 83.473872] i2c_hid i2c-NTRG0001:01: error in i2c_hid_init_report
>>> > size:5 / ret_size:0
>>> > [ 83.473875] i2c_hid i2c-NTRG0001:01: i2c_hid_get_report
>>> > [ 83.473878] i2c_hid i2c-NTRG0001:01: __i2c_hid_command: cmd=05 00 3f
>>> > 02 11 06 00
>>> > [ 83.474493] i2c_hid i2c-NTRG0001:01: report (len=5): 03 01 1b 29 a9
>>> > [ 83.474497] i2c_hid i2c-NTRG0001:01: error in i2c_hid_init_report
>>> > size:5 / ret_size:259
>>> > [ 83.474500] i2c_hid i2c-NTRG0001:01: i2c_hid_get_report
>>> > [ 83.474503] i2c_hid i2c-NTRG0001:01: __i2c_hid_command: cmd=05 00 3f
>>> > 02 15 06 00
>>> > [ 83.475186] i2c_hid i2c-NTRG0001:01: report (len=8): 03 01 1b 29 a9 19
>>> > 9f 9a
>>> > [ 83.475190] i2c_hid i2c-NTRG0001:01: error in i2c_hid_init_report
>>> > size:8 / ret_size:259
>>> > [ 83.475192] i2c_hid i2c-NTRG0001:01: i2c_hid_get_report
>>> > [ 83.475195] i2c_hid i2c-NTRG0001:01: __i2c_hid_command: cmd=05 00 3f
>>> > 02 18 06 00
>>> > [ 83.476035] i2c_hid i2c-NTRG0001:01: report (len=15): 03 01 1b 29 a9
>>> > 19 9f 9a 19 a4 bf dd c2 f3 29
>>> > [ 83.476039] i2c_hid i2c-NTRG0001:01: error in i2c_hid_init_report
>>> > size:15 / ret_size:259
>>> > [ 83.476041] i2c_hid i2c-NTRG0001:01: i2c_hid_get_report
>>> > [ 83.476044] i2c_hid i2c-NTRG0001:01: __i2c_hid_command: cmd=05 00 34 02
>>> > 06 00
>>> > [ 83.476354] i2c_hid i2c-NTRG0001:01: report (len=4): 04 00 04 0a
>>> > [ 83.476360] i2c_hid i2c-NTRG0001:01: i2c_hid_get_report
>>> > [ 83.476363] i2c_hid i2c-NTRG0001:01: __i2c_hid_command: cmd=05 00 3a 02
>>> > 06 00
>>> > [ 83.476673] i2c_hid i2c-NTRG0001:01: report (len=4): 00 00 00 00
>>> > [ 83.476676] i2c_hid i2c-NTRG0001:01: error in i2c_hid_init_report
>>> > size:4 / ret_size:0
>>> > [ 83.476679] i2c_hid i2c-NTRG0001:01: i2c_hid_get_report
>>> > [ 83.476682] i2c_hid i2c-NTRG0001:01: __i2c_hid_command: cmd=05 00 3f
>>> > 02 1b 06 00
>>> > [ 83.482978] i2c_hid i2c-NTRG0001:01: report (len=259): 03 01 1b 29 a9
>>> > 19 9f 9a 19 a4 bf dd c2 f3 29 e1 34 44 89 23 3f 8c 56 79 f3 fc 57 d0
>>> > ea 56 46 23 9a 15 d8 5a de 99 5e 2f fc 9f e2 f4 73 df d5 c5 36 ed 8d
>>> > 4e 28 db 8c 34 a3 b0 19 5c 4f ae bf 9c
>>> > [ 83.482986] i2c_hid i2c-NTRG0001:01: i2c_hid_get_report
>>> > [ 83.482988] i2c_hid i2c-NTRG0001:01: __i2c_hid_command: cmd=05 00 35 02
>>> > 06 00
>>> > [ 83.485124] i2c_hid i2c-NTRG0001:01: report (len=63): 00 00 00 00 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>> > 00 00 00 00 00 00 00 00 00 00 00 00
>>> > [ 83.485127] i2c_hid i2c-NTRG0001:01: error in i2c_hid_init_report
>>> > size:63 / ret_size:0
>>> > [ 83.485128] i2c_hid i2c-NTRG0001:01: i2c_hid_get_report
>>> > [ 83.485130] i2c_hid i2c-NTRG0001:01: __i2c_hid_command: cmd=05 00 37 02
>>> > 06 00
>>> > [ 83.486010] i2c_hid i2c-NTRG0001:01: report (len=7): 00 00 00 00 00 00
>>> > 00
>>> > [ 83.486012] i2c_hid i2c-NTRG0001:01: error in i2c_hid_init_report
>>> > size:7 / ret_size:0
>>> > [ 83.486096] input: NTRG0001:01 1B96:1B05 Pen as
>>> >
>>> > /devices/pci0000:00/INT33C3:00/i2c-10/i2c-NTRG0001:01/0018:1B96:1B05.0008/input/input16
>>> > [ 83.486306] input: NTRG0001:01 1B96:1B05 as
>>> >
>>> > /devices/pci0000:00/INT33C3:00/i2c-10/i2c-NTRG0001:01/0018:1B96:1B05.0008/input/input17
>>> > [ 83.488543] hid-multitouch 0018:1B96:1B05.0008: input,hidraw4:
>>> > <UNKNOWN> HID v1.00 Mouse [NTRG0001:01 1B96:1B05] on
>>> > --
>>> > To unsubscribe from this list: send the line "unsubscribe linux-input"
>>> > in
>>> > the body of a message to majordomo@xxxxxxxxxxxxxxx
>>> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux