39

我正在运行 Android 4.4.2 并启用了“蓝牙 HCI 监听日志”,如此处所述嗅探/记录您自己的 Android 蓝牙流量

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

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

如何访问 btsnoop_hci.log?

4

10 回答 10

123

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

adb bugreport anewbugreportfolder

然后解压文件夹。如果幸运的话,有一个“FS”文件夹,其中包含 btsnoop_hci.log 日志记录了几层(不知道为什么有些手机有这个,有些没有。)如果你没有它,抓住错误报告文本看起来像这样的文件

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

对它运行 btsnooz.py。根据 Google 的说明,

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

截至 21 年 1 月 12 日,btsnooz 的链接在这里:https ://android.googlesource.com/platform/packages/modules/Bluetooth/+/refs/heads/master/system/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

它通常但并不总是(取决于手机)在 sdcard 的根目录上。此配置文件中还有一行可以反映 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. 如果您的手机已root,请手动设置BtSnoopLogOutput=true

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

于 2015-05-20T14:22:51.700 回答
17

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

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

文件 bt_stack.conf 没有更改,并且 /sdcard 上没有新文件,就像在其他设备上一样

于 2017-10-10T19:28:24.010 回答
10

对于用户版本的 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 下找到。

于 2018-02-28T07:03:53.293 回答
8

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

/sdcard/oem_log/btsnoop

此位置不需要生根,也不需要通过adb. 该日志将具有.cfa扩展名,并且是二进制pcap格式,适合使用例如Wireshark进行分析。

于 2019-03-09T17:08:51.843 回答
5

这就是为我解决的问题:

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/改用,你会得到整个文件夹,所有的日志

于 2019-01-27T08:40:36.383 回答
4

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

于 2015-12-02T02:41:54.360 回答
3

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

于 2018-06-02T22:08:01.190 回答
0

@TwinPrimesAreEz 非常好,但还有第四个选择;至少在您的设备植根时。称呼:

/system/bin/btsnoop

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

于 2018-02-03T16:01:21.617 回答
0

以上所有内容都很有帮助——在 S8 和 Windows 10 上,Fukai/Rene 关于使用错误报告的选项对我来说是最好的。(文件路径略有不同,但 zip 文件中确实有日志。)

但是,我后来注意到我在 Android 中收到了“分享您的错误报告”的通知,当我选择通知时,我可以选择通过电子邮件发送/保存到 G Drive/等。通过电子邮件将 txt 和 zip 发送给我自己,就是这样,跳过 adb 和其他冗长的问题。

于 2020-07-03T16:55:39.583 回答
-13

注意:此答案不是正确答案。请滚动到投票最高的答案以获得正确答案。

根据我的经验,蓝牙 HCI 侦听功能需要您的设备植根。在我有根的三星 Galaxy S GT-I9000 上它工作正常,而在我的非根的 Galaxy S3 Neo 上,这个功能不起作用。

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

于 2015-03-26T09:41:56.263 回答