GNU/Linux >> Belajar Linux >  >> Ubuntu

Dongle Bluetooth Csr 4.0 Palsu Dengan Error Set Event Filter (Parameter Perintah Hci tidak valid) Setelah Patch Kernel?

Saya mendapatkan dongle BT 4.0 palsu dari Cina dan mencoba prosedur dari utas ini:Masalah dongle Bluetooth

Distributor ID: Ubuntu
Description:    Ubuntu 20.04.1 LTS
Release:    20.04
Codename:   focal

Device: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
    bcdDevice: 88.91
    Kernel: 5.10.3-051003-generic

usb-devices | awk '/0a12/' RS=
T:  Bus=02 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#=  3 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0a12 ProdID=0001 Rev=88.91
S:  Product=BT DONGLE10
C:  #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=100mA
I:  If#=0x0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
I:  If#=0x1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb

Tetapi bahkan setelah patch, saya mendapatkan kesalahan di bawah ini melalui hcidump:

HCI Event: Command Complete (0x0e) plen 4
    Set Event Filter (0x03|0x0005) ncmd 1
    status 0x12
    Error: Invalid HCI Command Parameters

Periksa:https://bugzilla.kernel.org/show_bug.cgi?id=60824#c155

“Perangkat yang sama dan masalah yang sama pada Pi Zero. “Mengubah #define lmp_bredr_capable(dev) di hci_core.h untuk mengembalikan false berhasil.”

Saya tidak tahu bagaimana melakukannya #define lmp_bredr_capable(dev). Ada yang bisa bantu?

Saya sepenuhnya tersedia untuk mengujinya.

Jawaban yang Diterima:

saya memecahkan masalah saya dengan mengomentari baris 296 dan 297 dari hci_core.c (ditambah patch).

static void bredr_setup(struct hci_request *req)
{
    __le16 param;
    __u8 flt_type;

    /* Read Buffer Size (ACL mtu, max pkt, etc.) */
    hci_req_add(req, HCI_OP_READ_BUFFER_SIZE, 0, NULL);

    /* Read Class of Device */
    hci_req_add(req, HCI_OP_READ_CLASS_OF_DEV, 0, NULL);

    /* Read Local Name */
    hci_req_add(req, HCI_OP_READ_LOCAL_NAME, 0, NULL);

    /* Read Voice Setting */
    hci_req_add(req, HCI_OP_READ_VOICE_SETTING, 0, NULL);

    /* Read Number of Supported IAC */
    hci_req_add(req, HCI_OP_READ_NUM_SUPPORTED_IAC, 0, NULL);

    /* Read Current IAC LAP */
    hci_req_add(req, HCI_OP_READ_CURRENT_IAC_LAP, 0, NULL);

    /* Clear Event Filters */
    //flt_type = HCI_FLT_CLEAR_ALL;  HERE!!
    //hci_req_add(req, HCI_OP_SET_EVENT_FLT, 1, &flt_type);

    /* Connection accept timeout ~20 secs */
    param = cpu_to_le16(0x7d00);
    hci_req_add(req, HCI_OP_WRITE_CA_TIMEOUT, 2, &param);

Mungkin "#define lmp_bredr_capable(dev) 0" juga berfungsi. Tapi saya tidak yakin. Saya masih menjalankan bredr_setup() tetapi melewati langkah filter acara yang jelas…

obs:Ini bekerja dengan sempurna selama 2 hari. Satu-satunya masalah, saya tidak dapat mengubahnya menjadi profil HSP\HSP tetapi saya pikir ini adalah cerita lain (bahkan setelah ofono gambiarra). Bluetooth di linux menyebalkan di $..

Terkait:Bagaimana Cara Menambahkan Pengguna yang Ada ke Grup yang Ada di Ubuntu?
Ubuntu
  1. Bluetooth Berhenti Bekerja – “gagal Menghidupkan:Org.bluez.error.failed”?

  2. Kernel Panics Dengan Kesalahan "tidak dapat Membuka Perangkat Root", Di Mana Saya Menambahkan Opsi "root ="?

  3. Atur atau ubah zona waktu dengan perintah set-zona waktu

  1. Kesalahan Untuk Memuat Modul Btusb Dengan Kernel 4.10.0-20-generik?

  2. Bagaimana Cara Mengatur Bluetooth Agar Tetap Dinonaktifkan Setelah Ditangguhkan??

  3. Bagaimana Cara Mengatur File Zip Kata Sandi dengan Perintah di semua OS?

  1. Kesalahan Kunci Ssh Tidak Valid Di Juju Saat Menggunakannya Dengan Maas?

  2. File Lisensi cPanel Tidak Valid Setelah Mengubah Kesalahan Nama Host

  3. Mengapa perintah ldapadd ini berhenti dengan kesalahan sintaks tidak valid?