查看英文说明 | View English description
OpenWrt 项目是一个针对嵌入式设备的 Linux 路由器操作系统。OpenWrt 不是一个单一且不可更改的固件,而是提供了具有软件包管理功能的完全可写的文件系统,让您可以自由选择需要的软件包来定制路由器系统。对于开发人员来说,OpenWrt 是一个无需围绕它构建完整固件就能开发应用程序的框架;对于普通用户来说,这意味着拥有了完全定制的能力,能以意想不到的方式使用该设备。它拥有超过 3000+ 个标准化应用软件包和非常丰富的第三方插件支持,让您可以轻松地将他们应用于各种支持的设备。
现在你可以将使用 Amlogic 芯片的电视盒子的安卓 TV 系统更换为 OpenWrt 系统,让他成为一台功能强大的路由器。本项目支持 github.com 一站式完整编译(从自定义软件包进行编译,到打包固件,完全在 giuhub.com 一站式完成);支持在自己的仓库进行个性化软件包选择编译,仅单独引入 GitHub Action 进行固件打包;支持从 github.com 的 Releases
中使用已有的 openwrt-armvirt-64-default-rootfs.tar.gz
文件直接进行固件打包;支持本地化打包(在本地Ubuntu等环境中进行固件打包)。支持的Amlogic S9xxx系列型号有 a311d, s922x, s905x3, s905x2, s905l3a, s912, s905d, s905x, s905w, s905
等,例如 Belink GT-King, Belink GT-King Pro, UGOOS AM6 Plus, X96-Max+, HK1-Box, H96-Max-X3, Phicomm-N1, Octopus-Planet, Fiberhome HG680P, ZTE B860H
等电视盒子。
最新的固件可以在 Releases 中下载。欢迎你 Fork
并进行 个性化软件包定制 。如果对你有用,可以点仓库右上角的 Star
表示支持。
芯片 | 设备 | 可选内核 | OpenWrt 固件 |
---|---|---|---|
a311d | Khadas-VIM3 | 全部 | openwrt_a311d_k*.img |
s922x | Beelink-GT-King, Beelink-GT-King-Pro, Ugoos-AM6-Plus, ODROID-N2 | 全部 | openwrt_s922x_k*.img |
s905x3 | X96-Max+, HK1-Box, H96-Max-X3, Ugoos-X3, X96-Air, A95XF3-Air | 全部 | openwrt_s905x3_k*.img |
s905x2 | X96Max-4G, X96Max-2G, MECOOL-KM3-4G | 全部 | openwrt_s905x2_k*.img |
s905l3a | E900V22C/D | 全部 | openwrt_s905l3a_k*.img |
s912 | H96-Pro-Plus, Tanix-TX92, VORKE-Z6-Plus, T95Z-Plus, Octopus-Planet | 全部 | openwrt_s912_k*.img |
s905d | MECOOL-KI-Pro, Phicomm-N1 | 全部 | openwrt_s905d_k*.img |
s905x | HG680P, B860H | 全部 | openwrt_s905x_k*.img |
s905w | X96-Mini, TX3-Mini | 5.4.* | openwrt_s905w_k*.img |
s905 | Beelink-Mini-MX-2G, MXQ-PRO+4K | 全部 | openwrt_s905_k*.img |
💡提示:当前 s905
的盒子只能在 TF/SD/USB
中使用,其他型号的盒子同时支持写入 EMMC
中使用。当前 s905w
系列的盒子只支持使用 5.4
内核,不能使用 5.10 或更高版本,其他型号的盒子可任选内核版本使用。每个盒子的 dtb 和 u-boot 请查阅说明。
选择和你的电视盒子型号对应的 OpenWrt 固件,使用 Rufus 或者 balenaEtcher 等工具将固件写入USB里,然后把写好固件的USB插入电视盒子。
从浏览器访问 OpenWrt 的默认 IP: 192.168.1.1 → 使用默认账户登录进入 OpenWrt
→ 系统菜单
→ 晶晨宝盒
→ 安装 OpenWrt
,在支持的设备下拉列表中选择你的盒子,点击 安装 OpenWrt
按钮进行安装。
从浏览器访问 OpenWrt 的 IP 如: 192.168.1.1 → 使用账户登录进入 OpenWrt
→ 系统菜单
→ 晶晨宝盒
→ 手动上传更新 / 在线下载更新
如果选择 手动上传更新
OpenWrt 固件,可以将编译好 OpenWrt 固件压缩包,如 openwrt_s9xxx_k5.15.25_xxx.img.gz 进行上传(推荐上传压缩包,系统会自动解压。如果上传解压缩后的 xxx.img 格式的文件,可能会因为文件太大而上传失败),上传完成后界面将显示 更新固件
的操作按钮,点击即可更新。
如果选择 手动上传更新
OpenWrt 内核,可以将 boot-xxx.tar.gz
, dtb-amlogic-xxx.tar.gz
, modules-xxx.tar.gz
这 3 个内核文件上传(其他内核文件不需要,如果同时上传也不影响更新,系统可以准确识别需要的内核文件),上传完成后界面将显示 更新内核
的操作按钮,点击即可更新。
如果选择 在线下载更新
OpenWrt 固件或内核,将根据插件设置
中的固件下载地址
和内核下载地址
进行下载,你可以自定义修改下载来源,具体操作方法详见 luci-app-amlogic 的编译与使用说明。
提示:安装/升级等功能由 luci-app-amlogic 提供可视化操作支持。也支持命令操作。
从浏览器访问 OpenWrt 的默认 IP: 192.168.1.1 → 使用默认账户登录进入 OpenWrt
→ 系统菜单
→ TTYD 终端
→ 输入命令
openwrt-tf
激活剩余空间后,支持在 TF/SD/USB 中升级内核和 OpenWrt 系统。
如果你在使用 docker
等内存占用较大的应用时,觉得当前盒子的内存不够使用,可以创建 swap
虚拟内存分区,将 /mnt/*4
磁盘空间的一定容量虚拟成内存来使用。下面命令输入参数的单位是 GB
,默认为 1
。
从浏览器访问 OpenWrt 的默认 IP: 192.168.1.1 → 使用默认账户登录进入 OpenWrt
→ 系统菜单
→ TTYD 终端
→ 输入命令
openwrt-swap 1
支持在 TF/SD/USB
中对盒子的 EMMC
分区进行备份/恢复。建议您在全新的盒子里安装 OpenWrt 系统前,先对当前盒子自带的安卓 TV 系统进行备份,以便日后在恢复电视系统等情况下使用。
请从 TF/SD/USB
启动 OpenWrt 系统,浏览器访问 OpenWrt 的默认 IP: 192.168.1.1 → 使用默认账户登录进入 OpenWrt
→ 系统菜单
→ TTYD 终端
→ 输入命令
openwrt-ddbr
根据提示输入 b
进行系统备份,输入 r
进行系统恢复。
💡提示:须使用 /mnt/*4/
空间进行存放 BACKUP-arm-64-emmc.img.gz
备份文件,未创建 TF/SD/USB
扩展分区的用户,须先使用 openwrt-tf
命令创建扩展分区。
参数 | 含义 | 说明 |
---|---|---|
-d | Defaults | 使用默认配置 |
-b | BuildSoC | 指定电视盒子型号,如 -b s905x3 . 多个型号使用 _ 进行连接,如 -b s905x3_s905d . 可以指定的型号有: a311d , s905x3 , s905x2 , s905l3a , s905x , s905w , s905d , s905d-ki , s905 , s922x , s922x-n2 , s912 , s912-t95z 。说明:s922x-reva 是 s922x-gtking-pro-rev_a ,s922x-n2 是 s922x-odroid-n2 ,s912-t95z 是 s912-t95z-plus ,s905d-ki 是 s912-mecool-ki-pro ,s905x2-km3 是 s905x2-mecool-km3 |
-v | VersionBranch | 指定内核 版本分支 名称,如 -v stable 。指定的名称须与分支目录名称相同。默认使用 stable 分支版本。 |
-k | Kernel | 指定 kernel 名称,如 -k 5.4.180 . 多个内核使用 _ 进行连接,如 -k 5.15.25_5.4.180 |
-a | AutoKernel | 设置是否自动采用同系列最新版本内核。当为 true 时,将自动在内核库中查找在 -k 中指定的内核如 5.4.180 的 5.4 同系列是否有更新的版本,如有 5.4.180 之后的最新版本时,将自动更换为最新版。设置为 false 时将编译指定版本内核。默认值:true |
-s | Size | 对固件的 ROOTFS 分区大小进行设置,默认大小为 1024M, 固件大小必须大于 256M. 例如: -s 1024 |
sudo ./make -d
: 使用默认配置,使用内核库中的最新内核包,对全部型号的电视盒子进行打包。sudo ./make -d -b s905x3 -k 5.4.180
: 推荐使用. 使用默认配置进行相关内核打包。sudo ./make -d -b s905x3_s905d -k 5.15.25_5.4.180
: 使用默认配置,进行多个内核同时打包。使用_
进行多内核参数连接。sudo ./make -d -b s905x3 -k 5.4.180 -s 1024
: 使用默认配置,指定一个内核,一个型号进行打包,固件大小设定为1024M。sudo ./make -d -b s905x3 -v dev -k 5.7.19
: 使用默认配置,指定型号,指定版本分支 和内核进行打包。sudo ./make -d -b s905x3_s905d
使用默认配置,对多个型号的电视盒子进行全部内核打包, 使用_
进行多型号连接。sudo ./make -d -k 5.15.25_5.4.180
: 使用默认配置,指定多个内核,进行全部型号电视盒子进行打包, 内核包使用_
进行连接。sudo ./make -d -k 5.15.25_5.4.180 -a true
: 使用默认配置,指定多个内核,进行全部型号电视盒子进行打包, 内核包使用_
进行连接。自动升级到同系列最新内核。sudo ./make -d -s 1024 -k 5.4.180
: 使用默认配置,设置固件大小为 1024M, 并指定内核为 5.4.180 ,对全部型号电视盒子进行打包。
支持多种方式进行固件编译和打包,你可以选择任意一种你喜欢的方式进行使用。
- 安装必要的软件包(如 Ubuntu 20.04 LTS 用户)
sudo apt-get update -y
sudo apt-get full-upgrade -y
sudo apt-get install -y $(curl -fsSL git.io/ubuntu-2004-openwrt)
- Clone 仓库到本地
git clone --depth 1 https://github.com/ophub/amlogic-s9xxx-openwrt.git
- 在
~/amlogic-s9xxx-openwrt
根目录下创建openwrt-armvirt
文件夹, 并将openwrt-armvirt-64-default-rootfs.tar.gz
文件上传至此目录。 - 在
~/amlogic-s9xxx-openwrt
根目录中输入打包命令,如sudo ./make -d -b s905x3 -k 5.4.180
。打包完成的 OpenWrt 固件放在根目录下的out
文件夹里。
你可以通过修改 router-config
目录的相关个性化固件配置文件,以及 .yml
文件, 自定义和编译适合你的 OpenWrt 固件, 固件可以上传至 github.com 的 Actions
和 Releases
等处.
- 你可以在 router-config 中查看个性化固件配置说明。编译流程控制文件是 .yml
- 在 github.com 的 Action 选择
Build OpenWrt
. 点击Run workflow
按钮进行固件一站式编译和打包。
- name: Build OpenWrt firmware
id: build
run: |
[ -d openwrt-armvirt ] || mkdir -p openwrt-armvirt
cp -f openwrt/bin/targets/*/*/*.tar.gz openwrt-armvirt/ && sync
sudo chmod +x make
sudo ./make -d -b s905x3_s905x2_s905x_s905w_s905d_s922x_s912 -k 5.15.25_5.4.180
echo "PACKAGED_OUTPUTPATH=${PWD}/out" >> $GITHUB_ENV
echo "PACKAGED_OUTPUTDATE=$(date +"%Y.%m.%d.%H%M")" >> $GITHUB_ENV
echo "::set-output name=status::success"
输出的变量 ${{ env.PACKAGED_OUTPUTPATH }} 即打包文件所在路径。
如果你仓库的 Releases 中已经有 openwrt-armvirt-64-default-rootfs.tar.gz
文件,你可以直接进行打包.
- Releases中的
tag_name
标签必须以openwrt_s9xxx_.*
的样式进行命名。 openwrt-armvirt-64-default-rootfs.tar.gz
是打包要使用的文件。
相关代码可以查看 use-releases-file-to-packaging.yml
- name: Build OpenWrt firmware
id: build
run: |
[ -d openwrt-armvirt ] || mkdir -p openwrt-armvirt
curl -s "https://api.github.com/repos/${GITHUB_REPOSITORY}/releases" | grep -o "openwrt_s9xxx_.*/openwrt-armvirt-.*\.tar.gz" | head -n 1 > DOWNLOAD_URL
[ -s DOWNLOAD_URL ] && wget -q -P openwrt-armvirt https://github.com/${GITHUB_REPOSITORY}/releases/download/$(cat DOWNLOAD_URL)
sudo chmod +x make
sudo ./make -d -b s905x3_s905x2_s905x_s905w_s905d_s922x_s912 -k 5.15.25_5.4.180
echo "PACKAGED_OUTPUTPATH=${PWD}/out" >> $GITHUB_ENV
echo "PACKAGED_OUTPUTDATE=$(date +"%Y.%m.%d.%H%M")" >> $GITHUB_ENV
echo "::set-output name=status::success"
这个功能一般用于更换内核快速打包,如果你的仓库中有 openwrt-armvirt-64-default-rootfs.tar.gz
文件,你想使用其他内核版本的 OpenWrt 时,就可以直接指定相关内核进行快速打包了,而不用再进行漫长的固件编译等待。
相关代码可以查看 .yml
在你的仓库里,当你完成 ARMv8 类型的 OpenWrt 固件包编译时,可以在流程控制文件 .github/workflows/.yml 中单独引入本仓库的打包脚本进行打包,代码如下:
- name: Package Armvirt as OpenWrt
uses: ophub/amlogic-s9xxx-openwrt@main
with:
armvirt64_path: openwrt/bin/targets/*/*/*.tar.gz
amlogic_openwrt: s905x3_s905x2_s905x_s905w_s905d_s922x_s912
amlogic_kernel: 5.15.25_5.4.180
- GitHub Action 输入参数说明
相关参数与本地打包命令
相对应,请参考上面的说明。
参数 | 默认值 | 说明 |
---|---|---|
armvirt64_path | no | 设置 openwrt-armvirt-64-default-rootfs.tar.gz 的文件路径,使用文件在当前工作流中的路径如 openwrt/bin/targets/*/*/*.tar.gz |
amlogic_openwrt | s905d_s905x3 | 设置打包盒子的 SOC ,功能参考 -b |
version_branch | stable | 指定内核 版本分支 名称,功能参考 -v |
amlogic_kernel | 5.15.25_5.4.180 | 设置内核版本,功能参考 -k |
auto_kernel | true | 设置是否自动采用同系列最新版本内核。功能参考 -a |
amlogic_size | 1024 | 设置固件 ROOTFS 分区的大小,功能参考 -s |
- GitHub Action 输出变量说明
参数 | 默认值 | 说明 |
---|---|---|
${{ env.PACKAGED_OUTPUTPATH }} | ${PWD}/out | 打包后的固件所在文件夹的路径 |
${{ env.PACKAGED_OUTPUTDATE }} | 2021.04.13.1058 | 打包日期 |
${{ env.PACKAGED_STATUS }} | success / failure | 打包状态。成功 / 失败 |
- 上传固件到 github.com 的 Release:
- name: Upload OpenWrt Firmware to Release
uses: ncipollo/release-action@v1
with:
tag: openwrt_s9xxx
artifacts: ${{ env.PACKAGED_OUTPUTPATH }}/*
allowUpdates: true
token: ${{ secrets.GITHUB_TOKEN }}
body: |
This is OpenWrt firmware for Amlogic s9xxx tv box.
More information ...
自定义内核的编译方法详见 compile-kernel
- name: Compile the kernel for Amlogic s9xxx
uses: ophub/amlogic-s9xxx-armbian@main
with:
build_target: kernel
kernel_version: 5.15.25_5.4.180
kernel_auto: true
kernel_sign: -meson64-dev
Option | Value |
---|---|
Target System | QEMU ARM Virtual Machine |
Subtarget | QEMU ARMv8 Virtual Machine(cortex-a53) |
Target Profile | Default |
Target Images | tar.gz |
更多信息请查阅 router-config
名称 | 值 |
---|---|
默认 IP | 192.168.1.1 |
默认账号 | root |
默认密码 | password |
默认 WIFI 名称 | OpenWrt |
默认 WIFI 密码 | none |
制作 OpenWrt 系统时,所使用的 kernel 和 u-boot 等文件,与制作 Armbian 系统使用的是相同的文件。为了不重复维护,相关内容归类放在了对应的资源仓库,在使用时将自动从相关仓库进行下载。
本系统所使用的 kernel
/ u-boot
等资源主要从 unifreq/openwrt_packit 的项目中复制而来,部分文件由用户在 amlogic-s9xxx-openwrt / amlogic-s9xxx-armbian / luci-app-amlogic / kernel / script 等项目的 Pull 和 Issues 中提供分享。为感谢这些开拓者和分享者,我统一在 CONTRIBUTOR.md 中进行了记录。再次感谢大家为盒子赋予了新的生命和意义。
The amlogic-s9xxx-openwrt © OPHUB is licensed under GPL-2.0