Dear Linux folks,
The USB Bluetooth device 8087:0a2b is used in quite a lot of portable devices. In my case it’s the TUXEDO Book BU1406 [1]. I am trying to decrease the overall (suspend and) resume time of the Linux kernel.
``` $ more /proc/versionLinux version 4.10.0+ (helmuth@helmuth-N24-25BU) (gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12) ) #1 SMP Fri Feb 24 16:56:56 CET 2017
$ lsusb -d 8087:0a2b Bus 001 Device 002: ID 8087:0a2b Intel Corp. $ journalctl -k -o cat | grep usb usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb1: Product: xHCI Host Controller usb usb1: Manufacturer: Linux 4.10.0+ xhci-hcd usb usb1: SerialNumber: 0000:00:14.0 usb usb2: New USB device found, idVendor=1d6b, idProduct=0003 usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb2: Product: xHCI Host Controller usb usb2: Manufacturer: Linux 4.10.0+ xhci-hcd usb usb2: SerialNumber: 0000:00:14.0 usb usb3: New USB device found, idVendor=1d6b, idProduct=0002 usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb3: Product: xHCI Host Controller usb usb3: Manufacturer: Linux 4.10.0+ xhci-hcd usb usb3: SerialNumber: 0000:01:00.0 usb usb4: We don't know the algorithms for LPM for this host, disabling LPM. usb usb4: New USB device found, idVendor=1d6b, idProduct=0003 usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb4: Product: xHCI Host Controller usb usb4: Manufacturer: Linux 4.10.0+ xhci-hcd usb usb4: SerialNumber: 0000:01:00.0 usb 1-5: new full-speed USB device number 2 using xhci_hcd usb 1-5: New USB device found, idVendor=8087, idProduct=0a2b usb 1-5: New USB device strings: Mfr=0, Product=0, SerialNumber=0 usb 1-6: new high-speed USB device number 3 using xhci_hcd usb 1-6: New USB device found, idVendor=5986, idProduct=1112 usb 1-6: New USB device strings: Mfr=3, Product=1, SerialNumber=2 usb 1-6: Product: BisonCam,NB Pro usb 1-6: Manufacturer: Bison usb 1-6: SerialNumber: 200901010001 usbcore: registered new interface driver btusbinput: BisonCam,NB Pro as /devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6:1.0/input/input21
usbcore: registered new interface driver uvcvideo ```Suspending and resuming of this devices takes quite a bit of time for that device.
From running `analyze_suspend.py` [2] – `scripts/analyze_suspend.py` in Linux repository – the following value is measured.
usb @ 8087:0a2b [1-5] {usb} async_device (Total Suspend: 588.807 ms Total Resume: 561.912 ms)
The overall timings are below.
Kernel Suspend: 1237.805 ms Firmware Suspend: 0.000 ms Firmware Resume: 1.318 ms Kernel Resume: 869.322 ms
So that device needs over half a second for each of suspend and resume, which is the majority of the overall time.
Is there a way to debug and optimize that – besides taking the device out – to get resume times on par with other devices like Google Chromebooks or Apple MacBooks?
Thanks, Paul [1] https://www.tuxedocomputers.com/bu1406 [2] https://01.org/suspendresume/
helmuth-N24-25BU_mem.html.7z
Description: application/7z-compressed