"When you miss Dave, modprobe sch_cake!" — A tribute to the soul of bufferbloat mitigation.
(A Linux Pun: In our world, a wish ending in .sh is a command to be executed!)
(Making a time-traveling dream come true!)
"一支穿雲箭,千軍萬馬來相見" (One arrow pierces the clouds, and ten thousand troops come to meet.)
This Chinese idiom describes a signal so powerful it rallies everyone. Dave was that arrow. Just like fireworks are most mesmerizing in the darkest night, Dave shone brightest when fighting the invisible enemy of Bufferbloat.
- "The darker the night, the brighter the light."
- He worked tirelessly in the dead of night (just as we often do) to tame the network chaos.
- Now, "Ten Thousand" (萬) legacy devices are rallying to his call.
While digging through Dave's old blog posts and presentations, I found a chilling coincidence that proves this project was meant to be.
1. The "Archer" & The Arrow The router series I ported this to is named "Archer" (TP-Link). An Archer shoots an Arrow. This perfectly matches our tribute slogan: "一支穿雲箭 (One Cloud-Piercing Arrow)".
2. The C7 Origin In the original 2015 "Cake" presentation at Battlemesh v8, Dave and Jonathan Morton used a TP-Link Archer C7 to demonstrate that CAKE could shape traffic at 115Mbps while HTB failed.
"HTB can’t shape at 115Mbps. Cake can." — Battlemesh v8 (2015)
3. The C2 Connection In his 2016 blog post "Finally... the real net-next 4.8 fq_codel results", Dave wrote:
"I pulled the odroid C2 out, and made it the test driver..." Today, we have successfully ported his work to the TP-Link Archer C2.
Dave was the Archer. The Code is the Arrow.
Sources:
In his famous 2016 blog post "Hardware from hell", Dave expressed his frustration with locked hardware. But amidst the chaos, he had his eyes on a specific target—the MediaTek (mt76) platform.
"I tried to get a mt76 box from alibaba - sold out - this is the new hotness in the OpenWrt 802.11ac world... A turris omnia will probably become my next eval platform unless I can get a mt76 up and running." — Dave Täht (2016)
The Tragedy: He couldn't get one. It was sold out. He was forced to struggle with older devices. The Fulfillment: This repository is dedicated entirely to MT7620/MT7621 devices.
We finally got that "mt76 box" up and running for you, Dave. The "new hotness" you foresaw is now the stable foundation carrying your legacy.
🇹🇼:遲來的約定 當他在 2016 年苦尋不到一台 MT76 路由器時,也許沒想到,幾年後會有成千上萬台 MT76 設備,運行著他的 CAKE 演算法,在網路上奔馳。 Dave,這台 MT76,我們幫你跑起來了!
Source: Hardware from hell (Dave Täht, 2016)
"The darker the night, the brighter the light."
Did you know? Dave's surname "Täht" literally means "Star" in Estonian.
If this project helps you, or if you simply want to honor his legacy, please Light up the "Star" in the top-right corner of this repository.
Let's keep his Star shining bright in the open-source world, guiding packets through the dark.
We are fulfilling a specific wish he made 5 years ago on Reddit:
The BEST engineering result I ever had: Essentially the summation of my 16+ years of work to that point on making wifi better. Unpatented. Please share and enjoy. Help port the code to more chipsets.
— Dave Täht (Reddit, 5 years ago)
Original Source: Reddit - r/Starlink
Dave turned down numerous lucrative contracts to keep his code Free and Open Source. He valued global impact over prestige. Because of him, millions of devices—from Starlink satellites to rural ISP routers—deliver smoother connectivity.
👉 Read the full Memorial at LibreQoS
(Forever maintaining an open and open-source spirit)
This repository automates the building of Padavan 3.4 ng firmware. It empowers users to compile their own firmware easily using GitHub Actions, honoring the giants who paved the way.
- CAKE Integration: Supports the
sch_cakemodule (backported to 3.4) to honor Dave's legacy. - Interactive Build System: No need to edit config files manually! Just select your model and options from the menu.
- Flexible Language System: Choose between English Only (clean) or Custom Language (Localized) directly in the build menu.
"Dave’s impact on society was immense... He wanted, ultimately, to speed up the internet so that a drummer in London could play in real-time with a guitarist in Los Angeles." — Steven J. Vaughan-Nichols
"I will miss him but will be always grateful to have known him." — Vint Cerf
"Without him, Netflix and similar services might still be plagued by glitches and stutters." — Eric S. Raymond
We support a massive array of MT7620/MT7621 devices. Pick the one you love!
(This list corresponds directly to the target_select menu in the build workflow.)
| Brand | Supported Models |
|---|---|
| TP-Link | Archer C2 (V1), C20 (V1/V4/V5), C5 (V4), C50 (V1/V3/V4), EC220-G5 (V2), MR200 (V1), MR3020 (V3), MR3420 (V5), WDR7300 (V5), WR840N (V4/V5/V6/RU), WR841N (V13/V14), WR842N (V5), WR845N (V3/V4) |
| Xiaomi | MI-3, MI-3C, MI-4 (A/C/SPI), MI-4A (100M), MI-MINI, MI-NANO, MI-R3G (v1/v2/SPI), MI-R3P (Pro), R2100 (AC2100), RM-AC2100 |
| ASUS | RT-AC1200 (GU/HP), RT-AC51U, RT-AC54U, RT-N10+, RT-N11P (B1), RT-N12+, RT-N13U (B1), RT-N14U, RT-N56U (A1/B1/GE2), RP-AC56 |
| ZyXEL | Keenetic Series: Giga III, Ultra II, Extra (I/II), Lite (I/II/III/3B), Omni (I/II), Start II, Viva, 4G III (B) |
| D-Link | DIR-300 (B1/B7), DIR-320 (B1), DIR-620 (A1/D1), DIR-860L, DIR-882 |
| Newifi | Newifi D1, Newifi D2, Newifi Mini, Newifi Y1S |
| GL.iNet | GL-MT300A, GL-MT300N (V1/V2) |
| Phicomm | K2P (PSG1218), 256PSG1218 |
| ZBT | WE1326, WE1626, WE826-T2, WG3526 (-32), WR8305RT |
| Others | Ubiquiti ER-X, Linksys EA-8100, Belkin F9K1103, Totolink A3004NS, HiWiFi HC5661A, Youku L1/L1C, ZTE E8820S |
| OEM/Misc | 5K-W20, A5-V11, ALR-U270, MQ-WITI, Nexx WT3020 (A/H), Samsung SWR1100, Sercomm (S1010/SmartBox), SNR (MD1/ME1/W4N), Tuoshi TS7620N, Unielec U7621, Wall-AP, Youhua WR1200JS |
We believe in a borderless internet. The firmware now supports 14 Languages out of the box!
(Select your preferred language in the language_select menu.)
- English_Only (Default)
- CN (繁體中文) - Traditional Chinese
- RU (Pусский) - Russian
- ES (Español) - Spanish
- BR (Brazil) - Portuguese
- CZ (Česky) - Czech
- DA (Dansk) - Danish
- DE (Deutsch) - German
- FI (Finsk) - Finnish
- FR (Français) - French
- NO (Norsk) - Norwegian
- PL (Polski) - Polish
- SV (Svensk) - Swedish
- UK (Українська) - Ukrainian
This workflow uses GitHub Actions to build firmware in the cloud. You don't need a Linux PC!
- Go to the Actions tab in this repository.
- Select the workflow "Build firmware (Ultimate Fix)" (or
build.yml) from the left sidebar. - Click the Run workflow button on the right.
You will see a menu with the following options. Customize it to your liking!
-
target_select (Required):
- Choose your router model from the list (e.g.,
TL_C2-V1,MI-MINI,RT-N56U,K2P...). - Note: This list includes all supported 3.4 kernel devices.
- Choose your router model from the list (e.g.,
-
language_select (New!):
English_Only: Keeps the interface clean and lightweight.CN (繁體中文)/RU/ESetc.: Automatically adds your selected language pack.
-
nanoversion:
true: Performs extreme size optimization (removes unused modules) to fit into small flash memory (4MB/8MB).
-
customization:
- Set your default WiFi SSID, Password, and Login credentials here (JSON format).
- Click the green Run workflow button.
- The build process usually takes 15 to 40 minutes.
- When the circle turns Green (Success), click on the task.
- Scroll down to the Artifacts section to download your firmware
.zipfile.
This project is based on shvchk/padavan-builder-workflow and the incredible padavan-ng project by Sergey Hadzhioglu.
To express gratitude and support Sergey's work on Padavan-NG:
- ЮMoney wallet:
4100118647832050 - Link for quick replenishment
NO WARRANTY OR SUPPORT This product includes copyrighted third-party software. The firmware is provided "AS IS" without warranty of any kind. You expressly acknowledge that use of this software is at your sole risk. Flash at your own risk!
English | Русский
-
Fork this repository, further steps should be performed in your fork
-
Copy your build config to
build.configBuild config template can be found in the firmware repository
-
Run the build process: Actions → Build firmware → Run workflow
The build process will appear on the same page (if it doesn't appear, just refresh the page). You can get process details by clicking on it.
Depending on the build config, build process usually takes from 10 to 60 minutes.
-
While the process is in progress, its status indicator would be gold-ish circle
-
If the process finishes successfully, its status indicator would turn green with a check mark
Click on the finished process. Archive with the firmware would be stored as its artifact:
Firmware license does not permit binaries distribution, so artifacts are stored for 7 days for personal use.
-
If the process finishes with an error, its status indicator would turn red with a cross
Click on the finished process. To get details about the error, click on the failed
buildjob at the left:Job report will be opened:
Here it's immediately obvious that it was Check firmware size step that failed — it is marked with a red circle with a cross. Specific reason is shown below: Firmware size (18,492,849 bytes) exceeds max size (16,187,392 bytes) for your target device — i.e. built firmware size is too big for the target device.
In case of any error its reason is usually shown at the end of the log, as in the example above. To view full log click on the cog ⚙️ icon in the top right corner → View raw logs. You can also download compressed log archive in the same menu → Download log archive.
If you can't figure out the problem on your own, you can ask community or firmware developer for help. In this case don't forget to attach the log archive.
To sync your fork with its origin repository, just click Sync fork → Update branch at the top of the main page of your fork:
You can set the firmware repository, branch, specific tag or commit in the variables file.
In the variables file you can also specify which themes you want to install by uncommenting theme names in the PADAVAN_THEMES variable. Themes repository can be set with the PADAVAN_THEMES_REPO variable.
You can create a pre-build.sh script with any custom commands, which will be executed just before build process. By that time firmware source code is already downloaded, so you can add or change anything in it.
You can create a post-build.sh script, which will be executed right after build process.
Discussion: http://github.com/shvchk/padavan-builder-workflow/discussions/categories/general








