DHCP discover/offer loop with OpenWrt 19.07.8 (odhcp) and Linksys RE6500

My Linksys RE6500 "range extender" (not actually used as an extender, but as an external WiFi radio for a group of older devices that have only Ethernet) is able to associate with my router running OpenWrt 19.07.8, but then cannot get an IP address for itself. It refuses to forward packets on behalf of anything else if it doesn't have its own IP address, so this is a showstopper.

Running tcpdump on the router I see an endless loop of DHCP discover and offer packets being exchanged:

19:46:23.372263 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 576)
    0.0.0.0.68 > 255.255.255.255.67: [no cksum] BOOTP/DHCP, Request from 14:91:82:19:18:75 (oui Unknown), length 548, xid 0x5e71c955, Flags [Broadcast] (0x8000)
	  Client-Ethernet-Address 14:91:82:19:18:75 (oui Unknown)
	  Vendor-rfc1048 Extensions
	    Magic Cookie 0x63825363
	    DHCP-Message Option 53, length 1: Discover
	    Client-ID Option 61, length 7: ether 14:91:82:19:18:75
	    Hostname Option 12, length 10: "RE6500-875"
	    Vendor-Class Option 60, length 12: "udhcp 1.12.1"
	    MSZ Option 57, length 2: 576
	    Parameter-Request Option 55, length 10: 
	      Subnet-Mask, Default-Gateway, Domain-Name-Server, Hostname
	      Domain-Name, BR, Static-Route, NTP
	      Classless-Static-Route, Classless-Static-Route-Microsoft
	    END Option 255, length 0
	    PAD Option 0, length 0, occurs 253
19:46:23.372568 IP (tos 0xc0, ttl 64, id 58970, offset 0, flags [none], proto UDP (17), length 328)
    openwrt.67 > 255.255.255.255.68: [bad udp cksum 0x0b46 -> 0xc463!] BOOTP/DHCP, Reply, length 300, xid 0x5e71c955, Flags [Broadcast] (0x8000)
	  Your-IP 10.0.0.239
	  Server-IP openwrt
	  Client-Ethernet-Address 14:91:82:19:18:75 (oui Unknown)
	  Vendor-rfc1048 Extensions
	    Magic Cookie 0x63825363
	    DHCP-Message Option 53, length 1: Offer
	    Server-ID Option 54, length 4: openwrt
	    Lease-Time Option 51, length 4: 43200
	    RN Option 58, length 4: 21600
	    RB Option 59, length 4: 37800
	    Subnet-Mask Option 1, length 4: 255.255.255.0
	    BR Option 28, length 4: 10.0.0.255
	    MTU Option 26, length 2: 1500
	    Default-Gateway Option 3, length 4: openwrt
	    Domain-Name-Server Option 6, length 4: openwrt
	    END Option 255, length 0
	    PAD Option 0, length 0, occurs 4
19:46:26.404130 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 576)
    0.0.0.0.68 > 255.255.255.255.67: [no cksum] BOOTP/DHCP, Request from 14:91:82:19:18:75 (oui Unknown), length 548, xid 0x5e71c955, Flags [Broadcast] (0x8000)
	  Client-Ethernet-Address 14:91:82:19:18:75 (oui Unknown)
	  Vendor-rfc1048 Extensions
	    Magic Cookie 0x63825363
	    DHCP-Message Option 53, length 1: Discover
...

(I reconfigured OpenWrt to use 10.x.x.x instead of 192.168.x.x for the internal LAN, for unrelated reasons.)

Unfortunately the troubleshooting capabilities of the RE6500 firmware are essentially nil. I can't do a packet dump from its point of view, and this is all of the logs it will give me:

Dec 31 16:00:36 syslogd started: BusyBox v1.12.1
Dec 31 16:00:36 syslog: Firmware Version: 1.0.012_build_001
Dec 31 16:00:36 syslog: S/N: 14S10P0A519033
Dec 31 16:00:36 syslog: SKU Code: FFP
Dec 31 16:00:36 syslog: 2.4GHz Extended Network: Disable
Dec 31 16:00:36 syslog: 2.4GHz CH: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
Dec 31 16:00:36 syslog: 5GHz Extended Network: Disable
Dec 31 16:00:36 syslog: 5GHz CH: 36, 40, 44, 48,149, 153, 157, 161, 165

(yes, busybox 1.12 is heinously out of date; this is nonetheless the newest available vendor firmware. I'd prefer not to mess with non-vendor firmware on this small single-function device if I can avoid it.)

I'm using odhcp for DHCP on the router. Here's a config dump:

root@OpenWrt:~# uci show dhcp
dhcp.lan=dhcp
dhcp.lan.interface='lan'
dhcp.lan.start='100'
dhcp.lan.limit='150'
dhcp.lan.leasetime='12h'
dhcp.lan.dhcpv4='server'
dhcp.lan.dns='10.0.0.1'
dhcp.wan=dhcp
dhcp.wan.interface='wan'
dhcp.wan.ignore='1'
dhcp.odhcpd=odhcpd
dhcp.odhcpd.leasefile='/tmp/hosts/odhcpd'
dhcp.odhcpd.loglevel='4'
dhcp.odhcpd.maindhcp='1'
dhcp.odhcpd.leasetrigger='/usr/lib/unbound/odhcpd.sh'

Any ideas?

tried static IP on the WAN port ?

could always put openwrt on the RE6500 :wink:

The RE6500 does have an option for that, but if I use it, then it thinks it's not supposed to forward DHCP for anything behind it, and some of those devices do not have a static IP option.

could always put openwrt on the RE6500

It only barely has enough storage (8/64) so I'm not sure that's a good idea. Also, what you have to do to bypass the signature check sounds like a real PITA.

if it's not set up as a router, it shouldn't really touch the traffic.

8/64 is fine for a device not used as a router ...

TFTP isn't rocket science ...