Return-Path: MIME-Version: 1.0 In-Reply-To: <65E45719-1EA7-4EE0-A77D-5CFBD4A424F5@holtmann.org> References: <20150824083059.GA504@t440s.lan> <65E45719-1EA7-4EE0-A77D-5CFBD4A424F5@holtmann.org> From: Daniel Lenski Date: Mon, 24 Aug 2015 14:11:46 -0700 Message-ID: Subject: Re: detecting BLE compatibility of an adapter? To: linux-bluetooth Content-Type: text/plain; charset=UTF-8 Sender: linux-bluetooth-owner@vger.kernel.org List-ID: On Mon, Aug 24, 2015 at 11:09 AM, Marcel Holtmann wrote: >>>> Does Bluez provide a way to detect the compatibility of a Bluetooth >>>> adapter with Bluetooth 4.0/Low Energy? >>> >>> That would be the mgmt settings bit number 9 (see doc/mgmt-api.txt). >>> bluetoothd keeps track of this (and enables it automatically if >>> available) and you should also be able to see it e.g. with "btmgmt >>> info". The mgmt interface tells you both whether it's supported as well >>> as whether it's enabled. >>> >> >> Thank you! >> >> In the meantime, I found another way to do it, using >> hci_read_local_features() and checking for the appropriate bit from >> lmp_features_map, specifically features[4]&0x40. >> >> Is there any reason I should prefer one approach over the other? > > raw HCI access is a bad idea. Do not do that. The btmgmt info command is what gives you most information. > > Index list with 1 item > hci0: Primary controller > addr 98:58:8A:xx:xx:xx version 6 manufacturer 15 class 0x000000 > supported settings: powered connectable fast-connectable discoverable bondable link-security ssp br/edr hs le advertising secure-conn debug-keys privacy configuration static-addr > current settings: powered bondable ssp br/edr le secure-conn > name BlueZ > short name > hci0: Configuration options > supported options: public-address > missing options: > > It will easily tell you if LE is supported and also if it has been enabled. Actually, I already need raw HCI access because the devices I am communicating with request a LE connection interval that is unnecessarily long, and there doesn't seem to be another way to override this (http://thread.gmane.org/gmane.linux.bluez.kernel/63778/focus=63819). > The raw features are exposed via /sys/kernel/debug/bluetooth/hci0/features file. However that is not a stable API. That is for manual debugging. Got it. I'll use the mgmt_* calls for feature detection if they're more stable. Thanks, Dan