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

Reply via email to