Pi-hole for Android - The original

Overview

Pi-hole for Android

Pi-hole for ARMv7 (2011 and newer) Android devices.

IMG_2229

Note: There is no endorsement or partnership between this page and Pi-hole© LLC. They deserve your support if you find this useful.

Pi-hole is a Linux network-level advertisement and Internet tracker blocking application which acts as a DNS sinkhole intended for use on a private network. It is designed for low-power embedded devices with network capability, most well-known being the Raspberry Pi.

This customized Linux Deploy image works on any rooted Android device with an ARMv7 class (or newer) CPU. This typically includes any devices made in the past 10+ years. Form factor is not important; it could be a phone, tablet, HDMI stick or any device running Android.

Requirements:

  • Android device that has been rooted
  • Developer Options -> Root Access -> Enabled for Apps

Instructions:

  • Open web browser on device and download+install the Linux Deploy APK. You can also download this from the Play Store if preferred:

  • Download the Pi-hole for Android disk image: (v1.2 / Sept 14, 2021)

  • Open Linux Deploy and change ONLY these settings:

    • Open Properties Menu (Bottom Right)
    • Distribution: rootfs.tar
    • Source Path - This varies depending on the device, ie: ${EXTERNAL_STORAGE}/Download/p4a12.tar.gz
    • Set password for user android
    • Init -> Enable
  • Go back to main window, click Options Menu (Three dots, usually at top right of screen) and click Install

    • Wait a few minutes while CentOS installs.

    • Allow the install to complete before proceeding to next steps.

    • When install is complete, the Linux Deploy console window will show the following:

      [HH:mm:ss] >>> :: Configuring core/launchroot ...

      [HH:mm:ss] >>> deploy

    • If you see an errror message in the Linux Deploy console, you probably didn't enter the location of p4a12.tar.gz correctly. You need to fix this before you can continue.

  • Open the 'Hamburger menu' (Three dashes at top left) and touch Settings

    • Place checkmark on Lock Wi-Fi
    • Place checkmark on Autostart

Touch the [ > START ] button and confirm.


INSTALLATION COMPLETE - PI-HOLE IS RUNNING ON YOUR ANDROID DEVICE!


Your Android device's IP is shown at the top of the Linux Deploy main window. You can interact with the Pi-hole instance in three ways:

  • Open a web browser to the Android device's IP address --> http://10.13.12.11/admin

  • SSH to the instance on port 22 --> ssh [email protected]

  • RDP to the device's IP address from a Windows machine --> mstsc.exe /v:10.13.12.11

Additional Info

You can restart (or "bounce") the Pi-hole instance in Linux Deploy by pressing [ STOP ] and waiting a few seconds for the instance to indicate all services are stopped. Restart the instance by pressing [ > START ]

When a Pi-hole instance starts up, the default setting is to let it automagically configure networking. If you change networks on the Android device simply restart the instance for Pi-hole to pick up the new settings.

Alternatively, set a static assignment by commenting-out two lines in /etc/rc.local (You will see which ones when you open the file in an editor.) After the lines are commented out with a hash "#" you can manually add your IP, subnet and interface name to /etc/pihole/setupVars.conf

The Pi-hole instance on Android otherwise behaves like it is running on a 'real' Raspberry-Pi or a standard PC. Consult the extensive documentation online to learn how to fully leverage Pi-hole's functionality.

Comments
  • Getting this error while installing :  WARNING: linker: Unsupported flags DT_FLAGS_1=0x8000001

    Getting this error while installing : WARNING: linker: Unsupported flags DT_FLAGS_1=0x8000001

    I tried hitting install with Pi Deploy app and Im getting the same error over and over again. Then I tried installing raspbian using Linux deploy from play store and it got installed without any error. Any idea why?

    opened by MrVKY 34
  • Unable to reconnect to the wifi network after disconnection

    Unable to reconnect to the wifi network after disconnection

    Sometimes I'm able to reconnect without issues but almost every time it says that the DNS address could not be found.

    issue

    I then have to resort to restarting the router to reconnect successfully.

    opened by wizard-28 30
  • Temp sensor not found

    Temp sensor not found

    Hello, i got the pi hole to run however on the dashboard it saids “temp sensor not found”. Also I see a message saying the pi hole is out of date. How can I update this? When I try to I get an error. Thank you

    opened by SpidaXS 23
  • Health status of this list is not showing.

    Health status of this list is not showing.

    Health status of this list: | List was not downloaded so far
    -- | --
    This list was added to Pi-hole | 7 minutes ago (2022-01-22 15:18:03)
    Database entry was last modified | 6 minutes ago (2022-01-22 15:18:32)
    The list contents were last updated | a few seconds ago (2022-01-2215:24:22)
    Number of domains on this list: | N/A
    Number of invalid domains on this list: | N/A
    Database ID of this list: | 35
    

    "Health status of this list", "Number of domains on this list", "Number of invalid domains on this list" not showing any info.

    While it does actually updates it and working. This is happening with all the lists in the web UI. Any idea what might be the issue?

    [android@localhost ~]$ pihole -g
      [i] Neutrino emissions detected...
      [✓] Pulling blocklist source list into range
    
      [✓] Preparing new gravity database
      [i] Using libz compression
    
      [i] Target: https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
      [✓] Status: Retrieval successful
      [i] Analyzed 97960 domains
      [i] List stayed unchanged
    
      [i] Target: https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt
      [✓] Status: No changes detected
      [i] Analyzed 34 domains
    
      [i] Target: https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
      [✓] Status: No changes detected
      [i] Analyzed 2701 domains
    
      [i] Target: https://dbl.oisd.nl/
      [✓] Status: No changes detected
      [i] Analyzed 1134791 domains
    
      [i] Target: https://raw.githubusercontent.com/PolishFiltersTeam/KADhosts/master/KADhosts.txt
      [✓] Status: Retrieval successful
      [i] Analyzed 42916 domains
      [i] List stayed unchanged
    
      [i] Target: https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Spam/hosts
      [✓] Status: Retrieval successful
      [i] Analyzed 57 domains
      [i] List stayed unchanged
    
      [i] Target: https://v.firebog.net/hosts/static/w3kbl.txt
      [✓] Status: No changes detected
      [i] Analyzed 357 domains
    
      [i] Target: https://adaway.org/hosts.txt
      [✓] Status: No changes detected
      [i] Analyzed 7525 domains
    
      [i] Target: https://v.firebog.net/hosts/AdguardDNS.txt
      [✓] Status: No changes detected
      [i] Analyzed 43805 domains
    
      [i] Target: https://v.firebog.net/hosts/Admiral.txt
      [✓] Status: No changes detected
      [i] Analyzed 636 domains
    
      [i] Target: https://raw.githubusercontent.com/anudeepND/blacklist/master/adservers.txt
      [✓] Status: Retrieval successful
      [i] Analyzed 42292 domains
      [i] List stayed unchanged
    
      [i] Target: https://v.firebog.net/hosts/Easylist.txt
      [✓] Status: No changes detected
      [i] Analyzed 16300 domains
    
      [i] Target: https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=0&mimetype=plaintext
      [✓] Status: Retrieval successful
      [i] Received empty file
      [✗] List download failed: using previously cached list
      [i] Analyzed 3676 domains
    
      [i] Target: https://raw.githubusercontent.com/FadeMind/hosts.extras/master/UncheckyAds/hosts
      [✓] Status: No changes detected
      [i] Analyzed 9 domains
    
      [i] Target: https://raw.githubusercontent.com/bigdargon/hostsVN/master/hosts
      [✓] Status: Retrieval successful
      [i] Analyzed 15267 domains
      [i] List stayed unchanged
    
      [i] Target: https://v.firebog.net/hosts/Easyprivacy.txt
      [✓] Status: No changes detected
      [i] Analyzed 12881 domains
    
      [i] Target: https://v.firebog.net/hosts/Prigent-Ads.txt
      [✓] Status: No changes detected
      [i] Analyzed 3670 domains
    
      [i] Target: https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.2o7Net/hosts
      [✓] Status: Retrieval successful
      [i] Analyzed 1286 domains
      [i] List stayed unchanged
    
      [i] Target: https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt
      [✓] Status: Retrieval successful
      [i] Analyzed 378 domains
      [i] List stayed unchanged
    
      [i] Target: https://hostfiles.frogeye.fr/firstparty-trackers-hosts.txt
      [✓] Status: Retrieval successful
      [i] Received empty file
      [✗] List download failed: using previously cached list
      [i] Analyzed 14039 domains
    
      [i] Target: https://raw.githubusercontent.com/Zelo72/rpi/master/pihole/blocklists/kees1958.txt
      [✓] Status: Retrieval successful
      [i] Analyzed 4826 domains
      [i] List stayed unchanged
    
      [i] Target: https://raw.githubusercontent.com/DandelionSprout/adfilt/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareHosts.txt
      [✓] Status: Retrieval successful
      [i] Analyzed 6622 domains
      [i] List stayed unchanged
    
      [i] Target: https://osint.digitalside.it/Threat-Intel/lists/latestdomains.txt
      [✓] Status: Retrieval successful
      [i] Received empty file
      [✗] List download failed: using previously cached list
      [i] Analyzed 1116 domains
    
      [i] Target: https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt
      [✓] Status: No changes detected
      [i] Analyzed 2735 domains
    
      [i] Target: https://v.firebog.net/hosts/Prigent-Crypto.txt
      [✓] Status: No changes detected
      [i] Analyzed 14148 domains
    
      [i] Target: https://bitbucket.org/ethanr/dns-blacklists/raw/8575c9f96e5b4a1308f2f12394abd86d0927a4a0/bad_lists/Mandiant_APT1_Report_Appendix_D.txt
      [✓] Status: No changes detected
      [i] Analyzed 2046 domains
    
      [i] Target: https://phishing.army/download/phishing_army_blocklist_extended.txt
      [✓] Status: No changes detected
      [i] Analyzed 53981 domains
    
      [i] Target: https://gitlab.com/quidsup/notrack-blocklists/raw/master/notrack-malware.txt
      [✓] Status: Retrieval successful
      [i] Analyzed 325 domains
      [i] List stayed unchanged
    
      [i] Target: https://raw.githubusercontent.com/Spam404/lists/master/main-blacklist.txt
      [✓] Status: Retrieval successful
      [i] Analyzed 8148 domains
      [i] List stayed unchanged
    
      [i] Target: https://raw.githubusercontent.com/FadeMind/hosts.extras/master/add.Risk/hosts
      [✓] Status: Retrieval successful
      [i] Analyzed 2202 domains
      [i] List stayed unchanged
    
      [i] Target: https://urlhaus.abuse.ch/downloads/hostfile/
      [✗] Status: Connection Refused
      [✗] List download failed: using previously cached list
      [i] Analyzed 1315 domains
    
      [i] Target: https://zerodot1.gitlab.io/CoinBlockerLists/hosts_browser
      [✓] Status: No changes detected
      [i] Analyzed 3496 domains
    
      [i] Target: https://raw.githubusercontent.com/llacb47/mischosts/master/tiktok-hosts
      [✓] Status: Retrieval successful
      [i] Analyzed 184 domains
      [i] List stayed unchanged
    
      [✓] Storing downloaded domains in new gravity database
      [✓] Building tree
      [✓] Swapping databases
      [✓] The old database remains available.
    
    opened by FDisk80 23
  • UDP status

    UDP status "not working" but seems to be working actually

    This is an issue which happened on one of my devices (Kernel 3.4.0) after an update to pihole v5.8 (and higher).

      [✓] FTL is listening on port 53
         [✗] UDP (IPv4)
         [✓] TCP (IPv4)
         [✗] UDP (IPv6)
         [✓] TCP (IPv6)
    
      [✓] Pi-hole blocking is enabled
    

    It is also something which is not particularly unique to my device but I'm a bit lost as to why it happens since a month. Here's a few people having the issue on reddit as well: https://www.reddit.com/r/pihole/comments/rxg75n/udp_not_working_after_581_update/?sort=new

    I have another device with an even older kernel v3.0.8 and status is fine there. I'm unsure as to why it may be an issue on newer kernel since the p4a image is same on both devices?

    Any idea how can do RCA on this?

    Thanks!

    opened by ashishkotnala29 22
  • "pihole -up" not updating to latest version (only FTL was updated)

    [android@localhost ~]$ pihole -v Pi-hole version is v5.8.1 (Latest: v5.9) AdminLTE version is v5.10.1 (Latest: v5.11) FTL version is v5.14 (Latest: v5.14)

    [android@localhost ~]$ pihole -up [✓] Checking for git [✓] Checking for iproute [✓] Checking for newt [✓] Checking for procps-ng [✓] Checking for which [✓] Checking for chkconfig [✓] Checking for ca-certificates [i] Checking for updates... [i] Pi-hole Core: up to date [i] Web Interface: up to date [i] FTL: up to date [✓] Everything is up to date!

    opened by FDisk80 18
  • [Fixed in 3.6.6] PADD not working

    [Fixed in 3.6.6] PADD not working

    Hello, I successfully installed pihole on my android device all thanks to you. I sshed to my android device on windows using putty but when I type the "padd" nothing happens.

    opened by Dynasty-Dev 17
  •  Linux deploy gives me a Error after start

    Linux deploy gives me a Error after start

    Hey Linux deploy gives me a Error after start "rc.local..... fail"

    How can i fix it ?

    00:09:41] >>> start [00:09:41] Checking file system ... skip [00:09:41] Mounting the container: [00:09:41] / ... skip [00:09:41] /proc ... skip [00:09:41] /sys ... skip [00:09:41] /dev ... skip [00:09:41] /dev/shm ... skip [00:09:41] /dev/pts ... skip [00:09:41] :: Starting core/emulator ... skip [00:09:41] :: Configuring core/mnt ... [00:09:41] :: Configuring core/net ... [00:09:41] :: Starting init/run-parts: [00:09:41] rc.local ... fail [00:09:41] <<< start

    opened by Haze030 15
  • Unable to access admin console after installing

    Unable to access admin console after installing

    Hi, I have successfully installed this on a MotoZ2 force running lineage 18.1, and everything seems fine except I can't access the admin console. I can do SSH and RDP access.

    Please see the screenshots: Screenshot_20220114-140348_Trebuchet Screenshot 2022-01-14 140828

    opened by DkGnjCfEcA 13
  • Android 4.x ONLY - FTL not updating to v5.19.2 after

    Android 4.x ONLY - FTL not updating to v5.19.2 after "p4a-install"

    [✓] Update complete!

    /etc/pihole/versions: line 14: invalid: command not found /etc/pihole/versions: line 15: Command:: command not found /etc/pihole/versions: line 16: Try: command not found Cloning into 'FTL'...sion is v5.14.1 remote: Enumerating objects: 295, done. remote: Counting objects: 100% (295/295), done. remote: Compressing objects: 100% (279/279), done. remote: Total 295 (delta 25), reused 105 (delta 12), pack-reused 0 Receiving objects: 100% (295/295), 3.38 MiB | 104.00 KiB/s, done. Resolving deltas: 100% (25/25), done.

    Building pihole-FTL from source. This will take a few minutes...

    /etc/pihole/versions: line 14: invalid: command not found /etc/pihole/versions: line 15: Command:: command not found /etc/pihole/versions: line 16: Try: command not found Pi-hole version is v5.14.1 (Latest: v5.14.1) AdminLTE version is v5.17 (Latest: v5.17) FTL version is v5.16.3 (Latest: v5.19.2) [✓] FTL is listening on port 53 [✓] UDP (IPv4) [✓] TCP (IPv4) [✓] UDP (IPv6) [✓] TCP (IPv6)

    [✓] Pi-hole blocking is enabled

    opened by FDisk80 10
  • Samsung Tab S2 - cannot deactivate SELinux Enforce because Inkernel SeLinux

    Samsung Tab S2 - cannot deactivate SELinux Enforce because Inkernel SeLinux

    Hello Here are i'm again^^ Ok i got finally Rooted my Samsung Tab 2 SM-T 813 (after 3 Failures and 1 Brick i was able to Root the Stock Samsung OS from 2016) and followed your Steps Carefully. Ok now next Huge Problem, when i try to install the Script in the Linux deplolyer it says permission denied on mass. I looked in the Internet and it is caused by the INKERNEL integrated SELinux Enforce mode (Knox) (yes i tried to delete the App but it gets instant installed from the Inkernel. And no LinuxSeSwitcher dont work, it says permissive is sent to system but in systeminfo it stays enforced AND after reboot to. I Even installed that Busybox thingy. ^^

    So i have to search for a Custom ROM. But... my Nerves are Momentarly at zero lol. I need Guidance pls lol, just as i sayd in my previous post on the Windows 10 Pi-Hole Thread that i'm not so good at Programming things, i just want to get that Pi-Hole worked on android, so that i can relax. ^^ But when it's too complicated i will stick to the Brave Browser lol.

    I say already thanks for Reading this.

    opened by Sinusflorian 10
Releases(v3.0.2)
  • v3.0.2(Nov 8, 2022)

    Pi-hole for Android (Pi Deploy) utilizes a fork of Linux Deploy to simplify deployment of Raspbian to most rooted Android devices.

    Note to users of previous builds:

    • Uninstall any previous versions of Linux Depoy or Pi Deploy and reboot your device.
    • Failure to heed this advice will cause issues!

    Installation:

    • Download and Install the latest Pi Deploy APK
    • Tap the Options menu (Three dots at top right of screen)
    • Tap New Deployment
    • After a few moments the Raspbian Image will download and install to your device.
    • When deployment is complete, tap [ ▷ START ] to launch the instance.
    • The instance will provide you with a password for Pi-hole admin, SSH and RDP access (Username: android, see screenshot below)
    • Note: The password appears only once when the image is deployed, make sure you record this information.
    • Hint: The password text can be copy/pasted to other Android apps (like Remote Desktop)
    • (Optional, post-install) To install PIXEL Desktop run pideploy-gui-install and restart the instance. Next time you login via RDP you will have a full desktop session with audio support.
    image image image Source code(tar.gz)
    Source code(zip)
    pideploy.apk(23.91 MB)
    raspbian.tgz(270.04 MB)
  • v1.7(Oct 6, 2022)

    • Uploaded p4a17a.tgz to include updated Nettle packages for pihole-FTL v5.19
    • Update p4a-install
    • Update rc.local init scripts
    • Added ntp for time sync on startup
    • Better handling of network discovery when device DNS is pointing at local Pi-hole instance
    • Note: Enable Debug Mode in Settings to see console output below:

    Screenshot_20221006-095149

    Source code(tar.gz)
    Source code(zip)
    p4a17.tgz(467.92 MB)
    p4a17a.tgz(484.94 MB)
  • v1.6(Sep 8, 2022)

    • Updated packagelist and sync release version with upstream
    • Build pi-hole-FTL from source instead of binary download
    • Shutdown and PowerOff options in Web Admin are working
    • Added systemctl-shim to enable systemctl functionality

    To update Pi-hole when upstream publishes new releases, connect to the Pi-hole instance via SSH or RDP and run the following command:

    p4a-install

    The equivalent command pihole -up will quit, reporting an unsupported distro.
    Moving forward, you must use p4a-install to update Pi-hole.

    Source code(tar.gz)
    Source code(zip)
    p4a16.tgz(464.95 MB)
Owner
null
SL4A brings scripting languages to Android by allowing you to edit and execute scripts and interactive interpreters directly on the Android device.

#Scripting Layer for Android (SL4A) SL4A brings scripting languages to Android by allowing you to edit and execute scripts and interactive interpreter

Damon Kohler 2.3k Dec 23, 2022
****. Use the native and support library variants instead - https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html. An android library that makes it easy to add custom fonts to edittexts and textviews

Add to your project Add this line to your dependencies in build.gradle compile 'in.workarounds.typography:typography:0.0.8' Using the views There are

Workarounds 43 Nov 6, 2021
ZXing ("Zebra Crossing") barcode scanning library for Java, Android

Project in Maintenance Mode Only The project is in maintenance mode, meaning, changes are driven by contributed patches. Only bug fixes and minor enha

ZXing Project 30.5k Dec 27, 2022
RxJava binding APIs for Android's UI widgets.

RxBinding RxJava binding APIs for Android UI widgets from the platform and support libraries. Download Platform bindings: implementation 'com.jakewhar

Jake Wharton 9.7k Jan 6, 2023
A gradle plugin for getting java lambda support in java 6, 7 and android

Gradle Retrolambda Plugin This plugin will automatically build your java or android project with retrolambda, giving you lambda goodness on java 6 or

Evan Tatarka 5.3k Jan 5, 2023
A comprehensive tutorial for Android Data Binding

精通 Android Data Binding 更多干货可移步至个人主页 QQ 交流群:324112728 ,或者点击链接加入QQ群 官方虽然已经给出了教程 - Data Binding Guide (中文版 - Data Binding(数据绑定)用户指南) ,但是实践之后发现槽点实在太多,于是就

Fei Liang 2.6k Dec 6, 2022
A Job Queue specifically written for Android to easily schedule jobs (tasks) that run in the background, improving UX and application stability.

Development in this repository is stopped. Future development continues on https://github.com/yigit/android-priority-jobqueue ========================

Path Mobile Inc Pte. Ltd. 2.4k Dec 9, 2022
An android library for displaying fps from the choreographer and percentage of time with two or more frames dropped

DEPRECATED TinyDancer is deprecated. No more development will be taking place. Check out the Google Android developer documentation for UI performance

Friendly Robot 1.9k Jan 3, 2023
Memory safer implementation of android.os.Handler

Android Weak Handler Memory safer implementation of android.os.Handler Problem Original implementation of Handler always keeps hard reference to handl

Badoo Tech 1.5k Jan 5, 2023
Android Library to help you with your runtime Permissions.

PermissionHelper Android Library to help you with your runtime Permissions. Demo Android M Watch it in action. Pre M Watch it in action. Nexus 6 (M) N

Kosh Sergani 1.2k Dec 14, 2022
Android validation library which helps developer boil down the tedious work to three easy steps.

AwesomeValidation Introduction Implement validation for Android within only 3 steps. Developers should focus on their awesome code, and let the librar

Jing Li 1.1k Dec 17, 2022
📄The reliable, generic, fast and flexible logging framework for Android

logback-android v2.0.0 Overview logback-android brings the power of logback to Android. This library provides a highly configurable logging framework

Tony Trinh 1.1k Jan 8, 2023
Android framework for node.js applications

Introduction Anode is an embryonic framework for running node.js applications on Android. There are two main parts to this: a port of node.js to the A

Paddy Byers 586 Dec 9, 2022
It makes a preview from an url, grabbing all the information such as title, relevant texts and images. This a version for Android of my web link preview https://github.com/LeonardoCardoso/Link-Preview

LeoCardz Link Preview for Android It makes a preview from an url, grabbing all the information such as title, relevant texts and images. Visual Exampl

Leonardo Cardoso 420 Nov 19, 2022
AndroidPermissions 4.2 0.0 Java Android M was added to check Permission. but Permission check processing is so dirty.

Android Permissions Checker Android M was added to check Permission. but Permission check processing is so dirty. This Project is to be simple, Checki

Steve SeongUg Jung 340 Nov 11, 2022
A plug and play ;) android library for displaying a "rate this app" dialog

Easy Rating Dialog This lib provides a simple way to display an alert dialog for rating app. Default conditions to show: User opened the app more than

Fernando Martínez 111 Dec 30, 2022
Tool for Android app development

RateMeMaybe Asks the user if (s)he wants to open the Play Store to rate your application when certain requirements are met (see below). This can and s

Nicolai Spohrer 98 Dec 30, 2022
AudioPlayerView is an Android view that loads audio from an url and have basic playback tools.

AudioPlayerView AudioPlayerView is an Android view that loads audio from an url and have basic playback tools. It makes use of the Android MediaPlayer

Hugo Matilla 86 Nov 29, 2022
andle is an Android tool help you sync dependencies, sdk or build tool version.

andle andle is an Android tool to help you sync dependencies, SDK or build tool version. Installation Simple install by pip: $ sudo pip install andle

Jintin 58 Sep 17, 2022