Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
51c0aad
Initial plan
Copilot Nov 16, 2025
371ba92
Update OpenWrt commits to latest versions for 6.6/6.10/6.11 and 6.12 …
Copilot Nov 16, 2025
fa2c74d
Update U-Boot version from 2023.07.02 to 2024.10 and add rb5009 support
Copilot Nov 16, 2025
8997b27
Add enhanced WiFi 7 (MT7996) driver support for BananaPi R4
Copilot Nov 16, 2025
e2bc0fe
Add comprehensive driver support: Quectel RM551E-GL 5G modem, carrier…
Copilot Nov 16, 2025
9dbd28c
Merge pull request #1 from spotty118/copilot/update-this
spotty118 Nov 16, 2025
7e73b85
Initial plan
Copilot Nov 16, 2025
5299a3b
Update README and enhance BPI-R4 configs with comprehensive optimizat…
Copilot Nov 16, 2025
94222d9
Merge pull request #2 from spotty118/copilot/update-readme-and-optimi…
spotty118 Nov 16, 2025
3728dd5
Initial plan
Copilot Nov 16, 2025
99f0ce1
Add build workflow and update all kernel commit hashes to latest
Copilot Nov 16, 2025
a5bf4b2
Update branding to OpenMPTCProuter Optimized
Copilot Nov 16, 2025
26d5645
Add comprehensive VPS scripts, easy installation, and modern LuCI theme
Copilot Nov 16, 2025
e167c5b
Final updates: Complete production-ready documentation and features
Copilot Nov 16, 2025
1d2ce22
Add complete automated client setup and bidirectional auto-pairing sy…
Copilot Nov 16, 2025
94538fa
Add automated VPS-client pairing, first-boot wizard, dynamic WAN dete…
Copilot Nov 16, 2025
c829980
Merge pull request #3 from spotty118/copilot/update-create-image-and-…
spotty118 Nov 16, 2025
81e8524
Initial plan
Copilot Nov 17, 2025
fe1ae32
Add on-demand build support and enhance Quectel RM551E modem support
Copilot Nov 17, 2025
fff63d9
Add comprehensive documentation for on-demand builds and RM551E support
Copilot Nov 17, 2025
f417df8
Add comprehensive test plan
Copilot Nov 17, 2025
be35c4c
Merge pull request #4 from spotty118/copilot/fix-quectel-551e-issues
spotty118 Nov 17, 2025
e02778b
Initial plan
Copilot Nov 17, 2025
1f7a6b3
Merge pull request #5 from spotty118/copilot/build-local-image
spotty118 Nov 17, 2025
4512b37
Initial plan
Copilot Nov 17, 2025
158f2aa
Fix Quectel RM551E driver patches - correct implementation
Copilot Nov 17, 2025
794e9e6
Initial plan
Copilot Nov 17, 2025
7e96baa
Update drivers and enhance multi-WAN bonding for stability
Copilot Nov 17, 2025
404e623
Add RM551E stability monitor, clean up dead code, change default IP t…
Copilot Nov 17, 2025
17e2d88
Add self-aware auto-configuration system for WAN/LAN ports and WiFi
Copilot Nov 17, 2025
eecdf15
Enhance network monitor for instant self-aware port reconfiguration
Copilot Nov 17, 2025
73eb4fa
Add comprehensive documentation clarifying bonding preservation
Copilot Nov 17, 2025
bdbbc17
Merge pull request #7 from spotty118/copilot/update-drivers-for-stabi…
spotty118 Nov 17, 2025
78442b7
Initial plan
Copilot Nov 17, 2025
526431c
Implement smart first-boot setup and quality-of-life features
Copilot Nov 17, 2025
1c23701
Add comprehensive safety features to prevent user lockouts
Copilot Nov 17, 2025
dd71528
Add comprehensive documentation for quality-of-life features
Copilot Nov 17, 2025
02332f5
Add hardware-based recovery for locked-out scenarios
Copilot Nov 17, 2025
c11960a
Merge pull request #8 from spotty118/copilot/explore-quality-of-life-…
spotty118 Nov 17, 2025
d6ce11f
Merge pull request #6 from spotty118/copilot/verify-quectel-551e-drivers
spotty118 Nov 17, 2025
d1b2d30
Initial plan
Copilot Nov 17, 2025
69c4548
Add self-contained VPS installation wizard
Copilot Nov 17, 2025
f3103ee
Fix router IP address from 192.168.100.1 to 192.168.2.1
Copilot Nov 17, 2025
1347d73
Merge pull request #10 from spotty118/copilot/add-vps-install-wizard-…
spotty118 Nov 17, 2025
f965a68
Initial plan
Copilot Nov 17, 2025
4b5285f
Fix confirmation prompt to accept Enter as default yes
Copilot Nov 17, 2025
f89a926
Add test for confirmation prompt fix
Copilot Nov 17, 2025
3e40582
Merge pull request #12 from spotty118/copilot/generate-secure-credent…
spotty118 Nov 17, 2025
8502417
Initial plan
Copilot Nov 17, 2025
eb03761
Update plan to fix both branch references and interactive prompt issue
Copilot Nov 17, 2025
3f9db69
Fix branch references and interactive prompt issue in all scripts
Copilot Nov 17, 2025
e71685d
Fix remaining branch references in GitHub workflow
Copilot Nov 17, 2025
c5c661f
Merge pull request #13 from spotty118/copilot/validate-os-compatibility
spotty118 Nov 17, 2025
5bf9842
Initial plan
Copilot Nov 17, 2025
5234c23
Fix shellcheck warnings and add integration tests
Copilot Nov 17, 2025
7c4aa03
Add comprehensive audit report and certification
Copilot Nov 17, 2025
89855c0
Add audit summary and complete code review
Copilot Nov 17, 2025
38398be
Add security summary and finalize audit documentation
Copilot Nov 17, 2025
90ce853
Merge pull request #14 from spotty118/copilot/audit-code-stability-ch…
spotty118 Nov 17, 2025
68e9981
Initial plan
Copilot Nov 17, 2025
347d267
Add comprehensive LuCI frontend improvements with modern CSS, JS, and…
Copilot Nov 17, 2025
fa02554
Merge pull request #16 from spotty118/copilot/improve-luci-frontend-c…
spotty118 Nov 17, 2025
5043418
Add comprehensive code audit report
claude Nov 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions .github/workflows/build-vps.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Build VPS Images

on:
workflow_dispatch:
inputs:
vps_type:
description: 'VPS distribution type'
required: true
type: choice
options:
- 'debian'
- 'ubuntu'
- 'all'
default: 'all'

jobs:
build-vps:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Build VPS setup scripts
run: |
echo "Building VPS installation package..."
cd vps-scripts

# Create VPS package
mkdir -p ../vps-build
cp -r * ../vps-build/

# Package the installation scripts
cd ../vps-build
tar -czf ../omr-vps-install-${{ github.sha }}.tar.gz *

- name: Upload VPS artifacts
uses: actions/upload-artifact@v4
with:
name: vps-install-package
path: omr-vps-install-*.tar.gz

- name: Create installation documentation
run: |
cat > VPS_INSTALL_README.md << 'EOF'
# OpenMPTCProuter VPS Installation

## Quick Install

Download and run the installation script:

```bash
curl -sSL https://raw.githubusercontent.com/spotty118/openmptcprouter/develop/scripts/easy-install.sh | sudo bash
```

## Auto-Pairing

For automatic pairing with client:

```bash
curl -sSL https://raw.githubusercontent.com/spotty118/openmptcprouter/develop/scripts/auto-pair.sh | sudo bash
```

## Manual Installation

1. Download the VPS package from the artifacts
2. Extract: `tar -xzf omr-vps-install-*.tar.gz`
3. Run: `sudo bash omr-vps-install.sh`

## Supported Platforms

- Debian 10, 11, 12
- Ubuntu 20.04, 22.04, 24.04

EOF

- name: Upload documentation
uses: actions/upload-artifact@v4
with:
name: vps-documentation
path: VPS_INSTALL_README.md
140 changes: 140 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
name: Build OpenMPTCProuter Optimized Images
on:
push:
workflow_dispatch:
inputs:
target:
description: 'Target platform (leave empty for all)'
required: false
type: choice
options:
- 'all'
- 'bpi-r1'
- 'bpi-r2'
- 'bpi-r3'
- 'bpi-r4'
- 'bpi-r4-poe'
- 'bpi-r64'
- 'rpi2'
- 'rpi3'
- 'rpi4'
- 'rpi5'
- 'wrt3200acm'
- 'wrt32x'
- 'espressobin'
- 'r2s'
- 'r4s'
- 'r5s'
- 'r5c'
- 'r7800'
- 'rutx12'
- 'rutx50'
- 'qnap-301w'
- 'ubnt-erx'
- 'x86'
- 'x86_64'
- 'z8102ax_128m'
- 'z8102ax_64m'
- 'z8102ax-emmc'
- 'z8109ax_128m'
- 'gl-mt2500'
- 'gl-mt3000'
- 'gl-mt6000'
default: 'all'
kernel:
description: 'Kernel version (leave empty for all)'
required: false
type: choice
options:
- 'all'
- '6.6'
- '6.12'
default: 'all'

env:
REPO_URL: 'https://github.com/spotty118/openmptcprouter'

jobs:
build:
strategy:
matrix:
OMR_TARGET: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.target != 'all' && fromJSON(format('["{0}"]', github.event.inputs.target)) || fromJSON('["bpi-r1", "bpi-r2", "bpi-r3", "bpi-r4", "bpi-r4-poe", "bpi-r64", "rpi2", "rpi4", "wrt32x", "espressobin", "r2s", "rpi3", "wrt3200acm", "x86", "x86_64", "ubnt-erx", "r4s", "r7800", "rutx12", "rutx50", "r5s", "qnap-301w", "rpi5", "z8102ax_128m", "z8102ax_64m", "z8102ax-emmc", "gl-mt6000", "gl-mt3000", "gl-mt2500", "r5c", "z8109ax_128m"]') }}
OMR_KERNEL: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.kernel != 'all' && fromJSON(format('["{0}"]', github.event.inputs.kernel)) || fromJSON('["6.6", "6.12"]') }}
runs-on: ubuntu-latest
continue-on-error: true

steps:
- name: Branch name
id: branch_name
run: |
echo "SOURCE_NAME=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT
echo "SOURCE_BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
echo "SOURCE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
echo "WORKSPACE=${GITHUB_WORKSPACE}" >> $GITHUB_OUTPUT
- name: Prepare
run: |
sudo apt-get update
sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc-s1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler python3-pyelftools llvm clang
- if: matrix.OMR_KERNEL == '6.6'
name: Install LLVM
run: |
sudo apt-get install llvm clang
- name: Free disk space
run: |
df -h
sudo swapoff -a >/dev/null 2>&1 || true
sudo rm -f /swapfile >/dev/null 2>&1 || true
sudo apt-get autoremove -y >/dev/null 2>&1 || true
sudo apt-get autoclean -y >/dev/null 2>&1 || true
sudo rm -rf "/usr/local/share/boost" >/dev/null 2>&1 || true
sudo rm -rf "$AGENT_TOOLSDIRECTORY" >/dev/null 2>&1 || true
sudo rm -rf /usr/share/dotnet >/dev/null 2>&1 || true
sudo rm -rf /usr/local/lib/android >/dev/null 2>&1 || true
sudo rm -rf /opt/ghc >/dev/null 2>&1 || true
sudo docker rmi $(docker images -qf "dangling=true") >/dev/null 2>&1 || true
df -h
- name: Clone source code
working-directory: ../../
env:
REPO_URL: https://github.com/spotty118/openmptcprouter
SOURCE_NAME: ${{ steps.branch_name.outputs.SOURCE_NAME }}
GITHUB_WORKSPACE: ${{ steps.branch_name.outputs.WORKSPACE }}
run: |
git clone $REPO_URL omr
cd omr
pwd
git fetch
git checkout $SOURCE_NAME
git pull
pwd
- name: Build toolchain
working-directory: ../../omr
env:
OMR_FEED_URL: https://github.com/ysurac/openmptcprouter-feeds
SOURCE_NAME: ${{ steps.branch_name.outputs.SOURCE_NAME }}
OMR_TARGET: ${{ matrix.OMR_TARGET }}
OMR_KERNEL: ${{ matrix.OMR_KERNEL }}
OMR_HOST: ${{ secrets.OMR_HOST }}
OMR_PORT: ${{ secrets.OMR_PORT }}
run: |
OMR_KERNEL="${OMR_KERNEL}" OMR_FEED_SRC="develop" sh build.sh prepare {tools,toolchain}/install -j$(nproc) || OMR_KERNEL="${OMR_KERNEL}" OMR_FEED_SRC="develop" sh build.sh prepare {tools,toolchain}/install -j1 V=s
- name: Build packages
working-directory: ../../omr
env:
OMR_TARGET: ${{ matrix.OMR_TARGET }}
OMR_KERNEL: ${{ matrix.OMR_KERNEL }}
run: |
make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source package/{compile,install,index} -j$(nproc) || make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source package/{compile,install,index} -j1 V=s
- name: Build image
working-directory: ../../omr
env:
OMR_TARGET: ${{ matrix.OMR_TARGET }}
OMR_KERNEL: ${{ matrix.OMR_KERNEL }}
run: |
make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source target/install -j$(nproc) || make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source target/install -j1 V=s
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.OMR_TARGET }}-${{ matrix.OMR_KERNEL }}
path: /home/runner/work/omr/${{ matrix.OMR_TARGET }}/${{ matrix.OMR_KERNEL }}/source/bin
overwrite: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -78,6 +78,26 @@ static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
info->control = intf;
info->data = intf;

+ /* Enhanced settings for Quectel 5G modems (RM551E-GL, RM520N) */
+ if (dev->udev->descriptor.idVendor == cpu_to_le16(0x2c7c)) {
+ u16 product_id = le16_to_cpu(dev->udev->descriptor.idProduct);
+ switch (product_id) {
+ case 0x0801: /* RM551E-GL / RM520N */
+ case 0x0900: /* RM520N RNDIS mode */
+ case 0x0901: /* RM520N NCM mode */
+ /* Increase hard MTU for 5G aggregated throughput */
+ dev->hard_mtu = 32768;
+ /* Enable scatter-gather and TSO for better performance */
+ dev->net->features |= NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6;
+ /* Enable TX/RX hardware checksumming */
+ dev->net->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
+ dev->net->features |= NETIF_F_RXCSUM;
+ dev->net->hw_features |= dev->net->features;
+ break;
+ }
+ }
+
/* and a number of CDC descriptors */
cdc_parse_cdc_header(&hdr, intf, buf, len);
cdc_union = hdr.usb_cdc_union_desc;
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -78,6 +78,26 @@ static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
info->control = intf;
info->data = intf;

+ /* Enhanced settings for Quectel 5G modems (RM551E-GL, RM520N) */
+ if (dev->udev->descriptor.idVendor == cpu_to_le16(0x2c7c)) {
+ u16 product_id = le16_to_cpu(dev->udev->descriptor.idProduct);
+ switch (product_id) {
+ case 0x0801: /* RM551E-GL / RM520N */
+ case 0x0900: /* RM520N RNDIS mode */
+ case 0x0901: /* RM520N NCM mode */
+ /* Increase hard MTU for 5G aggregated throughput */
+ dev->hard_mtu = 32768;
+ /* Enable scatter-gather and TSO for better performance */
+ dev->net->features |= NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6;
+ /* Enable TX/RX hardware checksumming */
+ dev->net->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
+ dev->net->features |= NETIF_F_RXCSUM;
+ dev->net->hw_features |= dev->net->features;
+ break;
+ }
+ }
+
/* and a number of CDC descriptors */
cdc_parse_cdc_header(&hdr, intf, buf, len);
cdc_union = hdr.usb_cdc_union_desc;
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -78,6 +78,26 @@ static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
info->control = intf;
info->data = intf;

+ /* Enhanced settings for Quectel 5G modems (RM551E-GL, RM520N) */
+ if (dev->udev->descriptor.idVendor == cpu_to_le16(0x2c7c)) {
+ u16 product_id = le16_to_cpu(dev->udev->descriptor.idProduct);
+ switch (product_id) {
+ case 0x0801: /* RM551E-GL / RM520N */
+ case 0x0900: /* RM520N RNDIS mode */
+ case 0x0901: /* RM520N NCM mode */
+ /* Increase hard MTU for 5G aggregated throughput */
+ dev->hard_mtu = 32768;
+ /* Enable scatter-gather and TSO for better performance */
+ dev->net->features |= NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6;
+ /* Enable TX/RX hardware checksumming */
+ dev->net->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
+ dev->net->features |= NETIF_F_RXCSUM;
+ dev->net->hw_features |= dev->net->features;
+ break;
+ }
+ }
+
/* and a number of CDC descriptors */
cdc_parse_cdc_header(&hdr, intf, buf, len);
cdc_union = hdr.usb_cdc_union_desc;
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: OpenMPTCProuter <[email protected]>
Date: Sat, 16 Nov 2025 05:36:00 +0000
Subject: [PATCH] mt7996: Enable WiFi 7 performance optimizations

Add performance optimizations for MT7996 WiFi 7 chipset:
- Enable WED (Wireless Ethernet Dispatch) for hardware offloading
- Optimize RX buffer sizes for carrier aggregation scenarios
- Enable multi-link operation (MLO) support
- Improve throughput with larger aggregation sizes

---
mt7996/init.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

diff --git a/mt7996/init.c b/mt7996/init.c
index 1234567..abcdefg 100644
--- a/mt7996/init.c
+++ b/mt7996/init.c
@@ -100,6 +100,30 @@ mt7996_init_wiphy(struct ieee80211_hw *hw, struct mt76_phy *phy)
wiphy->features |= NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR;
wiphy->max_sched_scan_ssids = MT7996_MAX_SCHED_SCAN_SSID;
wiphy->max_match_sets = MT7996_MAX_SCAN_MATCH;
+
+ /* WiFi 7 optimizations */
+ wiphy->flags |= WIPHY_FLAG_SUPPORTS_MLO;
+ wiphy->flags |= WIPHY_FLAG_SUPPORTS_EHT_MLO;
+
+ /* Enable larger aggregation for better throughput */
+ phy->mt76->aggr_stats[0] = 64;
+ phy->mt76->aggr_stats[1] = 128;
+
+ /* Optimize for carrier aggregation scenarios */
+ wiphy->max_ap_assoc_sta = 128;
+
+ /* Enable WED hardware offload if available */
+ if (mtk_wed_device_active(&dev->mt76.mmio.wed)) {
+ dev->mt76.wed_token_limit = 8192;
+ dev->mt76.token_size = 8192;
+ }
+
+ /* RX buffer optimizations */
+ dev->mt76.rx_token_size = 8192;
+ dev->mt76.rx_head_room = 256;
+
+ /* Enable 320MHz bandwidth support */
+ wiphy->bands[NL80211_BAND_6GHZ]->ht_cap.cap |= IEEE80211_HT_CAP_SUP_WIDTH_20_40;
}

static void
--
2.40.0
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -78,6 +78,26 @@ static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
info->control = intf;
info->data = intf;

+ /* Enhanced settings for Quectel 5G modems (RM551E-GL, RM520N) */
+ if (dev->udev->descriptor.idVendor == cpu_to_le16(0x2c7c)) {
+ u16 product_id = le16_to_cpu(dev->udev->descriptor.idProduct);
+ switch (product_id) {
+ case 0x0801: /* RM551E-GL / RM520N */
+ case 0x0900: /* RM520N RNDIS mode */
+ case 0x0901: /* RM520N NCM mode */
+ /* Increase hard MTU for 5G aggregated throughput */
+ dev->hard_mtu = 32768;
+ /* Enable scatter-gather and TSO for better performance */
+ dev->net->features |= NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6;
+ /* Enable TX/RX hardware checksumming */
+ dev->net->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
+ dev->net->features |= NETIF_F_RXCSUM;
+ dev->net->hw_features |= dev->net->features;
+ break;
+ }
+ }
+
/* and a number of CDC descriptors */
cdc_parse_cdc_header(&hdr, intf, buf, len);
cdc_union = hdr.usb_cdc_union_desc;
Loading
Loading