Re: [PATCH] android/bluetooth: Make possible to start BlueZ in LE mode only

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

 



Hi David,

On Sun, May 25, 2014 at 5:38 PM,  <d.eriksson@xxxxxx> wrote:
> Hi Lukasz,
>
> Maybe unrelated, but I'm looking for a way to enforce BlueZ to run LE only (central) under linux 3.13.
> btmgmt bredr seems to do this, but could I do it via some "config-level" setting to ensure no one on the system can initiate anything else than LE related things.
>

AFAIK For now it is possible only for Android version.
For "normal" BlueZ you need to extend BlueZ daemon. Probably add
special config to main.conf and add similar handling it as we did for
Android.

> best David
>

BR
Lukasz

> On 23 Apr 2014, at 00:16, Lukasz Rymanowski <lukasz.rymanowski@xxxxxxxxx> wrote:
>
>> This patch adds possibility to start BlueZ only in LE mode only.
>>
>> It is useful for testing purpose, when you want test BlueZ in
>> peripheral mode against any dual mode device.
>> ---
>> android/README          |  3 +++
>> android/bluetooth.c     |  7 ++++++-
>> android/hal-bluetooth.c | 15 ++++++++++++++-
>> android/hal-msg.h       |  1 +
>> 4 files changed, 24 insertions(+), 2 deletions(-)
>>
>> diff --git a/android/README b/android/README
>> index 6254d34..9b08610 100644
>> --- a/android/README
>> +++ b/android/README
>> @@ -166,6 +166,9 @@ options.
>>
>> Property      Value           Description
>> -------------------------------------------
>> +mode         le_only         Enable BlueZ in Low Energy mode only.
>> +             <none>          Enable BlueZ in default mode - enable br/edr/le
>> +                             if possible.
>> handsfree     hfp             Enable Handsfree Profile (HFP) with narrowband
>>                               speech only
>>               hfp_wbs         Enable Handsfree Profile (HFP) with narrowband
>> diff --git a/android/bluetooth.c b/android/bluetooth.c
>> index 93c7935..923285c 100644
>> --- a/android/bluetooth.c
>> +++ b/android/bluetooth.c
>> @@ -3894,10 +3894,15 @@ static const struct ipc_handler cmd_handlers[] = {
>>
>> void bt_bluetooth_register(struct ipc *ipc, uint8_t mode)
>> {
>> -     DBG("");
>> +     DBG("mode 0x%x", mode);
>>
>>       hal_ipc = ipc;
>>
>> +     if ((mode == HAL_MODE_LE_ONLY) &&
>> +                     (adapter.current_settings & MGMT_SETTING_LE) &&
>> +                     (adapter.current_settings & MGMT_SETTING_BREDR))
>> +             set_mode(MGMT_OP_SET_BREDR, 0x00);
>> +
>>       ipc_register(hal_ipc, HAL_SERVICE_ID_BLUETOOTH, cmd_handlers,
>>                                               G_N_ELEMENTS(cmd_handlers));
>> }
>> diff --git a/android/hal-bluetooth.c b/android/hal-bluetooth.c
>> index 48d5ea2..69009ff 100644
>> --- a/android/hal-bluetooth.c
>> +++ b/android/hal-bluetooth.c
>> @@ -29,6 +29,8 @@
>> #include "hal-ipc.h"
>> #include "hal-utils.h"
>>
>> +#define MODE_PROPERTY_NAME "persist.sys.bluetooth.mode"
>> +
>> static const bt_callbacks_t *bt_hal_cbacks = NULL;
>>
>> #define enum_prop_to_hal(prop, hal_prop, type) do { \
>> @@ -412,6 +414,17 @@ static const struct hal_ipc_handler ev_handlers[] = {
>>       }
>> };
>>
>> +static uint8_t get_mode(void)
>> +{
>> +     char value[PROPERTY_VALUE_MAX];
>> +
>> +     if (property_get(MODE_PROPERTY_NAME, value, "") > 0 &&
>> +                                     (!strcasecmp(value, "le_only")))
>> +             return HAL_MODE_LE_ONLY;
>> +
>> +     return HAL_MODE_DEFAULT;
>> +}
>> +
>> static int init(bt_callbacks_t *callbacks)
>> {
>>       struct hal_cmd_register_module cmd;
>> @@ -433,7 +446,7 @@ static int init(bt_callbacks_t *callbacks)
>>       }
>>
>>       cmd.service_id = HAL_SERVICE_ID_BLUETOOTH;
>> -     cmd.mode = HAL_MODE_DEFAULT;
>> +     cmd.mode = get_mode();
>>
>>       status = hal_ipc_cmd(HAL_SERVICE_ID_CORE, HAL_OP_REGISTER_MODULE,
>>                                       sizeof(cmd), &cmd, NULL, NULL, NULL);
>> diff --git a/android/hal-msg.h b/android/hal-msg.h
>> index ed0a67a..db21870 100644
>> --- a/android/hal-msg.h
>> +++ b/android/hal-msg.h
>> @@ -55,6 +55,7 @@ static const char BLUEZ_HAL_SK_PATH[] = "\0bluez_hal_socket";
>> #define HAL_OP_STATUS                 IPC_OP_STATUS
>>
>> #define HAL_MODE_DEFAULT              0x00
>> +#define HAL_MODE_LE_ONLY             0x01
>>
>> #define HAL_OP_REGISTER_MODULE                0x01
>> struct hal_cmd_register_module {
>> --
>> 1.8.4
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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