未生成蓝牙 HCI 侦听日志

Bluetooth HCI snoop log not generated

我是 运行 Android 4.4.2 并且我启用了 "Bluetooth HCI snoop log" 如此处所述 Sniffing/logging your own Android Bluetooth traffic

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

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

我怎样才能到达 btsnoop_hci.log?

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

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

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

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

adb bugreport anewbugreportfolder

然后解压文件夹。如果你幸运的话,有一个 'FS' 文件夹包含 btsnoop_hci.log 记录几层(不知道为什么有些 phone 有这个而有些没有。)如果你不没有,抓取看起来像这样的错误报告文本文件

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

自 2021 年 1 月 12 日起,btsnooz 的 link 在这里:https://android.googlesource.com/platform/packages/modules/Bluetooth/+/refs/heads/master/system/tools/scripts/btsnooz.py

遗留答案:

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

adb shell cat /etc/bluetooth/bt_stack.conf

你会看到一行看起来像

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

它通常但不总是(取决于 phone)在 sdcard 的根目录中。此配置文件中还有一行可以反映 hci 日志记录是否实际打开

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

切换开发者选项中的 'Enable Bluetooth HCI snoop log' 选项应将其更改为

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

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

  1. 阅读bt_stack.conf文件。查看 HCI 日志应该在哪里,以及是否实际启用了 bt snoop 日志记录
  2. 如果开发者选项显示 btsnoop_hci 日志记录已打开但 bt_stack.conf 文件显示它已关闭,请尝试重新启动蓝牙 and/or 您的 phone.
  3. 如果您的 phone 已 root,请手动设置 BtSnoopLogOutput=true

如果 3 个选项中的 none 有效,那你就不走运了。 BT Snoop hci 日志记录在不​​同 phone 之间有点不一致。我已经看到一些 phones 无论如何我都无法让它工作,但在大多数情况下你应该能够让它继续运行。 root phone 不是必需的。

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

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

之后,您可以通过转到开发人员设置和 "take bug report" 获取日志并获取完整日志。

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

@TwinPrimesAreEz 很棒,但还有第四种选择;至少当您的设备已植根时。通话:

/system/bin/btsnoop

Somewhere this tool was removed but it still exists on my device. Whatismore, it seems to be called when bluetooth is enabled. In logcat I see: "btsnoop_dump: : snoop_log_open: Unable to open the Dir entry". Not sure why it is unable to open that dir (btw, it is /data/media/0) But I suspect that this tool somehow interferes with the new HCI snooping option integrated into Android. But if you call that tool directly (e.g. via adb shell or Terminal emulator) 有效。对我来说,它创建了文件 /data/media/0/hci_snoop20180203164422.cfa

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

对于Samsung s8,魔法位置是/data/log/bt/
并且您需要 root 访问权限才能获取它

这就是为我解决的问题:

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/,您将得到整个文件夹,包括所有日志

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

/sdcard/oem_log/btsnoop

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

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

但是,我后来注意到我在 Android 中收到了“分享您的错误报告”的通知,当我选择通知时,我可以选择 email/save 到 G Drive/etc.通过电子邮件将 txt 和 zip 发送给自己,仅此而已,跳过了 adb 和其他繁琐的程序。

在redmi note 7上我发现直接在手机上登录的位置:

/storage/emulated/0/MIUI/debug_log/common/btsnoop_hci_20220416214313.cfa

使用搜索,我写了“bt”并找到了这些文件!