Pi-Hole works everywhere except Android Phones

Hi @Valiceemo , please, do you remember the process to fix this problem? I have same error in my devices Android but computers and others pi-hole 100% every time.

thanks very mach for help


I think the key was to disable IPV6 on my router.

Android does unusual things with DNS, I have found blocking access to the Internet on port 53 from any device but my pi-hole forces my android stuff to use the pi-hole. Many topics on this, look for port 53 and you’ll find them. Also on the pi-hole reddit.

I found a solution for our Pixel 2 phones that was related to Private DNS being enabled. Details here: https://www.reddit.com/r/pihole/comments/aco8iu/later_model_andriod_devices_not_working_with/

I had this problem after upgrading to Android Pie. I documented the issue on my Github Project.

Google added a new feature in Chrome called "Async DNS resolver" that ignores your DNS settings and forwards queries to Google instead.This issue can be solved with the following Steps:

* Launch Chrome
* Enter the URL "chrome://flags"
* search for "dns"
* Set "Async DNS resolver" to "Disabled"
* Click on "RELAUNCH NOW" to restart your browser
1 Like

@Videopac is right.
Here is one solution.
When you have set everything like it should you will notice that ads in Firefox are being blocked.
Ads in Chrome are not blocked.
It is an implementation that Android phone makers add to the setup of the phone. Guess that Google insists on doing so.

How to solve this
Use adb and delete com.android.partnerbrowsercustomizations.chromeHomepage
(or similar, I know it has a slightly different name on Nokia phones)

For a howto on adb goto Google, there is plenty of information.
Just don’t use the complete install, use minimal adb and fastboot instead which you can find on XDA.

I’m not sure why you say this…I see no ads in Google chrome, on either desktop nor mobile.
As far as I am aware, Google do not hardcode DNS servers into their software, but they perhaps do hardcode DNS servers into hardware, such as the Chromecast and Google Home devices

The basic summary of this thread is in order to get Pi-Hole functioning on an android device, I had to disable IPV6…at least for my ISP anyway.
confirmed by a fellow Sky (UK ISP provider) here in another thread

adb uninstall --user 0 com.android.partnerbrowsercustomizations.chromeHomepage

If having this issue because selecting a DNS from Android device while on WiFi causes your ISP ip6 DNS to be used, install DNS CHANGER which uses local VPN (so you can’t use it with other VPNs from your Android) but you can turn off IP6 in the app and mobile browsing will have ads blocked.

I needed to do this since I can’t direct my router to a DNS, and my Pi isn’t set up as a VPN.

Holy thread ressurection batman! :wink:
This is one workaround yes. But kind of defeats the point of a network wide ad blocker.
Easiest and most efficient solution is to disable IPV6 on the router as discussed way back.

My point was when that isn’t an option, that people aren’t left out of options. Googling about Android issues with this still comes here, and it was no help for me a month or so back, because I cannot configure my IPS provided modem + router, and then I found
this workaround which works until I can get a proper router. Answer provided for those in my same situation who land here like I did, Robin.

No offence meant chap, apologies if it came across that way.
Just thought it had been discussed further up the thread

I believe this topic is still alive because there’s not a clear answer. For example, I can’t disable IPv6 DNS from my router. Also, I have a solution and I have figured out what Chrome on Android is doing.

First, what Android Chrome is doing. When Android gets the DNS servers when it connects to Wi-Fi it gets two addresses. The first, is pi-hole (for example and the second DNS is typically a backup in case pi-hole is down (something external like Chrome does a DNS lookup for an ad domain and pi-hole blocks it properly. But, Chrome then tries the secondary DNS because the first one didn’t return a result. So Chrome then gets the ip of the ad domain from which then causes the ad to show.

I’ve been able to confirm this action by changing my second DNS server to the Wi-Fi port on my pi-hole (IP in my case). Now, when Android tries both DNS 1 & 2 for an ad domain, they both fail because both are pointing to my pi-hole.

While this does create a situation where if the pi-hole fails no DNS works, that has yet to happen. But, it does pinpoint the source of the problem. Android Chrome is not doing DNS correctly, it’s trying DNS 2 when we’re on purpose causing the DNS 1 lookup to fail.

Good luck getting Google to “fix” this, as they probably see it as a “feature”. But the short answer is to point both DNS 1 and DNS 2 to your pi-hole (Ethernet port and Wi-Fi). If you don’t have both Ethernet and Wi-Fi on your pi-hole, just set DNS 2 to which is your localhost.


I have just installed 2 days ago Pi-Hole today for blocking some distraccions for sudiying (YouTube) and I have ad blocking working on Android with Samsung internet explorer, Google Chrome and all apps. I’ll explain what I did:

  1. Set Android pone IP to an static one from the router.
  2. On the Android Device, go to wifi settings, select your wifi network, advaced settings, set IP to static (check that it is the same static ip you set on router).
  3. On DNS 1 write the Pi-Hole static IP (I suppose you set Pi-Hole IP to static on router when you did the Pi-Hole installation).
  4. On DNS 2 write any DNS you like (I have Google DNS This let you to have normal internet when you turn off the raspberry or lost conection for any reason.

Extra: I had everything working at this point but I highly recommend to add more blocking lists, I did it from this (excellent work): [UPDATE] The best blocking lists for the Pi-Hole + Alternative DNS servers 2019

I hope I could help you.

EDIT: More details. I set Google DNS on Pi-Hole. Raspberry model: Pi 3B. Android device: Samsung Galaxy S9+, Android 9.0. I think that Android versión and device’s Brand are not the problem but I add this details for more info.

TL:DR: This might work for some. Disable advanced DNS on your phone if you have it. Settings/Network & internet/Advanced/Private DNS/Off. AND/OR Turn off any DNS adblocker on your phone like dns66 or DoH client like cloudflared as they will also bypass pihole.

Good morning all, I had the same problem and hopefully this is helpful for some but it might not be for all. I have pfsense blocking all dns requests outbound and IPv6 off yet I was still getting ads on my phone (pixel 3 xl). I have cloudflared (DoH, I highly recommend setting this up if you aren’t doing this already) running on my pihole server and that tunnels dns requests out via 443. I get no ads on anything at home except my phone. I was pulling my hair out trying to figure it out.

If you have advanced DNS configured, your phone will tunnel dns requests out using the servers that are configured in advanced DNS and bypass pihole. Also, if you run any other DNS redirect service on your phone like dns66 or cloudflared for DoH on your phone, that will bypass pihole. Turn those off.

Hopefully this helps some. Cheers!

EDIT: grammar