查看英文说明 | View English description
OpenWrt 项目是一个针对嵌入式设备的 Linux 路由器操作系统。OpenWrt 不是一个单一且不可更改的固件,而是提供了具有软件包管理功能的完全可写的文件系统,让您可以自由选择需要的软件包来定制路由器系统。对于开发人员来说,OpenWrt 是一个无需围绕它构建完整固件就能开发应用程序的框架;对于普通用户来说,这意味着拥有了完全定制的能力,能以意想不到的方式使用该设备。它拥有超过 3000+ 个标准化应用软件包和非常丰富的第三方插件支持,让您可以轻松地将他们应用于各种支持的设备。现在你可以将电视盒子的安卓 TV 系统更换为 OpenWrt 系统,让他成为一台功能强大的路由器。
本项目托众多的贡献者,为 Amlogic
,Rockchip
和 Allwinner
盒子构建 OpenWrt 系统。支持写入 eMMC 中使用,支持更新内核等功能,使用方法详见 OpenWrt 使用文档。最新的固件可以在 Releases 中下载。欢迎你 Fork
并进行个性化软件包定制。如果对你有用,可以点仓库右上角的 Star
表示支持。
Tip
目前 s905 的盒子只能在 TF/SD/USB
中使用,其他型号的盒子支持写入 EMMC
中使用。更多信息请查阅支持的设备列表说明。可以参考说明文档中 12.15 章节的方法添加新的支持设备。使用前先阅读 OpenWrt 使用文档,常见问题都有解决方法。
选择和你的电视盒子型号对应的 OpenWrt 固件,不同设备的使用方法查看对应的说明。
-
Rockchip
平台的安装方法请查看说明文档中的 第 8 章节 的介绍,和 Armbian 的安装方法相同。 -
For the
Amlogic
andAllwinner
platforms, use tools like Rufus or balenaEtcher to write the firmware to USB, then insert the USB with the written firmware into the box. Browser access to OpenWrt's IP (e.g. 192.168.1.1) →Log in to OpenWrt with the default account
→System Menu
→Amlogic Treasure Box
→Install OpenWrt
, select your box from the dropdown list of supported devices, clickInstall OpenWrt
button to install.
Browser access to OpenWrt's IP (e.g. 192.168.1.1) → Log in to OpenWrt with your account
→ System Menu
→ Amlogic Treasure Box
→ Manually Upload Update / Online Download Update
如果选择 手动上传更新
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
。
Browser access to OpenWrt's IP (e.g. 192.168.1.1) → Log in to OpenWrt with the default account
→ System Menu
→ TTYD Terminal
→ enter the command
openwrt-swap 1
支持在 TF/SD/USB
中对盒子的 EMMC
分区进行备份/恢复。建议您在全新的盒子里安装 OpenWrt 系统前,先对当前盒子自带的安卓 TV 系统进行备份,以便日后在恢复电视系统等情况下使用。
Please boot OpenWrt system from TF/SD/USB
, from the browser, Browser access to OpenWrt's IP (e.g. 192.168.1.1) → Log in to OpenWrt with the default account
→ System Menu
→ TTYD Terminal
→ enter the command
openwrt-ddbr
根据提示输入 b
进行系统备份,输入 r
进行系统恢复。
Important
除此之外也可以通过线刷的方法,将安卓系统刷入 eMMC 中,安卓系统的下载镜像可在 Tools 中查找。
Browser access to OpenWrt's IP (e.g. 192.168.1.1) → Log in to OpenWrt with the default account
→ System Menu
→ TTYD Terminal
→ enter the command
openwrt-openvfd
Refer to LED Screen Display Control Description for debugging.
Browser access to OpenWrt's IP (e.g. 192.168.1.1) → Log in to OpenWrt with the default account
→ System Menu
→ Amlogic Service
→ Backup Firmware Config
→ Snapshot Management
→ Select Initialize Snapshot
, and click on Restore Snap
to revert to the initial state.
Alternatively, you can navigate to System menu
→ TTYD Terminal
→ Enter the command firstboot
to restore the system to its initial state. Both methods yield the same result.
Some common problems that might be encountered during the use of OpenWrt can be found in the User Guide
- 安装必要的软件包(如 Ubuntu 22.04 LTS 用户)
sudo apt-get update -y
sudo apt-get full-upgrade -y
# For Ubuntu-22.04
sudo apt-get install -y $(curl -fsSL https://is.gd/depend_ubuntu2204_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 -b s905x3 -k 6.1.10
。打包完成的 OpenWrt 固件放在根目录下的out
文件夹里。
参数 | 含义 | 说明 |
---|---|---|
-b | Board | 指定电视盒子型号,如 -b s905x3 . 多个型号使用 _ 进行连接,如 -b s905x3_s905d . 使用 all 表示全部型号。型号代码详见 model_database.conf 中的 BOARD 设置。默认值:all |
-r | KernelRepo | 指定 github.com 内核仓库的 <owner>/<repo> 。默认值:ophub/kernel |
-u | kernelUsage | 设置使用的内核的 tags 后缀 ,如 stable, flippy, dev, beta。默认值:stable |
-k | Kernel | 指定 kernel 名称,如 -k 5.10.125 . 多个内核使用 _ 进行连接,如 -k 5.10.125_5.15.50 。通过 -k 参数自由指定的内核版本只对使用 stable/flippy/dev/beta 的内核有效。其他内核系列例如 rk3588 / rk35xx / 其他内核系列例如 h6 等只能使用特定内核。 |
-a | AutoKernel | 设置是否自动采用同系列最新版本内核。当为 true 时,将自动在内核库中查找在 -k 中指定的内核如 5.10.125 的同系列是否有更新的版本,如有 5.10.125 之后的最新版本时,将自动更换为最新版。设置为 false 时将编译指定版本内核。默认值:true |
-s | Size | 对系统的镜像分区大小进行设置,只设置 ROOTFS 分区大小时可以只指定一个数值,例如: -s 1024 。需要同时设置 BOOTFS 和 ROOTFS 分区大小时,使用 / 对两个数值进行连接,例如: -s 256/1024 。默认值:256/1024 |
-n | BuilderName | 设置 OpenWrt 系统构建者签名。设置签名时请勿包含空格。默认值:无 |
sudo ./make
: 使用默认配置,使用内核库中的最新内核包,对全部型号的电视盒子进行打包。sudo ./make -b s905x3 -k 6.1.10
: 推荐使用. 使用默认配置进行相关内核打包。sudo ./make -b s905x3 -k 6.1.y
: 使用默认配置进行相关内核打包,内核使用 6.1.y 系列的最新版。sudo ./make -b s905x3_s905d -k 6.1.10_5.15.50
: 使用默认配置,进行多个内核同时打包。使用_
进行多内核参数连接。sudo ./make -b s905x3 -k 6.1.10 -s 1024
: 使用默认配置,指定一个内核,一个型号进行打包,固件大小设定为 1024 MiB。sudo ./make -b s905x3_s905d
使用默认配置,对多个型号的电视盒子进行全部内核打包, 使用_
进行多型号连接。sudo ./make -k 6.1.10_5.15.50
: 使用默认配置,指定多个内核,进行全部型号电视盒子进行打包, 内核包使用_
进行连接。sudo ./make -k 6.1.10_5.15.50 -a true
: 使用默认配置,指定多个内核,进行全部型号电视盒子进行打包, 内核包使用_
进行连接。自动升级到同系列最新内核。sudo ./make -s 1024 -k 6.1.10
: 使用默认配置,设置固件大小为 1024 MiB, 并指定内核为 6.1.10 ,对全部型号电视盒子进行打包。
你可以通过修改 config 目录的相关个性化固件配置文件,以及 .yml 文件, 自定义和编译适合你的 OpenWrt 固件, 固件可以上传至 github.com 的 Actions
和 Releases
等处.
- 你可以在 使用文档 中查看个性化固件配置说明。编译流程控制文件是 .yml
- 全新编译:在 github.com 的 Action 选择
Build OpenWrt
. 点击Run workflow
按钮进行固件一站式编译和打包。 - 再次编译:如果 Releases 中有已经编译好的
openwrt-armvirt-64-default-rootfs.tar.gz
文件,你只是想再次制作其他不同 board 的盒子,可以跳过 OpenWrt 源文件的编译,直接进行二次制作。在 Actions 页面中选择Use Releases file to Packaging
,点击Run workflow
按钮即可二次编译。 - 更多支持:编译好的
openwrt-armvirt-64-default-rootfs.tar.gz
文件是制作各种不同 board 固件的通用文件,也适用于使用 unifreq 的打包脚本制作 OpenWrt 固件。他作为在盒子里使用 OpenWrt 和 Armbian 系统的开创者,对更多的设备进行了支持,如在 Armbian 系统中通过KVM
虚拟机使用的 OpenWrt(QEMU 版)、Amlogic、Rockchip,以及 Allwinner 系列等。打包方法详见他的仓库说明,在 Actions 中通过 packaging-openwrt-for-qemu-etc.yml 可以调用他的打包脚本制作更多固件。
- name: Package Armvirt 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.1.y_5.15.y
相关参数与本地打包命令
相对应,请参考上面的说明。
参数 | 默认值 | 说明 |
---|---|---|
openwrt_path | 无 | 设置 openwrt-armvirt-64-default-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.1.y_5.15.y | 设置内核版本,功能参考 -k |
auto_kernel | true | 设置是否自动采用同系列最新版本内核。功能参考 -a |
openwrt_size | 256/1024 | 设置系统 BOOTFS 和 ROOTFS 分区的大小,功能参考 -s |
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 |
更多信息请查阅 使用文档
名称 | 值 |
---|---|
默认 IP | 192.168.1.1 |
默认账号 | root |
默认密码 | password |
默认 WIFI 名称 | OpenWrt |
默认 WIFI 密码 | 无 |
内核的编译方法详见 compile-kernel
- name: Compile the kernel
uses: ophub/amlogic-s9xxx-armbian@main
with:
build_target: kernel
kernel_version: 6.1.y_5.15.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 的相关设备中同样适用。
The amlogic-s9xxx-openwrt © OPHUB is licensed under GPL-2.0