Git Product home page Git Product logo

openwrt-s905d-s905x's Introduction

可以安装在 Amlogic S9xxx 系列机顶盒中使用的 OpenWrt 系统

查看英文说明 | View English description

支持github.com一站式完整编译(从自定义软件包进行编译,到打包固件,完全在giuhub.com一站式完成);支持在自己的仓库进行个性化软件包选择编译,仅单独引入 GitHub Action 进行固件打包;支持从 github.com 的 Releases 中使用已有的 openwrt-armvirt-64-default-rootfs.tar.gz 文件直接进行固件打包;支持本地化打包(在本地Ubuntu等环境中进行固件打包)。支持的Amlogic S9xxx系列型号有 s922x, s905x3, s905x2, s912, s905d, s905x, s905w 等,例如 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 中下载。

本仓库的 OpenWrt 固件打包使用了 Flippy's 的 Amlogic S9xxx 纯内核包以及安装和升级脚本等众多资源。欢迎你 Fork 并进行 个性化软件包定制 。如果对你有用,可以点仓库右上角的 Star 表示支持。

OpenWrt 固件说明

型号 机顶盒 可选内核 OpenWrt固件
s922x Belink, Belink-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 全部 openwrt_s905x2_k*.img
s912 H96-Pro-Plus, Octopus-Planet 全部 openwrt_s912_k*.img
s905d Phicomm-N1 全部 openwrt_s905d_k*.img
s905x HG680P, B860H 5.4.* openwrt_s905x_k*.img
s905w X96-Mini, TX3-Mini 5.4.* openwrt_s905w_k*.img

安装及升级 OpenWrt 的相关说明

选择和你的机顶盒型号对应的 OpenWrt 固件,使用 Rufus 或者 balenaEtcher 等工具将固件写入USB里,然后把写好固件的USB插入机顶盒。

  • 安装 OpenWrt

从浏览器访问 OpenWrt 的默认 IP: 192.168.1.1 → 使用默认账户登录进入 OpenWrt系统菜单晶晨宝盒安装 OpenWrt

  • 升级 OpenWrt 内核

从浏览器访问 OpenWrt 的 IP 如: 192.168.1.1 → 使用账户登录进入 OpenWrt系统菜单晶晨宝盒升级 OpenWrt

提示:安装/升级等功能由 luci-app-amlogic 提供可视化操作支持。也支持命令操作

  • 在 TF/USB 中使用 OpenWrt

从浏览器访问 OpenWrt 的默认 IP: 192.168.1.1 → 使用默认账户登录进入 OpenWrt系统菜单TTYD 终端 → 输入命令

openwrt-tf

激活剩余空间后,支持在 TF/USB 中升级内核和 OpenWrt 系统。

OpenWrt 固件编译及打包说明

支持多种方式进行固件编译和打包,你可以选择任意一种你喜欢的方式进行使用。

  • Github.com 一站式编译和打包

你可以通过修改 router-config 目录的相关个性化固件配置文件,以及 .yml 文件, 自定义和编译适合你的 OpenWrt 固件, 固件可以上传至 github.com 的 ActionsReleases 等处.

  1. 你可以在 router-config 中查看个性化固件配置说明。编译流程控制文件是 .yml
  2. 在 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.10.70_5.4.150
    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 }} 即打包文件所在路径。

  • 仅单独引入 GitHub Action 进行固件打包

相关代码可以查看 .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.10.70_5.4.150
    auto_kernel: true
    amlogic_size: 1024
  • GitHub Action 输入参数说明
参数 默认值 说明
armvirt64_path no 设置 openwrt-armvirt-64-default-rootfs.tar.gz 的文件路径,使用文件在当前工作流中的路径如 openwrt/bin/targets/*/*/*.tar.gz
amlogic_openwrt s905d_s905x3 设置打包盒子的 SOC ,默认 all 打包全部盒子,可指定单个盒子如 s905x3 ,可选择多个盒子用_连接如 s905x3_s905d 。各盒子的SoC代码为:s905x3, s905x2, s905x, s905w, s905d, s922x, s922x-n2, s912。说明:s922x-n2s922x-odroid-n2
amlogic_kernel 5.10.70_5.4.150 设置内核版本,ophub 的 kernel 库里收藏了众多 Flippy 的原版内核,可以查看并选择指定。
auto_kernel true 设置是否自动采用同系列最新版本内核。当为 true 时,将自动在内核库中查找在 amlogic_kernel 中指定的内核如 5.4.150 的 5.4 同系列是否有更新的版本,如有 5.4.150 之后的最新版本时,将自动更换为最新版。设置为 false 时将编译指定版本内核。默认值:true
amlogic_size 1024 设置固件 ROOT 分区的大小
  • GitHub Action 输出变量说明
参数 默认值 说明
${{ env.PACKAGED_OUTPUTPATH }} ${PWD}/out 打包后的固件所在文件夹的路径
${{ env.PACKAGED_OUTPUTDATE }} 2021.04.21.1058 打包日期
${{ env.PACKAGED_STATUS }} success / failure 打包状态。成功 / 失败
  • 上传固件到 github.com 的 Actions:
- name: Upload artifact to Actions
  uses: kittaakos/upload-artifact-as-is@master
  with:
    path: ${{ env.PACKAGED_OUTPUTPATH }}/
  • 上传固件到 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 STB.
      More information ...
  • 使用 Github.com 的 Releases 中已有的 rootfs 文件直接进行固件打包

如果你仓库的 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.10.70_5.4.150
    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 时,就可以直接指定相关内核进行快速打包了,而不用再进行漫长的固件编译等待。仓库里收藏了 Flippy 的很多内核 kernel 和 Amlogic 的 dtb 文件 amlogic-dtb ,你可以随时调用进行编译。

  • 本地化打包

  1. 安装必要的软件包(如 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)
  1. Clone 仓库到本地 git clone --depth 1 https://github.com/ophub/amlogic-s9xxx-openwrt.git
  2. ~/amlogic-s9xxx-openwrt 根目录下创建 openwrt-armvirt 文件夹, 并将 openwrt-armvirt-64-default-rootfs.tar.gz 文件上传至此目录。
  3. 将内核包按对应的版本号命名如 5.4.150 放入 ~/amlogic-s9xxx-openwrt/amlogic-s9xxx/amlogic-kernel 目录下。
  4. ~/amlogic-s9xxx-openwrt 根目录中输入打包命令,如 sudo ./make 进行选择设置,打包完成的 OpenWrt 固件放在根目录下的 out 文件夹里。

打包命令的相关参数说明

  • sudo ./make -d -b s905x3 -k 5.4.150 : 推荐使用. 使用默认配置进行相关内核打包。
  • sudo ./make -d -b s905x3_s905d -k 5.10.70_5.4.150 : 使用默认配置,进行多个内核同时打包。使用 _ 进行多内核参数连接。
  • sudo ./make -d : 使用默认配置,使用内核库中的最新内核包,对全部型号的机顶盒进行打包。
  • sudo ./make -d -b s905x3 -k 5.4.150 -s 1024 : 使用默认配置,指定一个内核,一个型号进行打包,固件大小设定为1024M。
  • sudo ./make -d -b s905x3_s905d 使用默认配置,对多个型号的机顶盒进行全部内核打包, 使用 _ 进行多型号连接。
  • sudo ./make -d -k 5.10.70_5.4.150 : 使用默认配置,指定多个内核,进行全部型号机顶盒进行打包, 内核包使用 _ 进行连接。
  • sudo ./make -d -k 5.10.70_5.4.150 -a true : 使用默认配置,指定多个内核,进行全部型号机顶盒进行打包, 内核包使用 _ 进行连接。自动升级到同系列最新内核。
  • sudo ./make -d -k latest : 使用默认配置,最新的内核包,对全部型号的机顶盒进行打包。
  • sudo ./make -d -s 1024 -k 5.4.150 : 使用默认配置,设置固件大小为 1024M, 并指定内核为 5.4.150 ,对全部型号机顶盒进行打包。
  • sudo ./make -h : 显示帮助文档。
  • sudo ./make : 如果你对脚本很熟悉,可以在本地编译时,这样进行问答式参数配置。
参数 含义 说明
-d Defaults 使用默认配置
-b Build 指定机顶盒型号,如 -b s905x3 . 多个型号使用 _ 进行连接,如 -b s905x3_s905d . 可以指定的型号有: s905x3, s905x2, s905x, s905w, s905d, s922x, s922x-n2, s912。说明:s922x-n2s922x-odroid-n2
-k Kernel 指定内核,如 -k 5.4.150 . 多个内核使用 _ 进行连接,如 -k 5.10.70_5.4.150 kernel
-a AutoKernel 设置是否自动采用同系列最新版本内核。当为 true 时,将自动在内核库中查找在 -k 中指定的内核如 5.4.150 的 5.4 同系列是否有更新的版本,如有 5.4.150 之后的最新版本时,将自动更换为最新版。设置为 false 时将编译指定版本内核。默认值:true
-s Size 对固件的大小进行设置,默认大小为 1024M, 固件大小必须大于 256M. 例如: -s 1024
-h help 展示帮助文档.

~/openwrt-armvirt/*-rootfs.tar.gz 用于打包的文件编译选项

Option Value
Target System QEMU ARM Virtual Machine
Subtarget QEMU ARMv8 Virtual Machine(cortex-a53)
Target Profile Default
Target Images tar.gz

更多信息请查阅 router-config

OpenWrt 固件默认信息

名称
默认 IP 192.168.1.1
默认账号 root
默认密码 password
默认 WIFI 名称 OpenWrt
默认 WIFI 密码 none

旁路网关设置

如果你的机顶盒以旁路网关的方式运行,你可以根据需要在防火墙中添加路由规则 (网络 → 防火墙 → 自定义路由规则):

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE        #If the interface is eth0.
iptables -t nat -I POSTROUTING -o br-lan -j MASQUERADE      #If the interface is br-lan bridged.

鸣谢

License

LICENSE © OPHUB

openwrt-s905d-s905x's People

Contributors

vpei avatar biangkerok32 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.