使用开发人员选项:
-
如果您启用了开发者选项,那么您也可以在这些选项下启用蓝牙监听日志记录。重新启动后,您应该在下面找到日志文件
/data/misc/bluetooth/logs/
(不确定是否需要root用户才能访问这些文件),
使用bt_stack。conf(需要root)-
(针对Android 8.0+更新)
bt_stack.conf
在下面找到
/system/etc/bluetooth
现有的conf文件也位于
/data/misc/bluedroid
.
在大多数情况下,您必须使用以下步骤禁用verity:
-
adb -s <DEVICE> root
-
adb -s <DEVICE> disable-verity
-
adb -s <DEVICE> reboot
(应用更改)
-
重新启动后,再次输入root:
adb-s<设备>根
-
然后重新安装,
adb -s <DEVICE> remount
-
您也可以使用命令重新装载
mount -o rw,remount <PARTITION>
-
然后你就可以推送文件,然后你可以进行更改并重新启动。
-
编辑
bt_stack.conf
文件(集
BtSnoopLogOutput=true
)
-
禁用然后启用蓝牙-这将启动HCI监听日志记录
-
当您确定足够时,请在设置时再次编辑文件
BtSnoopLogOutput=false
并重置蓝牙-这将停止HCI监听日志记录
-
我通常做的是拉取相应的文件,在我最喜欢的编辑器中进行更改(通常
vi
或VSCode),然后使用这些命令将其推回
-
adb -s <DEVICE> pull /system/etc/bluetooth/bt_stack.conf
-
adb -s <DEVICE> push bt_stack.conf /system/etc/bluetooth/.
-
随着
BTSnoop logging
,也可以使用
bt_stack.conf
.
以下是Android 9.0 r34、MSM内核4.4上的文件:
root@console:/system/etc/bluetooth
TraceConf=true
TRC_BTM=2
TRC_HCI=2
TRC_L2CAP=2
TRC_RFCOMM=2
TRC_OBEX=2
TRC_AVCT=2
TRC_AVDT=2
TRC_AVRC=2
TRC_AVDT_SCB=2
TRC_AVDT_CCB=2
TRC_A2D=2
TRC_SDP=2
TRC_SMP=2
TRC_BTAPP=2
TRC_BTIF=2
TRC_BNEP=2
TRC_PAN=2
TRC_HID_HOST=2
TRC_HID_DEV=2
使用隐藏的Android API
请注意,这种方法要求您的应用程序
BLUETOOTH_ADMIN
准许
如果可以,您可以使用相同的
code
Android系统设置应用程序使用。
private void writeBtHciSnoopLogOptions() {
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
adapter.configHciSnoopLog(true);
}
configHciSnoopLog
是的隐藏API的一部分
BluetoothAdapter
class
,因此请确保您知道如何启用它:
SL4A将脚本语言引入Android,允许您直接在Android设备上编辑和执行脚本和交互式解释器。这些脚本可以访问成熟的Android应用程序可用的许多API,但有一个非常简化的界面,可以轻松完成任务。
如果您的Android镜像是支持SL4A构建的,您可以使用以下方法
BluetoothFacade
:
@Rpc(description = "Enable or disable the Bluetooth HCI snoop log")
public boolean bluetoothConfigHciSnoopLog(
@RpcParameter(name = "value", description = "enable or disable log")
Boolean value
) {
return mBluetoothAdapter.configHciSnoopLog(value);
}
请注意
API reference
Github上的版本已经过时,但您可以在官方AOSP中看到最新版本
repo
(
Common\src\com\googlecode\android_scripting\facade\bluetooth
)
启用HCI监听日志的Python脚本如下所示:
from android import Android
droid = Android()
droid.bluetoothConfigHciSnoopLog(True)
完成日志记录后,您可以在中找到HCI Snoop日志
/sdcard/btsnoop_hci.log