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