How a Broken Voice Chat Made Me a Riot Games–Recognized Developer
In October 2024, something strange happened to my voice. Not in real life — in Valorant. Mid-match, my teammates started complaining: "Bro, you sound like a robot." My callouts were coming through distorted, slow-motion, unintelligible. Discord? Crystal clear. Valorant's own loopback audio test? Perfect. But the moment I spoke in-game, I sounded like I was transmitting from the bottom of the ocean through a broken synthesizer.
I figured it'd fix itself in a day or two. It didn't. It wouldn't for over a year. And by the time it was over, I'd reverse-engineered my ISP's routing infrastructure, built a VPN solution used by dozens of players, and earned a Riot Gunbuddy for my trouble.
This is the story of how a community of frustrated gamers diagnosed a network problem their ISP refused to acknowledge — and how we fixed it ourselves.
The Thread That Started It All
On December 15, 2024, a user named niiiiiivya posted on Technopat — Turkey's largest tech forum:
"When I play Valorant, my voice goes through the voice chat sounding robotic and slow-motion. Discord and other platforms work fine. I've reformatted, reset my network settings, talked to my ISP, tried everything. It's been about a week and I keep researching. The interesting thing is — when I talked to others with the same problem, most of them are in Istanbul's Pendik and Kartal districts."
I saw the post three days later. My heart sank — and then raced. I wasn't alone. I'd been dealing with this since October and had started to think it was something on my end. I replied immediately:
"I'm experiencing the same issue, my location is near those areas. Are the others affected also using Superonline?"
The answer came back: Yes. Superonline. Every single one of them.
That was the first clue. And it changed everything.
The Investigation
December 2024 — Building the Case
Within days, a small community formed around the thread. I started testing systematically: VPN, GoodbyeDPI, Cloudflare WARP — all the usual suspects when an ISP is doing something funky with your traffic. VPN worked. Everything else didn't. That told me this wasn't a DPI or DNS issue. Something was wrong at the routing level.
ElCapitanBg, a user from Kartal, joined the investigation on December 23rd. He was methodical, persistent, and well-connected. He called Superonline's support line and pushed for escalation. They sent technicians — who swapped some sockets and left. Nothing changed.
Meanwhile, we opened a ticket with Riot Games. They asked for traceroutes and PingPlotter tests against 74.201.103.25. Superonline's network team requested destination and source IPs for Riot's voice servers. Both sides were looking, but neither was finding answers.
niiiiiivya summed up the sentiment:
"I really hope all this effort leads to something."
January 2025 — The Picture Comes Into Focus
More users surfaced. Pendik. Kartal. Tuzla. Maltepe. Yalova. Kocaeli. All Superonline fiber customers. All experiencing the same robotic voice. The geographic pattern was undeniable.
I suspected Superonline's CGN (Carrier-Grade NAT) device might be the culprit. I paid for a static IP to bypass it. It didn't help. Whatever was wrong, it was happening upstream of the NAT.
On January 9, I found something that did work: a WireGuard VPN tunnel through a Turkish VDS server. By routing my traffic through a different path — bypassing whatever Superonline was doing — my voice came through crystal clear. This was the breakthrough.
Then ElCapitanBg dropped a bombshell. On January 13, he shared intel from a contact — a network engineer at Turkcell (Superonline's parent company):
- Superonline's international traffic was routed through Arelion (formerly Telia Carrier), identifiable by
twelve99.netin traceroutes - The network ring serving the Pendik-Kartal-Maltepe-Soğanlık corridor was saturated — running over capacity
- This saturation caused packet loss, which destroyed real-time voice traffic
- A 100 Gigabit Ethernet upgrade was planned and expected by the end of January
Finally, we had a root cause. But the "fix" was always just around the corner — and it never arrived.
January–February 2025 — The Long Wait
The upgrade allegedly happened. The problem didn't go away. ElCapitanBg's corporate contact said "the upgrade was completed" and then stopped responding.
Community frustration boiled over. CuqKaa tried reaching out to Twitch streamers to get visibility. Users filed complaints with BTK, Turkey's telecom regulator. Some collected customer numbers to present to Superonline as a group.
Others gave up entirely:
"I'm so fed up. Look what we've been through for months. This problem started overnight. Time to quit Valorant." — CuqKaa, January 16
Meanwhile, I noticed the degradation was getting worse, not better. By February 10th:
"I don't think it'll get fixed. Five months and still the same. Getting worse every day. EA Games downloads at 2 MB/s. Turn on the VPN — back to 70 MB/s."
The problem had grown beyond Valorant. It was affecting everything that touched Superonline's international routing.
February 2025 — Publishing the Solution
On February 2nd, I tested my WireGuard VDS setup with niiiiiivya. It worked perfectly. Her ping went from 6ms to 16ms — a negligible trade-off for functional voice chat.
On February 3rd, I published the solution on GitHub: torchizm/valorant-robotik-ses-cozumu
niiiiiivya confirmed it publicly:
"We'd been searching for a solution for a long time and @torchizm developed his own method and shared it. It seems Turkcell won't provide a general fix. My ping went from 6ms to 16ms, but for a fix to this problem that difference is negligible. I've been playing without issues for 2 weeks. Many thanks to him."
The Technopat thread was marked as "Çözüldü" — Solved.
March–June 2025 — The Exodus
But "solved" didn't mean Superonline fixed anything. It meant we'd routed around them.
By March 26th, the problem had spread to everyday services: Ziraat Mobile (banking app login failures), Sahibinden (Turkey's Craigslist — loading issues), and SpeedTest showing speeds far below what people were paying for. All fixed by routing through WireGuard.
ElCapitanBg had had enough. He cancelled Superonline — they cut his signal in 10 minutes and told him the cancellation process would take 7 days. Türk Telekom came and installed in 2 hours. Both Valorant voice AND his broken Getir app worked instantly. Three days later, Superonline called: "What problem did you have? Should we send a team to check your modem?"
His farewell post was furious:
"Superonline has lost its customer focus entirely. They accept customers beyond their capacity and then exhaust the ones who speak up, acting as if the problems don't exist. I hope they collapse as soon as possible."
On June 27th, I followed suit. Applied for Türk Telekom 1000 Mbps. They came the same day. Cancelled Superonline. Never looked back.
The Aftermath
The thread lived on for over a year — 11 pages, 26+ participants — a monument to ISP negligence. Some areas self-resolved: Yalova in February, Pendik in July, Tuzla in August. But as old areas healed, new ones broke. The problem spread to Ataşehir in late 2025, with new users still reporting issues into 2026.
One user perfectly captured the Turkish internet experience:
"Getting proper internet service in my beloved country is like winning the lottery." — Prime93
Root Cause Analysis
So what actually happened? Here's the technical breakdown.
The Routing Chain
Superonline (a Turkcell subsidiary) routes its international traffic through Arelion (AS1299), a Tier 1 carrier formerly known as Telia Carrier. Their infrastructure is identifiable by twelve99.net hostnames in traceroutes. Riot's voice chat servers sit outside Turkey, so every voice packet had to traverse this path.
Ring Saturation
Superonline's metro fiber network in Istanbul uses a ring topology in the affected areas — Pendik, Kartal, Maltepe, and Soğanlık. According to the Turkcell network engineer, this ring was running at or beyond capacity. When a network ring saturates, it can't handle traffic bursts, and packets start getting dropped.
Why Voice Chat Specifically?
Voice chat uses UDP — it's real-time, latency-sensitive, and has zero tolerance for packet loss. Unlike TCP (used for web browsing, downloads, streaming), UDP doesn't retransmit lost packets. When packets are dropped:
- Web browsing slows down slightly (TCP retransmits)
- Downloads slow down (2 MB/s instead of 70 MB/s)
- Voice chat becomes robotic, garbled, or silent (no recovery possible)
This is why Valorant voice chat was the canary in the coal mine. It was the first service to visibly break, but the underlying degradation affected everything. By 2025, downloads, streaming bitrate, banking apps, and general browsing were all impacted.
CGN Complications
Superonline uses Carrier-Grade NAT for most residential customers, meaning hundreds of users share a single public IP. This makes debugging harder (you can't isolate a single user's traffic path) and adds another layer of latency and potential packet loss. However, my testing showed that a static IP didn't fix the problem — confirming the issue was upstream, in the Arelion transit path.
The Alleged Fix
Turkcell's network team planned a 100 Gigabit Ethernet upgrade for the saturated ring, originally scheduled for late January 2025. By March, the upgrade was reportedly "completed" — but the problem persisted. Whether the upgrade was insufficient, incorrectly applied, or never actually happened remains unknown. The corporate contact stopped responding.
The Solution — Full Technical Walkthrough
Since Superonline refused to fix their routing, we fixed it ourselves. The approach: route traffic through a Turkish VDS (Virtual Dedicated Server) using WireGuard, bypassing Superonline's broken international transit path entirely.
Here's how to set it up.
Step 1: Rent a Turkish VDS
Go to kapteyan.com.tr and purchase a TR SSD VDS 1 server. At the time of writing, it costs approximately 167.99 TL/month (tax included). Select Ubuntu 22.04 as the operating system.
Why a Turkish server? Because the problem is Superonline's international routing. A server inside Turkey uses domestic routing, which works fine. Your traffic goes: your PC → Superonline domestic network → Turkish VDS → international internet. The broken hop is bypassed.
You can split the cost with friends — the VPN supports multiple client profiles.
Step 2: SSH Into the Server
Install PuTTY (or use any SSH client) and connect:
ssh -l root <your-server-ip>
Enter the password you set during server provisioning.
Step 3: Run the Setup Script
Download and run the automated setup script:
curl -sfL https://raw.githubusercontent.com/torchizm/valorant-robotik-ses-cozumu/main/setup.sh -o setup.sh
chmod +x setup.sh
./setup.sh --ip <your-server-ip> --sifre <your-desired-password>
Here's what the script does under the hood:
#!/bin/bash
print_usage() {
echo "Usage: $0 --ip <ip> --sifre <sifre>"
echo " --ip : Your server's IP address (required)"
echo " --sifre : Web UI password (required)"
}
if [[ $# -eq 0 ]]; then
print_usage
exit 1
fi
while [[ $# -gt 0 ]]; do
case $1 in
--ip)
if [[ -n $2 ]]; then
ip=$2
shift 2
else
echo "Error: --ip requires an IP address"
print_usage
exit 1
fi
;;
--sifre)
if [[ -n $2 ]]; then
password=$2
shift 2
else
echo "Error: --sifre requires a password"
print_usage
exit 1
fi
;;
--yardim)
print_usage
exit 0
;;
*)
echo "Error: Unknown parameter: $1"
print_usage
exit 1
;;
esac
done
if [[ -z $ip ]]; then
echo "Error: IP address cannot be empty"
exit 1
fi
if [[ -z $password ]]; then
echo "Error: Password cannot be empty"
exit 1
fi
# Update system and install Docker
apt update && apt upgrade -y
apt install apt-transport-https ca-certificates curl software-properties-common jq -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update && apt-cache policy docker-ce
apt install docker-ce -y
# Hash the password with bcrypt
hashed_output=$(curl --request POST \
--data "password=$password&cost=10" \
https://www.toptal.com/developers/bcrypt/api/generate-hash.json | jq -r .hash)
# Remove any existing wg-easy containers
CONTAINERS=$(docker ps -a --filter "ancestor=ghcr.io/wg-easy/wg-easy" --format "{{.ID}}")
if [ ! -z "$CONTAINERS" ]; then
for CONTAINER_ID in $CONTAINERS; do
docker rm -f "$CONTAINER_ID"
done
fi
# Deploy WireGuard Easy
docker run --detach \
--name wg-easy \
--env LANG=en \
--env WG_HOST=$ip \
--env PASSWORD_HASH=$hashed_output \
--env PORT=51821 \
--env WG_PORT=51820 \
--volume ~/.wg-easy:/etc/wireguard \
--publish 51820:51820/udp \
--publish 51821:51821/tcp \
--cap-add NET_ADMIN \
--cap-add SYS_MODULE \
--sysctl 'net.ipv4.conf.all.src_valid_mark=1' \
--sysctl 'net.ipv4.ip_forward=1' \
--restart unless-stopped \
ghcr.io/wg-easy/wg-easy
The script installs Docker, hashes your password with bcrypt, and deploys wg-easy — a WireGuard server with a clean web UI for managing client profiles.
Step 4: Create Client Profiles
Open your browser and navigate to:
http://<your-server-ip>:51821
Log in with the password you set. From the web UI, create a new client profile. Download the .conf file.
Step 5: Connect with WireGuard Client
- Install the WireGuard desktop client
- Click Import tunnel(s) from file and select the
.conffile you downloaded - Click Activate
- Restart Valorant
Your voice chat should now work perfectly. Expect a small ping increase (roughly 6ms → 16ms in our testing) — completely negligible.
Step 6: Share with Friends
The real power of this setup is that you can create multiple client profiles from the wg-easy web UI. Give .conf files to your friends, split the ~168 TL/month server cost, and everyone gets working voice chat. Some users in the community started paying for 3-month blocks to get a better rate.
Note: Vodafone blocks the WireGuard protocol. This solution works for Superonline customers specifically.
The Reward
Months after publishing the solution, something unexpected happened. Riot Games noticed. The workaround had been helping players across Turkey stay in the game when their ISP had effectively broken it. Riot recognized the community contribution and awarded me a Riot Gunbuddy — an in-game weapon charm.
More than that, I became a Riot Games–recognized developer.
I started this journey as a frustrated player who just wanted to talk to his teammates. I ended it with a developer recognition from one of the biggest game studios in the world. Not bad for a networking side quest.
Lessons Learned
Community debugging is powerful. One person experiencing a problem is an anecdote. Twenty-six people across a forum thread, systematically testing hypotheses, collecting traceroutes, and sharing findings — that's an investigation. We mapped the affected geography, identified the transit provider, got intel from inside the ISP's own network team, and built a working solution. No single person could have done this alone.
When your ISP won't fix it, you fix it yourself. Superonline's responses ranged from "we don't see any issue" to "it's caused by the game you play." They sent technicians who swapped sockets. They closed tickets. They promised upgrades that either didn't work or didn't happen. In the end, a $5/month VDS and a bash script did what a billion-dollar telecom company wouldn't.
Document and share everything. The Technopat thread became a living knowledge base — 11 pages of symptoms, tests, findings, and solutions. The GitHub repo gave people a one-click fix. Without documentation, every new affected user would have started from zero. With it, they could go from "my voice sounds weird" to "voice chat works" in under an hour.
UDP is the canary. If you're experiencing mysterious quality issues with voice chat, video calls, or game networking — but web browsing and downloads seem "fine" — suspect your ISP's routing. TCP masks congestion through retransmission. UDP tells you the truth immediately.
And maybe the biggest lesson: sometimes the side quest becomes the main quest. What started as a bug turned into a months-long networking investigation, a community effort, an open-source project, and ultimately, recognition from Riot Games. All because my voice sounded like a robot.
The Technopat thread is still live at technopat.net. The solution repository is on GitHub.