Для адаптеров на базе 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 },

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

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

    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. Должно заработать

Спасибо за внимание :)

Комментарии (1)


  1. 13werwolf13
    14.10.2023 13:44
    +2

    пересобирать руками каждый раз с обновлением ядра? не лучше ли опакетить в OBS с автоматической пересборкой при обновлении ядра