查看英文说明 | View English description
OpenWrt 项目是一个针对嵌入式设备的 Linux 路由器操作系统。OpenWrt 不是一个单一且不可更改的固件,而是提供了具有软件包管理功能的完全可写的文件系统,让您可以自由选择需要的软件包来定制路由器系统。对于开发人员来说,OpenWrt 是一个无需围绕它构建完整固件就能开发应用程序的框架;对于普通用户来说,这意味着拥有了完全定制的能力,能以意想不到的方式使用该设备。它拥有超过 3000+ 个标准化应用软件包和非常丰富的第三方插件支持,让您可以轻松地将他们应用于各种支持的设备。现在你可以将电视盒子的安卓 TV 系统更换为 OpenWrt 系统,让他成为一台功能强大的路由器。
本项目托众多的贡献者,为 Amlogic,Rockchip 和 Allwinner 盒子构建 OpenWrt 系统。支持写入 eMMC 中使用,支持更新内核等功能,使用方法详见 OpenWrt 使用文档。最新的固件可以在 Releases 中下载。欢迎你 Fork 并进行个性化软件包定制。如果对你有用,可以点仓库右上角的 Star 表示支持。
| 系统名称 | 默认账号 | 默认密码 | SSH 端口 | IP 地址 |
|---|---|---|---|---|
| 🛜 OpenWrt.OS | root | password | 22 | 192.168.1.1 |
| 🐋 OpenWrt.Docker | root | password | 22 | 192.168.1.1 |
⬆️ 各平台(晶晨/瑞芯微/全志)型号均按 SoC 性能由高至低排列。
Tip
目前 s905 的盒子只能在 TF/SD/USB 中使用,其他型号的盒子支持写入 EMMC 中使用。更多信息请查阅 ✅支持的设备列表说明。可以参考说明文档中 12.15 章节的方法添加新的支持设备。使用前先阅读 OpenWrt 使用文档,常见问题都有解决方法。
选择和你的电视盒子型号对应的 OpenWrt 固件,不同设备的使用方法查看对应的说明。
-
Rockchip平台的安装方法请查看说明文档中的 第 8 章节 的介绍,和 Armbian 的安装方法相同。 -
Amlogic和Allwinner平台,使用 Rufus 或者 balenaEtcher 等工具将固件写入 USB 里,然后把写好固件的 USB 插入盒子。浏览器访问 OpenWrt 的 IP(例如 192.168.1.1) →使用默认账户登录进入 OpenWrt→系统菜单→晶晨宝盒→安装 OpenWrt,在支持的设备下拉列表中选择你的盒子,点击安装 OpenWrt按钮进行安装。
浏览器访问 OpenWrt 的 IP(例如 192.168.1.1) → 使用账户登录进入 OpenWrt → 系统菜单 → 晶晨宝盒 → 手动上传更新 / 在线下载更新
如果选择 手动上传更新 OpenWrt 固件,可以将编译好 OpenWrt 固件压缩包,如 openwrt_xxx_k5.15.50.img.gz 进行上传(推荐上传压缩包,系统会自动解压。如果上传解压缩后的 xxx.img 格式的文件,可能会因为文件太大而上传失败),上传完成后界面将显示 更新固件 的操作按钮,点击即可更新。
如果选择 手动上传更新 OpenWrt 内核,可以将 boot-xxx.tar.gz, dtb-xxx.tar.gz, modules-xxx.tar.gz 这 3 个内核文件上传(其他内核文件不需要,如果同时上传也不影响更新,系统可以准确识别需要的内核文件),上传完成后界面将显示 更新内核 的操作按钮,点击即可更新。内核更新失败造成系统无法启动时,可以使用 openwrt-kernel -s 命令进行内核恢复,方法详见内核恢复
如果选择 在线下载更新 OpenWrt 固件或内核,将根据插件设置中的固件下载地址和内核下载地址进行下载,你可以自定义修改下载来源,具体操作方法详见 luci-app-amlogic 的编译与使用说明。
如果你在使用 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 进行系统恢复。
Important
除此之外也可以通过线刷的方法,将安卓系统刷入 eMMC 中,安卓系统的下载镜像可在 Tools 中查找。
浏览器访问 OpenWrt 的 IP(例如 192.168.1.1) → 使用默认账户登录进入 OpenWrt → 系统菜单 → TTYD 终端 → 输入命令
openwrt-openvfd根据 LED 屏显示控制说明 进行调试。
浏览器访问 OpenWrt 的 IP(例如 192.168.1.1) → 使用默认账户登录进入 OpenWrt → 系统菜单 → 晶晨宝盒 → 备份固件配置 → 快照管理 → 初始化快照,点击 还原快照 即可恢复至初始化状态。
也可以在 系统菜单 → TTYD 终端 → 输入命令 firstboot 恢复系统至初始化状态。这两种方法的操作结果相同。
在 OpenWrt 的使用中,一些可能遇到的常见问题详见 使用文档
- Clone 仓库到本地
git clone --depth 1 https://github.com/ophub/amlogic-s9xxx-openwrt.git - 安装必要的软件包(如 Ubuntu 24.04)
sudo apt-get update -y
sudo apt-get full-upgrade -y
# For Ubuntu-24.04
sudo apt-get install -y $(cat make-openwrt/scripts/ubuntu2404-make-openwrt-depends)- 在
~/amlogic-s9xxx-openwrt根目录下创建openwrt-armsr文件夹, 并将openwrt-armsr-armv8-generic-rootfs.tar.gz文件上传至此目录。 - 在
~/amlogic-s9xxx-openwrt根目录中输入打包命令,如sudo ./remake -b s905x3 -k 6.1.10。打包完成的 OpenWrt 固件放在根目录下的out文件夹里。
| 参数 | 含义 | 说明 |
|---|---|---|
| -b | Board | 指定需要编译的设备代号。例如,-b s905x3 表示编译代号为 s905x3 的设备,多个设备可用下划线连接,如 -b s905x3_s905d。特殊值:all 表示编译全部设备,first50 表示编译设备库中的前 50 个,range50_100 表示从第 51 个开始至第 100 个,range100_150 表示从第 101 个开始至第 150 个,last20 表示最后的 20 个。设备代号列表详见 model_database.conf 中的 BOARD 配置项。默认值为 all |
| -r | KernelRepo | 指定 github.com 内核仓库的 <owner>/<repo>。默认值:ophub/kernel |
| -u | kernelUsage | 设置使用的内核的 tags 后缀,如 stable, flippy, beta。默认值:stable |
| -k | Kernel | 指定 kernel 名称,如 -k 5.10.125 . 多个内核使用 _ 进行连接,如 -k 5.10.125_5.15.50 。通过 -k 参数自由指定的内核版本只对使用 stable/flippy/beta 的内核有效。其他内核系列例如 rk3588 / rk35xx / 其他内核系列例如 h6 等只能使用特定内核。 |
| -a | AutoKernel | 设置是否自动采用同系列最新版本内核。当为 true 时,将自动在内核库中查找在 -k 中指定的内核如 5.10.125 的同系列是否有更新的版本,如有 5.10.125 之后的最新版本时,将自动更换为最新版。设置为 false 时将编译指定版本内核。默认值:true |
| -p | IP | 指定 OpenWrt 系统的默认 IP 地址,例如: -p 10.1.1.1。默认值:192.168.1.1 |
| -s | Size | 对系统的镜像分区大小进行设置,只设置 ROOTFS 分区大小时可以只指定一个数值,例如: -s 1024。需要同时设置 BOOTFS 和 ROOTFS 分区大小时,使用 / 对两个数值进行连接,例如: -s 256/1024。默认值:256/1024 |
| -n | BuilderName | 设置 OpenWrt 系统构建者签名。设置签名时请勿包含空格。默认值:无 |
sudo ./remake: 使用默认配置,使用内核库中的最新内核包,对全部型号的电视盒子进行打包。sudo ./remake -b s905x3 -k 6.1.10: 推荐使用. 使用默认配置进行相关内核打包。sudo ./remake -b s905x3 -k 6.1.y: 使用默认配置进行相关内核打包,内核使用 6.1.y 系列的最新版。sudo ./remake -b s905x3_s905d -k 6.1.10_5.15.50: 使用默认配置,进行多个内核同时打包。使用_进行多内核参数连接。sudo ./remake -b s905x3 -k 6.1.10 -s 1024: 使用默认配置,指定一个内核,一个型号进行打包,固件大小设定为 1024 MiB。sudo ./remake -b s905x3_s905d使用默认配置,对多个型号的电视盒子进行全部内核打包, 使用_进行多型号连接。sudo ./remake -k 6.1.10_5.15.50: 使用默认配置,指定多个内核,进行全部型号电视盒子进行打包, 内核包使用_进行连接。sudo ./remake -k 6.1.10_5.15.50 -a true: 使用默认配置,指定多个内核,进行全部型号电视盒子进行打包, 内核包使用_进行连接。自动升级到同系列最新内核。sudo ./remake -s 1024 -k 6.1.10: 使用默认配置,设置固件大小为 1024 MiB, 并指定内核为 6.1.10 ,对全部型号电视盒子进行打包。
你可以通过修改 config 目录的相关个性化固件配置文件,以及 .yml 文件, 自定义和编译适合你的 OpenWrt 固件, 固件可以上传至 github.com 的 Actions 和 Releases 等处.
- 你可以在 使用文档 中查看个性化固件配置说明。编译流程控制文件是 .yml
- 全新编译:在 github.com 的 Action 选择
Build OpenWrt system image. 点击Run workflow按钮进行固件一站式编译和打包。 - 再次编译:如果 Releases 中有已经编译好的
openwrt-armsr-armv8-generic-rootfs.tar.gz文件,你只是想再次制作其他不同 board 的盒子,可以跳过 OpenWrt 源文件的编译,直接使用 build-openwrt-using-releases-files.yml 进行二次制作。 - 更多支持:编译好的
openwrt-armsr-armv8-generic-rootfs.tar.gz文件是制作各种不同 board 固件的通用文件,也适用于使用 unifreq 的打包脚本制作 OpenWrt 固件。他作为在盒子里使用 OpenWrt 和 Armbian 系统的开创者,对更多的设备进行了支持,如在 Armbian 系统中通过KVM虚拟机使用的 OpenWrt(QEMU 版)、Amlogic、Rockchip,以及 Allwinner 系列等。打包方法详见他的仓库说明,在 Actions 中通过 build-openwrt-using-unifreq-scripts.yml 可以调用他的打包脚本制作更多固件。
- name: Package armsr-armv8 as OpenWrt
uses: ophub/amlogic-s9xxx-openwrt@main
with:
openwrt_path: openwrt/bin/targets/*/*/*rootfs.tar.gz
openwrt_board: s905x3_s905x2_s905x_s905w_s905d_s922x_s912
openwrt_kernel: 6.12.y_6.18.y
openwrt_ip: 192.168.1.1相关参数与本地打包命令相对应,请参考上面的说明。
| 参数 | 默认值 | 说明 |
|---|---|---|
| openwrt_path | 无 | 设置 openwrt-armsr-armv8-generic-rootfs.tar.gz 的文件路径,可以使用相对路径如 openwrt/bin/targets/*/*/*rootfs.tar.gz 或网络文件下载地址如 https://github.com/*/releases/*/*rootfs.tar.gz |
| openwrt_board | all | 设置打包盒子的 board ,功能参考 -b |
| kernel_repo | ophub/kernel | 指定 github.com 内核仓库的 <owner>/<repo>,功能参考 -r |
| kernel_usage | stable | 设置使用的内核的 tags 后缀。功能参考 -u |
| openwrt_kernel | 6.12.y_6.18.y | 设置内核版本,功能参考 -k |
| auto_kernel | true | 设置是否自动采用同系列最新版本内核。功能参考 -a |
| openwrt_ip | 192.168.1.1 | 设置 OpenWrt 系统的默认 IP 地址,功能参考 -p |
| openwrt_size | 256/1024 | 设置系统 BOOTFS 和 ROOTFS 分区的大小,功能参考 -s |
| openwrt_files | false | 添加自定义 OpenWrt 文件。设置后,该目录下的所有文件将被复制到 common-files 中。目录结构必须与 OpenWrt 根目录保持一致,以确保文件被正确覆盖到固件中(例如:默认配置文件应存放于 etc/config/ 子目录下)。 |
| builder_name | 无 | 设置 OpenWrt 系统构建者签名,功能参考 -n |
上传到 Releases 需要给仓库设置 Workflow 读写权限,详见使用说明。
| 参数 | 默认值 | 说明 |
|---|---|---|
| ${{ env.PACKAGED_OUTPUTPATH }} | out | Armbian 系统文件输出路径 |
| ${{ env.PACKAGED_OUTPUTDATE }} | 04.13.1058 | 打包日期(月.日.时分) |
| ${{ env.PACKAGED_STATUS }} | success / failure | 打包状态。成功 / 失败 |
| Option | Value |
|---|---|
| Target System | Arm SystemReady (EFI) compliant |
| Subtarget | 64-bit (armv8) machines |
| Target Profile | Generic EFI Boot |
| Target Images | tar.gz |
更多信息请查阅 使用文档
内核的编译方法详见 compile-kernel
- name: Compile the kernel
uses: ophub/amlogic-s9xxx-armbian@main
with:
build_target: kernel
kernel_version: 6.12.y_6.18.y
kernel_auto: true
kernel_sign: -yourname制作 OpenWrt 系统时,所使用的 kernel 和 u-boot 等文件,与制作 Armbian 系统使用的是相同的文件。为了不重复维护,相关内容归类放在了对应的资源仓库,在使用时将自动从相关仓库进行下载。
本系统所使用的 u-boot, kernel 等资源主要从 unifreq/openwrt_packit 的项目中复制而来,部分文件由用户在 amlogic-s9xxx-openwrt / amlogic-s9xxx-armbian / luci-app-amlogic / kernel / u-boot 等项目的 Pull 和 Issues 中提供分享。unifreq 为我们开启了在电视盒子中使用 OpenWrt 的大门,深受其影响,我的固件在制作和使用中继承了他一贯的标准。为感谢这些开拓者和分享者,我统一在 CONTRIBUTORS.md 中进行了记录。再次感谢大家为盒子赋予了新的生命和意义。
- unifreq 为晶晨、瑞芯微和全志等更多盒子制作了
OpenWrt系统,属于盒子圈的标杆,推荐使用。 - amlogic-s9xxx-armbian 项目提供了在盒子中使用的
Armbian系统,在支持 OpenWrt 的相关设备中同样适用。 - fnnas 项目提供了在盒子中使用的
FnNAS系统,在支持 OpenWrt 的相关设备中同样适用。
The amlogic-s9xxx-openwrt © OPHUB is licensed under GPL-2.0
