我正在运行Android 4.4.2并启用了“蓝牙HCI监听日志”,如此处所述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?
答案 0 :(得分:69)
更新: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
LEGACY ANSWER:
您可以通过阅读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
我说“应该”,因为对于某些手机,这不会更新此文件。你应该:
BtSnoopLogOutput=true
如果3个选项都不起作用,那你就不走运了。 BT Snoop hci日志记录在不同的手机上有点不一致。我见过一些手机,我无法让它工作,不管是什么,但在大多数情况下,你应该能够实现它。根本电话不是必需的。
答案 1 :(得分:12)
在Nexus 5X和Pixel C Android O上,您必须启用蓝牙,在开发人员设置中启用HCI监听,禁用并重新启用蓝牙并重新启动。
之后,您可以通过转到开发人员设置并“获取错误报告”来获取日志,并获取完整日志。
文件bt_stack.conf未更改,并且/ sdcard上没有与其他设备上一样的新文件
答案 2 :(得分:3)
在我看来,bt_stack.conf显示/sdcard/Android/data/btsnoop_hci.log
答案 3 :(得分: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下找到。
答案 4 :(得分:2)
对于三星s8,神奇的位置是/ data / log / bt /
你需要root访问才能获得它
答案 5 :(得分: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/
,您将获得整个文件夹以及所有日志
答案 6 :(得分:1)
在OnePlus 6(A6003,Android 9)手机(我相信其他OnePlus手机)上,位置是:
/sdcard/oem_log/btsnoop
此位置不需要生根,也不需要通过adb
进行访问。日志的扩展名为.cfa
。
答案 7 :(得分:0)
@TwinPrimesAreEz很棒,但有第四种选择;至少在你的设备扎根的时候。拨打:
/system/bin/btsnoop
Somewhere此工具已被删除,但它仍然存在于我的设备上。 Whatismore,它似乎是在启用蓝牙时调用的。在logcat
我看到:&#34; btsnoop_dump :: snoop_log_open:无法打开Dir条目&#34;。不知道为什么它无法打开那个目录(顺便说一下,它是/data/media/0
)但是我怀疑这个工具会以某种方式干扰集成到Android中的新HCI监听选项。但是,如果您直接调用该工具(例如通过adb shell
或Terminal emulator),则可以使用该工具。对我来说,它创建了文件/data/media/0/hci_snoop20180203164422.cfa
。
答案 8 :(得分:0)
以上所有内容都很有帮助-在S8和Windows 10上,Fukai / Rene选择使用错误报告对我来说是最好的。 (文件路径略有不同,但是zip文件中确实有日志。)
但是,我后来发现我在Android中收到一个“共享您的错误报告”的通知,并且当我选择通知时,我可以选择通过电子邮件发送/保存到G Drive / etc。通过电子邮件将txt和zip发送给我自己,就是这样,跳过了adb和另一个rigmarole。
答案 9 :(得分:-7)
根据我的经验,蓝牙HCI监听功能需要您的设备扎根。在我的根系三星Galaxy S GT-I9000上它可以正常工作,而在我的非root Galaxy S3 Neo上这个功能不起作用。
此外,您应该确保没有意外删除该文件。每当我删除文件时,我都必须重新启用蓝牙窥探功能,以便让系统重新创建日志文件。