求助:如何解决CM3L启动Android Things 0.6.1预览版仅显彩虹屏问题
针对CM3L加载Android Things 0.6.1彩虹屏问题的解决方案
我之前帮同行排查过类似Compute Module 3 Lite与Android Things的适配问题,结合你已经做的尝试,给你几个更精准的排查和修复方向:
1. 强制指定DTB并调整boot分区配置
你已经添加了bcm2710-rpi-cm3.dtb,但要确保config.txt文件明确指向这个设备树,同时适配CM3L无内置eMMC的特性:
- 编辑boot分区的
config.txt,添加或修改:
其中device_tree=bcm2710-rpi-cm3.dtb dtparam=sd_poll_once=on enable_uart=1enable_uart=1是为后续串口调试做准备,sd_poll_once能优化SD卡启动的兼容性,避免CM3L反复检测不存在的eMMC。
2. 替换适配CM3L的bootloader文件
Android Things 0.6.1默认的bootcode.bin和start.elf是针对RPI3优化的,CM3L需要专属的bootloader支持:
- 从官方Raspberry Pi Compute Module固件包(对应Linux 4.4内核版本,和Android Things 0.6.1匹配)中提取
bootcode.bin和start.elf,替换掉现有boot分区的同名文件。
3. 用串口调试定位启动卡滞点
彩虹屏消失后无反应,大概率是内核初始化阶段出错,通过串口日志能直接找到问题根源:
- 用USB转TTL模块连接CM3L的GPIO14(TX)、GPIO15(RX)和GND到电脑;
- 在
config.txt中追加console=ttyAMA0,115200,启动后用串口工具(比如minicom)查看输出,重点关注内核挂起前的最后一行日志——比如是根文件系统挂载失败,还是某个硬件驱动加载异常。
4. 微调根文件系统的驱动兼容性
如果串口日志显示驱动加载失败,可能是Android Things默认包含了RPI3专属的外设驱动,与CM3L冲突:
- 挂载Android Things的根文件系统,进入
/lib/modules/4.4.x+/kernel/drivers目录,移除RPI3特有的驱动(比如eMMC相关的mmc_bcm2835模块); - 或者从CM3的官方Linux固件中提取对应的驱动模块,添加到Android Things的模块目录中。
内容的提问来源于stack exchange,提问作者Camilo Londono




