├── armsr
└── armv8
│ ├── N1
│ ├── files
│ │ └── etc
│ │ │ ├── crontabs
│ │ │ └── root
│ │ │ └── config
│ │ │ ├── amlogic
│ │ │ └── network
│ ├── .config
│ └── mk_s905d_n1.sh
│ └── diy
│ ├── diy.sh
│ └── luci.patch
├── README.md
└── .github
└── workflows
└── armsr_armv8.yml
/armsr/armv8/N1/files/etc/crontabs/root:
--------------------------------------------------------------------------------
1 | 0 4 * * * fstrim -a
2 |
--------------------------------------------------------------------------------
/armsr/armv8/diy/diy.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Adjust source code
4 | patch -p1 -f < $(dirname "$0")/luci.patch
5 |
6 | # Add packages
7 | git clone https://github.com/ophub/luci-app-amlogic --depth=1 clone/amlogic
8 | git clone https://github.com/xiaorouji/openwrt-passwall --depth=1 clone/passwall
9 |
10 | # Update packages
11 | rm -rf feeds/luci/applications/luci-app-passwall
12 | cp -rf clone/amlogic/luci-app-amlogic clone/passwall/luci-app-passwall feeds/luci/applications/
13 |
14 | # Clean packages
15 | rm -rf clone
--------------------------------------------------------------------------------
/armsr/armv8/N1/files/etc/config/amlogic:
--------------------------------------------------------------------------------
1 | config amlogic 'config'
2 | option enable '1'
3 | option amlogic_firmware_repo 'https://github.com/nantayo/N1-OpenWrt'
4 | option amlogic_firmware_tag 'OpenWrt'
5 | option amlogic_firmware_suffix '.img.xz'
6 | option amlogic_kernel_path 'https://github.com/breakingbadboy/OpenWrt'
7 | option amlogic_kernel_branch '6.6'
8 | option amlogic_firmware_config '1'
9 | option amlogic_write_bootloader '1'
10 | option amlogic_shared_fstype 'ext4'
11 |
12 | config settings 'armcpu'
13 | option governor0 'performance'
14 | option minfreq0 '1512000'
15 | option maxfreq0 '1512000'
--------------------------------------------------------------------------------
/armsr/armv8/N1/files/etc/config/network:
--------------------------------------------------------------------------------
1 | config interface 'loopback'
2 | option device 'lo'
3 | option proto 'static'
4 | option ipaddr '127.0.0.1'
5 | option netmask '255.0.0.0'
6 |
7 | config interface 'docker'
8 | option device 'docker0'
9 | option proto 'none'
10 | option auto '0'
11 |
12 | config interface 'lan'
13 | option proto 'static'
14 | option netmask '255.255.255.0'
15 | option device 'eth0'
16 | option ipaddr '192.168.2.2'
17 | option gateway '192.168.2.1'
18 | option delegate '0'
19 |
20 | config device
21 | option type 'bridge'
22 | option name 'docker0'
23 |
24 | config globals 'globals'
25 | option packet_steering '2'
26 | option steering_flows '256'
27 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 项目简介
2 | 本固件适配斐讯 N1 旁路由模式,追求轻量(请注意:不具备 PPPoE、WiFi 相关功能)。
3 | 固件包含默认皮肤、完整 IPv6 支持,以及下列 luci-app:
4 | [luci-app-amlogic](https://github.com/ophub/luci-app-amlogic):系统更新、文件传输、CPU 调频等
5 | luci-app-dockerman:docker 管理
6 | [luci-app-passwall](https://github.com/xiaorouji/openwrt-passwall):科学上网
7 | luci-app-samba4:存储共享
8 | ***
9 | # 致谢
10 | 本项目基于 [ImmortalWrt-24.10](https://github.com/immortalwrt/immortalwrt/tree/openwrt-24.10) 源码编译,使用 flippy 的[脚本](https://github.com/unifreq/openwrt_packit)和 breakingbadboy 维护的[内核](https://github.com/breakingbadboy/OpenWrt/releases/tag/kernel_stable)打包成完整固件,感谢开发者们的无私分享。
11 | flippy 固件的更多细节参考[恩山论坛帖子](https://www.right.com.cn/forum/thread-4076037-1-1.html)。
--------------------------------------------------------------------------------
/armsr/armv8/diy/luci.patch:
--------------------------------------------------------------------------------
1 | --- a/feeds/luci/modules/luci-base/root/usr/share/rpcd/ucode/luci
2 | +++ b/feeds/luci/modules/luci-base/root/usr/share/rpcd/ucode/luci
3 | @@ -695,13 +695,24 @@
4 |
5 | getOnlineUsers: {
6 | call: function() {
7 | + let dev = 'br-lan';
8 | + try {
9 | + const ubus = connect();
10 | + const st = ubus?.call?.('network.interface.lan', 'status');
11 | + if (st)
12 | + dev = st.l3_device || st.device || dev;
13 | + } catch (e) {}
14 | +
15 | const fd = open('/proc/net/arp', 'r');
16 | if (fd) {
17 | let onlineusers = 0;
18 |
19 | - for (let line = fd.read('line'); length(line); line = fd.read('line'))
20 | - if (match(trim(line), /^.*(0x2).*(br-lan)$/))
21 | + for (let line = fd.read('line'); length(line); line = fd.read('line')) {
22 | + line = trim(line);
23 | + const f = split(line, /\s+/);
24 | + if (length(f) >= 6 && f[2] == '0x2' && f[5] == dev)
25 | onlineusers++;
26 | + }
27 |
28 | fd.close();
29 |
30 |
--------------------------------------------------------------------------------
/armsr/armv8/N1/.config:
--------------------------------------------------------------------------------
1 | CONFIG_TARGET_armsr=y
2 | CONFIG_TARGET_armsr_armv8=y
3 | CONFIG_TARGET_armsr_armv8_DEVICE_generic=y
4 | CONFIG_TARGET_ROOTFS_INITRAMFS=n
5 | CONFIG_TARGET_ROOTFS_CPIOGZ=n
6 | CONFIG_TARGET_ROOTFS_EXT4FS=n
7 | CONFIG_TARGET_ROOTFS_SQUASHFS=n
8 |
9 | # necessary
10 | CONFIG_BTRFS_PROGS_ZSTD=y
11 | CONFIG_PACKAGE_bsdtar=y
12 | CONFIG_PACKAGE_btrfs-progs=y
13 | CONFIG_PACKAGE_chattr=y
14 | CONFIG_PACKAGE_f2fs-tools=y
15 | CONFIG_PACKAGE_gawk=y
16 | CONFIG_PACKAGE_getopt=y
17 | CONFIG_PACKAGE_lsattr=y
18 | CONFIG_PACKAGE_perlbase-file=y
19 | CONFIG_PACKAGE_perlbase-getopt=y
20 | CONFIG_PACKAGE_perlbase-unicode=y
21 | CONFIG_PACKAGE_perl-http-date=y
22 | CONFIG_PACKAGE_pigz=y
23 | CONFIG_PACKAGE_tar=y
24 | CONFIG_PACKAGE_xfs-fsck=y
25 | CONFIG_PACKAGE_xfs-mkfs=y
26 |
27 | # luci
28 | CONFIG_PACKAGE_luci-app-amlogic=y
29 | CONFIG_PACKAGE_luci-app-dockerman=y
30 | CONFIG_PACKAGE_luci-app-filetransfer=n
31 | CONFIG_PACKAGE_luci-app-passwall=y
32 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Shadowsocks_Libev_Client=n
33 | CONFIG_PACKAGE_luci-app-passwall_INCLUDE_Shadowsocks_Libev_Server=n
34 | CONFIG_PACKAGE_luci-app-samba4=y
35 |
36 | # kmod
37 | CONFIG_PACKAGE_kmod-amazon-ena=n
38 | CONFIG_PACKAGE_kmod-atlantic=n
39 | CONFIG_PACKAGE_kmod-bcmgenet=n
40 | CONFIG_PACKAGE_kmod-dwmac-imx=n
41 | CONFIG_PACKAGE_kmod-dwmac-rockchip=n
42 | CONFIG_PACKAGE_kmod-dwmac-sun8i=n
43 | CONFIG_PACKAGE_kmod-e1000e=n
44 | CONFIG_PACKAGE_kmod-fsl-dpaa1-net=n
45 | CONFIG_PACKAGE_kmod-fsl-dpaa2-net=n
46 | CONFIG_PACKAGE_kmod-fsl-enetc-net=n
47 | CONFIG_PACKAGE_kmod-fsl-fec=n
48 | CONFIG_PACKAGE_kmod-fsl-xgmac-mdio=n
49 | CONFIG_PACKAGE_kmod-gpio-pca953x=n
50 | CONFIG_PACKAGE_kmod-i2c-mux-pca954x=n
51 | CONFIG_PACKAGE_kmod-macsec=n
52 | CONFIG_PACKAGE_kmod-mdio-bcm-unimac=n
53 | CONFIG_PACKAGE_kmod-mvneta=n
54 | CONFIG_PACKAGE_kmod-mvpp2=n
55 | CONFIG_PACKAGE_kmod-net-selftests=n
56 | CONFIG_PACKAGE_kmod-octeontx2-net=n
57 | CONFIG_PACKAGE_kmod-phy-aquantia=n
58 | CONFIG_PACKAGE_kmod-phy-broadcom=n
59 | CONFIG_PACKAGE_kmod-phy-marvell=n
60 | CONFIG_PACKAGE_kmod-phy-marvell-10g=n
61 | CONFIG_PACKAGE_kmod-phy-realtek=n
62 | CONFIG_PACKAGE_kmod-phy-smsc=n
63 | CONFIG_PACKAGE_kmod-ppp=n
64 | CONFIG_PACKAGE_kmod-ptp=n
65 | CONFIG_PACKAGE_kmod-renesas-net-avb=n
66 | CONFIG_PACKAGE_kmod-rtc-rx8025=n
67 | CONFIG_PACKAGE_kmod-sfp=n
68 | CONFIG_PACKAGE_kmod-stmmac-core=n
69 | CONFIG_PACKAGE_kmod-thunderx-net=n
70 | CONFIG_PACKAGE_kmod-usb2=y
71 | CONFIG_PACKAGE_kmod-vmxnet3=n
72 | CONFIG_PACKAGE_kmod-wdt-sp805=n
73 |
74 | # other packages
75 | CONFIG_PACKAGE_autocore=y
76 | CONFIG_PACKAGE_fstrim=y
77 | CONFIG_PACKAGE_partx-utils=n
78 | CONFIG_PACKAGE_ppp=n
79 | CONFIG_PACKAGE_shellsync=n
80 | CONFIG_PACKAGE_zoneinfo-asia=y
--------------------------------------------------------------------------------
/.github/workflows/armsr_armv8.yml:
--------------------------------------------------------------------------------
1 | name: Build ImmortalWrt-24.10 for armsr_armv8
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | ssh:
7 | description: 'SSH connection to Actions'
8 | required: true
9 | default: 'false'
10 | type: choice
11 | options:
12 | - true
13 | - false
14 | schedule:
15 | - cron: "0 0 1,16 * *"
16 |
17 | env:
18 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
19 | REPO_URL: https://github.com/immortalwrt/immortalwrt
20 | REPO_BRANCH: openwrt-24.10
21 | TZ: Asia/Shanghai
22 |
23 | jobs:
24 | build:
25 | runs-on: ubuntu-24.04
26 |
27 | steps:
28 | - name: Checkout
29 | uses: actions/checkout@main
30 |
31 | - name: Free up space
32 | uses: jlumbroso/free-disk-space@main
33 | with:
34 | tool-cache: true
35 | android: true
36 | dotnet: true
37 | haskell: true
38 | large-packages: true
39 | docker-images: true
40 | swap-storage: true
41 |
42 | - name: Initialize environment
43 | env:
44 | DEBIAN_FRONTEND: noninteractive
45 | run: |
46 | sudo -E apt-get -qq update > /dev/null
47 | sudo -E apt-get -qq install -y $(curl -fsSL https://raw.githubusercontent.com/nantayo/My-Pkg/master/2410) > /dev/null
48 | sudo -E apt-get -qq autoremove --purge > /dev/null
49 | sudo -E apt-get -qq clean > /dev/null
50 | sudo timedatectl set-timezone "$TZ"
51 | sudo mkdir -p /workdir
52 | sudo chown $USER:$GROUPS /workdir
53 |
54 | - name: Clone source code
55 | working-directory: /workdir
56 | run: |
57 | git clone $REPO_URL -b $REPO_BRANCH --single-branch --depth=1 openwrt
58 | ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt
59 | echo "FILE_DATE=$(date +"%Y%m%d")" >> $GITHUB_ENV
60 |
61 | - name: Update & Install feeds
62 | run: |
63 | chmod +x armsr/armv8/diy/diy.sh
64 | cd openwrt
65 | ./scripts/feeds update -a
66 | $GITHUB_WORKSPACE/armsr/armv8/diy/diy.sh
67 | ./scripts/feeds update -a
68 | ./scripts/feeds install -a
69 |
70 | - name: Load N1 custom config
71 | run: |
72 | rm -rf openwrt/files openwrt/.config
73 | mv armsr/armv8/N1/files armsr/armv8/N1/.config openwrt/
74 |
75 | - name: SSH connect to Actions
76 | uses: P3TERX/ssh2actions@main
77 | if: github.event.inputs.ssh == 'true'
78 |
79 | - name: Download package
80 | working-directory: ./openwrt
81 | run: |
82 | make defconfig
83 | make download -j$(( $(nproc) * 2 ))
84 | find dl -size -1k -exec rm -f {} \;
85 |
86 | - name: Compile N1 firmware
87 | run: |
88 | chmod -R 755 openwrt
89 | cd openwrt
90 | echo -e "$(nproc) thread compile"
91 | make -j$(( $(nproc) + 1 )) || make -j1 V=s
92 |
93 | - name: Package N1 firmware
94 | uses: unifreq/openwrt_packit@master
95 | env:
96 | OPENWRT_ARMVIRT: openwrt/bin/targets/armsr/armv8/*rootfs.tar.gz
97 | KERNEL_REPO_URL: breakingbadboy/OpenWrt
98 | KERNEL_VERSION_NAME: 6.6.y
99 | PACKAGE_SOC: diy
100 | GZIP_IMGS: .xz
101 | SCRIPT_DIY_PATH: armsr/armv8/N1/mk_s905d_n1.sh
102 | WHOAMI: nantayo
103 | SW_FLOWOFFLOAD: 0
104 | SFE_FLOW: 0
105 |
106 | - name: Upload firmware to release
107 | uses: softprops/action-gh-release@master
108 | with:
109 | tag_name: OpenWrt_${{ env.FILE_DATE }}
110 | files: ${{ env.PACKAGED_OUTPUTPATH }}/*.img.xz
111 | body: |
112 | 首次使用建议全新刷写
113 | * 基本信息
114 | IP: 192.168.2.2
115 | 账户: root
116 | 密码: password
117 |
118 | - name: Delete old releases
119 | uses: dev-drprasad/delete-older-releases@master
120 | with:
121 | keep_latest: 2
122 | delete_tags : true
--------------------------------------------------------------------------------
/armsr/armv8/N1/mk_s905d_n1.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | echo "========================= begin $0 ==========================="
4 | source make.env
5 | source public_funcs
6 | init_work_env
7 |
8 | # 盒子型号识别参数
9 | PLATFORM=amlogic
10 | SOC=s905d
11 | BOARD=n1
12 |
13 | # 让N1一直有wifi可用,以减少抱怨
14 | # 5.10(及以上)内核是否启用wifi 1:启用 0:禁用
15 | ENABLE_WIFI_K510=0
16 |
17 | SUBVER=$1
18 |
19 | # Kernel image sources
20 | ###################################################################
21 | KERNEL_TAGS="stable"
22 | KERNEL_BRANCHES="mainline:all:>=:5.4"
23 | MODULES_TGZ=${KERNEL_PKG_HOME}/modules-${KERNEL_VERSION}.tar.gz
24 | check_file ${MODULES_TGZ}
25 | BOOT_TGZ=${KERNEL_PKG_HOME}/boot-${KERNEL_VERSION}.tar.gz
26 | check_file ${BOOT_TGZ}
27 | DTBS_TGZ=${KERNEL_PKG_HOME}/dtb-amlogic-${KERNEL_VERSION}.tar.gz
28 | check_file ${DTBS_TGZ}
29 | K510=$(get_k510_from_boot_tgz "${BOOT_TGZ}" "vmlinuz-${KERNEL_VERSION}")
30 | export K510
31 | ###########################################################################
32 |
33 | # Openwrt root 源文件
34 | OPWRT_ROOTFS_GZ=$(get_openwrt_rootfs_archive ${PWD})
35 | check_file ${OPWRT_ROOTFS_GZ}
36 | echo "Use $OPWRT_ROOTFS_GZ as openwrt rootfs!"
37 |
38 | # 目标镜像文件
39 | TGT_IMG="${WORK_DIR}/openwrt_${SOC}_${BOARD}_${OPENWRT_VER}_k${KERNEL_VERSION}${SUBVER}.img"
40 |
41 | # 补丁和脚本
42 | ###########################################################################
43 | KMOD="${PWD}/files/kmod"
44 | KMOD_BLACKLIST="${PWD}/files/kmod_blacklist"
45 | MAC_SCRIPT2="${PWD}/files/find_macaddr.pl"
46 | MAC_SCRIPT3="${PWD}/files/inc_macaddr.pl"
47 | CPUSTAT_SCRIPT="${PWD}/files/cpustat"
48 | CPUSTAT_SCRIPT_PY="${PWD}/files/cpustat.py"
49 | INDEX_PATCH_HOME="${PWD}/files/index.html.patches"
50 | GETCPU_SCRIPT="${PWD}/files/getcpu"
51 | FLIPPY="${PWD}/files/scripts_deprecated/flippy_cn"
52 | BANNER="${PWD}/files/banner"
53 |
54 | # 20200314 add
55 | FMW_HOME="${PWD}/files/firmware"
56 | SMB4_PATCH="${PWD}/files/smb4.11_enable_smb1.patch"
57 | SYSCTL_CUSTOM_CONF="${PWD}/files/99-custom.conf"
58 |
59 | # 20200930 add
60 | SND_MOD="${PWD}/files/s905d/snd-meson-gx"
61 | DAEMON_JSON="${PWD}/files/s905d/daemon.json"
62 |
63 | # 20201006 add
64 | FORCE_REBOOT="${PWD}/files/s905d/reboot"
65 | # 20201017 add
66 | BAL_ETH_IRQ="${PWD}/files/balethirq.pl"
67 | # 20201026 add
68 | FIX_CPU_FREQ="${PWD}/files/fixcpufreq.pl"
69 | SYSFIXTIME_PATCH="${PWD}/files/sysfixtime.patch"
70 |
71 | # 20201128 add
72 | SSL_CNF_PATCH="${PWD}/files/openssl_engine.patch"
73 |
74 | # 20201212 add
75 | BAL_CONFIG="${PWD}/files/s905d/balance_irq"
76 | CPUFREQ_INIT="${PWD}/files/s905d/cpufreq"
77 |
78 | # 20210302 modify
79 | FIP_HOME="${PWD}/files/meson_btld/with_fip/s905d"
80 | UBOOT_WITH_FIP="${FIP_HOME}/n1-u-boot.bin.sd.bin"
81 | UBOOT_WITHOUT_FIP_HOME="${PWD}/files/meson_btld/without_fip"
82 | UBOOT_WITHOUT_FIP="u-boot-n1.bin"
83 |
84 | # 20210307 add
85 | SS_LIB="${PWD}/files/ss-glibc/lib-glibc.tar.xz"
86 | SS_BIN="${PWD}/files/ss-glibc/armv8a_crypto/ss-bin-glibc.tar.xz"
87 | JQ="${PWD}/files/jq"
88 |
89 | # 20210330 add
90 | DOCKERD_PATCH="${PWD}/files/dockerd.patch"
91 |
92 | # 20200416 add
93 | FIRMWARE_TXZ="${PWD}/files/firmware_armbian.tar.xz"
94 | BOOTFILES_HOME="${PWD}/files/bootfiles/amlogic"
95 | GET_RANDOM_MAC="${PWD}/files/get_random_mac.sh"
96 |
97 | # 20210618 add
98 | DOCKER_README="${PWD}/files/DockerReadme.pdf"
99 |
100 | # 20210704 add
101 | SYSINFO_SCRIPT="${PWD}/files/30-sysinfo.sh"
102 |
103 | # 20210923 add
104 | OPENWRT_INSTALL="${PWD}/files/openwrt-install-amlogic"
105 | OPENWRT_UPDATE="${PWD}/files/openwrt-update-amlogic"
106 | OPENWRT_KERNEL="${PWD}/files/openwrt-kernel"
107 | OPENWRT_BACKUP="${PWD}/files/openwrt-backup"
108 |
109 | # 20211019 add
110 | FIRSTRUN_SCRIPT="${PWD}/files/first_run.sh"
111 |
112 | # 20211020 add
113 | BTLD_BIN="${PWD}/files/s905d/u-boot-2015-phicomm-n1.bin"
114 |
115 | # 20211024 add
116 | MODEL_DB="${PWD}/files/amlogic_model_database.txt"
117 | # 20211214 add
118 | P7ZIP="${PWD}/files/7z"
119 | # 20211217 add
120 | DDBR="${PWD}/files/openwrt-ddbr"
121 | # 20220225 add
122 | SSH_CIPHERS="aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr,chacha20-poly1305@openssh.com"
123 | SSHD_CIPHERS="aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr"
124 | ###########################################################################
125 |
126 | check_depends
127 |
128 | SKIP_MB=4
129 | BOOT_MB=256
130 | ROOTFS_MB=960
131 | SIZE=$((SKIP_MB + BOOT_MB + ROOTFS_MB))
132 | create_image "$TGT_IMG" "$SIZE"
133 | create_partition "$TGT_DEV" "msdos" "$SKIP_MB" "$BOOT_MB" "fat32" "0" "-1" "btrfs"
134 | make_filesystem "$TGT_DEV" "B" "fat32" "BOOT" "R" "btrfs" "ROOTFS"
135 | mount_fs "${TGT_DEV}p1" "${TGT_BOOT}" "vfat"
136 | mount_fs "${TGT_DEV}p2" "${TGT_ROOT}" "btrfs" "compress=zstd:${ZSTD_LEVEL}"
137 | echo "创建 /etc 子卷 ..."
138 | btrfs subvolume create $TGT_ROOT/etc
139 | extract_rootfs_files
140 | extract_amlogic_boot_files
141 |
142 | echo "修改引导分区相关配置 ... "
143 | cd $TGT_BOOT
144 | rm -f uEnv.ini
145 | cat > uEnv.txt <"
161 | echo "==============================================================================="
162 | cat uEnv.txt
163 | echo "==============================================================================="
164 | echo
165 |
166 | echo "修改根文件系统相关配置 ... "
167 | cd $TGT_ROOT
168 | copy_supplement_files
169 | extract_glibc_programs
170 | adjust_docker_config
171 | adjust_openssl_config
172 | adjust_getty_config
173 | adjust_samba_config
174 | adjust_openssh_config
175 | use_xrayplug_replace_v2rayplug
176 | create_fstab_config
177 | adjust_mosdns_config
178 | patch_admin_status_index_html
179 | adjust_kernel_env
180 | copy_uboot_to_fs
181 | write_release_info
182 | write_banner
183 | config_first_run
184 | create_snapshot "etc-000"
185 | write_uboot_to_disk
186 | clean_work_env
187 | mv ${TGT_IMG} ${OUTPUT_DIR} && sync
188 | echo "镜像已生成! 存放在 ${OUTPUT_DIR} 下面!"
189 | echo "========================== end $0 ================================"
190 | echo
--------------------------------------------------------------------------------