With both "enable" options unchecked (I also tried with just IPv6 checked, but no change.
) and tcpdump running on pihole as per your syntax, I see this in the pihole query log which is indeed the ESP device. It remains without a wifi connection in a continual connection attempt loop. This entry repeats periodically in the phhole log.
Mar 25 10:11:06 dnsmasq-dhcp[14325]: DHCPDISCOVER(eth0) c8:2b:96:30:0b:0b
Mar 25 10:11:06 dnsmasq-dhcp[14325]: DHCPOFFER(eth0) 192.168.4.146 c8:2b:96:30:0b:0b
Mar 25 10:11:06 dnsmasq-dhcp[14325]: DHCPREQUEST(eth0) 192.168.4.146 c8:2b:96:30:0b:0b
Mar 25 10:11:06 dnsmasq-dhcp[14325]: DHCPACK(eth0) 192.168.4.146 c8:2b:96:30:0b:0b ESP_300B0B
Mar 25 10:11:08 dnsmasq-dhcp[14325]: DHCPREQUEST(eth0) 192.168.4.146 c8:2b:96:30:0b:0b
Mar 25 10:11:08 dnsmasq-dhcp[14325]: DHCPACK(eth0) 192.168.4.146 c8:2b:96:30:0b:0b ESP_300B0B
tcpdump, however, shows only 2 entries for seemingly a different device, or at least MAC. However at the time of testing there wouldnt be any other devices asking for DHCP. I ran the test a few times just in case a lease for a different device had expired, but each time this is the only tcpdump captured.
00:00:00.000000 IP (tos 0x0, ttl 64, id 47833, offset 0, flags [none], proto UDP (17), length 379)
0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from 62:d7:42:2c:71:69, length 351, xid 0xcdff836a, secs 65535, Flags [none] (0x0000)
Client-Ethernet-Address 62:d7:42:2c:71:69
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Discover
Client-ID Option 61, length 19: hardware-type 255, 42:2c:71:69:00:01:00:01:23:dc:4f:f5:62:cb:2f:a2:4a:53
SLP-NA Option 80, length 0""
MSZ Option 57, length 2: 1472
Vendor-Class Option 60, length 50: "dhcpcd-6.11.5:Linux-4.19.62-sunxi:armv7l:Allwinner"
Hostname Option 12, length 6: "pihole"
T145 Option 145, length 1: 1
Parameter-Request Option 55, length 15:
Subnet-Mask, Classless-Static-Route, Static-Route, Default-Gateway
Domain-Name-Server, Hostname, Domain-Name, MTU
BR, NTP, Lease-Time, Server-ID
RN, RB, Option 119
END Option 255, length 0
00:01:04.092837 IP (tos 0x0, ttl 64, id 653, offset 0, flags [none], proto UDP (17), length 379)
0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from 62:d7:42:2c:71:69, length 351, xid 0xcdff836a, secs 65535, Flags [none] (0x0000)
Client-Ethernet-Address 62:d7:42:2c:71:69
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Discover
Client-ID Option 61, length 19: hardware-type 255, 42:2c:71:69:00:01:00:01:23:dc:4f:f5:62:cb:2f:a2:4a:53
SLP-NA Option 80, length 0""
MSZ Option 57, length 2: 1472
Vendor-Class Option 60, length 50: "dhcpcd-6.11.5:Linux-4.19.62-sunxi:armv7l:Allwinner"
Hostname Option 12, length 6: "pihole"
T145 Option 145, length 1: 1
Parameter-Request Option 55, length 15:
Subnet-Mask, Classless-Static-Route, Static-Route, Default-Gateway
Domain-Name-Server, Hostname, Domain-Name, MTU
BR, NTP, Lease-Time, Server-ID
RN, RB, Option 119
END Option 255, length 0
Turning off DHCP on pihole and enabling it on a router gives this dump and a successful wifi connection for the ESP
00:00:00.000000 IP (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto UDP (17), length 336)
0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from c8:2b:96:30:0b:0b, length 308, xid 0xccfeedf1, Flags [none] (0x0000)
Client-Ethernet-Address c8:2b:96:30:0b:0b
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Discover
MSZ Option 57, length 2: 1500
Parameter-Request Option 55, length 5:
Subnet-Mask, Default-Gateway, BR, Domain-Name-Server
NTP
END Option 255, length 0
PAD Option 0, length 0, occurs 53
00:00:01.536308 IP (tos 0x0, ttl 255, id 1, offset 0, flags [none], proto UDP (17), length 336)
0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from c8:2b:96:30:0b:0b, length 308, xid 0xccfeedf1, Flags [none] (0x0000)
Client-Ethernet-Address c8:2b:96:30:0b:0b
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Discover
MSZ Option 57, length 2: 1500
Parameter-Request Option 55, length 5:
Subnet-Mask, Default-Gateway, BR, Domain-Name-Server
NTP
END Option 255, length 0
PAD Option 0, length 0, occurs 53
00:00:04.301637 IP (tos 0x0, ttl 255, id 2, offset 0, flags [none], proto UDP (17), length 336)
0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from c8:2b:96:30:0b:0b, length 308, xid 0xccfeedf1, Flags [none] (0x0000)
Client-Ethernet-Address c8:2b:96:30:0b:0b
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Discover
MSZ Option 57, length 2: 1500
Parameter-Request Option 55, length 5:
Subnet-Mask, Default-Gateway, BR, Domain-Name-Server
NTP
END Option 255, length 0
PAD Option 0, length 0, occurs 53
00:00:00.000010 IP (tos 0x0, ttl 255, id 3, offset 0, flags [none], proto UDP (17), length 336)
0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from c8:2b:96:30:0b:0b, length 308, xid 0xccfeedf1, Flags [none] (0x0000)
Client-Ethernet-Address c8:2b:96:30:0b:0b
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Request
MSZ Option 57, length 2: 1500
Requested-IP Option 50, length 4: 192.168.4.183
Server-ID Option 54, length 4: 192.168.4.1
Parameter-Request Option 55, length 5:
Subnet-Mask, Default-Gateway, BR, Domain-Name-Server
NTP
Hostname Option 12, length 10: "ESP_300B0B"
END Option 255, length 0
PAD Option 0, length 0, occurs 29
00:00:58.370832 IP (tos 0x0, ttl 255, id 46710, offset 0, flags [none], proto UDP (17), length 336)
The ESP device gets IP 192.168.4.145 and works as expected.
The device uses standard calls so the vendor is not aware of the exact wifi connection negotiation that takes place. But based on the device being successfully used in many other installations, and this being the only one with a stand alone DHCP server, I agree its a reasonable hypothesis. The fact the device connects to my router-based DHCP, but not pihole DHCP, strongly suggests the problem is in this area. Trouble is neither of us are networking experts