使用到的工具软件与固件下载地址:
下载地址1:https://ddf888.ddnsto.com/tmp/CM311-1A
下载地址2:https://41ws38-my.sharepoint.com/:f:/g/personal/ddf_41ws38_onmicrosoft_com/EgDMIeHWnvJOmZGTzio2P1kBh34wthDLCTKibXTFPtCClA?e=CN5ski

不能下载,帖子下面评论。


准备工作

  • 设备 / 硬件:CM311-1a YST 电视盒子 + 电源适配器 + 遥控器、网线、HDMI 线、USB 公对公刷机线、个人电脑 PC、显示屏(可以买视频采集卡代替显示屏)、USB 键盘、U 盘、线刷工具(螺丝刀 + 短接工具)。
  • 工具软件:USB Burning Tool V2.2.0、开心电视助手 V4.0、U盘镜像写入工具:balenaEtcher。
  • 固件:安卓卡刷或线刷包、Armbian 系统镜像。

卡刷方法

买来的 CM311-1A 是原生系统,刷成第三方安卓操作系统,使用更方便。刷入的安卓系统最好默认开启了 ADB(未开启,可参见附录一),默认获取了 root 更好(没有也可以)。

1.下载卡刷包

卡刷包一般都有下图所示的三个文件。
CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程-编程知识网

2.卡刷包移到 U 盘

下载好后的卡刷包无需解压,直接原封不动的移到 U 盘根目录(卡刷包有几个文件就都移到 U 盘根目录下)。

3. 刷入卡刷包

CM311-1A 关机,将 U 盘插入靠近网口的一侧。然后开机,同时不停的按遥控器左键(上下左右的左键),出现正在安装系统更新进度条时马上关机,然后迅速开机,这样刷机包就会继续刷下去直到刷机成功。成功后会自动开机进入电视安卓系统,这时就可以拔掉 U 盘了。
一定要看准,只有下面这个图片才是进入到了卡刷模式,如果没有进入到卡刷模式,多试几次。第一次看到下面的图片时,马上关闭电源开关,然后迅速打开电源开关,第二次看到下面的图片时,耐心等待进度条走完就可以了。
CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程-编程知识网

4. 进系统正常使用

卡刷完成,会自动进入系统。如果要刷 Armbian 系统,请记下机顶盒的 IP 地址,用于从 U 盘启动(可选,也可使用附录一其他方法使机顶盒从 U 盘启动)。


线刷方法

一般情况下,插上 U 盘,重新插入电源,如果可以从 USB 中启动,只要重新安装即可,多试几次。
如果接入显示器后,屏幕是黑屏状态,且无法从 USB 启动,就需要进行盒子的短接初始化了。先将盒子恢复到原来的安卓系统,再重新刷入 Armbian 系统。首先下载 amlogic_usb_burning_tool 系统恢复工具并安装好。准备一条 USB 双公头数据线,准备一个曲别针。在盒子的主板上确认短接点(参见附录二)的位置,下载盒子对应的 Android TV 固件包。

amlogic_usb_burning_tool 系统恢复工具下载地址:https://github.com/ophub/kernel/releases/tag/tools
Android TV 固件包下载地址:https://github.com/ophub/kernel/releases/tag/tools

1. USB Burning Tool

打开刷机软件 USB Burning Tool。
文件 → 导入烧录包
[ 选择 ]:擦除 flash
[ 选择 ]:擦除 bootloader
点击 [ 开始 ] 按钮。CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程-编程知识网

刷机时,线刷包文件名不要出现中文,否则线刷过程中会出现各种错误。

2. 电源适配器插电 + 短接

电源适配器插电,盒子接上电源线,不打开电源开关(有的盒子不接电源线也可以),
使用 [ 曲别针 ] 将盒子主板上的 [ 两个短接点进行短接连接 ],
并同时使用 [ USB 双公头数据线 ] 将 [ 盒子 ] 与 [ 电脑 ] 进行连接。

两选三接,两选是擦除 flash、擦除 bootloader;三接是插电源线、HDMI 免拆神器、USB 双公头数据线。

3. 开始线刷

打开电源开关。
当看到 [ 进度条开始走动 ] 后,拿走曲别针,不再短接;
CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程-编程知识网当看到 [ 进度条 100% ],则刷机完成,盒子已经恢复成 Android TV 系统。
CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程-编程知识网

如果进度条没有走动,可以尝试插入电源。通长情况下不用电源支持供电,只 USB 双公头的供电即可满足刷机要求。
如果以上某个步骤失败,就再来一次,直至成功。

4. 进入 Android TV 系统

点击 [ 停止 ] 按钮,关闭 USB Burning Tool 软件,
然后拔掉 [ 盒子 ] 和 [ 电脑 ] 之间的 [ USB 双公头数据线 ] 。
关闭电源开关,并再次通电重启盒子 CM311-1A。


运行 Armbian 系统

一、制作 Armbian 启动盘

1. 下载自己盒子型号对应的固件

CM311-1A 选择文件名含有 s905l3a 的固件。( Jammy 是 Ubuntu 22.04 的代号;bullseye 是 Debian 11 的代号)

Armbian 系统下载地址:https://github.com/ophub/amlogic-s9xxx-armbian

2. 使用 balenaEtcher 将 Armbian 写到 U 盘

下载好后的压缩包解压,然后使用 balenaEtcher 将 Armbian 写到 U 盘。
CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程-编程知识网

balenaEtcher 下载地址:https://www.balena.io/etcher

二、机顶盒运行 Armbian 系统

1. 把制作好的启动盘插到机顶盒 USB 接口上

2. 修改机顶盒从 U 盘启动

使用开心电视助手,远程连接机顶盒。
CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程-编程知识网点击【 调试 】 → 【 从 U 盘 / SD 卡启 】即可。(大佬可参见附录一,查看其他方式来设置从 U 盘启动。)
CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程-编程知识网

开心盒子助手下载地址:http://www.kaixindianshi.com/thread-2241-1-1.html

3. 进入 U 盘的 armbian 系统

然后显示器会出现突然花屏,然后再进入跑开机命令的页面,即是成功进入 U 盘的 armbian 系统。

4. 刷入系统到 eMMC(可选)

eMMC 可笼统的理解为硬盘,把操作系统写进 CM311-1A 的硬盘上,覆盖了原系统(实际上此表述不正确)。如果需要机顶盒的安卓系统的话,可以选择不刷入。(双系统:第三方系统刷在 U 盘里面,不插 u 盘启动机顶盒系统,插上 u 盘启动 u 盘系统,不会变砖。)
以下为刷入 eMMC 教程!!!
第三方系统直接写入 emmc,可以脱离 u 盘运行,有变砖风险,变砖后需要线刷恢复。建议备份现在的安卓系统。
等待差不多两分钟后,在路由器上查看机顶盒的 IP。使用 SSH 远程连接 Linux 系统,默认账号 root、密码 1234。然后需要你进行修改密码,输入两遍密码后,直接断开连接。
重新登录 Armbian 系统 → 输入命令:

armbian-install

这里首先要选择盒子型号,这里一定要看仔细,选择 CM311A-YST 版本,因为不同版本的 ARMBIAN 固件序号会有微调,在这一版本为305,就是 s905l3a 的选项。然后选择系统主要文件的存储格式,其中 1 为 ext4 格式、2 为 btrfs 格式,我这里选择了 ext4(常见),输入1。之后耐心等待写入完成。
CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程-编程知识网完成后会有写入成功的提示文字。此时可以关闭电源,拔下 U 盘,并再次通电重启盒子。
CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程-编程知识网最后一步很重要!!!(2022.11.26 的 armbian 不会出现此情况了)刷完系统到 EMMC 后的第一次盒子断电拔 U 盘重启会出现黑屏现象,别着急,第二次给盒子断电、插回 U 盘、通电操作盒子又会正常引导系统。系统引导完成后(盒子指示灯变绿),第三次给盒子断电拔下 U 盘再插电,盒子就能正常从 EMMC 引导并进入 armbian 系统了。

5. 网络设置(可选)

5.1 采用网线

网络配置文件在 /etc/network/interfaces 文件中。默认采用 DHCP 动态分配 IP 的策略(方法1),由 Armbian 所接入的网络路由器自动分配 IP。如果想改为静态 IP,可以把设置方法 1 禁用或删除,启用方法 2 的静态 IP 设置。
方法 1 参考:由 DHCP 动态分配 IP 地址

source /etc/network/interfaces.d/*
auto eth0
iface eth0 inet dhcp

方法 2 参考:手动设置静态 IP 地址

source /etc/network/interfaces.d/*auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1

5.2 采用无线 WIFI

需要购买无线 USB 网卡,编译安装驱动。

5.2.1 通过 nmcli 连上 WIFI

nmcli 是一个命令行工具,用于控制 NetworkManager;还可以用来显示网络设备状态;创建、编辑、开启/关闭和删除网络连接 。Armbian 系统默认自带 nmcli, 这里不介绍安装方法。
通过 nmcli 直接连上 WIFI 后,系统会记录已保存的 AP。下面是具体的连接方法:

  1. 查看设备状态
    这里 wlp2s0 类型为 wifi,表示我们的无线网卡,状态为 disconnected,还没有连上 WIFI 热点。
    $ nmcli device status
    DEVICE  TYPE      STATE         CONNECTION
    enp1s0  ethernet  connected     Wired connection 1
    wlp2s0  wifi      disconnected  --
    lo      loopback  unmanaged     --
    
  2. 检查 radio
    $ nmcli radio
    WIFI-HW  WIFI     WWAN-HW  WWAN
    enabled  enabled  enabled  enabled
    
  3. 查看附近无线网络信号
    第 5 列表示信号情况,信号越好的 AP,会越靠前。
    $ nmcli dev wifi list
    SSID                  MODE   CHAN  RATE       SIGNAL  BARS  SECURITY
    MYSSID         Infra  11    54 Mbit/s  100     ▂▄▆█  WPA2
    MYSSID         Infra  132   54 Mbit/s  100     ▂▄▆█  WPA2
    SOMEOTHERSSID  Infra  52    54 Mbit/s  49      ▂▄__  WPA2
    MYSSID         Infra  149   54 Mbit/s  45      ▂▄__  WPA2
    MYSSID         Infra  11    54 Mbit/s  42      ▂▄__  WPA2
    SOMEOTHERSSID  Infra  1     54 Mbit/s  27      ▂___  WPA2
    
  4. 连上 AP 热点
    • 如果是无密码的 WIFI, 执行以下连接命令,SSID 就是我们所说的 WIFI 名。
      $ nmcli device wifi connect <SSID|BSSID>
      
    • 加密的 AP,使用以下命令。
      $ nmcli device wifi connect <SSID|BSSID> password <password>
      

      执行命令没有报错后,再 Ping 下百度是否可达,能 Ping 通就表明已经连上 AP,可以正常上网。

5.2.2 更新 WIFI 系统配置,连上 WIFI

更新 /etc/network/interfaces 文件

  1. 备份 interface : cd /etc/network && cp interfaces interfaces.bak
  2. 更新 interface:
    # armbian-config created
    source /etc/network/interfaces.d/*# Local loopback
    auto lo
    iface lo inet loopbackauto eth0
    allow-hotplug eth0
    iface eth0 inet dhcp
    allow-hotplug wlan0
    iface wlan0 inet manual
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
    iface default inet dhcp
    

    更新 /etc/wpa_supplicant/wpa_supplicant.conf

  3. 备份 wpa 配置文件: cd /etc/wpa_supplicant/ && cp wpa_supplicant.conf wpa_supplicant.conf.bak
  4. 更新 wpa_supplicant.conf:
    network={ssid="网络 ID"psk="密码"
    }
    
  5. 重启网络,ping 百度试下是否连通,正常应该可以成功连网。
5.2.3 通过其他方法,连上 WIFI

Armbian 配置工具:终端中输入 armbian-config
网络管理 TUI:终端中输入 nmtui

使用 armbian-config 时,请先连接有线网络,因为 armbian-config 有几处需要通过网络获取一些数据。

常见问题

收录一些刷入 armbian 系统的问题及解决方法。

1. 如何恢复原安卓 TV 系统

通常使用 armbian-ddbr 备份恢复,或者使用 Amlogic 刷机工具恢复原安卓 TV 系统。

方法一:使用 armbian-ddbr 备份恢复

建议在全新的盒子里安装 Armbian 系统前,先对当前盒子自带的原安卓 TV 系统进行备份,以便在需要恢复系统时使用。请从 TF/SD/USB 启动 Armbian 系统,输入 armbian-ddbr 命令,然后根据提示输入 b 进行系统备份,备份文件的存放路径为 /ddbr/BACKUP-arm-64-emmc.img.gz ,请下载保存。在需要恢复安卓 TV 系统时,将之前备份的文件上传至 TF/SD/USB 设备的相同路径下,输入 armbian-ddbr 命令,然后根据提示输入 r 进行系统恢复。

方法二:使用 Amlogic 刷机工具恢复

参见线刷方法。
注意:方法一仅支持刷入的系统为 O 大( ophub )的 Armbian 系统。

2. SSH 连接不上解决方法

SSH 连接不上、写入 EMMC 后,22 端口默认关闭了、网卡不工作,几秒后就断开、SSH 运行一段时间后无法登录等。
amlogic-s9xxx-armbian/build-armbian/common-files/rootfs/etc/custom_service/start_service.sh
在 /etc/custom_service/start_service.sh 中,把 26、27 两行反向修改,有人是删除两行的 # 可以工作正常,有人是加上 # 注释了正常。我是删除 # 正常。这个问题是因为启动时没有生成 sshd 目录,但各盒子现象不一样。

# [[ -d "/var/run/sshd" ]] || mkdir -p -m0755 /var/run/sshd
# [[ -f "/etc/init.d/ssh" ]] && /etc/init.d/ssh start 2>/dev/null
# 这个脚本的作用是在启动的最后一步,会自动重启下 ssh 服务,确保 ssh 服务起来。(不放心可以添加以下命令)
[[ -f "/etc/init.d/ssh" ]] && sleep 5 && /etc/init.d/ssh restart 2>/dev/null

CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程-编程知识网


附录

附录一、设置盒子从 USB / TF / SD 中启动

方法一:命令版

  • 把刷好固件的 USB/TF/SD 插入盒子。
  • 开启开发者模式:设置 → 关于本机 → 版本号,在版本号上快速连击 5 次鼠标左键, 看到系统显示 开启开发者模式 的提示。
  • 开启 USB 调试模式:系统 → 高级选选 → 开发者选项(设置 开启USB调试 为启用)。启用 ADB 调试。
  • 安装 ADB 工具:下载 adb 并解压,将 adb.exeAdbWinApi.dllAdbWinUsbApi.dll 三个文件拷⻉到 c://windows/ 目录下的 system32syswow64 两个文件夹内,然后打开 cmd 命令面板,使用 adb --version 命令,如果有显示就表示可以使用了。
  • 进入 cmd 命令模式。输入 adb connect 192.168.1.102 命令(其中的 ip 根据你的盒子修改,可以到盒子所接入的路由器设备里查看),如果链接成功会显示 connected to 192.168.1.102:5555
  • 输入 adb shell reboot update 命令,盒子将重启并从你插入的 USB/TF/SD 启动,从浏览器访问固件的 IP 地址,或者 SSH 访问即可进入固件。

adb 下载地址:https://github.com/ophub/kernel/releases/tag/tools 或者
adb 下载地址:https://developer.android.google.cn/studio/releases/platform-tools?hl=zh-cn#downloads

方法二:Root 版

刷入的卡刷包带 ROOT。安装 Reboot to LibreELEC 1.1 Apk 到系统里面打开就会进入 recovery 模式。recovery 模式后系统会自动重启进入 u 盘启动。

Reboot to LibreELEC APK 下载地址:https://apkdownloadforandroid.com/download/1000534/2

方法三:软件版

开心电视助手。参见机顶盒运行 Armbian 系统这小节。

附录二、短接方法

拆机找到 4R32(就在主板四周边缘找),用导电体(如:镊子、钳子、曲别针、剪刀等)连接这两个点。也可以使用免拆机神器,插到 HDMI 接口上。
CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程-编程知识网CM311-1A 卡刷 + 线刷、刷安卓与 Armbian 教程-编程知识网