type keyboard problem

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

type keyboard problem

Bill Kenworthy
Hi all, I have a laptop keyboard problem - it fails to reconnect the
keyboard on opening after closing.

MS Surface pro 4 with type keyboard.

The keyboard connects correctly on bootup or resume from hibernate (when
open).

Close keyboard (removes power), open keyboard and it no longer works.
Requires a reboot (or hibernate/resume) for it it to work again.

On opening the keyboard, the kernel detects it, it shows up in lsusb.

Oct  6 05:57:15 bunyip kernel: usb 1-7: Product: Surface Type Cover
Oct  6 05:57:15 bunyip kernel: input: Microsoft Surface Type Cover
Keyboard as
/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/0003:045E:07E8.0003/input/input29
Oct  6 05:57:15 bunyip kernel: input: Microsoft Surface Type Cover
Consumer Control as
/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/0003:045E:07E8.0003/input/input31
Oct  6 05:57:15 bunyip kernel: input: Microsoft Surface Type Cover
Touchpad as
/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/0003:045E:07E8.0003/input/input33
Oct  6 05:57:15 bunyip kernel: hid-multitouch 0003:045E:07E8.0003:
input,hiddev96,hidraw0: USB HID v1.11 Keyboard [Microsoft Surface Type
Cover] on usb-0000:00:14.0-7/input0

It looks like it changes input when reopening but the event framework
fails to re-enumerate it.

Ive tried restarting udev but no luck.

Where should I look next?

BillK

Reply | Threaded
Open this post in threaded view
|

Re: type keyboard problem

Andrew Savchenko
Hi,

On Fri, 6 Oct 2017 08:31:27 +0800 Bill Kenworthy wrote:

> Hi all, I have a laptop keyboard problem - it fails to reconnect the
> keyboard on opening after closing.
>
> MS Surface pro 4 with type keyboard.
>
> The keyboard connects correctly on bootup or resume from hibernate (when
> open).
>
> Close keyboard (removes power), open keyboard and it no longer works.
> Requires a reboot (or hibernate/resume) for it it to work again.
>
> On opening the keyboard, the kernel detects it, it shows up in lsusb.
>
> Oct  6 05:57:15 bunyip kernel: usb 1-7: Product: Surface Type Cover
> Oct  6 05:57:15 bunyip kernel: input: Microsoft Surface Type Cover
> Keyboard as
> /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/0003:045E:07E8.0003/input/input29
> Oct  6 05:57:15 bunyip kernel: input: Microsoft Surface Type Cover
> Consumer Control as
> /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/0003:045E:07E8.0003/input/input31
> Oct  6 05:57:15 bunyip kernel: input: Microsoft Surface Type Cover
> Touchpad as
> /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/0003:045E:07E8.0003/input/input33
> Oct  6 05:57:15 bunyip kernel: hid-multitouch 0003:045E:07E8.0003:
> input,hiddev96,hidraw0: USB HID v1.11 Keyboard [Microsoft Surface Type
> Cover] on usb-0000:00:14.0-7/input0
>
> It looks like it changes input when reopening but the event framework
> fails to re-enumerate it.
>
> Ive tried restarting udev but no luck.
Try to update your kernel to the latest one, preferably to vanilla
one.

Also try udevadm trigger.

Best regards,
Andrew Savchenko

attachment0 (849 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: type keyboard problem

Bill Kenworthy
On 08/10/17 16:20, Andrew Savchenko wrote:

> Hi,
>
> On Fri, 6 Oct 2017 08:31:27 +0800 Bill Kenworthy wrote:
>> Hi all, I have a laptop keyboard problem - it fails to reconnect the
>> keyboard on opening after closing.
>>
>> MS Surface pro 4 with type keyboard.
>>
>> The keyboard connects correctly on bootup or resume from hibernate (when
>> open).
>>
>> Close keyboard (removes power), open keyboard and it no longer works.
>> Requires a reboot (or hibernate/resume) for it it to work again.
>>
>> On opening the keyboard, the kernel detects it, it shows up in lsusb.
>>
>> Oct  6 05:57:15 bunyip kernel: usb 1-7: Product: Surface Type Cover
>> Oct  6 05:57:15 bunyip kernel: input: Microsoft Surface Type Cover
>> Keyboard as
>> /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/0003:045E:07E8.0003/input/input29
>> Oct  6 05:57:15 bunyip kernel: input: Microsoft Surface Type Cover
>> Consumer Control as
>> /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/0003:045E:07E8.0003/input/input31
>> Oct  6 05:57:15 bunyip kernel: input: Microsoft Surface Type Cover
>> Touchpad as
>> /devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0/0003:045E:07E8.0003/input/input33
>> Oct  6 05:57:15 bunyip kernel: hid-multitouch 0003:045E:07E8.0003:
>> input,hiddev96,hidraw0: USB HID v1.11 Keyboard [Microsoft Surface Type
>> Cover] on usb-0000:00:14.0-7/input0
>>
>> It looks like it changes input when reopening but the event framework
>> fails to re-enumerate it.
>>
>> Ive tried restarting udev but no luck.
>
> Try to update your kernel to the latest one, preferably to vanilla
> one.
>
> Also try udevadm trigger.
>
> Best regards,
> Andrew Savchenko
>

Thanks Andrew, it used to work on older kernels - something 4.9 and before.

The culprit turns out to to be the i2c-hid kernel module - removing and
modprobing it again fixes the problem.  Its probably a bug as the
keyboard is usb-hid so I don't know why i2c-hid is involved.  A udev
rule triggered when the keyboard opens takes care of it for now.

BillK