The main function of the QoS plugin is to manage the network traffic between the local area network and the public network. By using different algorithms, it allocates priorities to different types of traffic, thereby improving overall network performance. In my long-term environment where both upload and download are fully utilized (BT, PCDN, etc.), configuring QoS is quite necessary if I want to avoid affecting daily household usage, such as gaming and streaming.
Introduction to QoS Mate
QoS Mate is a newly released OpenWRT plugin on the OpenWRT forum, supporting almost all OpenWRT architectures, whether it is X86, mipsel_24kc, arm_cortex-a9, or arm_cortex-a7. Additionally, since the author of QoS Mate has provided binary executable files, there is no need to pre-compile or recompile the firmware for installation, making it very convenient.
Supported Algorithms
QoS Mate offers two queuing algorithms for users to choose from: HFSC (Hierarchical Fair Service Curve) and CAKE (Common Applications Kept Enhanced).
- HFSC: Suitable for environments that require fine control over different types of traffic. It ensures that real-time applications (such as online gaming and VoIP) are prioritized in bandwidth allocation through hierarchical scheduling.
- CAKE: The CAKE algorithm is one that most people are familiar with, designed to simplify and optimize home networks. It features automatic adjustment of network bandwidth to help reduce latency issues, especially when multiple devices are connected to the network simultaneously.
Automatic Configuration of the Plugin
QoS Mate provides an automatic setup option that analyzes the user’s network conditions through automatic speed tests and makes corresponding adjustments based on the test results. Users can simply click “Auto Setup,” and QoS Mate will automatically calculate the optimal download and upload rates, adjusting traffic allocation according to the actual network bandwidth. It also allows users to input the IP address of gaming devices to ensure that gaming traffic is prioritized, which is particularly beneficial for applications that require low latency.
Gaming Traffic Optimization
In addition to the automatic configuration feature, QoS Mate also offers specific options for optimizing gaming traffic. By setting specific queuing algorithms (such as pfifo or fq_codel), it ensures that gaming packets enjoy low-latency priority during transmission, thereby improving the smoothness of online gaming and reducing latency and packet loss.
Comparison with SQM
When discussing QoS management, another common OpenWRT plugin—SQM (Smart Queue Management)—must be mentioned. As a widely used plugin, SQM also manages home network traffic effectively. The comparison of functionalities between QoS Mate and SQM is as follows:
| Feature | QoS Mate | SQM | 
| Scheduling Algorithm | Supports HFSC and CAKE | Mainly supports CAKE and fq_codel | 
| Automatic Configuration Feature | Supported, automatically tests speed and configures bandwidth limits and priorities based on results | No automatic testing feature, manual bandwidth limit settings required | 
| Gaming Optimization | Provides dedicated gaming traffic optimization, supports manual device priority specification | No dedicated gaming optimization feature, mainly relies on CAKE scheduling | 
| Flexibility | Offers more advanced configuration options, suitable for users with network management experience | Simple configuration, suitable for average users | 
| User Interface | More complex configuration, provides finer control | Simple and user-friendly interface | 
QoS Mate provides more flexible network traffic management features than SQM, especially its optimization capabilities for gaming traffic, making it very suitable for users with higher network quality requirements. Additionally, QoS Mate can perform automatic speed testing and configuration, lowering the barrier to using QoS plugins.
Installation Method for QoS Mate
Currently, QoS Mate does not provide a *.ipk package installation method and cannot be installed directly via opkg. It needs to be installed via SSH in the terminal.
Installation Notes
Before installing QoS Mate, please ensure:
- Any existing QoS services or scripts (such as SQM, Qosify, DSCPCLASSIFY, SimpleHFSCgamerscript, etc.) are disabled and stopped to avoid conflicts.
- Restart the router to clear old settings and ensure a clean startup environment.
- The QoS plugin must be installed on the main router, which is directly connected to the external network. Installing it on a secondary router or gateway will not work, and if hardware acceleration is used, there may be situations where precise control is not possible.
- Use a version of the firmware that is closer to the official OpenWRT firmware, such as ImmortalWRT. You can refer to the comparison of mainstream OpenWRT firmware in 2025 | Deep Router.
Installation of QoS Mate Backend Executable Files
Use the following command to install the QoS Mate backend (which includes the main script/initialization script/hotplug and configuration files):
wget -O /etc/init.d/qosmate https://raw.githubusercontent.com/hudra0/qosmate/main/etc/init.d/qosmate && chmod +x /etc/init.d/qosmate && wget -O /etc/qosmate.sh https://raw.githubusercontent.com/hudra0/qosmate/main/etc/qosmate.sh && chmod +x /etc/qosmate.sh && wget -O /etc/config/qosmate https://raw.githubusercontent.com/hudra0/qosmate/main/etc/config/qosmateShell
Copy
If you cannot connect to raw.githubusercontent.com, you can use the command below to install, or replace it with another usable CDN:
wget -O /etc/init.d/qosmate https://raw.staticdn.net/hudra0/qosmate/main/etc/init.d/qosmate && chmod +x /etc/init.d/qosmate && wget -O /etc/qosmate.sh https://raw.staticdn.net/hudra0/qosmate/main/etc/qosmate.sh && chmod +x /etc/qosmate.sh && wget -O /etc/config/qosmate https://raw.staticdn.net/hudra0/qosmate/main/etc/config/qosmateShell
Copy
Installation of Luci Frontend Control Page
Unlike the installation methods of other OpenWRT plugins we are familiar with, the installation of the QosMate frontend UI control interface is done by directly creating directories and page files in the /www/luci-static/resources/view folder, without using the *.ipk package installation method. I personally speculate that the author may not want to compile software packages for various OpenWRT architectures, but this is not certain.
mkdir -p /www/luci-static/resources/view/qosmate /usr/share/luci/menu.d /usr/share/rpcd/acl.d /usr/libexec/rpcd && wget -O /www/luci-static/resources/view/qosmate/settings.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/settings.js && wget -O /www/luci-static/resources/view/qosmate/hfsc.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/hfsc.js && wget -O /www/luci-static/resources/view/qosmate/cake.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/cake.js && wget -O /www/luci-static/resources/view/qosmate/advanced.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/advanced.js && wget -O /www/luci-static/resources/view/qosmate/rules.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/rules.js && wget -O /www/luci-static/resources/view/qosmate/connections.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/connections.js && wget -O /www/luci-static/resources/view/qosmate/custom_rules.js https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/custom_rules.js && wget -O /usr/share/luci/menu.d/luci-app-qosmate.json https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/root/usr/share/luci/menu.d/luci-app-qosmate.json && wget -O /usr/share/rpcd/acl.d/luci-app-qosmate.json https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/root/usr/share/rpcd/acl.d/luci-app-qosmate.json && wget -O /usr/libexec/rpcd/luci.qosmate https://raw.githubusercontent.com/hudra0/luci-app-qosmate/main/root/usr/libexec/rpcd/luci.qosmate && chmod +x /usr/libexec/rpcd/luci.qosmate && /etc/init.d/rpcd restart && /etc/init.d/uhttpd restartShell
Copy
If you cannot connect to raw.githubusercontent.com, you can use the command below to install:
mkdir -p /www/luci-static/resources/view/qosmate /usr/share/luci/menu.d /usr/share/rpcd/acl.d /usr/libexec/rpcd && wget -O /www/luci-static/resources/view/qosmate/settings.js https://raw.staticdn.net/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/settings.js && wget -O /www/luci-static/resources/view/qosmate/hfsc.js https://raw.staticdn.net/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/hfsc.js && wget -O /www/luci-static/resources/view/qosmate/cake.js https://raw.staticdn.net/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/cake.js && wget -O /www/luci-static/resources/view/qosmate/advanced.js https://raw.staticdn.net/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/advanced.js && wget -O /www/luci-static/resources/view/qosmate/rules.js https://raw.staticdn.net/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/rules.js && wget -O /www/luci-static/resources/view/qosmate/connections.js https://raw.staticdn.net/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/connections.js && wget -O /www/luci-static/resources/view/qosmate/custom_rules.js https://raw.staticdn.net/hudra0/luci-app-qosmate/main/htdocs/luci-static/resources/view/custom_rules.js && wget -O /usr/share/luci/menu.d/luci-app-qosmate.json https://raw.staticdn.net/hudra0/luci-app-qosmate/main/root/usr/share/luci/menu.d/luci-app-qosmate.json && wget -O /usr/share/rpcd/acl.d/luci-app-qosmate.json https://raw.staticdn.net/hudra0/luci-app-qosmate/main/root/usr/share/rpcd/acl.d/luci-app-qosmate.json && wget -O /usr/libexec/rpcd/luci.qosmate https://raw.staticdn.net/hudra0/luci-app-qosmate/main/root/usr/libexec/rpcd/luci.qosmate && chmod +x /usr/libexec/rpcd/luci.qosmate && /etc/init.d/rpcd restart && /etc/init.d/uhttpd restartShell
Copy
🤗 QoS Mate User Guide
After installation, start the QoS Mate service with the following command:
/etc/init.d/qosmate startShell
Copy
Alternatively, you can use the OpenWRT LuCI control page.
- Access the OpenWRT LuCI control web interface and open Network - QoS Mate.
- Configure basic settings. For basic configuration, adjust the following key parameters:
- WAN Interface: Select your WAN interface, usually wan
- Download Speed (kbps): Set to 80%-90% of the actual download speed
- Upload Speed (kbps): Set to 80%-90% of the actual upload speed
- Root Queue Scheduling Algorithm: Choose HFSC (default) or CAKE
- Apply changes.
Automatic Configuration
If you prefer automatic configuration, QoS Mate provides an auto setup feature:
- On the QoS Mate settings page, click Start Auto Setup.
- (Optional) Enter the IP address of the gaming device to prioritize its traffic; the address supports IPv4 and IPv6.
- Wait for the broadband network speed test and configuration to complete.
Note: Router-based speed tests may underestimate your actual speed. For more accurate settings, you can run speed tests from LAN devices, such as using fast.com or speedtest, and manually input the results. The automatic setup provides convenience for initial configuration, but manual fine-tuning may be needed for optimal performance.
Known Issues
If you cannot start QoS Mate using the /etc/init.d/qosmate command, or if you cannot start QoS Mate through the LuCI control page and receive an XHR error, it is generally due to the inability to access raw.githubusercontent.com in China, leading to connection timeouts. You need to modify the /etc/init.d/qosmate file:
Open the /etc/init.d/qosmate file using vim and modify the SCRIPT_URL and HOTPLUG_SCRIPT_URL to replace them with the mirror CDN addresses:
SCRIPT_URL="https://raw.staticdn.net/hudra0/qosmate/main/etc/qosmate.sh"
HOTPLUG_SCRIPT_URL="https://raw.staticdn.net/hudra0/qosmate/main/etc/hotplug.d/iface/13-qosmateHotplug"