I have been trying to tame ad's on the roku and still have it function as well. I will detail a couple of techniques that I use and that work for me.
First off, you need to install putty on your pc, and enable ssh on the Pi-hole.
Next, you need to be able to log into the pi-hole with ssh.
And the last big thing you need to know is the IP address of your roku. I believe you can get this under one of the Roku's menu's or you can look over your dhcp servers leases. If you are unsure you can (from a cmd prompt on a PC) ping -t the ip address you suspect the roku is at. It should answer pings if it is on. Pull the power plug from the roku and see if that up address has stopped answering pings. You can also try to point your web browser at the roku's IP address and it should bring up a dialog box asking for a username and a password.
So now we know the ip address of the pi-hole, we have ssh set up on the pi-hole, we can use putty to log into the pi-hole, and we know the IP address of the roku. Wow!
So, go ahead and log onto the Pi.
cd to the directory where the logs live. cd /var/log
Do an ls and look around. You should see a file called pihole.log as well as some older backed up log files that end in a number.
We are going to build a filter so we only see stuff we are interested in. It sounds complicated but it is pretty simple. Hang out and hopefully this will make sense after a while.
At the base of this we want to look at the live log file. We can do this with the command tail -f pihole.log You can try this. You should see all the dns traffic from every device on your network. This is the same view as you can get from the pihole itself. Not super useful. Hit control and tap c to break out of it.
The real trick is the grep command. grep is a deceptively simple filter. For example if we use this command:
Power user hint: hit the up arrow to recall the last command in your ssh window. We are going to be adding onto what we have so far...
tail -f pihole.log | grep "your_roku_devices_ip_address"
and yes, keep the quotes around the IP address.
Now you should just see dns traffic from your roku. This is handy. We are looking for a cause and effect. So if a channel is failing, that means some dns address is not being resolved. When an address is spoofed by the pihole, it subs 0.0.0.0 for the real ip address. So let's just look at the addresses the piole is blocking that the roku is requesting... This would be the command..
(up arrow trick again...)
tail -f pihole.log | grep "your_roku_devices_ip_address" | grep "0.0.0.0"
Hint: Hit return a bunch of times to create some blank space so you can see where you are starting...
Now watch this for a while. You will see some common offenders popping up such as cooper.logs.roku.com and scribe.logs.roku.com. You can pick out around these with your brain, but I prefer not to. Ctrl C to break out and up arrow and lets try this:
tail -f pihole.log | grep "your_roku_devices_ip_address" | grep "0.0.0.0" | grep -v "cooper.logs.roku.com" | grep -v "scribe.logs.roku.com"
Now we are approaching nirvana. The -v in grep shows us everything that does NOT contain the string. So we are now seeing all the DNS requests from your rokus IP address except the two roku sites.
Try to get into your channel a time or two. You may want to try doing a system update on the roku and power cycling the roku. Now try your channel. When it fails, you will see a big bunch of stuff pop up on the ssh screen. Add those hosts to the whitelist.
After a reboot of the roku, you should get your channel. If you want to try and tame the ad's, copy the hosts in your whitelist to a notepad document and than remove the first one from the whitelist. Reboot the roku and see if your channel still works. If it does, do the same with the next one. If it fails, put that one back in the white list (I do whitelist editing via the pihole web interface btw). It is an iterative process.
Once you get used to using grep and grep -v you will find that you can really filter the log files so you just see the info you are looking for. I won't say it makes adding more hosts to the blacklist easy, but it makes it more manageable. It does make fixing channels easier. One last note.. When you add a new host to the blacklist, this may break other channels. Always keep a notepad doc of what you have done so you can quickly undo it.
Perhaps at some time there will be a way to add this stuff to the pihole web interface and an easy way to add and remove things from the lists. Also, on the pi-hole perhaps a revision control system around the black and white lists for quickly backing out of changes..
Good luck with tuning your lists!