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 re­ceives In­ter­net via a WiFi re­peater to an­other house, yield­ing slow speeds and fre­quent glitch­es. I re­placed the ob­so­lete WiFi router and in­creased con­nec­tion speeds some­what but still in­ad­e­quate. For a bet­ter so­lu­tion, I used a di­rec­tional an­tenna to con­nect di­rectly to the new WiFi router, which, con­trary to my ex­pec­ta­tions, yielded a ~6× in­crease in speed. Ex­ten­sive bench­mark­ing of all pos­si­ble arrange­ments of lap­top­s/­don­gles/re­peater­s/an­ten­nas/router­s/­po­si­tions shows that the an­ten­na+router is in­ex­pen­sive and near op­ti­mal speed, and that the only pos­si­ble im­prove­ment would be a hard­wired Eth­er­net line, which I in­stalled a few weeks later after learn­ing it was not as diffi­cult as I thought it would be.

I con­nect to the In­ter­net over , from the main room in my apart­ment to the WiFi pro­vided by a ca­ble mo­dem sub­scrip­tion in a neigh­bor­ing house. The house is ~23 me­ters away, but the house is large with ce­ment foun­da­tions, and the com­puter room with the ca­ble & mo­dem is it­self an­other ~10 me­ters away on the far op­po­site side of the house in the worst pos­si­ble lo­ca­tion. The WiFi router is to­tally in­vis­i­ble to my lap­top’s WiFi card, and so to con­nect, I placed in 2011 a WiFi in be­tween. 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 lo­cal ISP orig­i­nal­ly) on a weekly ba­sis causes me prob­lems where it will mys­te­ri­ously freeze and no longer con­nect to the In­ter­net nor al­low IPs to be con­nected to it and only forcibly pow­er-cy­cling the Belkin router will fix it (re­boot­ing or re­con­nect­ing my lap­top does noth­ing), a prob­lem which also affected some rel­a­tives who vis­ited & at­tempted to con­nect their iPads or smart­phones. As WiFi is black magic com­pared to re­li­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 al­most equally old WiFi re­peater/range-ex­ten­der 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 re­plac­ing it in Feb­ru­ary 2015 with a TP-LINK TL-WA860RE im­proved the sit­u­a­tion only some­what. Fed up after yet an­other out­age in early Oc­to­ber 2016, I went look­ing for a re­place­ment since ap­par­ently that model is no­to­ri­ous for freezes. WiFi router re­views 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 be­yond its con­trol, so I wound up go­ing 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 de­bug­ging): the TP-LINK Archer C7 AC1750 Wire­less Dual Band Gi­ga­bit Router ($85.99). I in­stalled it on 2016-10-21.

When I had Ver­i­zon DSL 2011–2014, the down­load­/u­pload­/la­tency band­width tests were usu­ally ~0.9/0.4Mbps & 50ms; this was up­graded to a Metro­cast ca­ble mo­dem in late July 2014, and the band­width per­for­mance im­proved sub­stan­tially to ~3/1Mbps. The only com­put­ers on the lo­cal net­work are usu­ally my lap­top and my air qual­ity mon­i­tor (which needs WiFi to up­load its data to the web­site), and there are no other WiFi net­works close enough to con­nect to or (usu­al­ly) de­tect, so in­ter­fer­ence is not the cause for the slow per­for­mance but prob­a­bly my re­mote rural lo­ca­tion. My as­sump­tion was that the TP-LINK router would fix the bugs and gen­eral flak­i­ness, but oth­er­wise not make a no­tice­able differ­ence, since as far as I knew, even the most an­cient WiFi routers sup­ported band­widths like 50Mbps which are an or­der of mag­ni­tude higher than the ~3Mbps I was get­ting to the In­ter­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. Un­for­tu­nate­ly, the freezes re­turned within days. I thought it might be the USB WiFi don­gle, and so I up­graded Ubuntu from 15.04 to 15.10 (I had been putting it off for fear of things break­ing), which gave me ac­cess to the lap­top WiFi card; this turned out to be in­fe­rior in re­cep­tion to the don­gle, per­haps be­cause the don­gle has an ~11cm-long an­ten­na. Next, I in­ves­ti­gated the re­peater fre­quen­cy: it was on 2.4GHz, which should have bet­ter range than the 5GHz set­ting, so that was not an is­sue. The lo­ca­tion of the re­peater might not be op­ti­mal, so I placed it in var­i­ous al­ter­na­tive spots and also tried plac­ing it up in the at­tic for ver­ti­cal dis­tance, and all al­ter­na­tive re­place­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 be­came clear that the lo­ca­tion was fine, but the sig­nal strength just did not reach through the 23 me­ters + two sets of walls.

Possible Solutions

This left me with only a few op­tions:

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

  • get a more ex­pen­sive, closer to the top of the line, hope­fully stronger WiFi re­peater like The Wire Cut­ter’s July 2016 rec­om­mended ex­ten­der, the TP-Link RE450; likely but not guar­an­teed to solve the prob­lem, more ex­pen­sive ($100+), psy­cho­log­i­cally painful since I bought the first re­peater 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 in­de­pen­dent elec­tri­cal sys­tems)

  • get my own ca­ble mo­dem sub­scrip­tion and run it into the apart­ment; guar­an­teed so­lu­tion, but much more ex­pen­sive, ad­di­tional pa­per­work, ma­jor 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 ca­ble runs may’ve been cut since the last time ca­ble was ac­tive in this apart­ment was at least a decade and a half ago

  • : as there is a cell­phone tower nearby with good re­cep­tion, I could get a & data sub­scrip­tion to re­place the ca­ble mo­dem con­nec­tion with a 3G wire­less con­nec­tion. Data sub­scrip­tions are ex­pen­sive, how­ever (Ver­i­zon ad­ver­tises 8GB/$50 a mon­th) and I as­sume I use a lot of band­width for brows­ing, IRC, Bit­Tor­rent, , me­dia and dataset down­loads, soft­ware up­dates, pub­lish­ing etc. It’s also un­clear if I would get a no­tice­able speedup: re­port­edly peaks at ~28M­bit/s or 3.5M­B/s, which is not great.

  • a high­-gain or for ei­ther lap­top or router, to boost sig­nal re­cep­tion / fo­cus1; highly likely to solve the prob­lem as di­rec­tional an­ten­nas can re­port­edly main­tain fast con­nec­tions over scores of kilo­me­ters un­der ideal cir­cum­stances, rel­a­tively in­ex­pen­sive ($20–$50), eas­ily in­stalled onto ei­ther the USB don­gle or the router which both have re­mov­able/ex­ten­si­ble an­ten­nas, at the cost of an ad­di­tional bulky ob­ject some­where and the so­lu­tion not be­ing mo­bile. Di­rec­tional an­ten­nas are also not some­thing I have any ex­pe­ri­ence with and so would be fun to play with.

  • run ~51m of Cat6 Eth­er­net ca­ble out­side and across the lawn to the crawl­space of the other house and then up through the floor; us­ing ei­ther ar­mored or bur­ial grade ca­ble or buried in the ground in PVC pipes to avoid cars & lawn mow­ers & weath­er; guar­an­teed so­lu­tion, not ter­ri­bly ex­pen­sive (should­n’t re­quire much more than ~$80 of Eth­er­net ca­ble and a sim­i­lar amount for pip­ing if I feel that’s nec­es­sary), more se­cure from eaves­drop­ping, po­ten­tially solves fu­ture de­vice con­nec­tiv­ity prob­lems by al­low­ing me to set up a lo­cal WiFi router, but would re­quire work on the build­ings to get the ca­bling in, which the own­ers would not be happy about, and be a good deal of work dig­ging & bury­ing the ca­bles.

    I mea­sured the to­tal dis­tance at ~51m, al­low­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 ca­ble ($90). The ca­ble can be pro­tected com­ing out of the ground by a short PVC pipe from Lowe’s ($1.94).

Directional Antenna

The di­rec­tional an­tenna op­tion is clearly best, and I find that many peo­ple in my sit­u­a­tion also use di­rec­tional an­ten­nas. I some­what ca­su­ally chose on 2016-10-27 to buy the TP-Link TL-ANT2424B Di­rec­tional Grid Par­a­bolic An­ten­na, 2.4GHz 24dBi ($44.77), rea­son­ing that an­other 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 al­most 1m length­-wise, mak­ing place­ment awk­ward, but it boosts sig­nal re­cep­tion con­sid­er­ably: the re­peater sig­nal in­creases from ~40% to ~75%, and the WiFi router sig­nal goes from not seen (0%?) to ~50% when po­si­tioned care­ful­ly. The di­rec­tional an­tenna is not by de­fault com­pat­i­ble with the an­tenna sock­ets on ei­ther the don­gle or router, and I needed a N male con­nec­tor to RP-SMA ca­ble; a 1m-long ca­ble cost $7.36 (to­tal cost: $52.13).

Since both the don­gle and router are listed by TP-Link as hav­ing re­mov­able an­ten­nas (which I also checked phys­i­cal­ly) but the two stubby an­ten­nas on the re­peater are hard­wired, I have only two op­tions for where to place & aim the di­rec­tional an­ten­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 re­peater and USB don­gle, and get­ting an over­all sim­pler, more re­li­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 an­tenna 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 re­peater.

Buried Ethernet

After dis­cussing it with my un­cles who do a lot of handy­man work, it turned out to be easy to get the Eth­er­net ca­ble into the house as the ca­ble can be run through the crawl­space un­der­neath the whole house and then the floor can be drilled through with a or­di­nary drill, and it was un­nec­es­sary to pipe the ca­ble across the lawn. After think­ing it over and think­ing about the re­li­a­bil­ity im­prove­ments and how nice it would be to not have to mess around with a gi­ant di­rec­tional an­tenna or WiFi flak­i­ness & dri­vers, I de­cided to do it.

In­stal­la­tion proved straight­for­ward (a­side from a sweaty hour go­ing back and forth be­tween the room & crawl­space try­ing to get the hole to be just large enough for the ca­ble to be pushed through) and the trench-dig­ging not as te­dious as I feared when I did it over the course of a week. The in­stal­la­tion was fully com­pleted on 2016-11-25 and I was able to con­nect at sim­i­lar speeds as es­ti­mated & be­gin bench­mark­ing.


For ini­tial test­ing, I am us­ing the au­to­mated com­mand-line in­ter­face: speedtest-cli in a cron job: every day, at the start of each hour noon to 10PM (pri­mary time-range for my In­ter­net use and sim­i­lar to first set of test­s), record time & test re­sults 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 ad­di­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 + re­peater + new/old router; apart­ment + don­gle + re­peater + an­tenna (lo­cated in apart­ment) + new/old router; house + re­peater + new/old router; house + Cat5e Eth­er­net cord into new/old router; house + Eth­er­net cord + no router & plugged di­rectly into ca­ble modem; house + don­gle/WiFi card + new/old router; etc. Many arrange­ments are not pos­si­ble: the old router does not have a re­mov­able an­tenna so the di­rec­tional an­tenna can­not be plugged into it and other com­bi­na­tions test­ed; the re­peater is like­wise not re­mov­able so I can test lap­top+an­tenna con­nect­ing to the re­peater or new router+an­tenna con­nect­ing to the re­peater, the re­verses are not pos­si­ble; the lap­top WiFi card can’t be used with ei­ther the re­peater or the new/old router boosted with the an­tenna be­cause it lacks the range for con­nect­ing at all un­less it is phys­i­cally near them in­side the house; plug­ging an Eth­er­net ca­ble from the lap­top di­rectly into the ca­ble mo­dem tests the up­per bound of pos­si­ble per­for­mance but can only be done in­side the house (be­cause I do not have the very long Eth­er­net ca­ble nec­es­sary for tem­po­rary test­ing); the ca­ble mo­dem 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, re­mote vs lo­cal di­rec­tional an­ten­na, ca­ble mode, vs a router, old vs new router) giv­ing 28 = 256 pos­si­ble to­tal arrange­ments, ~17 arrange­ments will work. I tested those 17 with groups of ~n = 30 over sev­eral days in No­vem­ber, and then after in­stalling Eth­er­net ca­ble out to the apart­ment, mea­sured that over ad­di­tional days No­vem­ber-De­cem­ber as well. (The re­main­ing pos­si­ble arrange­ments could be ‘mea­sured’, but I al­ready know what the re­sult would be: 0M­b/s up­/­down, ∞ms la­ten­cy.)


All valid arrange­ments were mea­sured; since the in­valid arrange­ments have a known per­for­mance, we can in­clude that knowl­edge in our mod­els, al­though ex­press­ing all those con­straints/pri­ors would be diffi­cult and so to avoid that, I add pseudo-mea­sure­ments—I add n = 30 mea­sure­ments for each in­valid arrange­ment with 0 up­/­down and 1000ms la­ten­cy. With all arrange­ments mea­sured by data, we can do a full fac­to­r­ial de­sign es­ti­mat­ing all 256 lev­els. Since bench­mark­ing took place over mul­ti­ple days, days should be in­cluded as a co­vari­ate. I trans­form the orig­i­nal data from megabit­s/sec­ond to megabytes/sec­ond, as I find megabit­s/s an un­help­ful (and mis­lead­ingly large) unit. La­tency is clearly skewed as it can­not be <0ms and can be very large, so I log-trans­form it. The up­load­/­down­load­/la­tency num­bers im­prove or worsen in sync and I did not no­tice any in­stances of an arrange­ment dras­ti­cally im­prov­ing la­tency but harm­ing band­width or vice ver­sa, and fac­tor analy­sis sug­gests that, as one would ex­pect due to the na­ture of com­puter net­work­ing, bet­ter log-la­tency & band­width go to­gether and the over­all net­work­ing per­for­mance can be con­sid­ered a la­tent vari­able. So in sum, we do a lin­ear model re­gres­sion on the per­for­mance la­tent fac­tor of up­/­down/log-la­tency us­ing days and the in­ter­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 ac­cept­able (we can pre­dict in ad­vance that plug­ging di­rectly into the ca­ble mo­dem will yield the best pos­si­ble per­for­mance by cut­ting out all mid­dle­men and us­ing high­-per­for­mance wires rather than ra­dio waves, but this is not a fea­si­ble arrange­ment for me to use on a reg­u­lar ba­sis), how much per­for­mance is lost by it, and whether the di­rec­tional an­tenna & 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

f <- fa(nfactors=1, wifi[,c(2,3,15)])
# 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]] &[[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]],[[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("",
                 colClasses=c("character", "numeric", "numeric", "numeric", "factor",
                              rep("integer", 8), "Date", "numeric", "numeric"))
b <- blmer(Performance.factor ~ Tester + (1|Date) + Apartment*Wireless*Cable.modem*Dongle*Repeater*Antenna.local*Antenna.remote*,           data=wifi)

wifi$Performance.factor.predicted <- predict(b)
wifi2 <- unique(subset(wifi, select=c("Apartment", "Wireless", "Cable.modem", "Dongle", "Repeater", "Antenna.local",
                                      "Antenna.remote", "", "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 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:
# [1] 4.4999315639 0.4549223657 17.6341326098
## cable modem+new router
# [1] 4.4160822152 0.4468745345 17.9182474426
## new router+laptop WiFi
# [1] 4.3993123455 0.4452649683 17.9756173728
### in apartment:
## dongle+directional antenna
# [1] 3.7285175563 0.3808823185 20.4275006797
## dongle+repeater+no-antenna+new router
# [1] 1.7999825373 0.1957822004 29.5031278789
## dongle+repeater+old router+no antenna
# [1] 0.50870256814 0.07184559966 37.73688446630


The re­sults gen­er­ally make sense:

  • the best pos­si­ble arrange­ment is to use Eth­er­net to plug di­rectly into the ca­ble mo­dem (per­for­mance score 1.13; 4.40M­B/0.45M­B/17.6ms)
  • the next best pos­si­ble is to plug into the new router which is plugged into the mo­dem (per­for­mance score 1.05; 4.42M­B/0.45M­B/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 + di­rec­tional an­tenna to con­nect to the new router (per­for­mance score 0.67; 3.73M­B/0.38M­B/20.4m­s).
  • Omit­ting the di­rec­tional an­ten­na, the speed of don­gle + re­peater + new router + no an­tenna is not great (per­for­mance score: −0.48; 1.80M­B/0.20M­B/29.5m­s).
  • And the orig­i­nal arrange­ment of don­gle + re­peater + old router + no an­tenna is one of the worst pos­si­ble (per­for­mance score −1.25; 0.51M­B/0.07M­B/37.7m­s).

This is use­ful for eval­u­a­tion. The new router on its own was help­ful, as it in­creased down­load band­width from 0.51M­B/s to 1.8M­B/s. The di­rec­tional an­tenna on its own was also help­ful. The di­rec­tional an­tenna + new router in­creased down­load band­width still fur­ther from 0.51M­B/s to 3.73M­B/s, an im­prove­ment of ~731%. And in­stalling an Eth­er­net ca­ble to avoid WiFi en­tirely would boost my con­nec­tion down­load band­width to 4.40M­B/s, an to­tal im­prove­ment of 870%.

So most of the mar­ginal gain came from the di­rec­tional an­tenna by­pass­ing the re­peater, and only some of it comes from the new router. In­deed, the an­ten­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 be­lief was that net­work­ing speed was set by the bot­tle­neck, which is usu­ally the ISP’s In­ter­net con­nec­tion, and that since Metro­cast was not pro­vid­ing any more than 5M­B/s, it could­n’t mat­ter what sort of WiFi card or router or an­tenna 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 di­rec­tional an­tenna should be mi­nus­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 re­peater and old router se­verely low­ered band­width and in­creased la­ten­cy. (Ap­par­ently it’s well-known that a WiFi re­peater will cut through­put in half due to the re­peat­ing of trans­mis­sions; this was a sur­prise to me.) I was also sur­prised how sen­si­tive the di­rec­tional an­tenna was to po­si­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 di­rec­tional an­tenna in the house con­nected to the router (point­ing to the lap­top) worked much worse than plac­ing the di­rec­tional an­tenna at the apart­ment con­nected to the lap­top (point­ing at the router): it is harder to aim ac­cu­rately since it is lo­cated in­side & el­e­vat­ed.


How much are these im­prove­ments worth? Di­rectly valu­ing band­width/la­tency im­prove­ments is hard; I can say that the router & an­tenna feel like they were the cost.

To help valu­ing, we could look at the im­plied cost. The new router cost $85.99 and the di­rec­tional an­tenna cost $52.13, to­tal­ing $138.12. The hy­po­thet­i­cal Eth­er­net dig would cost some­where around $100+ for ma­te­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 di­rec­tional an­tenna is heavy coated metal in­tended for out­door use so I ex­pect it to sur­vive at least as long. At my usual dis­count rate of 5% and the router/an­tenna never break­ing and dis­count­ing out in­defi­nite­ly, the an­nual loss cor­re­spond­ing to the NPV of -$138 would be -$6/year or -$0.5/mon­th; as­sum­ing that they will break or need re­plac­ing or my cir­cum­stances will change within 5 years (eg by mov­ing to some­where where the di­rec­tional an­tenna is un­nec­es­sary), the would be -$32/year () or -$2.6/month. This seems like a triv­ial cost for im­prov­ing my In­ter­net con­nec­tion by ~6×.

The buried Eth­er­net is more du­bi­ous. The router & an­tenna are sunk costs inas­much as they would be diffi­cult to re­turn 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 an­nual cost of -$47 on top of the -$32 for -$79. (The buried Eth­er­net ca­ble would be even less likely to break than the router or an­ten­na, but is also im­pos­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 in­stalled the ca­ble, but we’ll see if the ex­tra re­li­a­bil­ity prove to be worth­while or if the ca­ble breaks in a year or some­thing. About a month after­ward, I am ap­pre­ci­at­ing never wor­ry­ing about dis­con­nec­tions or check­ing the sig­nal strength; the work of in­stalling the Eth­er­net ca­ble was, in ret­ro­spect, not too bad; and I ap­pre­ci­ate not hav­ing a huge an­tenna dish to walk around, so over­all I think in­stalling 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 & di­rec­tional an­tenna 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 di­rec­tional an­tenna lo­cally to re­cover of the ~$50 I spent.

By March 2019, I’ve dis­posed of the di­rec­tional an­tenna as there have been near-zero is­sues with the Eth­er­net ca­ble, 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 ca­ble 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 be­fore, and I’m glad I took the time to con­sider the op­tions care­fully rather than as­sum­ing the im­prove­ments over the ex­ist­ing WiFi were mi­nor.

  1. As I un­der­stand how it would work here, send­ing/re­ceiv­ing are sym­met­ri­cal for a di­rec­tional an­tenna like this: the sig­nals from the router to the lap­top is made stronger by fo­cus­ing the same amount of ra­dio into the smaller di­rec­tional beam, and the weak om­ni­di­rec­tional sig­nals from the lap­top back to the router are re­ceiv­able thanks to the same fo­cus­ing of the an­tenna dish.↩︎