using hcitool to get bluetooth device information

Below commands are shown for communication between Linux Laptop and Samsung Mobile to get Mobile bluetooth device information using hcitool. For this, first make sure laptop bluetooth is turned ON and then switch ON the Bluetooth of Mobile and Make it discoverable/visible to all nearby bluetooth devices.

Lets try to understand what is hcitool,

 $ whatis hcitool 

hcitool (1) – configure Bluetooth connections

 $ hcitool --help 

hcitool – HCI Tool ver 5.37
Usage:
hcitool [options] [command parameters]
Options:
–help Display help
-i dev HCI device
Commands:
dev Display local devices
inq Inquire remote devices
scan Scan for remote devices
name Get name from remote device
info Get information from remote device
spinq Start periodic inquiry
epinq Exit periodic inquiry
cmd Submit arbitrary HCI commands
con Display active connections
cc Create connection to remote device
dc Disconnect from remote device
sr Switch master/slave role
cpt Change connection packet type
rssi Display connection RSSI
lq Display link quality
tpl Display transmit power level
afh Display AFH channel map
lp Set/display link policy settings
lst Set/display link supervision timeout
auth Request authentication
enc Set connection encryption
key Change connection link key
clkoff Read clock offset
clock Read local or remote clock
lescan Start LE scan
leinfo Get LE remote information
lewladd Add device to LE White List
lewlrm Remove device from LE White List
lewlsz Read size of LE White List
lewlclr Clear LE White List
lerladd Add device to LE Resolving List
lerlrm Remove device from LE Resolving List
lerlclr Clear LE Resolving List
lerlsz Read size of LE Resolving List
lerlon Enable LE Address Resolution
lerloff Disable LE Address Resolution
lecc Create a LE Connection
ledc Disconnect a LE Connection
lecup LE Connection Update

SHUFFLED :   Understanding Android Bluetooth Code : part 1 - Application Framework

For more information on the usage of each command use:
hcitool –help

So, hcitool supports above subcommands to identify information.

Lets try to scan ( Scan for remote devices ) all the devices nearby our laptop, for that use command,

 $ hcitool scan
Scanning ...
	9C:65:B0:A0:1E:BD	MY Mobile (GT-I9300I)

Inquire remote devices, for this we need to use below command,

 $ hcitool inq
Inquiring ...
	9C:65:B0:A0:1E:BD	clock offset: 0x2bf1	class: 0x5a020c

Get name from remote device

 $ hcitool name "9C:65:B0:A0:1E:BD"
MY Mobile (GT-I9300I)

Get information from remote device

 
$ sudo hcitool info 9C:65:B0:A0:1E:BD
[sudo] password for myuser: 
Requesting information ...
	BD Address:  9C:65:B0:A0:1E:BD
	OUI Company: Samsung Electronics Co.,Ltd (9C-65-B0)
	Device Name: MY Mobile (GT-I9300I)
	LMP Version: 4.0 (0x6) LMP Subversion: 0x7d3
	Manufacturer: Qualcomm (29)
	Features page 0: 0xff 0xfe 0x8f 0xfe 0xd8 0x3f 0x5b 0x87
		<3-slot packets> <5-slot packets>   
		    
		    
		     
		   
		   
		   
		   
		 <3-slot EDR ACL> <5-slot EDR ACL> 
		   
		   
		   
		    
		 
	Features page 1: 0x03 0x00 0x00 0x00 0x00 0x00 0x00 0x00
	Features page 2: 0x00 0x03 0x00 0x00 0x00 0x00 0x00 0x00

Now pair the mobile with Laptop to create connection ( pair from GUI)

7)   con     Display active connections

:~$ sudo hcitool con
Connections:
> ACL 38:EC:E4:50:2C:F7 handle 11 state 1 lm MASTER AUTH ENCRYPT

8)     rssi    Display connection RSSI
:~$ sudo hcitool rssi 38:EC:E4:50:2C:F7
RSSI return value: 0

Displaying Information about the Laptop Bluetooth Device

Display local devices

 $ hcitool dev
Devices:
	hci0	70:1A:04:59:69:04 

Submit arbitrary HCI commands

 $ sudo hcitool cmd 0x03 0x0013 0x41 0x42 0x43 0x44
< HCI Command: ogf 0x03, ocf 0x0013, plen 4
  41 42 43 44 
> HCI Event: 0x0e plen 4
  01 13 0C 00 
Android Android Commands Android Java Applications Application Libraries Bash / Shell Scripts Bluetooth driver Build Frameworks Commands and Packages Core Kernel C Programs Development Environment Setup Documents / Books Errors & Failures File Systems Framebuffer / Display Driver git Go Language Programs Hardware Platforms Home Kernel & Device Drivers Kernel Booting and Porting Linux, OS Concepts and Networking Linux Device Drivers Linux Host, Ubuntu, SysAdmin Linux Kernel Linux Networking Middleware Libraries, HAL NDK / Middleware / HAL Network Driver OS Concepts PHP Procfs Filesystem Programming Languages RaspberryPi Scripting and Automation Search Engine Optimisation ( SEO ) Social Media Socurce Code Management ( SCM ) System Administration, Security Testing and Debugging Uncategorized Userspace Utilities Web design and development Wordpress Yocto / Bitbake / Openembedded
Tags:

Leave a Reply