Most browsers have a mode you may use that will not remember your history or cookies when closed. For a Windows machine, these are their keyboard shortcuts.
If you own a Roku streaming media player or Roku TV and want to disable the advertisements that occupy one-third of the Home screen, you will discover that Roku does not provide you a way to opt out.
Don’t be deterred. If you are technically savvy and motivated, this article documents how to engineer an ad-free Roku home screen — like this one.
A summary of what needs to be done (overview)
There is more than one way to remove Roku ads. If you are a talented technical engineer, this is what you are trying to accomplish.
- Prevent your Roku from reaching a list of domains (see below)
- Provide your Roku a fixed/static IP address
- Prevent your Roku from using DNS port 53 for LAN to WAN queries
Settings within the Roku (easy)
Most of the steps that you will take to remove ads resides outside of the Roku. If you simply want a little more privacy and fewer customized ads, at least perform these easy steps on your Roku.
Roku Features to Disable:
- Roku TV > Settings > Privacy > Advertising > Limit ad tracking (enabled)
- Roku TV > Settings > Privacy > Advertising > Reset advertising identifier (do this often)
- Roku TV > Settings > Privacy > Smart TV experience > Use info from TV inputs (not selected)
- Roku TV > Settings > Privacy > Smart TV experience > Enable auto notification (not selected)
- Roku TV > Settings > Home Screen > Featured Free > Hide
- Roku TV > Settings > Home Screen > Movie Store and TV Store > Hide
- Roku TV > Settings > Home Screen > My Offers > Hide
Block these domains (medium)
Using some network capturing tools, I logged about fifty unique IP addresses the Roku attempts to access within the first two minutes of it powering on. Blocking them all would result in a loss of functionality. Instead, you want to prevent the Roku from accessing just the following domains (LAN to WAN traffic).
Perhaps the easiest way to do this is to use either NextDNS.io or a Raspberry Pi Pi-Hole as your DNS provider, and subscribe to the Lightswitch05 Ads & Tracking block list. All of the domains above, except for amoeba-plus.web.roku.com and wwwimg.roku.com (in bold) were already included in Lightswitch05’s block list at the time of writing.
I accomplished DNS filtering by installing ASUSwrt-Merlin on my home router. I then configured my router to use NextDNS.io as the router’s DNS-over-TLS / DNS-over-HTTPS source. Using NextDNS.io at the router level will help you block ads for all devices on your home network, not just your Roku.
Here’s how I configured my home router to use NextDNS.io.
And how I configured NextDNS.io to filter out most Roku ads and tracking.
- NextDNS.io > Privacy > Blocklists > Add > Lightswitch05 Ads & Tracking
- NextDNS.io > Privacy > Native Tracking Protection > Add > Roku
- NextDNS.io > Denylist > Add > amoeba-plus.web.roku.com (missing from Lightswitch05)
- NextDNS.io > Denylist > Add > wwwimg.roku.com (missing from Lightswitch05)
Once you have a DNS filtering solution in place and have configured your home router to use it, all devices on your network should (by default) have their DNS traffic filtered. Except for the Roku, of course, which has hard coded its own public DNS source for some of its queries.
Provide your Roku a static/fixed IP address (medium)
To perform the last step, which involves creating firewall rules, you need to first provide your Roku a static IP address. I accomplish this by letting DHCP provide the Roku a dynamic IP address, and then configure my router to always reserve that IP for the Roku.
- ASUSwrt-Merlin > LAN > DHCP Server > Manually Assigned IP
Firewall LAN to WAN Port 53 (hard)
DNS queries traditionally use Port 53 via TCP or UDP. You want to force your Roku to always use your router (and thus NextDNS or Pi-Hole) for all of its DNS queries.
In order to prevent your Roku from quering Google’s public DNS servers at 184.108.40.206 and 220.127.116.11 directly, you’ll need to configure a network firewall to block LAN to WAN traffic over Port 53 (TCP and UDP).
How to do this differs for each router. Here’s how I did it using ASUSwrt-Merlin.
- ASUSwrt-Merlin > Firewall > Network Services Filter > Enable
- ASUSwrt-Merlin > Firewall > Network Services Filter Table > add these two entries
- Entry 1 > Source IP (the static LAN IP address of your Roku), Destination Port Range 53, Protocol TCP
- Entry 2 > Source IP (the static LAN IP address of your Roku), Destination Port Range 53, Protocol UDP
That should do it. Reboot your router to clear your DNS cache then reboot your Roku. Hopefully you will be rewarded with an ad-free Roku.
Removing Roku ads will take some work. And for some of these steps, like installing ASUSwrt-Merlin or a Pi-Hole, take some effort and require specific hardware you might not yet own. There are likely other ways to perform these steps on your own hardware — but I leave that to you. You know what needs to be done, and now just have to figure out how to do so if you want an ad-free Roku.
In 2016, the Electronic Frontier Foundation created some enhancements over the original Diceware Passphrase list by creating the EFF Dice-Generated Passphrases list. This post is my effort to use Microsoft Excel or Google Sheets to semi-randomly generate random passwords by using the EFF’s Long Wordlist [.txt].
Please note, while I am an IT professional, I’m not a cryptographer or mathematician. The passwords generated via these Microsoft Excel formulas are semi-random. They represent a good-enough approach to creating passwords users can memorize. Use passed.pw or LastPass’ Password Generator for longer passwords that contain more entropy. As always, use a good password manager and enable multi-factor authentication when available.
TL/DR: Links to the live Microsoft Excel and Google Sheets worksheets
If you just want some semi-randomly generated passphrases based on the EFF Large Wordlist, select either of these read-only publicly-accessible links.
This is what you’ll find: 10- to 16-character easy-to-remember semi-random passphrases. Refresh your browser (F5) to generate a new round of passphrases.
A screenshot of the EFF Dice-Generated Passphrases via Microsoft Excel.
Here is a static example of the semi-random passphrases these worksheets randomly create.
How it works
The essential components to using Microsoft Excel or Google Sheets to generate semi-random passphrases are:
- A hidden sheet named DataEFFLong1 that contains the EFF’s Long Wordlist [.txt], sorted by the number of characters within each word
- A hidden sheet named DataASCII that contains the ASCII Printable Characters, with their Decimal index/values
- A visible sheet named GeneratedPasswords that uses Excel’s INDEX function and RANDBETWEEN function
You will find a few more hidden sheets of data (like city names or shorter versions of the EFF dice words) that you may use if you want to customize your own formulas. Please, do make a copy of either worksheet and modify to meet your needs.
My files generate 10- to 16-character passphrases. The 10Good column contains a 10-character passphrase of lowercase, uppercase and numbers. The 10Better column simply adds punctuation. Please look at the examples above to get a good idea.
This Excel formula does not include punctuation.
=INDEX(DataEFFLong1!$F$84:$F$550,RANDBETWEEN(1,ROWS(DataEFFLong1!$F$84:$F$550)),1) &INDEX(DataEFFLong1!$F$551:$F$1478,RANDBETWEEN(1,ROWS(DataEFFLong1!$F$551:$F$1478)),1) &CHAR(RANDBETWEEN(48,57))
There are two INDEX functions that use the RANDBETWEEN function to select a random EFF word from a range of words that are pre-sorted by how many characters are in each word; followed by a CHAR function that uses the RANDBETWEEN function to select a random number.
This Excel formula adds punctuation. In cell B14, I use this formula to select a semi-random delimiter from the ASCII table (characters , – . /).
Then I simply include this semi-randomly selected punctuation into the formula.
=INDEX(DataEFFLong1!$E$2:$E$83,RANDBETWEEN(1,ROWS(DataEFFLong1!$E$2:$E$83)),1) &$B$14 &INDEX(DataEFFLong1!$D$84:$D$550,RANDBETWEEN(1,ROWS(DataEFFLong1!$D$84:$D$550)),1) &$B$14 &CHAR(RANDBETWEEN(48,57))
The result is that the user must only memorize a single punctuation value and number — along with the EFF dice words — to memorize their password.
Again, these passphrases have less entropy than passed.pw randomly-generated passwords like “U7p2uk>R,v)]HTRc”; but they are easier to memorize and should be sufficient when also protected by multi-factor authentication.
Google Sheets formulas
The formulas that Google Sheets’ uses to produce the same results as Microsoft Excel are different, but the concept is the same. Google uses ARRAY_CONSTRAIN and ARRAYFORMULA to wrap the original Excel formulas.
=ARRAY_CONSTRAIN(ARRAYFORMULA(INDEX(DataEFFLong1!$F$84:$F$550,RANDBETWEEN(1,ROWS(DataEFFLong1!$F$84:$F$550)),1) &INDEX(DataEFFLong1!$F$551:$F$1478,RANDBETWEEN(1,ROWS(DataEFFLong1!$F$551:$F$1478)),1) &CHAR(RANDBETWEEN(48,57))), 1, 1)
Feel free to use these worksheets as is. Optionally, add your own data sources and modify the formulas to better meet your needs.
During the COVID-19 pandemic, Microsoft should have updated its Defragment and Optimize Drives tool to do the inverse by maintaining at least six-bits of separation from neighboring data.
It says “You can fragment your drives to help your data maintain a safe social distance (at least a six-bits of separation). Only drives on or connected to your computer are shown.”
Here’s how they should have placed it in your start menu.
I enjoy adding photos to Google Maps. That enjoyment really increased a few years ago when I bought a 360-degree camera. Since 360-degree cameras are still a bit of a novelty, my images get more views than most.
Last week, Google sent me an email saying:
Hi Jason, You’re a top photographer on Google Maps You’ve just accomplished what very few people have done: reached 25,000,000 photo views. Congratulations on the amazing accomplishment
To be specific, that’s 3,426 images generating 25,198,085 views on Google Maps as of today, February 29, 2020. An average of 7,354 views per image.
The most popular image is this 360-degree photo I quickly snapped while exiting a Cincinatti Reds baseball game, which has achieved 5,051,046 views.
It’s a nice motivating bit information information that encourages me to keep traveling and adding 360-degree photos to Google Maps.