华为HiCar投屏音频卡顿问题分析—抓取wifi tcpdump及 sniffer log 步骤

注意: 由于需要在同一台电脑同时连接adb 抓取log,附件中所有脚本的 adb device serial number 需要更新为对应的号。

示例如下:

ciellee@sh:~/Videos$ adb devices
List of devices attached
9c2d9ab5device             ---------------> 车机
5T7HGD199A038896device             ---------------> 手机

所有车机脚本adb 改为 :   adb -s 9c2d9ab5 shell
所有手机脚本adb 改为 :   adb -s 5T7HGD199A038896 shell

附件内容如下:
在这里插入图片描述

操作步骤如下:

一、 对数据解密,push 解密的so 库文件到车机中

操作示例如下:

ciellee@sh:~/Videos$ adb root
adbd is already running as root
ciellee@sh:~/Videos$ adb remount
remount succeeded

ciellee@sh:~/Videos$ adb shell
msm8937_32go:/ # find ./system/ -name libmsdpmediasdk.so                       
./system/lib/libmsdpmediasdk.so
./system/lib64/libmsdpmediasdk.so
msm8937_32go:/ # exit

ciellee@sh:~/Videos$ adb push arm64-v8a/libmsdpmediasdk.so  /system/lib64/
3103 KB/s (1768624 bytes in 0.556s)
ciellee@sh:~/Videos$ adb push armeabi-v7a/libmsdpmediasdk.so /system/lib/
2950 KB/s (1444272 bytes in 0.478s)

二、车机手机分别打开adb功能,运行脚本清除手机 和 车机内部现有的log,会自动重启

运行 《1.清除华为手机log并重启.bat》 和 《2.清除车机log并重启.bat》


三、车机手机分别打开adb功能,开始push tcpdump 可执行文件,并开始抓取tcpdump log

运行《3.push_手机tcpdump并开始抓 取tcpdump.bat》 和 《4.push_车机tcpdump并开始抓 取tcpdump.bat》

注意,运行这两个脚本后会开始同步抓取tcpdump log,这两个窗口保留,别关闭。

如下:

ciellee@sh:~/Videos$ adb -s 5T7HGD199A038896 shell "/data/tcpdump -i any -p -vv -s 0 -w /sdcard/phone_capture.pcap"
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
Got 177     ----------> 看到这个数字在增长,说明正在抓取tcpdump

四、开始配置 sniffer 工具,抓取sniffer log

由于 hicar 投屏是动态选择信道的,所以 建议在一个较为干净的环境下(投屏及wifi 比较少的地方)。

在 sniffer 工具中,固定 149 信道,配置只过滤 车机 和 手机的 mac 地址。

开始抓取 sniffer log。
在这里插入图片描述

五、 此时开始投屏

在投屏时,可以看到有大量数据出来。

此时检查一下:


5.1 确认信道是否是 149

如果没有大量数据出来,说明可以投屏此时可以信道不是 149,
也可以通过 adb 来确认 wifi 信道 是否正确,文件 /data/misc/wifi/hostapd.conf , 参考本文第七章。


5.2 确认四次握手协议已经抓全(因为可以会少抓 ,如果少抓了,无法解密log)

往前翻sniffer log, 看下有没有看到 四个 EAPOL-key 的数据,这个是四次握手,如下图:
在这里插入图片描述
如果前两个中有一个确认不成功,就说明这次抓的不好,此时只要重新从 第四步配置 sniffer log 做就行了。
即,重新开启 sniffer log,配置好后,重新投屏,然后再检查上面的信道 及 握手协议 这两项。


六、开始复现问题

在前面 tcpdump 和 wifi sniffer log 确认抓的没问题后,此时可以开始复现问题了。
复现问题时,建议记录下,出现问题对应的时间点,方便快速定位分析。


七、导出车机 wifi cfg 文件,查看wifi 密码

ciellee@sh:~/Videos$ mkdir wifi_cfg
ciellee@sh:~/Videos$ adb pull /data/misc/wifi/ ./wifi_cfg/
pull: building file list...
skipping special file 'wlan0'
skipping special file 'p2p0'
skipping special file 'wlan0'
pull: /data/misc/wifi/hostapd.deny -> ./wifi_cfg/hostapd.deny
pull: /data/misc/wifi/hostapd.accept -> ./wifi_cfg/hostapd.accept
pull: /data/misc/wifi/hostapd.conf -> ./wifi_cfg/hostapd.conf
pull: /data/misc/wifi/hostapd.pid -> ./wifi_cfg/hostapd.pid
pull: /data/misc/wifi/entropy.bin -> ./wifi_cfg/entropy.bin
pull: /data/misc/wifi/p2p_supplicant.conf -> ./wifi_cfg/p2p_supplicant.conf
pull: /data/misc/wifi/wpa_supplicant.conf -> ./wifi_cfg/wpa_supplicant.conf
pull: /data/misc/wifi/WifiConfigStore.xml -> ./wifi_cfg/WifiConfigStore.xml
pull: /data/misc/wifi/softap.conf -> ./wifi_cfg/softap.conf
pull: /data/misc/wifi/WCNSS_qcom_cfg.ini -> ./wifi_cfg/WCNSS_qcom_cfg.ini
10 files pulled. 0 files skipped.
60 KB/s (52043 bytes in 0.834s)
ciellee@sh:~/Videos$ 

对应的wifi SSID 和 密码在 hostapd.conf 文件中,如下:

# /data/misc/wifi/hostapd.conf 

# SSID to be used in IEEE 802.11 management frames
ssid=HiCar-1120
wpa_passphrase=53881216

在该文件中同样也可以确认wifi 信道是多少,如下说明是 153 信道 ,

在hicar 投屏比较多的地方信道较不确定,在hicar 投屏少的地方,一般是 149 开始:

# /data/misc/wifi/hostapd.conf 

# Channel number (IEEE 802.11)
# (default: 0, i.e., not set)
# Please note that some drivers (e.g., madwifi) do not use this value from
# hostapd and the channel will need to be configuration separately with
# iwconfig.
channel=153

八、重现完毕后,开始导出log

8.1 停上 sniffer log 抓取,保存 sniffer log 文件。


8.2 停止 tcpdump log 抓取

调出之前抓取 tcpdump 的两个窗口,ctrl + c ,n , 停止脚本,然后脚本会自动导出 tcpdump log 到本地来。

车机tcpdump log 名为:car_capture.pcap
手机tcpdump log 名为:phone_capture.pcap

ciellee@sh:~/Videos$ adb -s 260b9696  push car_tcpdump  /system/bin/tcpdump
car_tcpdump: 1 file pushed. 12.0 MB/s (709464 bytes in 0.056s)

ciellee@sh:~/Videos$ db -s 260b9696  shell chmod 777 /system/bin/tcpdump

ciellee@sh:~/Videos$ echo ===========Start Capture car tcpdump ,ctrl+c to stop capture ===========
===========Start Capture car tcpdump ,ctrl+c to stop capture ===========

ciellee@sh:~/Videos$ adb -s 260b9696 shell "tcpdump -i any -p -vv -s 0 -w /sdcard/car_capture.pcap"
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
^C终止批处理操作吗(Y/N)? n

ciellee@sh:~/Videos$ echo ===========开始导出 tcpdump log 完毕===========
===========开始导出 tcpdump log 完毕===========

ciellee@sh:~/Videos$ adb -s 260b9696 pull /sdcard/car_capture.pcap  .
/sdcard/car_capture.pcap: 1 file pulled. 3.6 MB/s (56232 bytes in 0.015s)

ciellee@sh:~/Videos$ echo ===========导出 tcpdump log 完毕===========
===========导出 tcpdump log 完毕===========

ciellee@sh:~/Videos$ pause
请按任意键继续. . .

8.3 导出手机 和 车机的 android_log

运行《5.抓取手机log.bat》 和 《6.抓取车机log.bat》自动导出log


九、相关脚本内容

3.push_手机tcpdump并开始抓取tcpdump.bat》

adb -s 5T7HGD199A038896 wait-for-device
adb -s 5T7HGD199A038896 root

adb -s 5T7HGD199A038896 wait-for-device
adb -s 5T7HGD199A038896 remount

adb -s 5T7HGD199A038896 push phone_tcpdump  /data/tcpdump
adb -s 5T7HGD199A038896 shell chmod 777 /data/tcpdump

echo ===========Start Capture phone tcpdump ,ctrl+c to stop capture ===========
adb -s 5T7HGD199A038896 shell "/data/tcpdump -i any -p -vv -s 0 -w /sdcard/phone_capture.pcap"
echo ===========tcpdump capture done===========

adb -s 5T7HGD199A038896 pull /sdcard/phone_capture.pcap  .
echo ===========tcpdup file pull done===========

pause

4.push_车机tcpdump并开始抓取tcpdump.bat》

adb -s 66f80af6  wait-for-device
adb -s 66f80af6  root

adb -s 66f80af6  wait-for-device
adb -s 66f80af6  remount

adb -s 66f80af6  push car_tcpdump  /system/bin/tcpdump
adb -s 66f80af6  shell chmod 777 /system/bin/tcpdump

echo ===========Start Capture car tcpdump ,ctrl+c to stop capture ===========
adb -s 66f80af6 shell "tcpdump -i any -p -vv -s 0 -w /sdcard/car_capture.pcap"
echo ===========¿ªÊŒµŒ³ö tcpdump log Íê±Ï===========

adb -s 66f80af6 pull /sdcard/car_capture.pcap  .
echo ===========µŒ³ö tcpdump log Íê±Ï===========

pause

5.抓取手机log.bat》

@echo on

adb -s 8UJ0119828000422  wait-for-device
adb -s 8UJ0119828000422  root

adb -s 8UJ0119828000422  wait-for-device
adb -s 8UJ0119828000422  remount

set ver_str=3.5
echo =====================GetLog version %ver_str% ================================
:: echo Current: %time% ŒŽ %time:~0,2%µã%time:~3,2%·Ö%time:~6,2%Ãë%time:~9,2%ÀåÃë@
echo ####Current: %date% %time%

set date_time="%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%"
set Folder="LogHub\GetApp_%ver_str%_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%_phone"
echo ####start to get log to (%CD%\%Folder%)...
mkdir %Folder%

adb -s 8UJ0119828000422  pull /data/log/bt %Folder%/bt
adb -s 8UJ0119828000422  pull /data/log/android_logs %Folder%/android_logs
adb -s 8UJ0119828000422  pull /sdcard/phone_capture.pcap  %Folder%/phone_capture.pcap

echo ===========tcpdup file pull done===========
:: adb -s 8UJ0119828000422  shell rm -rf /data/log/bt
:: adb -s 8UJ0119828000422  shell rm -rf /data/log/android_logs

pause
@echo on

6.抓取车机log.bat》
@echo on

adb -s 66f80af6  wait-for-device
adb -s 66f80af6  root

adb -s 66f80af6  wait-for-device
adb -s 66f80af6  remount

set ver_str=3.5
echo =====================GetLog version %ver_str% ================================
:: echo Current: %time% ŒŽ %time:~0,2%µã%time:~3,2%·Ö%time:~6,2%Ãë%time:~9,2%ÀåÃë@
echo ####Current: %date% %time%

set date_time="%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%"
set Folder="LogHub\GetApp_%ver_str%_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%_car"
echo ####start to get log to (%CD%\%Folder%)...
mkdir %Folder%

adb -s 66f80af6  pull /private/log %Folder%/android_logs/
adb -s 66f80af6  pull /data/brlink %Folder%/brlink/

adb -s 66f80af6  pull /sdcard/car_capture.pcap  %Folder%/car_capture.pcap

mkdir -p %Folder%/wifi_cfg/
adb -s 66f80af6  pull /data/misc/wifi/ %Folder%/wifi_cfg/

adb -s 66f80af6  pull /data/misc/bluedroid/ %Folder%/conf/
adb -s 66f80af6  pull  /data/misc/bluetooth/logs/ %Folder%/btlogs/

pause
@echo on
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章