Internet WiFi improvement

After putting up with slow glitchy WiFi Internet for years, I investigate improvements. Upgrading the router, switching to a high-gain antenna, and installing a buried Ethernet cable all offer increasing speeds.
statistics, decision-theory, technology, personal, shell, R
2016-10-202017-01-05 finished certainty: highly likely importance: 6


My lap­top in my apart­ment receives Inter­net via a WiFi repeater to another house, yield­ing slow speeds and fre­quent glitch­es. I replaced the obso­lete WiFi router and increased con­nec­tion speeds some­what but still inad­e­quate. For a bet­ter solu­tion, I used a direc­tional antenna to con­nect directly to the new WiFi router, which, con­trary to my expec­ta­tions, yielded a ~6× increase in speed. Exten­sive bench­mark­ing of all pos­si­ble arrange­ments of laptops/dongles/repeaters/antennas/routers/positions shows that the anten­na+router is inex­pen­sive and near opti­mal speed, and that the only pos­si­ble improve­ment would be a hard­wired Eth­er­net line, which I installed a few weeks later after learn­ing it was not as diffi­cult as I thought it would be.

I con­nect to the Inter­net over , from the main room in my apart­ment to the WiFi pro­vided by a cable modem sub­scrip­tion in a neigh­bor­ing house. The house is ~23 meters away, but the house is large with cement foun­da­tions, and the com­puter room with the cable & modem is itself another ~10 meters away on the far oppo­site side of the house in the worst pos­si­ble loca­tion. The WiFi router is totally invis­i­ble to my lap­top’s WiFi card, and so to con­nect, I placed in 2011 a WiFi in between. This works, but not well.

WiFi Problems

My old WiFi router (a Belkin wire­less router model #F6D4230-4 v1 which is at least 6 years old & was pro­vided by a local ISP orig­i­nal­ly) on a weekly basis causes me prob­lems where it will mys­te­ri­ously freeze and no longer con­nect to the Inter­net nor allow IPs to be con­nected to it and only forcibly pow­er-cy­cling the Belkin router will fix it (re­boot­ing or recon­nect­ing my lap­top does noth­ing), a prob­lem which also affected some rel­a­tives who vis­ited & attempted to con­nect their iPads or smart­phones. As WiFi is black magic com­pared to reli­able pre­dictable wired Eth­er­net con­nec­tions, I was baffled how to fix this. After putting it off for too long, I sat down to deal with this prob­lem.

My ini­tial sus­pi­cion fell on the almost equally old WiFi repeater/range-extender which I used to con­nect from my house to the Belkin router (some cheap model bought from Wal­mart whose brand & model num­ber I did­n’t record at the time), but replac­ing it in Feb­ru­ary 2015 with a TP-LINK TL-WA860RE improved the sit­u­a­tion only some­what. Fed up after yet another out­age in early Octo­ber 2016, I went look­ing for a replace­ment since appar­ently that model is noto­ri­ous for freezes. WiFi router reviews are hard to parse since even the best routers have a large com­plaint sec­tion, which I sus­pect may be peo­ple blam­ing the router for things beyond its con­trol, so I wound up going with a model that was well-re­viewed on The Wire­cut­ter and one of the best-selling units on Newegg (rea­son­ing that if I can’t be sure of buy­ing a good router, I can at least try to buy a pop­u­lar one which will help when debug­ging): the TP-LINK Archer C7 AC1750 Wire­less Dual Band Giga­bit Router ($85.99). I installed it on 2016-10-21.

When I had Ver­i­zon DSL 2011–2014, the download/upload/latency band­width tests were usu­ally ~0.9/0.4Mbps & 50ms; this was upgraded to a Metro­cast cable modem in late July 2014, and the band­width per­for­mance improved sub­stan­tially to ~3/1Mbps. The only com­put­ers on the local net­work are usu­ally my lap­top and my air qual­ity mon­i­tor (which needs WiFi to upload its data to the web­site), and there are no other WiFi net­works close enough to con­nect to or (usu­al­ly) detect, so inter­fer­ence is not the cause for the slow per­for­mance but prob­a­bly my remote rural loca­tion. My assump­tion was that the TP-LINK router would fix the bugs and gen­eral flak­i­ness, but oth­er­wise not make a notice­able differ­ence, since as far as I knew, even the most ancient WiFi routers sup­ported band­widths like 50Mbps which are an order of mag­ni­tude higher than the ~3Mbps I was get­ting to the Inter­net, so the WiFi router should not have rep­re­sented any kind of bot­tle­neck or affected my band­width.

Did the new TP-LINK router work? YouTube videos seem to load much bet­ter, but I am not sure about how much the greater band­width helps reg­u­lar web brows­ing or work, and it’s too soon to tell if the freezes have gone away. Unfor­tu­nate­ly, the freezes returned within days. I thought it might be the USB WiFi don­gle, and so I upgraded Ubuntu from 15.04 to 15.10 (I had been putting it off for fear of things break­ing), which gave me access to the lap­top WiFi card; this turned out to be infe­rior in recep­tion to the don­gle, per­haps because the don­gle has an ~11cm-long anten­na. Next, I inves­ti­gated the repeater fre­quen­cy: it was on 2.4GHz, which should have bet­ter range than the 5GHz set­ting, so that was not an issue. The loca­tion of the repeater might not be opti­mal, so I placed it in var­i­ous alter­na­tive spots and also tried plac­ing it up in the attic for ver­ti­cal dis­tance, and all alter­na­tive replace­ments led to lower or no sig­nal strength. Walk­ing around with a WiFi sig­nal strength app on an old spare smart­phone, it became clear that the loca­tion was fine, but the sig­nal strength just did not reach through the 23 meters + two sets of walls.

Possible Solutions

This left me with only a few options:

  • sta­tus quo: sim­ply live with the low band­width and occa­sional dis­con­nec­tions, fix­ing them with man­ual reboots

  • get a more expen­sive, closer to the top of the line, hope­fully stronger WiFi repeater like The Wire Cut­ter’s July 2016 rec­om­mended exten­der, the TP-Link RE450; likely but not guar­an­teed to solve the prob­lem, more expen­sive ($100+), psy­cho­log­i­cally painful since I bought the first repeater not ter­ri­bly long ago

  • look into to con­nect to the router (not pos­si­ble as far as I knew due to inde­pen­dent elec­tri­cal sys­tems)

  • get my own cable modem sub­scrip­tion and run it into the apart­ment; guar­an­teed solu­tion, but much more expen­sive, addi­tional paper­work, major has­sle in get­ting such a con­nec­tion, and look­ing at the wiring of the build­ings, I’m not 100% sure it is pos­si­ble as some of the cable runs may’ve been cut since the last time cable was active in this apart­ment was at least a decade and a half ago

  • : as there is a cell­phone tower nearby with good recep­tion, I could get a & data sub­scrip­tion to replace the cable modem con­nec­tion with a 3G wire­less con­nec­tion. Data sub­scrip­tions are expen­sive, how­ever (Ver­i­zon adver­tises 8GB/$50 a mon­th) and I assume I use a lot of band­width for brows­ing, IRC, Bit­Tor­rent, , media and dataset down­loads, soft­ware updates, pub­lish­ing etc. It’s also unclear if I would get a notice­able speedup: report­edly peaks at ~28Mbit/s or 3.5MB/s, which is not great.

  • a high­-gain or for either lap­top or router, to boost sig­nal recep­tion / focus1; highly likely to solve the prob­lem as direc­tional anten­nas can report­edly main­tain fast con­nec­tions over scores of kilo­me­ters under ideal cir­cum­stances, rel­a­tively inex­pen­sive ($20–$50), eas­ily installed onto either the USB don­gle or the router which both have removable/extensible anten­nas, at the cost of an addi­tional bulky object some­where and the solu­tion not being mobile. Direc­tional anten­nas are also not some­thing I have any expe­ri­ence with and so would be fun to play with.

  • run ~51m of Cat6 Eth­er­net cable out­side and across the lawn to the crawl­space of the other house and then up through the floor; using either armored or bur­ial grade cable or buried in the ground in PVC pipes to avoid cars & lawn mow­ers & weath­er; guar­an­teed solu­tion, not ter­ri­bly expen­sive (should­n’t require much more than ~$80 of Eth­er­net cable and a sim­i­lar amount for pip­ing if I feel that’s nec­es­sary), more secure from eaves­drop­ping, poten­tially solves future device con­nec­tiv­ity prob­lems by allow­ing me to set up a local WiFi router, but would require work on the build­ings to get the cabling in, which the own­ers would not be happy about, and be a good deal of work dig­ging & bury­ing the cables.

    I mea­sured the total dis­tance at ~51m, allow­ing for 2m in the apart­ment and 2m in the house, which is com­fort­ably cov­ered by a reg­u­lar 60m buri­al-grade Eth­er­net cable ($90). The cable can be pro­tected com­ing out of the ground by a short PVC pipe from Lowe’s ($1.94).

Directional Antenna

The direc­tional antenna option is clearly best, and I find that many peo­ple in my sit­u­a­tion also use direc­tional anten­nas. I some­what casu­ally chose on 2016-10-27 to buy the TP-Link TL-ANT2424B Direc­tional Grid Par­a­bolic Anten­na, 2.4GHz 24dBi ($44.77), rea­son­ing that another TP-Link prod­uct is a bit more likely to be com­pat­i­ble with other TP-Link prod­ucts like the don­gle or router. The TL-ANT2424B is large and almost 1m length­-wise, mak­ing place­ment awk­ward, but it boosts sig­nal recep­tion con­sid­er­ably: the repeater sig­nal increases from ~40% to ~75%, and the WiFi router sig­nal goes from not seen (0%?) to ~50% when posi­tioned care­ful­ly. The direc­tional antenna is not by default com­pat­i­ble with the antenna sock­ets on either the don­gle or router, and I needed a N male con­nec­tor to RP-SMA cable; a 1m-long cable cost $7.36 (to­tal cost: $52.13).

Since both the don­gle and router are listed by TP-Link as hav­ing remov­able anten­nas (which I also checked phys­i­cal­ly) but the two stubby anten­nas on the repeater are hard­wired, I have only two options for where to place & aim the direc­tional anten­na. Ide­al­ly, I will be able to place it onto the router, aim it at my lap­top, and have high speeds with the lap­top WiFi card, let­ting me scrap the repeater and USB don­gle, and get­ting an over­all sim­pler, more reli­able, and faster sys­tem. If the router place­ment does­n’t work (be­cause the con­nec­tion does­n’t work, the antenna is too big to put in the room, or the lap­top WiFi card is still too weak to con­nec­t), I can put it onto the USB don­gle and at least cut out the repeater.

Buried Ethernet

After dis­cussing it with my uncles who do a lot of handy­man work, it turned out to be easy to get the Eth­er­net cable into the house as the cable can be run through the crawl­space under­neath the whole house and then the floor can be drilled through with a ordi­nary drill, and it was unnec­es­sary to pipe the cable across the lawn. After think­ing it over and think­ing about the reli­a­bil­ity improve­ments and how nice it would be to not have to mess around with a giant direc­tional antenna or WiFi flak­i­ness & dri­vers, I decided to do it.

Instal­la­tion proved straight­for­ward (aside from a sweaty hour going back and forth between the room & crawl­space try­ing to get the hole to be just large enough for the cable to be pushed through) and the trench-dig­ging not as tedious as I feared when I did it over the course of a week. The instal­la­tion was fully com­pleted on 2016-11-25 and I was able to con­nect at sim­i­lar speeds as esti­mated & begin bench­mark­ing.

Testing

For ini­tial test­ing, I am using the auto­mated com­mand-line Speedtest.net inter­face: speedtest-cli in a cron job: every day, at the start of each hour noon to 10PM (pri­mary time-range for my Inter­net use and sim­i­lar to first set of test­s), record time & test results at a ran­dom minute dur­ing that hour:

0 12-22 * * * sleep "$((RANDOM \% 60))"m
        echo `date` >> ~/doc-misc/statistics/speed.txt
        speedtest-cli --simple >> ~/doc-misc/statistics/speed.txt

For addi­tional test­ing, I ran groups of bench­marks for every pos­si­ble arrange­ment. Pos­si­ble arrange­ments would be apart­ment + don­gle + repeater + new/old router; apart­ment + don­gle + repeater + antenna (lo­cated in apart­ment) + new/old router; house + repeater + new/old router; house + Cat5e Eth­er­net cord into new/old router; house + Eth­er­net cord + no router & plugged directly into cable modem; house + dongle/WiFi card + new/old router; etc. Many arrange­ments are not pos­si­ble: the old router does not have a remov­able antenna so the direc­tional antenna can­not be plugged into it and other com­bi­na­tions test­ed; the repeater is like­wise not remov­able so I can test lap­top+an­tenna con­nect­ing to the repeater or new router+an­tenna con­nect­ing to the repeater, the reverses are not pos­si­ble; the lap­top WiFi card can’t be used with either the repeater or the new/old router boosted with the antenna because it lacks the range for con­nect­ing at all unless it is phys­i­cally near them inside the house; plug­ging an Eth­er­net cable from the lap­top directly into the cable modem tests the upper bound of pos­si­ble per­for­mance but can only be done inside the house (be­cause I do not have the very long Eth­er­net cable nec­es­sary for tem­po­rary test­ing); the cable modem does not have any kind of wire­less func­tion­al­ity so it can be tested on its own in only one way; etc.

Of the ~8 pos­si­ble vari­ables (house vs apart­ment, wire­less vs wired, don­gle vs lap­top WiFi card, remote vs local direc­tional anten­na, cable mode, vs a router, old vs new router) giv­ing 28 = 256 pos­si­ble total arrange­ments, ~17 arrange­ments will work. I tested those 17 with groups of ~n = 30 over sev­eral days in Novem­ber, and then after installing Eth­er­net cable out to the apart­ment, mea­sured that over addi­tional days Novem­ber-De­cem­ber as well. (The remain­ing pos­si­ble arrange­ments could be ‘mea­sured’, but I already know what the result would be: 0Mb/s up/down, ∞ms laten­cy.)

Analysis

All valid arrange­ments were mea­sured; since the invalid arrange­ments have a known per­for­mance, we can include that knowl­edge in our mod­els, although express­ing all those constraints/priors would be diffi­cult and so to avoid that, I add pseudo-mea­sure­ments—I add n = 30 mea­sure­ments for each invalid arrange­ment with 0 up/down and 1000ms laten­cy. With all arrange­ments mea­sured by data, we can do a full fac­to­r­ial design esti­mat­ing all 256 lev­els. Since bench­mark­ing took place over mul­ti­ple days, days should be included as a covari­ate. I trans­form the orig­i­nal data from megabits/second to megabytes/second, as I find megabits/s an unhelp­ful (and mis­lead­ingly large) unit. Latency is clearly skewed as it can­not be <0ms and can be very large, so I log-trans­form it. The upload/download/latency num­bers improve or worsen in sync and I did not notice any instances of an arrange­ment dras­ti­cally improv­ing latency but harm­ing band­width or vice ver­sa, and fac­tor analy­sis sug­gests that, as one would expect due to the nature of com­puter net­work­ing, bet­ter log-la­tency & band­width go together and the over­all net­work­ing per­for­mance can be con­sid­ered a latent vari­able. So in sum, we do a lin­ear model regres­sion on the per­for­mance latent fac­tor of up/down/log-latency using days and the inter­ac­tions of 8 arrange­ment vari­ables.

From this lin­ear mod­el, we want to find the arrange­ments which max­i­mize per­for­mance, and fig­ure out which one is most accept­able (we can pre­dict in advance that plug­ging directly into the cable modem will yield the best pos­si­ble per­for­mance by cut­ting out all mid­dle­men and using high­-per­for­mance wires rather than radio waves, but this is not a fea­si­ble arrange­ment for me to use on a reg­u­lar basis), how much per­for­mance is lost by it, and whether the direc­tional antenna & new router were worth the mon­ey.

Data prepa­ra­tion:

wifi <- read.csv("~/doc-misc/statistics/speed.txt", colClasses=c("character", "numeric", "numeric", "numeric",
                                                                 "factor", rep("integer", 8)))
wifi$Timestamp <- as.POSIXct(wifi$Timestamp, format="%a %b %e %H:%M:%S %Y")
wifi$Date <- as.Date(wifi$Timestamp)
wifi$Latency.log <- log(wifi$Latency)
wifi$Download <- wifi$Download / 8
wifi$Upload <- wifi$Upload / 8

library(psych)
f <- fa(nfactors=1, wifi[,c(2,3,15)])
f
# Factor Analysis using method =  minres
# Call: fa(r = wifi[, c(2, 3, 15)], nfactors = 1)
# Standardized loadings (pattern matrix) based upon correlation matrix
#               MR1   h2    u2 com
# Download     0.99 0.98 0.016   1
# Upload       0.71 0.50 0.503   1
# Latency.log −0.56 0.31 0.687   1
#
#                 MR1
# SS loadings    1.79
# Proportion Var 0.60
# ...
wifi$Performance.factor <- f$scores[,1]

# add imputed benchmarks for configurations which do not work:
# there are 2^8 = 256 possible conditions, of which only 17 are viable & experimentally represented.
# So we'll add in (256-17)*30=7170 datapoints for each non-viable condition denoting their impossibility
possibleConditions <- expand.grid(c(0,1),c(0,1),c(0,1),c(0,1),c(0,1),c(0,1),c(0,1),c(0,1))

wifiTmp <- wifi
for (i in 1:nrow(possibleConditions)) {
    condition <- possibleConditions[i,]
    matches <- with(wifiTmp, wifiTmp[Apartment==condition[[1]] & Wireless==condition[[2]] & Cable.modem==condition[[3]] &
        Dongle==condition[[4]] & Repeater==condition[[5]] & Antenna.local==condition[[6]] & Antenna.remote==condition[[7]] &
    Router.new==condition[[8]],])

    if (nrow(matches) == 0) {

    for(i in 1:30) {
        variables <- condition
        newDf <- data.frame(Timestamp=NA, Download=0, Upload=0, Latency=1000, Tester="Ookla", Apartment=variables[[1]],
            Wireless=variables[[2]], Cable.modem=variables[[3]], Dongle=variables[[4]], Repeater=variables[[5]],
            Antenna.local=variables[[6]], Antenna.remote=variables[[7]], Router.new=variables[[8]], Date=as.Date("2016-10-21"),
            Latency.log=log(1000), Performance.factor=-2)
    wifiTmp <- rbind(wifiTmp, newDf)
    }
  }
}

write.csv(wifiTmp, file="2016-12-05-wifi-benchmarking.csv", row.names=FALSE)

Data analy­sis:

wifi <- read.csv("https://www.gwern.net/docs/personal/2016-12-05-wifi-benchmarking.csv",
                 colClasses=c("character", "numeric", "numeric", "numeric", "factor",
                              rep("integer", 8), "Date", "numeric", "numeric"))
library(blme)
b <- blmer(Performance.factor ~ Tester + (1|Date) + Apartment*Wireless*Cable.modem*Dongle*Repeater*Antenna.local*Antenna.remote*Router.new,           data=wifi)

wifi$Performance.factor.predicted <- predict(b)
wifi2 <- unique(subset(wifi, select=c("Apartment", "Wireless", "Cable.modem", "Dongle", "Repeater", "Antenna.local",
                                      "Antenna.remote", "Router.new", "Performance.factor.predicted")))
wifi2 <- wifi2[order(wifi2$Performance.factor.predicted),]

wifi2[(nrow(wifi2)-25) : (nrow(wifi2)),]
# Apartment Wireless Cable.modem Dongle Repeater Antenna.local Antenna.remote Router.new Performance.factor.predicted
#          1        1           0      1        1             0              0          0               −1.259569392
#          1        1           0      1        1             0              0          1               −0.72119574503
#          1        0           0      0        0             0              0          1               −0.55532865920
#          1        1           0      1        1             0              0          1               −0.48863426987
#          1        1           0      1        1             1              0          1               −0.42905113275
#          1        1           0      1        0             1              0          1               −0.38039763263
#          1        1           0      1        1             1              0          1               −0.31311384678
#          1        0           0      0        0             0              0          1               −0.02846361963
#          1        0           0      0        0             0              0          1                0.17432667112
#          1        0           0      0        0             0              0          1                0.18380111280
#          1        1           0      1        0             1              0          1                0.26076450043
#          1        1           0      1        0             1              0          0                0.32029090139
#          1        1           0      1        0             1              0          1                0.34233590425
#          0        1           0      1        0             0              0          0                0.44654280736
#          1        1           0      1        0             1              0          1                0.49208086460
#          1        1           0      1        0             1              0          1                0.54389931129
#          1        1           0      1        0             1              0          1                0.54412097665
#          1        1           0      1        0             1              0          1                0.54430342547
#          1        0           0      0        0             0              0          1                0.62352638317
#          1        1           0      1        0             1              0          1                0.66024071144
#          1        1           0      1        0             1              0          1                0.67584165776
#          0        1           0      1        0             0              0          1                0.92555806876
#          0        0           0      0        0             0              0          0                0.93680347163
#          0        1           0      0        0             0              0          0                1.06661288167
#          0        1           0      0        0             0              0          1                1.07367892346
#          0        0           0      0        0             0              0          1                1.08849478260
#          0        0           1      0        0             0              0          0                1.13465298407

unscale <- function(score, df=wifi) { with(df[df$Latency!=1000,], c((0.99 * mean(Download)+sd(Download)*score),
    (0.71 * mean(Upload)+sd(Upload)*score),
    exp(mean(Latency.log)-0.56*sd(Latency.log)*score))) }
### in house:
## Ethernet+cable modem:
unscale(1.13)
# [1] 4.4999315639 0.4549223657 17.6341326098
## cable modem+new router
unscale(1.08)
# [1] 4.4160822152 0.4468745345 17.9182474426
## new router+laptop WiFi
unscale(1.07)
# [1] 4.3993123455 0.4452649683 17.9756173728
### in apartment:
## dongle+directional antenna
unscale(0.67)
# [1] 3.7285175563 0.3808823185 20.4275006797
## dongle+repeater+no-antenna+new router
unscale(-0.48)
# [1] 1.7999825373 0.1957822004 29.5031278789
## dongle+repeater+old router+no antenna
unscale(-1.25)
# [1] 0.50870256814 0.07184559966 37.73688446630

Results

The results gen­er­ally make sense:

  • the best pos­si­ble arrange­ment is to use Eth­er­net to plug directly into the cable modem (per­for­mance score 1.13; 4.40MB/0.45MB/17.6ms)
  • the next best pos­si­ble is to plug into the new router which is plugged into the modem (per­for­mance score 1.05; 4.42MB/0.45MB/17.9ms)
  • the next best to sit next to the new router and use the built-in WiFi chip to con­nect to it; and so on.

For those arrange­ments fea­si­ble out­side the house/in the apart­ment, the best arrange­ment is to:

  • use the don­gle + direc­tional antenna to con­nect to the new router (per­for­mance score 0.67; 3.73MB/0.38MB/20.4ms).
  • Omit­ting the direc­tional anten­na, the speed of don­gle + repeater + new router + no antenna is not great (per­for­mance score: −0.48; 1.80MB/0.20MB/29.5ms).
  • And the orig­i­nal arrange­ment of don­gle + repeater + old router + no antenna is one of the worst pos­si­ble (per­for­mance score −1.25; 0.51MB/0.07MB/37.7ms).

This is use­ful for eval­u­a­tion. The new router on its own was help­ful, as it increased down­load band­width from 0.51MB/s to 1.8MB/s. The direc­tional antenna on its own was also help­ful. The direc­tional antenna + new router increased down­load band­width still fur­ther from 0.51MB/s to 3.73MB/s, an improve­ment of ~731%. And installing an Eth­er­net cable to avoid WiFi entirely would boost my con­nec­tion down­load band­width to 4.40MB/s, an total improve­ment of 870%.

So most of the mar­ginal gain came from the direc­tional antenna bypass­ing the repeater, and only some of it comes from the new router. Indeed, the anten­na+new router is near-op­ti­mal, with only ~16% down­load band­width lost to WiFi+over­head.

I was sur­prised how big a differ­ence arrange­ments made. My belief was that net­work­ing speed was set by the bot­tle­neck, which is usu­ally the ISP’s Inter­net con­nec­tion, and that since Metro­cast was not pro­vid­ing any more than 5MB/s, it could­n’t mat­ter what sort of WiFi card or router or antenna was in use—any­thing could keep up with such a slow bot­tle­neck, and the ben­e­fits of a new router or direc­tional antenna should be minus­cule. But my orig­i­nal don­gle+re­peater+old-router setup turns out to be a lot worse than the don­gle+di­rec­tion­al-an­ten­na+new-router set­up. The repeater and old router severely low­ered band­width and increased laten­cy. (Ap­par­ently it’s well-known that a WiFi repeater will cut through­put in half due to the repeat­ing of trans­mis­sions; this was a sur­prise to me.) I was also sur­prised how sen­si­tive the direc­tional antenna was to posi­tion­ing. Even a small shift could cause the sig­nal strength per­cent­age to drop by 5–10%. This is prob­a­bly why plac­ing the direc­tional antenna in the house con­nected to the router (point­ing to the lap­top) worked much worse than plac­ing the direc­tional antenna at the apart­ment con­nected to the lap­top (point­ing at the router): it is harder to aim accu­rately since it is located inside & ele­vat­ed.

Cost-benefit

How much are these improve­ments worth? Directly valu­ing bandwidth/latency improve­ments is hard; I can say that the router & antenna feel like they were the cost.

To help valu­ing, we could look at the implied cost. The new router cost $85.99 and the direc­tional antenna cost $52.13, total­ing $138.12. The hypo­thet­i­cal Eth­er­net dig would cost some­where around $100+ for mate­ri­als and at least as much for labor, so let’s call it $200.

WiFi routers rarely break (the old Belkin one looked like it was about a decade old), and the direc­tional antenna is heavy coated metal intended for out­door use so I expect it to sur­vive at least as long. At my usual dis­count rate of 5% and the router/antenna never break­ing and dis­count­ing out indefi­nite­ly, the annual loss cor­re­spond­ing to the NPV of -$138 would be -$6/year or -$0.5/month; assum­ing that they will break or need replac­ing or my cir­cum­stances will change within 5 years (eg by mov­ing to some­where where the direc­tional antenna is unnec­es­sary), the would be -$32/year () or -$2.6/month. This seems like a triv­ial cost for improv­ing my Inter­net con­nec­tion by ~6×.

The buried Eth­er­net is more dubi­ous. The router & antenna are sunk costs inas­much as they would be diffi­cult to return and I would need to do so soon, and so the mar­ginal ben­e­fit of the Eth­er­net over the router+an­tenna would be 16% or less, for a mar­ginal equiv­a­lent annual cost of -$47 on top of the -$32 for -$79. (The buried Eth­er­net cable would be even less likely to break than the router or anten­na, but is also impos­si­ble to take with me.) Still not much monthly but is <16% worth even that much?

I’m not sure even after hav­ing installed the cable, but we’ll see if the extra reli­a­bil­ity prove to be worth­while or if the cable breaks in a year or some­thing. About a month after­ward, I am appre­ci­at­ing never wor­ry­ing about dis­con­nec­tions or check­ing the sig­nal strength; the work of installing the Eth­er­net cable was, in ret­ro­spect, not too bad; and I appre­ci­ate not hav­ing a huge antenna dish to walk around, so over­all I think installing the Eth­er­net is look­ing like it was worth­while—n­ev­er­the­less, I am hold­ing onto the don­gle & direc­tional antenna in case. If the Eth­er­net is still work­ing in a year with no prob­lems, then I will look into sell­ing the direc­tional antenna locally to recover of the ~$50 I spent.

By March 2019, I’ve dis­posed of the direc­tional antenna as there have been near-zero issues with the Eth­er­net cable, which has saved me a great deal of has­sle in deal­ing with the flaky WiFi con­nec­tion; while it was a pain dig­ging the trench and get­ting the Eth­er­net cable through the crawl space & into the room with the router, it was vastly worth the effort and in ret­ro­spect should’ve been done years before, and I’m glad I took the time to con­sider the options care­fully rather than assum­ing the improve­ments over the exist­ing WiFi were minor.


  1. As I under­stand how it would work here, sending/receiving are sym­met­ri­cal for a direc­tional antenna like this: the sig­nals from the router to the lap­top is made stronger by focus­ing the same amount of radio into the smaller direc­tional beam, and the weak omni­di­rec­tional sig­nals from the lap­top back to the router are receiv­able thanks to the same focus­ing of the antenna dish.↩︎