Re: Bluetooth disconnect event / Link layer monitoring

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Bluetooth developers,

To give some feedbacks on my problem and hopefully that could help
someone else who is also struggling...

I compared the connection with my desktop and my device using btmon and
noticed that during the connection, my desktop was configured as master
that is set to slave on my device:

# On host
< HCI Command: Accept Connection Request (0x01|0x0009) plen 7
        Address: EC:83:50:DE:02:3C (Microsoft Corporation)
        Role: Master (0x00)

# On target
< HCI Command: Accept Connection Request (0x01|0x0009) plen 7
        Address: EC:83:50:DE:02:3C (OUI EC-83-50)
        Role: Slave (0x01)

So I applied this quick and dirty patch and now I can change the link
supervision timeout without error:
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index e17aacbc5630..c83f66066ce0 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -2286,10 +2286,7 @@ static void hci_conn_request_evt(struct hci_dev
*hdev, struct sk_buff *skb)

                bacpy(&cp.bdaddr, &ev->bdaddr);

-               if (lmp_rswitch_capable(hdev) && (mask & HCI_LM_MASTER))
-                       cp.role = 0x00; /* Become master */
-               else
-                       cp.role = 0x01; /* Remain slave */
+               cp.role = 0x00; /* Become master */

                hci_send_cmd(hdev, HCI_OP_ACCEPT_CONN_REQ, sizeof(cp), &cp);
        } else if (!(flags & HCI_PROTO_DEFER)) {

It's weird that in the latest kernel, this part of the file didn't
change and there is for sure a better fix! bluetooth poeple?

Anyway, if this helps or gives some clue to someone else, I'm always
glad for a free beer, even virtually :D!

Happy hacking!

Guy

On Thu, Nov 21, 2019 at 6:37 PM Guy Morand <g.morand@xxxxxxxx> wrote:
>
> I found out that the hcitool lst command was working perfectly fine on
> my desktop and is doing what I expect!
>
> Unfortunately, on my device it only works after pairing, then I always
> get the "Command Disallowed" error. This is weird as I'm  using the same
> USB dongle and bluez version (5.50). The only thing that changes is the
> kernel version that is why I think there is something weird here:
> * 4.9 (Yocto) -> Doesn't work
> * 4.14 (Yocto) -> Doesn't work
> * 4.19 (Debian) -> works!
> * 5.0.0 (Ubuntu) -> works!
>
> I know it's  boring but updating the kernel is not straightforward, we
> use the kernel provided  but our silicium vendor (embedded).
>
> I was just wondering if one of you remember a similar bug (and fix?) or
> this was just automagically solved without someone noticing it? Or maybe
> I'm just missing something else important...
>
> All the best!
>
> Guy



-- 

Guy Morand

Software Engineer

–

Scewo AG, Technoparkstrasse 2, 8406 Winterthur

Office +41 (0)44 500 86 03


www.scewo.ch

www.facebook.com/scewo

www.instagram.com/scewo_official




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux