未生成蓝牙HCI监听日志

问题描述 投票:21回答:9

我正在运行Android 4.4.2并启用了“Bluetooth HCI snoop log”,如此处所述Sniffing/logging your own Android Bluetooth traffic

打开和关闭蓝牙后,我重新启动了手机。我在预期的位置找不到日志文件:

$ adb pull /sdcard/btsnoop_hci.log
remote object '/sdcard/btsnoop_hci.log' does not exist

我怎样才能到达btsnoop_hci.log?

android bluetooth android-4.4-kitkat android-bluetooth s5
9个回答
-8
投票

根据我的经验,蓝牙HCI监听功能要求您的设备扎根。在我的根本三星Galaxy S GT-I9000上,它可以正常工作,而在我的非root Galaxy S3 Neo上,这个功能不起作用。

此外,您应该确保没有意外删除该文件。每当我删除文件时,我必须重新启用蓝牙窥探功能,以使系统重新创建日志文件。


72
投票

更新:btsnoop hci日志似乎逐渐退出许多手机上的用户可访问区域。假设您启用了hci日志记录,则可以获取错误报告

adb bugreport anewbugreportfolder

然后解压缩文件夹。如果你很幸运,有一个'FS'文件夹包含btsnoop_hci.log日志几层(不知道为什么有些手机有这个,有些没有。)如果你没有它,抓住bug报告文本看起来像这样的文件

bugreport-2018-08-01-15-08-01.txt

对它运行btsnooz.py。 Per Google`s instructions,

To extract snoop logs from the bug report, use the btsnooz script.

Get btsnooz.py.
Extract the text version of the bug report.
Run btsnooz.py on the text version of the bug report:

btsnooz.py BUG_REPORT.txt > BTSNOOP.log

截至8/1/18,与btsnooz的链接在这里:https://android.googlesource.com/platform/system/bt/+/master/tools/scripts/btsnooz.py

遗产回答:

您可以通过阅读bt_stack.conf文件来查看手机存储hci日志的位置。尝试

adb shell cat /etc/bluetooth/bt_stack.conf

你会看到一条看起来像的线

# BtSnoop log output file
BtSnoopFileName =/sdcard/btsnoop_hci.log <--your file location

通常,但并非总是(取决于电话)在SD卡的根目录上。此配置文件中还有一行可以反映hci日志记录是否实际开启

# EnableBtSnoop logging function
# valid value : true , false
BtSnoopLogOutput=false

切换开发人员选项中的“启用蓝牙HCI监听日志”选项应将其更改为

# EnableBtSnoop logging function
# valid value : true , false
BtSnoopLogOutput=true

我说“应该”,因为对于某些手机,这不会更新此文件。你应该:

  1. 阅读bt_stack.conf文件。查看HCI日志的位置以及是否实际启用了bt snoop日志记录
  2. 如果开发人员选项说btsnoop_hci日志已开启,但bt_stack.conf文件显示已关闭,请尝试重启蓝牙和/或手机。
  3. 如果您的手机已植根,请手动设置BtSnoopLogOutput=true

如果3个选项都不起作用,那你就不走运了。 BT Snoop hci日志记录在不​​同的手机上有点不一致。我已经看过一些手机,我无法让它工作,不管是什么,但在大多数情况下你应该能够实现它。根本电话不是必需的。


12
投票

在Nexus 5X和Pixel C Android O上,您必须启用蓝牙,在开发人员设置中启用HCI监听,禁用和重新启用蓝牙并重新启动。

之后,您可以通过转到开发人员设置并“获取错误报告”并获取完整日志来获取日志。

文件bt_stack.conf未更改,并且/ sdcard上没有与其他设备上一样的新文件


3
投票

在我的,bt_stack.conf显示/sdcard/Android/data/btsnoop_hci.log


3
投票

对于用户版Pixel / Nexus,您可能无权提取/data/misc/bluetooth/logs/btsnoop_hci.log。您可以像这样获取hci日志:

adb shell dumpsys bluetooth_manager
adb bugreport > BUG_REPORT.txt

您将获得BUG_REPORT.txt和zip文件。 HCI日志将在zip文件的FS \ data \ misc \ bluetooth \ logs下找到。


2
投票

对于三星s8,神奇的位置是/ data / log / bt / 你需要root访问才能获得它


2
投票

这就是为我解决的问题:

1)adb shell cat /etc/bluetooth/bt_stack.conf

看看日志文件名是什么,对我来说是:

/data/log/bt/btsnoop_hci.log

棘手的部分是文件在其名称中生成时间戳,因此您无法通过使用它来获取它们(它)

adb pull /data/log/bt/btsnoop_hci.log

2)使用adb pull /data/log/bt/代替,您将获得整个文件夹,包含所有日志


1
投票

在OnePlus 6(A6003,Android 9)手机上(我相信其他OnePlus手机)的位置是:

/sdcard/oem_log/btsnoop

此位置不需要生根也不需要通过adb访问。该日志将具有.cfa扩展名。


0
投票

@TwinPrimesAreEz很棒,但有第四种选择;至少在你的设备扎根的时候。呼叫:

/system/bin/btsnoop

Somewhere此工具已被删除但它仍然存在于我的设备上。 Whatismore,它似乎是在启用蓝牙时调用的。在logcat中,我看到:“btsnoop_dump :: snoop_log_open:无法打开Dir条目”。不知道为什么它无法打开那个目录(顺便说一下,它是/data/media/0)但是我怀疑这个工具以某种方式干扰了集成到Android中的新HCI监听选项。但是,如果你直接调用该工具(例如通过adb shellTerminal emulator)它可以工作。对我来说,它创建了文件/data/media/0/hci_snoop20180203164422.cfa

© www.soinside.com 2019 - 2024. All rights reserved.