Pihole on the Beagle Bone Black

  • piholeonblack
  • Jonathan Haack
  • Haack’s Networking
  • netcmnd@jonathanhaack.com


This tutorial instructs users on how to get a vanilla pihole instance functioning on the Beagle Bone Black. Please remember that my blog posts age, but my original Wiki post for this will receive updates as software/distributions/configurations change etc. Also, I don’t cover why to install a DNS sinkhole in this post, but you can read up on some others’ thoughts here:

The first step is to update/upgrade, then remove the files in /opt/ which are not required, and lastly to remove the software that will conflict with the pihole software and that is installed by default by BBB. (Do not remove anything starting with bb- as that is firmware needed for the device to work properly – believe me, I have tried.) Save removal of connman for after pihole installation takes over DNS. Here is what I do in order:

sudo apt update
sudo apt upgrade
sudo rm -rf /opt/*
sudo reboot
sudo apt remove --purge nginx* nodejs* apache2*
sudo apt autoremove
sudo apt autoclean
sudo reboot

Shell back in to the fresh system without clutter, and now run the installation script provided by pihole. Certainly look over the code first and/or visit their website for the latest script.

sudo -i
curl -sSL https://install.pi-hole.net | bash

Once it completes, it will fail to start pihole-FTL.service. The first reason is because the native dnsmasq configuration is conflicting with the re-write of dnsmasq that is provided by the pihole package. To get rid of this error, instruct the device to not use the default generated dnsmasq, create a leasefile for pihole to use with proper permissions, and remove two conflicting lines from the stock dnsmasq configuration (cache/leasefile) that the pihole software will conflict with (these conflicts can be verified in logs on pihole GUI). I typically reboot once more after these changes, just to make sure it comes back online, etc., but you will still not be in the clear.

sudo nano /etc/default/bb-wl18xx
rm /var/lib/misc/dnsmasq.leases
touch /var/lib/misc/dnsmasq.leases
chown pihole:pihole /var/lib/misc/dnsmasq.leases
sudo nano /etc/dnsmasq.d/SoftAp0
sudo reboot

The next problem is that the Beagle Bone Black’s network manager, connman, which is controlling both DNS/DHCP, is still installed and is starting on port 53 prior to the pihole-FTL.service, thus the pihole cannot start managing DNS since the port is already in use. However, the pihole is now ready to take over DNS and the DHCP client settings for the device itself (not to be confused with using as a DHCP server). Thus, it is now safe to remove connman without having to configure /etc/interfaces or do anything else to dnsmasq since pihole will take care of both henceforward.

sudo apt remove --purge connman
sudo reboot

More than likely, the Beagle Bone Black will hang at around 20/30% of the removal, since it will have lost its dhcp client reservation. Personally, I always have serial connected just in case, but if not, wait 3-4 minutes and then unplug and plug the device back in, and connman will be removed, and pihole-FTL.service will now be able to start and listen on port 53 and manage DNS requests, and the pihole will configure the device properly as a dhcp client underneath your router. From here, go to the GUI and all should be working.

Thanks to Freedom to Play for getting me started with this and to Jared from ABQ GLUG for the idea to tinker with pihole.

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: