Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
31 changes: 16 additions & 15 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ on:
default: 1
required: true

permissions:
contents: write

jobs:
build-release:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -53,6 +56,7 @@ jobs:
# Update the updateJson URL inside module.prop
BRANCH_NAME="${GITHUB_REF#refs/heads/}"
sed -i "s|^updateJson=.*|updateJson=https://raw.githubusercontent.com/${{ github.repository }}/${BRANCH_NAME}/update.json|g" module.prop
sed -i "s|^banner=.*|banner=https://raw.githubusercontent.com/${{ github.repository }}/${BRANCH_NAME}/banner.png|g" module.prop

cat module.prop

Expand All @@ -74,6 +78,8 @@ jobs:
cd ./module
MODULE_NAME="TCP_Optimiser-${{ env.new_version }}-${{ env.new_versioncode }}"
zip -r "../$MODULE_NAME.zip" . -x "*.git*" -x ".github/*" -x "*.yml" -x "README.md"
echo "ZIP contents:"
unzip -l "../$MODULE_NAME.zip" | head -20

- name: Upload Artifact
uses: actions/upload-artifact@v4
Expand All @@ -82,22 +88,17 @@ jobs:
path: "*.zip"

- name: Create Release
id: create_release
uses: actions/create-release@v1
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ env.new_version }}
release_name: ${{ env.new_version }}
draft: true
prerelease: ${{ github.ref == 'refs/heads/main' && 'false' || 'true' }}

- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./TCP_Optimiser-${{ env.new_version }}-${{ env.new_versioncode }}.zip
asset_name: TCP_Optimiser-${{ env.new_version }}-${{ env.new_versioncode }}.zip
asset_content_type: application/zip
name: v${{ env.new_version }}
body: |
TCP Optimiser v${{ env.new_version }}

中文汉化版 - 酷安 @R1263599071
draft: false
prerelease: false
files: TCP_Optimiser-${{ env.new_version }}-${{ env.new_versioncode }}.zip
generate_release_notes: true
2 changes: 1 addition & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,4 +89,4 @@ jobs:
name: release-assets
path: |
${{ env.checked_out_branch }}/CHANGELOG.md
${{ env.checked_out_branch }}/update.json
${{ env.checked_out_branch }}/update.json
51 changes: 29 additions & 22 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,29 @@
1. Fix multiq total_bands detection.
2. Update service.sh timings to prevent some race conditions. [OnePlus devices]
3. Create post-fs-data.d directory if it doesn't exist.
4. Add support for local tc binary which supports all qdics.
5. Fix qdisc reset in following cases:
- Toggle Airplane Mode.
- Toggle WiFi / Cellular.
6. Add qdisc monitor to prevent netd from changing qdisc.
7. Simplify fq_codel leaf queue for htb.
8. Add bbr3 detection in post-fs stage.
9. Enable full screen mode to prevent navigation bar from interfering.
10. Add pfifo_head_drop, pie, fq_pie and cake full support.
11. Optimize sysctl parameters for low latency, high throughput and stability.
12. Add newly introduced PLB sysctl param support for optimisations.
13. Reduce initrwnd max value to 20 based on RFC 6928.
14. Set tcp_mem dynamically.

Note:
1. More qdisc tuning will be added in next version when I get more information from many users.
2. qdisc fine-tuning currently doesn't support custom mode. Might be added in future.
3. If your kernel supports bbr3, then please use fq / cake / fq_pie for best results.
4. Some kernels convert bbrv1 to bbrv3 and keep the name as bbr. Even in that case use fq / cake / fq_pie instead of other qdisc.
1. 修复 multiq total_bands 检测问题。
2. 更新 service.sh 时序以防止某些竞争条件。[OnePlus 设备]
3. 如果 post-fs-data.d 目录不存在则创建。
4. 添加本地 tc 二进制文件支持,支持所有 qdisc。
5. 修复以下情况下的 qdisc 重置问题:
- 切换飞行模式。
- 切换 Wi-Fi / 蜂窝数据。
6. 添加 qdisc 监视器以防止 netd 更改 qdisc。
7. 简化 htb 的 fq_codel 叶子队列。
8. 在 post-fs 阶段添加 bbr3 检测。
9. 启用全屏模式以防止导航栏干扰。
10. 添加 pfifo_head_drop、pie、fq_pie 和 cake 的完整支持。
11. 优化 sysctl 参数以实现低延迟、高吞吐量和稳定性。
12. 添加新引入的 PLB sysctl 参数支持以进行优化。
13. 根据 RFC 6928 将 initrwnd 最大值减少到 20。
14. 动态设置 tcp_mem。
15. **新增**:网络质量检测 - 自动检测网络延迟和抖动,根据网络状况优化参数。
16. **新增**:Android 17+ 支持 - 支持新内核特性(如 MPTCP、TCP 优先级等)。
17. **新增**:智能参数调整 - 根据 Wi-Fi 频段自动调整 TCP pacing 参数。
18. **新增**:系统信息记录 - 启动时记录系统信息,便于调试。
19. **优化**:代码重构 - 集中管理网络配置,减少代码重复约 60 行。
20. **优化**:WebUI - 添加网络质量显示、Android 版本和内核版本信息。
21. **优化**:错误处理 - 增强调试信息和日志记录。

注意:
1. 当我从更多用户获取更多信息后,将在下一版本中添加更多 qdisc 调优。
2. qdisc 微调目前不支持自定义模式。未来可能会添加。
3. 如果你的内核支持 bbr3,请使用 fq / cake / fq_pie 以获得最佳效果。
4. 某些内核将 bbrv1 转换为 bbrv3 并保持名称为 bbr。即使在这种情况下,也请使用 fq / cake / fq_pie 而不是其他 qdisc。
77 changes: 43 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,44 @@
# TCP_Optimiser_Module
A Magisk/KernelSU module to change tcp congestion algorithm based on current active internet type and some network enhancements.

# Why?
In certain kernel, TCP Congestion Algorithm BBR might be enabled. Or you want to enable certain algorithm or settings based on what interface you are using. I observed that in my kernel, when i use BBR with WiFi I get 50-60 Mbps more upload speed compared to cubic, but BBR gives bad upload speed in cellular. So I designed this module to switch based on active internet facing interface.

# Features
1. Set TCP Congestion Algorithm based on interface(Wi-Fi/Cellular).
2. Auto Change TCP Congestion Algorithm on interface change.
3. Set initcwnd and initrwnd value to max.

# How to use
1. Install the module.
2. It creates 2 files `wlan_{algo}_{qdisc}` and `rmnet_data_{algo}_{qdisc}` in module folder.
3. Reboot device.
4. Basic Functionality of module must run normally on boot.

# Tuning Module by files [/data/adb/modules/tcp_optimiser]
1. TCP Congestion Algorithm can be changed for given interface by editing `{algo}` part of file name. `wlan_{algo}_{qdisc}` for Wi-Fi and `rmnet_data_{algo}_qdisc` for Cellular.
2. Queuing Disciplines can be changed for given interface by editing `{qdisc}` part of file name. `wlan_{algo}_{qdisc}` for Wi-Fi and `rmnet_data_{algo}_qdisc` for Cellular.
3. Create an empty file named `initcwnd_initrwnd` to set initcwnd and initrwnd value to max values.
4. Create an empty file named `kill_connections` to kill all connections during switch. [Be carefull!]
5. Create an empty file named `force_apply` to apply changes immediately.

# Tuning Module by WebUI
All the module settings can be controlled using Module WebUI in KSU and APatch or KsuWebUIStandalone app for Magisk.

## Note:
1. `{algo}` in filename can be any TCP congestion algorithm (cubic, bbr, reno etc..).
2. `{qdisc}` in filename can be any Queuing Disciplines (fq, fq_codel, pfifo_fast etc..).
3. Default algorithm is **cubic** for **cellular**.
4. Default algorithm is **bbr** if exists for **WiFi**. Else **cubic**.
5. There is an option to kill current tcp connections during algorithm change. This will stop downloads, uploads or other ongoing connections. So apps affected might need to be restarted. This is disabled by default.
6. Algorithm is applied only if present in kernel.
7. Module logs are present in `/data/adb/modules/tcp_optimiser/service.log`.
一个 Magisk/KernelSU 模块,根据当前活跃的网络类型自动切换 TCP 拥塞控制算法,并提供一些网络增强功能。

**原项目**: [fatalcoder524/TCP_Optimiser_Module](https://github.com/fatalcoder524/TCP_Optimiser_Module)

**二改汉化**: 酷安 @R1263599071

# 为什么?
在某些内核中,TCP 拥塞控制算法 BBR 可能已经启用。或者你想根据使用的接口启用特定的算法或设置。我观察到在我的内核中,当我在 Wi-Fi 上使用 BBR 时,上传速度比 cubic 快 50-60 Mbps,但 BBR 在蜂窝网络上上传速度较差。所以我设计了这个模块,根据活跃的网络接口自动切换。

# 功能
1. 根据接口(Wi-Fi/蜂窝数据)设置 TCP 拥塞控制算法。
2. 接口切换时自动更改 TCP 拥塞控制算法。
3. 将 initcwnd 和 initrwnd 值设置为最大值。
4. **网络质量检测**:自动检测网络延迟和抖动,根据网络状况优化参数。
5. **Android 17+ 支持**:支持新内核特性(如 MPTCP、TCP 优先级等)。
6. **智能参数调整**:根据 Wi-Fi 频段自动调整 TCP pacing 参数。
7. **系统信息记录**:启动时记录系统信息,便于调试。
8. **代码优化**:集中管理网络配置,减少代码重复。

# 如何使用
1. 安装模块。
2. 模块会在模块文件夹中创建 2 个文件:`wlan_{algo}_{qdisc}` 和 `rmnet_data_{algo}_{qdisc}`。
3. 重启设备。
4. 模块的基本功能会在开机时正常运行。

# 通过文件调整模块设置 [/data/adb/modules/tcp_optimiser]
1. 通过编辑文件名中的 `{algo}` 部分来更改给定接口的 TCP 拥塞控制算法。Wi-Fi 使用 `wlan_{algo}_{qdisc}`,蜂窝数据使用 `rmnet_data_{algo}_qdisc`。
2. 通过编辑文件名中的 `{qdisc}` 部分来更改给定接口的队列调度规则。Wi-Fi 使用 `wlan_{algo}_{qdisc}`,蜂窝数据使用 `rmnet_data_{algo}_qdisc`。
3. 创建一个名为 `initcwnd_initrwnd` 的空文件,将 initcwnd 和 initrwnd 值设置为最大值。
4. 创建一个名为 `kill_connections` 的空文件,在切换时断开所有连接。[请小心!]
5. 创建一个名为 `force_apply` 的空文件,立即应用更改。

# 通过 WebUI 调整模块设置
所有模块设置都可以通过 KSU 和 APatch 的模块 WebUI 或 Magisk 的 KsuWebUIStandalone 应用来控制。

## 注意:
1. 文件名中的 `{algo}` 可以是任何 TCP 拥塞控制算法(cubic、bbr、reno 等)。
2. 文件名中的 `{qdisc}` 可以是任何队列调度规则(fq、fq_codel、pfifo_fast 等)。
3. **蜂窝数据**的默认算法是 **cubic**。
4. **Wi-Fi** 的默认算法是 **bbr**(如果内核支持)。否则使用 **cubic**。
5. 有一个选项可以在算法切换时断开当前 TCP 连接。这会停止正在进行的下载、上传或其他连接,受影响的应用可能需要重启。默认禁用此功能。
6. 算法仅在内核中存在时才会应用。
7. 模块日志位于 `/data/adb/modules/tcp_optimiser/service.log`。
185 changes: 185 additions & 0 deletions UPDATE_SUMMARY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
# TCP Optimiser Module 更新总结

## 提交信息
- **提交哈希**: 873f565
- **提交时间**: 2026-01-XX
- **主要改动**: 中文汉化与代码优化

## 改动统计
- **文件数量**: 18 个文件
- **新增行数**: 429 行
- **删除行数**: 279 行
- **净增行数**: 150 行

## 主要改动内容

### 1. 中文汉化 (13个文件)
#### 文档文件
- **README.md**: 完整的功能说明、使用方法、配置说明
- **CHANGELOG.md**: 更新日志
- **module/module.prop**: 模块描述

#### Web UI 界面
- **module/webroot/index.html**: 标题、导航栏(首页/设置/日志)
- **module/webroot/pages/home.html**: 状态页面标签
- **module/webroot/pages/settings.html**: 设置页面所有选项和按钮
- **module/webroot/pages/logs.html**: 日志页面标题和按钮

#### JavaScript 文件
- **module/webroot/js/home.js**: 状态文本、错误提示
- **module/webroot/js/settings.js**: 错误提示、成功提示
- **module/webroot/js/common.js**: 错误提示、版本信息
- **module/webroot/js/router.js**: 页面加载错误提示
- **module/webroot/js/logs.js**: 错误提示

#### 安装脚本
- **module/customize.sh**: 安装时显示的提示信息

### 2. 代码优化 (5个文件)

#### 新增文件
- **module/network_config.sh**: 集中管理网络配置,减少代码重复

#### 核心脚本优化
- **module/service.sh**:
- 加载共享配置文件
- 新增网络质量检测功能
- 优化 qdisc 监视器逻辑
- 增强调试信息

- **module/post-fs-data.sh**:
- 加载共享配置文件
- 减少重复代码

- **module/utils.sh**:
- 增强日志功能
- 添加调试模式支持
- 添加系统信息记录功能

#### Web UI 优化
- **module/webroot/css/home.css**:
- 添加网络质量显示区域样式

### 3. 新增功能

#### 网络质量检测
- 自动检测网络延迟(ping)
- 自动检测网络抖动
- 根据网络状况自适应优化参数
- WebUI 实时显示网络质量信息

#### Android 17+ 支持
- 支持 MPTCP(多路径 TCP)
- 支持 TCP 优先级
- 支持 TCP 内存压力管理
- 支持增强拥塞控制

#### 智能参数调整
- 根据 Wi-Fi 频段自动调整 TCP pacing 参数
- 高抖动网络自动增加缓冲区
- 低延迟网络启用快速打开

#### 系统信息记录
- 启动时记录 Android 版本
- 启动时记录内核版本
- 启动时记录可用拥塞算法
- 便于调试和问题排查

### 4. 错误处理增强
- 添加调试模式支持(DEBUG_MODE=1)
- 增强日志记录功能
- 改进错误提示信息(中文)
- 添加更详细的调试信息

### 5. 文档更新
- **README.md**:
- 新增功能说明
- 更新配置说明
- 添加 Android 17+ 相关说明

- **CHANGELOG.md**:
- 记录版本 2.5 的所有改动
- 详细说明新增功能
- 记录优化内容

## 技术细节

### 代码架构优化
1. **配置集中管理**: 创建 network_config.sh 集中管理所有 sysctl 参数
2. **减少重复**: 消除 service.sh 和 post-fs-data.sh 中约 60 行重复代码
3. **模块化设计**: 提高代码可维护性和一致性

### 网络优化策略
1. **自适应参数**: 根据网络延迟和抖动自动调整参数
2. **频段优化**: 根据 Wi-Fi 频段(2.4G/5G/6G)优化 pacing 参数
3. **缓冲区管理**: 高抖动网络自动增加 TCP 缓冲区

### Android 17+ 特性支持
1. **MPTCP**: 多路径 TCP 支持,提高网络可靠性
2. **TCP 优先级**: 支持应用层优先级设置
3. **内存管理**: 优化 TCP 内存压力阈值
4. **拥塞控制**: 支持增强拥塞控制算法

## 测试建议

### 基础测试
1. 安装模块后重启设备
2. 检查模块状态是否正常
3. 查看日志文件确认无错误

### 网络质量测试
1. 连接 Wi-Fi,查看 WebUI 中的网络质量信息
2. 切换到蜂窝数据,观察网络质量变化
3. 测试不同网络环境下的延迟和抖动

### 功能测试
1. 测试 Wi-Fi/蜂窝数据自动切换
2. 测试 qdisc 监视器是否正常工作
3. 测试 initcwnd/initrwnd 设置是否生效

### 性能测试
1. 使用 Speedtest 测试上传/下载速度
2. 测试网络延迟(ping)
3. 测试大文件下载稳定性

## 兼容性说明

### 支持的 Android 版本
- Android 16 ✅
- Android 17 ✅ (新增支持)

### 支持的设备
- OPPO Find X8 Ultra ✅
- 其他搭载高通骁龙处理器的设备 ✅

### 支持的内核特性
- BBR/BBRv3 ✅
- fq/fq_codel/cake 等 qdisc ✅
- MPTCP (如果内核支持) ✅
- TCP 优先级 (如果内核支持) ✅

## 下一步计划

1. **收集用户反馈**: 从更多用户获取使用反馈
2. **性能优化**: 进一步优化网络参数
3. **功能扩展**: 添加更多 qdisc 调优选项
4. **兼容性测试**: 在更多设备上测试兼容性

## 注意事项

1. **备份数据**: 更新前建议备份当前配置
2. **测试稳定性**: 更新后测试网络稳定性
3. **查看日志**: 如遇问题查看 `/data/adb/modules/tcp_optimiser/service.log`
4. **恢复默认**: 如需恢复默认,删除模块文件夹中的配置文件

## 更新日志

### 版本 2.5 (当前版本)
- 中文汉化完成
- 代码架构优化
- 新增网络质量检测
- 支持 Android 17+
- 智能参数调整
- WebUI 改进
- 错误处理增强
- 文档更新
Loading