Intel 7260AC Bluetooth [8087:07dc], Ubuntu, and the Thinkpad T440p

This requires a little magic, unfortunately; either the driver, system, hardware itself, or some combination thereof do not operate well with autosuspend enabled. Disabling autosuspend for this device does appear to resolve dropped / corrupted / weird bluetooth issues.

Based on my googling, I do not believe this to be Thinkpad-specific, rather something the Intel 7260AC firmware isn’t handling properly at the moment. FWIW, I’m running Ubuntu 13.10 (saucy) on the thinkpad in question, and 12.04LTS (precise) on my destop, with the same card sold by Intel in a PCI-e mount.

Based on one posting in particular, the following solution presents itself:

# ==> see http://ubuntuforums.org/showthread.php?t=2159645&page=6&p=12926730#post12926730
# ==> this is almost a direct copy of the solution presented there. Thanks, obadz! :)
# (aka http://ubuntuforums.org/member.php?u=923361)
#
# Include this somewhere it gets called at boot, for optimal effect; e.g. /etc/rc.local
# Prevents the Bluetooth USB card from autosuspending, which (as of this edit) borks it
BTUSB_DEV="8087:07dc"
BTUSB_BINDING="(lsusbd"(lsusb -d "BTUSB_DEV" |
cut -f 1 -d : |
sed -e 's,Bus ,,' -e 's, Device ,/,' |
xargs -I {} udevadm info -q path -n /dev/bus/usb/{} |
xargs basename)"
echo "Disabling autosuspend for Bluetooth USB device: $BTUSB_BINDING..."
echo -1 > "/sys/bus/usb/devices/$BTUSB_BINDING/power/autosuspend_delay_ms"
view raw rc.local.sh hosted with ❤ by GitHub
#! /bin/sh
# unblock our bluetooth on resume. This appears to be necessary for certain
# Intel bluetooth interfaces.
case $1 in
suspend|suspend_hybrid|hibernate)
# No need to do anything here, AFAICT
:
;;
resume|thaw)
rfkill unblock bluetooth
;;
esac

This isn’t ideal – as it should Just Work – but it works, and is certainly less drastic than turning off USB autosuspend globally. In retrospect, having the bluetooth device drop out shortly after boot/resume, but always be available after resuming, was a big clue.

0%