Re: Disconnect eSCO link from Command line

sreevani medhahal
2009-02-03T06:04:21Z

Hi Marcel,
>> >> > On Wed, Jan 28, 2009, sreevani medhahal wrote:
>> >> >> After the headset has created the eSCO link. The Profile Tuning
>> >> >> Suite asks for Closing the Audio Connection from AG. Is there any
>> >> >> command line utiility to disable the eSCO link & not the service level
>> >> >> connection(ACL).[The eSCO link is visible on giving hcitool con ]
>> >> >
>> >> > You can do that by calling the Stop D-Bus method call on the
>> >> > org.bluez.Headset interface of the corresponding device object. You can
>> >> > e.g. use the test/test-telephony python script for this:
>> >> > ./test-telephony stop <remote address>
>> >> >
>> >> The above method does not close the eSCO link ,because the
>> >> sco_connect_cb has reported connection timed out. but the hcitool con
>> >> still lists the eSCO link.
>> >> I have another query bluez4.2x is compatible with which linux kernel
>> >> version. does it have any strict requirement that it works best only
>> >> if the kernel version is >= 2.6.27 .
>> >
>> > You might want to try Marcel's bluetooth-testing tree. I think that
>> > issue might be fixed by the following patch:
>> > http://git.kernel.org/?p=linux/kernel/git/holtmann/bluetooth-testing.git;a=commitdiff;h=d7461bfbd48bb76a1126a4f05bb16e4bb0187d31
>>
>> i cannot use the above git tree as i am on ubuntu hardy with kernel
>> 2.6.24-19. Is there a repository of bluetooth kernel patches for
>> version 2.6.24 . So that i can if any higher versions work for me...I
>> am not allowed to use higher kernel versions due to other driver
>> dependancy in 2.6.24.
>
> if you wanna stick with an old kernel, then that is your choice and then
> you have to do the work of backporting. Nobody here is going to do it
> for you.
>
I have found a patch in one of the mailing list which helped to pass
the PTS tests & also works with SCO as well as eSCO headsets. below is
the patch for 2.6.24 (when the AG supports eSCO & the headset doesnt
support eSCO).
diff -uNr /linux-2.6.24/net/bluetooth/hci_event.c
linux-2.6.24/net/bluetooth/hci_event.c
--- /linux-2.6.24/net/bluetooth/hci_event.c 2008-01-25 04:28:37.000000000 +0530
+++ linux-2.6.24/net/bluetooth/hci_event.c 2009-02-02 17:44:38.000000000 +0530
@@ -1314,7 +1314,13 @@

conn = hci_conn_hash_lookup_ba(hdev, ev->link_type, &ev->bdaddr);
if (!conn)
- goto unlock;
+ {
+ __u8 link_type = (ev->link_type == ESCO_LINK) ? SCO_LINK : ESCO_LINK;
+ conn = hci_conn_hash_lookup_ba(hdev, link_type, &ev->bdaddr);
+ if(!conn)
+ goto unlock;
+ conn->type = ev->link_type;
+ }

if (!ev->status) {
conn->handle = __le16_to_cpu(ev->handle);
Thanks & Regards,
Sreevani M