Настройка bluethooth на honor magicbook 14 и ubuntu 22.04

1a42e0f857a28cfcf2d981d212b2cdcf

Для адаптеров на базе Qualcomm Atheros QCNFA765 (rev 01) — как понимаю подойдет все что QCNxxx

  1. вызываем lsusb

  2. Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 003 Device 003: ID 27c6:5125 Shenzhen Goodix Technology Co.,Ltd. Goodix Fingerprint Device
    Bus 003 Device 002: ID 0489:e0e1 Foxconn / Hon Hai
    Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 001 Device 003: ID 0408:1040 Quanta Computer, Inc. ov9734_techfront_camera
    Bus 001 Device 002: ID 046d:c52f Logitech, Inc. Unifying Receiver
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

0489: e0e1 — получаем айди нашего устройства (Foxconn)

  1. в настройках — диспетчер драйверов — ububtu software — включаем репозитории с source code

  2. sudo apt install dpkg-dev (нужно для утилиты dpkg-source)

  3. apt-get source linux (возможно придется еще через обычный apt install установить linux-headers)

  4. cd linux-5.15.0/drivers/bluetooth/ (у меня версия ядра 5.15.0 тут соответственно ваша версия)

  5. vim btusb.c
    находим блок с похожим модулем (изменена по идее только ревизия, особых отличий в работе нет)
    /* QCA WCN6855 chipset */
    добавляем блок с нашим ID
    { USB_DEVICE(0x0489, 0xe0e1), .driver_info = BTUSB_QCA_WCN6855 |
    BTUSB_WIDEBAND_SPEECH |
    BTUSB_VALID_LE_STATES },

    0×0489, 0xe0e1 — где цифры из 1 пункта, в зависимости от версии ноута, последняя цифра может отличаться

  6. собираем модуль

make -C /lib/modules/$(uname -r)/build M=$(pwd) clean
cp /usr/src/linux-headers-$(uname -r)/.config ./
cp /usr/src/linux-headers-$(uname -r)/Module.symvers Module.symvers
make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
install -b btusb.ko /lib/modules/$(uname -r)/kernel/drivers/bluetooth/
  1. modprobe -r btusb — выгружаем драйвер, пытаемся загрузить драйвер modprobe btusb — выдаст ошибку с правами

  2. генерируем подписи для ядра
    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=MyBtDriver/"
    подписываем наш драйвер
    /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n btusb)

  3. грузим нашу подпись в систему
    mokutil --import MOK.der попросит ввести пароль, придумываем пароль, он нам понадобиться после перезагрузки, один раз

  4. перегружаем получаем синее окно с меню, выбираем eroll что-то там, вводим наш пароль из п. 10, просит перегрузить еще раз.

  5. должно заработать

© Habrahabr.ru