1、高通平台如何避免误入FFBM模式
修改init直接过滤掉该模式,无论misc分区被修改成什么样,都直接启动到Android系统,而不进入FFBM。修改的代码很少,如下。

修改代码后,执行命令make systemimage -j8编译生成system.img,通过fastboot将新生成的system.img烧录到处于FFBM模式下的故障机器里,并重启。奇迹出现了,果然正常进入了Android系统

可以看到,Kernel是老的,Android是新的。再查看misc分区的内容及dmesg,如下图所示:

通过dd命令查看misc分区,内容为ffbm-00,Kernel command line有androidboot.mode=ffbm-00的配置,在init中直接忽略了androidboot.mode的配置,Android系统正常启动,相关log如下。

msm8998:/ # dd if=/dev/block/bootdevice/by-name/misc count=1 bs=128
ffbm-00                                                         boot-factory                                                    1+0 records in
1+0 records out
128 bytes transferred in 0.004 secs (32000 bytes/sec)
msm8998:/ # dmesg | grep -iE "ffbm|androidboot"
[    0.000000] Kernel command line: rcupdate.rcu_expedited=1 console=ttyMSM0,115200,n8 androidboot.console=ttyMSM0 earlycon=msm_serial_dm,0xc1b0000 androidboot.hardware=qcom androidboot.veritymode=enforcing androidboot.verifiedbootstate=orange androidboot.keymaster=1 androidboot.bootdevice=1da4000.ufshc androidboot.serialno=25f47d23 androidboot.mode=ffbm-00 quite dvt androidboot.baseband=apq skip_initramfs rootwait ro init=/init root=/dev/sda6
[    1.172876] init: Ignore androidboot.mode!

改动之前的log如下,init会根据Kernel command line的配置进入ffbm模式,fs_mgr不挂载userdatafs_mgr,并且不启动Android:

[    0.000000] Kernel command line: rcupdate.rcu_expedited=1 console=ttyMSM0,115200,n8 androidboot.console=ttyMSM0 earlycon=msm_serial_dm,0xc1b0000 androidboot.hardware=qcom androidboot.veritymode=enforcing androidboot.verifiedbootstate=orange androidboot.keymaster=1 androidboot.bootdevice=1da4000.ufshc androidboot.serialno=25f47d23 androidboot.mode=ffbm-00 quite dvt androidboot.baseband=apq skip_initramfs rootwait ro init=/init root=/dev/sda6
[    1.355482] init: Booting into ffbm mode
[    1.849985] fs_mgr: ffbm mode,skip mount userdatafs_mgr: __mount(source=/dev/block/bootdevice/by-name/modem_a,target=/firmware,type=vfat)=0
[    1.869366] init: ffbm mode, not start class main

2、高通平台如何退出FFBM
2.1 使用fast命令擦除misc分区
Fast Factory Boot Mode(FFBM)是一种半开机的模式,它的主要目的是方便工厂测试,提高生产效率。正常情况下终端用户是不会碰到的。但售后的同学最近连续收到几台客户退回的VR一体机,都进入了该模式。具体表现为屏幕显示既不是开机动画也不是VR界面,通过USB线连接上电脑后adb可以正常识别并可输入命令,但安卓投屏助手(ARDC)一直显示等待系统启动完成。查看内核启动命令行,如下:
sched_enable_hmp=1 sched_enable_power_aware=1 console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=qcom user_debug=31 msm_rtb.filter=0x237 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 cma=32M@0-0xffffffff androidboot.bootdevice=624000.ufshc androidboot.verifiedbootstate=orange androidboot.veritymode=enforcing androidboot.keymaster=1 androidboot.serialno=7e9ca27c androidboot.mode=ffbm-00 quiet androidboot.baseband=apq
可以看到androidboot.mode=ffbm-00,同时[ro.bootmode]为[ffbm-00],以此可确认VR一体机确实进入了Fast Factory Boot Mode。
进入该模式后,即使强制重启机器也无法恢复。手机如果进入该模式,可点击触屏操作,选择重启进入Android即可恢复。而VR一体机没有触屏,只能通过PC操作。由于FFBM是一种半开机的模式,此时安卓投屏助手或Vysor等远程投屏工具都无法正常使用,只能通过fastboot命令擦除misc分区来恢复,具体步骤如下图所示。

其中涉及的命令如下:
adb reboot bootloader
fastboot erase misc
fastboot reboot
为了方便后续debug,趁手在安卓投屏助手(ARDC)中增加了FFBM模式的判断,当处于该模式时直接显示Fast Factory Boot Mode,而不是Waiting boot completely,以便快速判断VR一体机所处的状态。
2.2 使用FQIL工具擦除分区
QFIL是高通提供的刷机工具。首先让VR一体机进入紧急下载模式(EDL),方法有两种。如adb可用,可输入adb reboot edl,进入紧急下载模式。如adb不可用,则先关机,然后同时按住BACK和OK键(某些设备可能是音量+和音量-的组合),再按Power键开机,即可进入紧急下载模式。进入EDL模式后,设备管理器中会有一个设备端口,Forge HS-USB QDloader 9008。如果没有,则需要先安装一下驱动程序,Qualcomm_Drivers_QDLoader.zip

接着,按照如下步骤操作即可退出FFBM模式。
Select Build Type选择Flat Build,
Select Programmer选择prog_ufs_firehose_8998_ddr.elf文件,// 该文件与硬件相关,对应的CPU为8998,flash为ufs
在Tools菜单中选择Partition Manager,
在弹出的Confirm对话框中,点击OK按钮,
在弹出的Partition Manager中,左键点击misc分区,然后点击右键,
在右键弹出的菜单中,点击Manage Partition Data,
在弹出的Raw Data Manager中,点击Load Image按钮,
选择zero.bin文件并发送,Status框中显示Finish Send Image说明已经OK了。
详细流程:

文中提到的zero.bin及prog_ufs_firehose_8998_ddr.elf的下载地址:https://files.cnblogs.com/files/we-hjb/FFBM.7z

参考博客:https://www.cnblogs.com/we-hjb/p/9769467.html
https://www.cnblogs.com/we-hjb/p/9769467.html

高通平台避免误入FFBM模式和退出FFBM相关推荐

  1. 高通平台双卡槽网络模式支持国内所有运营商

    Part1 高通平台双卡网络模式通常是卡槽1支持4.3.2G网络,卡槽2一般会默认写为固定,在之前的android L及L以下,msm8909.msm8916平台上基本设置为GSM only,因为需求 ...

  2. 高通平台环境搭建,编译,系统引导流程分析 .

    1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通开发板上烧录文件系统 建立高通平台开发环境 高通平台,android和 modem 编译流程分析 高通平台 7620 启动流 ...

  3. 高通平台耳机知识记录

    一. 在高通平台中,默认使用内部codec的时候,耳机的输出及控制都是在内部codec中进行的,所以,可以想象得到,耳机的整个初始化起源过程,是在codec的初始化中.高通平台的machine驱动文件 ...

  4. 高通平台耳机知识记录(转载)

    一. 在高通平台中,默认使用内部codec的时候,耳机的输出及控制都是在内部codec中进行的,所以,可以想象得到,耳机的整个初始化起源过程,是在codec的初始化中.高通平台的machine驱动文件 ...

  5. 开机动画适配方案_高通平台刷机包定制方案适配-ROM定制开发入门到精通

    高通平台刷机包定制方案适配-ROM定制开发入门到精通 根据新老平台,高通平台线刷包至少要这样几个基本文件,但不一定全部都需要: 8x10_msimage.mbn----平台镜像,是个完整的磁盘,就是s ...

  6. android 高通平台有前途吗,华为鸿蒙计划要适配高通平台了,可以告别安卓搭载鸿蒙OS了?...

    鸿蒙走出这一步是可以想象到的,看来华为打造这个系统希望的结果是万物皆可盘呀,所以一开始就提出了开源,也就意味着这次是高通,下次就可以是联发科,甚至更多的手机品牌也完全就可以搭载!早期我们一直在说国产手 ...

  7. 高通平台 /sys/module/lpm_levels/parameters/sleep_disabled节点

    高通平台 /sys/module/lpm_levels/parameters/sleep_disabled节点默认值为N,可通过修改init.rc文件来修改,最近遇到一个问题,就是两台设备韦根测试收发 ...

  8. 关于高通平台王者荣耀,和平精英等游戏杂音问题

    关于高通平台王者荣耀,和平精英等游戏杂音问题 今天我将为大家讲述我在音频开发处理的第一个问题,王者荣耀的登录pop音问题. 问题描述:最新版本的手机上,安装了王者荣耀,和平精英,消消乐等游戏APP,可 ...

  9. 教你去除开机root字样(酷派大神F2、酷派高通平台手机)

    2019独角兽企业重金招聘Python工程师标准>>> 有必要再一次强调:刷机有风险,需慎重! 首先说说酷派高通平台去除root字样的方法:         给酷派手机刷过机的朋友是 ...

最新文章

  1. 中国将对人工智能、云计算等行业独角兽IPO即报即审
  2. Linux系统进程管理
  3. 算法与数据结构(冒泡排序)
  4. 关于ssl免费证书设置
  5. jzoj6305-最小值【线段树,dp,双端链表】
  6. clodeblocks debug断点调试_idea debug调试————简单常用,适合初学者
  7. windows下编译c语言文件路径,解决JNI在Windows环境下因长路径导致编译失败问题
  8. mysql第二天无法连接_jdbc 连接mysql 第二天就连接不成功,什么原因?-问答-阿里云开发者社区-阿里云...
  9. 小米这样做,我是拒绝的
  10. 汇编程序编译连接过程
  11. 使用Markdown编写微信公众号文章
  12. WLAN中的MIMO技术详解
  13. 软件-未能加载文件或程序集.HRESULT:0x80131515解决方法
  14. 卡在DSMOS has arrived的解决办法
  15. AI绘画是什么软件?看完你就知道了
  16. c# 微信公众号开发之自定义菜单栏
  17. Java Web学习笔记 3 深入Servlet技术
  18. vue3.0移动端 ui_vue.js的移动UI元素
  19. NaN是什么? NaN == NaN 的结果是什么?为什么?
  20. jvm性能分析工具之-- Eclipse Memory Analyzer tool(MAT)

热门文章

  1. Apache Flink ML 2.2.0 发布公告
  2. CPU外频倍频、主板晶振与内存异步工作
  3. linux根据文件大小,linux 根据文件大小查找文件
  4. html显示未定义,(X)HTML中的未定义行为?
  5. 机器学习----------口碑商家客流量预测(天池大赛案例)学习心得
  6. eclipse 调试linux 内核
  7. iOS定义字符串常量
  8. 荣耀手机计算机设置功能,荣耀路由器用手机怎么设置?
  9. Gradle sync failed (3 s 402 ms) - Android Studio问题解决方法
  10. 美团架构(技术+业务)简单总结