DSL may be less common these days, but it is still a fact of life for some. Unfortunately, many DSL modem router combination devices are outdated and slow. This leads to many home owners being unnecessarily frustrated with the internet connection speed.
A typical internet connection speed for DSL is advertised around 30 Mbps down and 2 Mbps up. When we moved from the city and started retrofitting our cabin, this was a big challenge to work around. Even though these speeds are sufficient to stream TV, the Century Link internet connection would frequently drop out. We’d suddenly lose WiFi or internet connection in the middle of a show.
No more. Here’s how we fixed the download speeds here at the cabin…
Frontier vs. Century Link Speed Tests
Frontier and Century Link are two of the largest DSL providers.
Both are available here in Colorado, which begs the question: which is better?
Unfortunately, there’s not a good answer to this. Both Frontier and Century Link have struggled to keep up with the times. They both accepted money from the US government to achieve certain performance goals which were never met. So… there are no “good” DSL options. However, there is a general truism for DSL in particular:
The fewer of your neighbors who use it, the faster it will be.
The slow speeds associated with DSL are related to its use of old technology: phone lines. This medium is especially prone to congestion, so the internet use of your neighbors will play a large role in your speed at any given time.
One quick-and-easy, obvious improvement that can be made is to buy a new modem/router. Odds are, your modem/router combo is an old an outdated model. Many people still rent their modem from the ISP, as well. It’s much cheaper to just buy your own modern modem/router:
Netgear products, such as the one above, tend to be good quality networking hardware. You should always check that the modem will work with your provider first, though.
For a more hands-on approach (and even better results)…
Using a Separate Router
It’s possible to only use the modem part of the modem/router.
This is called “transparent bridging” or “access point” mode. If you look at the instructions for your device (try googling the serial number on the modem), you should find a section devoted to enabling this feature.
Transparent bridging removes the router feature.
You will need to provide your own router, instead.
Not clear on the difference between a modem and a router?
It's easy to get lost in the complex world of networking. Based on years of experience, this guide is meant as an easy way for non-experts to learn how to increase internet speed.
The advantage is that dedicated routers are much faster. For example, the Netgear Orbi is my favorite and one of the best WiFi routers available. It has a “dedicated backhaul” channel and plenty of ethernet ports, which basically means it’s a very fast router.
No products found.
Another nice thing about this router is that it supports PPP…
PPP(oE) Authentication
PPP(oE) is often used to authenticate with DSL providers.
To connect to the internet, a username/password must be provided. In many cases, the ISP (e.g., CenturyLink) provides a modem for this purpose. Said modem can usually be put into “passthrough” or “transparent bridge” mode. In this case, the PPP authentication is left to the device which is connected to the LAN port on the modem.
If you have a Mac (OSX), you can connect directly to a modem which is in “transparent bridge” mode by creating such a PPP connection. Just open the Networking Preferences pane and use the + (plus) button to create a new PPPoE connection:
After entering your username and password for the ISP, you should be able to connect directly to the internet when the modem (in transparent bridge mode) is connected to your computer.
Likewise, you’d need to configure the PPP authentication with the router. For example, if you purchased the Orbi routers above, you’d use the Netgear Orbi management page (which you accessed when setting up the router) to enable the feature.
Or… you could go one step further.
Build your Own Router
You can use a Raspberry Pi or other Linux-based home server as a router.
Running a custom router gives unprecedented insight into everything happening in a network. Building your own router with a a Raspberry Pi may be a little daunting, but it's surprisingly easy and rewarding to do... and the benefits are tremendous.
The trick is the ppp authentication. Thankfully, There’s a Package for That (TM).
sudo apt install pppoeconf
Running pppoeconf from the command line will automatically detect the DSL connection (or, you can provide e.g. eth1 as an argument). The install wizard is pretty simple and gives advice along the way. The only place I deviated from the defaults was that I asked it to not manage /etc/resolv.conf. There are a number of reasons for this, such as the fact that I run my own DHCP and DNS server on the Raspberry Pi as part of it’s role as a router.
In most cases, that’ll get you online… but there may be other complications.
Other DSL Weirdness
There are some extra steps to take if you encounter any bugs, especially things like if the internet connection keeps dropping and reconnecting.
The last step created the ppp0 (WAN) interface, which is in addition to the eth0 (LAN) interface. This exposes the problem of Maximum Transmission Units, or MTUs.
Type ifconfig on a raspberry pi, and you’ll see the mtu next to each network interface. Notice that pppoeconf defaults the ppp0 interface to a mtu of 1492, rather than the “standard” value of 1500.
The PPP protocol consumes 8 bytes of data.
1500 – 8 = 1492 (the standard mtu value for a PPP connection).
The problem is that 1500 is a much more common default value. So while the ppp0 interface will have a mtu of 1492, the eth0 (LAN) interface may be 1500.
So it’s entirely possible the two interfaces have different mtus. Strange bug arise when different interfaces in the “chain” have different values, including:
Inability to connect to certain devices.
Failure to load certain https websites.
Sometimes, failure to connect at all.
These bugs were hard to track down at first. With only a couple of websites, any attempts to curl -v would indicate some sort of HTTPS termination/error. It tuns out, the HTTPS handshaking is especially brittle to mtu disruption. Check out the official Debian docs for very good information on finding and setting MTU.
It may be possible that a DSL provider will support the higher mtu, in which case you can edit /etc/ppp/peers/dsl-provider to include the line mtu xxxx and make the two match (and then restart). Or you can leave the ppp0 interface at 1492, and change the eth0 interface to the same value:
sudo ifconfig eth0 mtu 1492 up
That should immediately make the internet access bugs go away. To make it permanent, instead edit /etc/network/interfaces to include:
iface eth0 inet dhcp
pre-up /sbin/ifconfig $IFACE mtu 1492
Now when you reboot, ifconfig should show 1492 for both eth0 and ppp0.
Next Steps
This post was really a tangent from the meta-topic of building a Raspberry Pi router and setting up home networking:
This site began as a place to document DIY projects. It's grown into a collection of IOT projects, technical tutorials, and how-to guides. Read more about this site...
Types of Waterproof Cases IP67 enclosures and connectors are the most common and versatile for outdoor usage. The IP67 rating means that the waterproof case can handle up to thirty minutes in partially submerged water (read about the IP ratings)...
Building a DIY Raspberry Pi security camera is much easier than it might sound thanks to open-source security camera software. We use several such cameras placed around the house, as part of our DIY CCTV security camera system. One such camera is...
Dashcams (video cameras in cars) are a great security and safety feature. As with the rest of the vanlife IOT, I built my own DIY dashcam that has some unique features — like motion detection and automatic recording. On its surface, this is a post...
It's easy to get lost in the complex world of networking. Based on years of experience, this guide is meant as an easy way for non-experts to learn how to increase internet speed. Engineers like myself like to start troubleshooting by isolating the...
A DIY smart doorbell with a built-in camera, microphone, and speaker. This steampunk-themed design integrates with home assistant and our multi-room audio system to communicate with the rest of our DIY smart home. Rather than buying a Ring Doorbell...
Running a custom router gives unprecedented insight into everything happening in a network. Building your own router with a a Raspberry Pi may be a little daunting, but it's surprisingly easy and rewarding to do... and the benefits are tremendous...