I just realised that the dnsmasq instance called upon by NM would conflict with the pihole-FTL.service instance over port 53.
You could try disabling the pihole-FTL.service reboot persistent with below and hope NM will startup dnsmasq / pihole-FTL as expected:
sudo systemctl disable --now pihole-FTL.service
To enable again if not working as expected:
sudo systemctl enable --now pihole-FTL.service
Or else it gets quite complicated to have the two coexist bc of the port 53 conflict (EDIT: I guess).
EDIT: Below ones might be useful:
pstree -pt
sudo ss -nltup
EDIT2: Do you have below folder?
/etc/NetworkManager/dnsmasq-shared.d/
I believe thats the spot where dnsmasq config files can be dropped.
Or maybe there is one or more already?
Check below man page which has a few dnsmasq references:
$ man NetworkManager.conf
[..]
dnsmasq: NetworkManager will run dnsmasq as a local
caching nameserver, using "Conditional Forwarding" if you
are connected to a VPN, and then update resolv.conf to
point to the local nameserver. It is possible to pass
custom options to the dnsmasq instance by adding them to
files in the "/etc/NetworkManager/dnsmasq.d/" directory.
And maybe if you get the hotspot up with Pi-hole disabled, you can figure out with which arguments the dnsmasq binary is called upon with below?
EDIT: Oh change that into below so we know the user as well:
NetworkManager is able to start dnsmasq processes as required. NM configures them via configuration files from /etc/NetworkManager/dnsmasq-shared.d (for its hotspot service) and /etc/NetworkManager/dnsmasq.d/ (for its DNS service).
So for NM's dnsmasq DHCP service and pihole-FTL's DNS service to coexist, you 'd have to make sure that neither one uses the ports of the other.
If you want Pi-hole to handle DNS, try adding port=0 to NM's dnsmasq config files to disable NM's DNS functionality and only leave DHCP.
I added /etc/NetworkManager/dnsmasq.d/custom.conf that has only port=0 and then restarted the NetworkManager, but I got this: NetworkManager[264904]: dnsmasq: failed to create listening socket for 10.42.0.1: Address already in use