该方法相比手机更繁琐,有点多此一举的感觉,但是个人感觉用linux来控制还是比手机更有意思,所以就想记录一下。
1.将手环通过小米运动绑定到手机上,然后开启来电提醒(手环会震动)。
2.手机启用开发者模式并打开蓝牙
3.用另一个手机打这个手机,手环震动后挂断,然后到文件目录找到蓝牙日志文件并拷到电脑上:
4.使用wireshark打开日志:
5.因为HCI的相关命令是用来控制连接的,而ATT才是用来执行操作的,所以我们只看ATT数据包,对协议进行排序,然后ATT的数据包就会按时间顺序进行排序:
找到Sent Write Command.....这一类的数据包,这些数据包就是往设ige备发送命令的数据包,点开一个,可以看到如图中红框标出的点,handle 表示句柄,是,最下面的0x00代表的是没有震动的值,因为我们是要“调戏”,自然希望它能震动,所以我们换个数据包,找到下面这个:
可以看到 强烈震动的值是0x02,对应的是0200(因为02是在高位,所以低危自动补0,对应值是0200)
6.打开蓝牙接口
hciconfig hci0 up
注:这里有的人会出现打不开的情况,需要将:
这里的勾去掉才能找到蓝牙适配器。
7.扫描设备,因为是低功耗设备所以使用命令:
hcitool lescan
8.扫描设备,并连接:
有时候会连接不上,重试两下就可以了
注:
有的人这里会遇到Connection Refused (111)的错误:
这个的话需要执行如下修改:
首先:vim/etc/bluetooth/main.conf
在最下面添加 :
EnableLE = true
AttributeServer = true
DisablePlugins=pnat
然后
service bluetooth restart
hciconfig hci1down
hciconfig hci1 up
然后再次连接:
9.使用命令char-write-cmd来发送命令:
char-write-cmd 句柄 值
这里填上前面得到的数据,完整命令为:
char-write-cmd 0x0051 0200
回车后,手环就会震动了:
如果发现有错误欢迎批评指正。有疑问欢迎留言。