8295设备开发环境搭建

硬件连接

参考 小米MS11 DCD刷机和接线 ,硬件正确连接后如遇到如下问题可参考尝试解决:

adb devices看不到8295设备

  • 可能是设备工作电压的原因,把电源工作电压调到12v, 电流调到5A,再次尝试查看设备;

  • 可能是type-c接口插反,尝试翻转type-c 接头再次连接设备;

adb device — no permissions

正确通过usb-typeC连接电脑和8295设备之后,通过adb devices查看已连接设备,如果出现 device no permissions, 可以尝试如下方式解决:

1、lsusb查看usb连接设备情况

➜  ~ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 2717:003b
Bus 001 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 001 Device 006: ID 1a81:1202 Holtek Semiconductor, Inc.
Bus 001 Device 008: ID 0000:0000  //8295
Bus 001 Device 004: ID 24ae:2014
Bus 001 Device 002: ID 0bda:5401 Realtek Semiconductor Corp. RTL 8153 USB 3.0 hub with gigabit ethernet
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

可以拔插一下连接8295设备的usb线,再次执行lsusb即可判断那个设备是8295,比如我测试后确认 ‘Bus 001 Device 008: ID 0000:0000’为当前使用的设备。找到对应设备之后修改/etc/udev/rules.d/xx-android.rules文件,使用gedit或者vim打开编辑该文件:

sudo vim /etc/udev/rules.d/70-android.rules
 
//打开文件之后添加一条内容参考如下格式
SUBSYSTEM=="usb", ATTRS{idVendor}==""18d1", ATTRS{idProduct}=="4ee7",MODE="0666",GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0000", ATTRS{idProduct}=="0000",MODE="0666",GROUP="plugdev"

其中每条内容的idVendor和idProduct对应的就是通过lsusb看到的设备信息最后部分的“0000:0000”冒号左侧和右侧id信息。

编辑完之后保存退出,然后重启udev Service,再次查看 adb devices即可能看到android设备成功显示,如果restart方式不行可尝试reboot。

sudo service udev restart

8295刷机及投屏

如硬件设备连接可以正常直接fastboot, 那么直接进入fastboot进行刷机即可,在无法直接fastboot可以优先参考 小米MS11 8295 开发板刷机指南 ,如遇到其他问题可以参考如下尝试解决。(8295镜像的项目名是watt,需要下载这个项目对应的镜像)

无法直接通过fastboot连接8295设备刷机的解决方案

可通过 adb shell busybox telnet 192.168.8.1连接然后进入fastboot,步骤参考 小米MS11 8295 开发板刷机指南

如果无法找到busybox,可手动安装,参考该篇文档: busybox安装

busybox官方下载连接,我下载的是armv8l版本,右击另存为保存到本地后(然后去掉后缀如有),实测安装完可正常运行。

1、下载保存busybox程序后,执行adb push 推到android设备,顺便重命名一下 ;
adb root
adb push path_to_busybox /mnt/sdcard/busybox
 
adb shell
su
 
//更改系统读写权限
mount -o remount,rw -t yaffs2 /system
 
// 移动busybox到system/xbin
mv /mnt/sdcard/busybox /system/xbin/
chmod 777 /system/xbin
 
// 建立busybox支持的各种工具的软连到system/xbin
busybox --install -s /system/xbin

8295投屏显示

在没有物理显示屏的情况下,可以通过电脑显示器作为8295的显示屏,这里需要借助一个工具scrcpy, 工具安装如下:

sudo apt update
sudo apt install snapd
sudo snap install scrcpy

使用scrcpy将Android界面显示到电脑显示器

adb root
scrcpy
// 或者有多个显示设备的时候,执行
// scrcpy --display=${N}  //${N} 为display id
 
// 获取display id
adb shell dumpsys display | grep mDisplayId

在使用Scrcpy时如遇到无法连接到8295,提示以下错误,或者执行adb device、adb root的时候提示adb server 版本和client版本不匹配(如下所示), 如果遇到这个问题建议不要使用通过命令行直接安装的scrcpy了,可自行下载scrcpy源码进行编译。

➜  platform scrcpy
scrcpy 1.24 <https://github.com/Genymobile/scrcpy>
adb server version (41) doesn't match this client (39); killing...
* daemon started successfully
ERROR: Could not find any ADB device
ERROR: Server connection failed

https://github.com/Genymobile/scrcpy 编译指导文档 https://github.com/Genymobile/scrcpy/blob/master/BUILD.md

精简版针对Ubuntu编译步骤:

//1、 安装必要的工具包
# runtime dependencies
sudo apt install ffmpeg libsdl2-2.0-0 adb libusb-1.0-0
# client build dependencies
sudo apt install gcc git pkg-config meson ninja-build libsdl2-dev \
                 libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev \
                 libusb-1.0-0-dev
# server build dependencies
sudo apt install openjdk-11-jdk
 
//2、 安装meson,后续编译时会用到
sudo apt install python3-pip
pip3 install meson   //这一步报错无法安装可尝试升级pip3: python3 -m pip install --upgrade pip
 
//3、 下载源码
git clone https://github.com/Genymobile/scrcpy
cd scrcpy
 
//4、 执行编译
export ANDROID_SDK_ROOT=~/Android/Sdk   #需要提前Android SDK
 
//5、 编译
meson x --buildtype=release --strip -Db_lto=true //这一步报错, 需要配置环境变量:export PATH=/home/wangqiang/.local/bin:$PATH
ninja -Cx  # DO NOT RUN AS ROOT
 
//6、 以上步骤如均正常执行,可以尝试启动scrcpy
./run x [options]    # 在scrcpy 目录下验证是否正常运行
 
//7、 将scrcpy安装到系统,这样在其他位置可以直接运行scrcpy
sudo ninja -Cx install    # without sudo on Windows

再次运行Scrcpy成功看到投屏显示8295界面,如分辨率显示不对需要刷QNX部分,目前8295设备分辨率为1920*1080。

注意:硬件连接Display后,系统启动出现无法显示图像的问题,可以尝试左右调整显示器连接线,解决此问题

其他参考文档:

小米MS11 8295 开发板刷机指南

MS11 QFIL下载(checksparse切分包)

座舱开发环境