Created
February 2, 2021 07:34
-
-
Save andsens/10abada615b69b8ca9b1f2b439288b30 to your computer and use it in GitHub Desktop.
Patches the linux bluetooth driver to handle dongles that report they are CSR, but really aren't
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# https://askubuntu.com/questions/1168123/how-do-i-get-my-bluetooth-device-working/1192200#1192200 | |
set -e | |
SCRIPTDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) | |
main() { | |
local kernver | |
kernver=$(uname -r) | |
sudo apt update | |
rm -rf "$SCRIPTDIR"/linux{-,_}* | |
apt source linux | |
local drvdir="$SCRIPTDIR/linux-${kernver/%-*}/drivers/bluetooth" | |
patch -d "$drvdir" <<<"--- btusb.c 2021-01-28 10:00:00.000000000 +0000 | |
+++ btusb.c 2021-01-28 10:00:00.000000000 +0000 | |
@@ -1642,8 +1642,8 @@ | |
rp = (struct hci_rp_read_local_version *)skb->data; | |
/* Detect controllers which aren't real CSR ones. */ | |
- if (le16_to_cpu(rp->manufacturer) != 10 || | |
- le16_to_cpu(rp->lmp_subver) == 0x0c5c) { | |
+ /* if (le16_to_cpu(rp->manufacturer) != 10 || | |
+ le16_to_cpu(rp->lmp_subver) == 0x0c5c) */ { | |
/* Clear the reset quirk since this is not an actual | |
* early Bluetooth 1.1 device from CSR. | |
*/ | |
@@ -3899,7 +3899,7 @@ | |
set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks); | |
/* Fake CSR devices with broken commands */ | |
- if (bcdDevice <= 0x100 || bcdDevice == 0x134) | |
+ // if (bcdDevice <= 0x100 || bcdDevice == 0x134) | |
hdev->setup = btusb_setup_csr; | |
set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks); | |
" | |
make -C "/lib/modules/$kernver/build" M="$drvdir" clean | |
cp "/usr/src/linux-headers-$kernver/.config" "$drvdir/" | |
cp "/usr/src/linux-headers-$kernver/Module.symvers" "$drvdir/Module.symvers" | |
make -C "/lib/modules/$kernver/build" M="$drvdir" modules | |
local backupdir="$SCRIPTDIR/backup/$kernver" | |
mkdir -p "$backupdir" | |
sudo cp "/lib/modules/$kernver/kernel/drivers/bluetooth/btusb.ko" "$backupdir/btusb.ko" | |
sudo cp "$drvdir/btusb.ko" "/lib/modules/$kernver/kernel/drivers/bluetooth/btusb.ko" | |
sudo modprobe -r btusb | |
sudo modprobe -v btusb | |
} | |
main "$@" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
metod don't work