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