Android (SLAAC) have only ULA adress after a while

Hi Experts,
i have configured my Archer C7 with the relayd configuration.
Actually I am very satisfied!!
But unfortunately my Android mobile only has a ULA (FD00) address every morning instead of a global address. After a WLAN reconnect of the cell phone to the Archer C7, the cell phone has a global address again (2003:...)
I have no idea what this could be, does anyone have a tip for me ?

My network:

config interface 'loopback'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'
	option device 'lo'

config globals 'globals'
	option packet_steering '1'

config interface 'LAN'
	option proto 'static'
	option netmask '255.255.255.0'
	option ipaddr '192.168.2.1'
	option device 'br-LAN'
	option delegate '0'
	list dns 'fd00::763d:25c9:844f:3bba'
	list dns '192.168.1.100'
	option ip6assign '62'
	list ip6class 'WWAN6'

config switch
	option name 'switch0'
	option reset '1'

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '0 1 2 3 4 5 6'
	option vid '1'

config interface 'WWAN'
	option proto 'static'
	option ipaddr '192.168.1.4'
	option netmask '255.255.255.0'
	option gateway '192.168.1.1'
	option device 'phy0-sta0'
	option delegate '0'

config interface 'Pseudobridge'
	option proto 'relay'
	option ipaddr '192.168.1.4'
	list network 'LAN'
	list network 'WWAN'
	option delegate '0'

config interface 'GUEST'
	option proto 'static'
	list dns '192.168.1.100'
	option device 'phy1-ap1'
	option gateway '192.168.1.1'
	list ipaddr '192.168.5.1/24'
	option ip6assign '64'
	option delegate '0'

config interface 'WWAN6'
	option proto 'dhcpv6'
	option device 'phy0-sta0'
	option reqprefix '60'
	option reqaddress 'none'

config device
	option name 'br-LAN'
	option type 'bridge'
	list ports 'eth1'


My Wifi:

config wifi-device 'radio0'
	option type 'mac80211'
	option hwmode '11a'
	option log_level '3'
	option country 'US'
	option htmode 'VHT80'
	option path 'pci0000:00/0000:00:00.0'
	option txpower '23'
	option cell_density '0'
	option channel '44'

config wifi-device 'radio1'
	option type 'mac80211'
	option hwmode '11g'
	option noscan '1'
	option htmode 'HT40'
	option log_level '4'
	option country 'US'
	option channel '7'
	option path 'platform/ahb/18100000.wmac'
	option cell_density '1'
	option txpower '24'
	option legacy_rates '1'

config wifi-iface 'wifinet0'
	option device 'radio0'
	option mode 'sta'
	option key 'xxxxxxxxxxxxxxxxxxxxxxxx'
	option ssid 'Fritz_5Ghz'
	option ieee80211w '1'
	option encryption 'sae'
	option disassoc_low_ack '0'
	option short_preamble '0'
	option network 'WWAN WWAN6'

config wifi-iface 'wifinet1'
	option device 'radio0'
	option mode 'ap'
	option network 'LAN'
	option key 'xxxxxxxxxxxxxxxxxxxxxx'
	option ieee80211w '1'
	option macfilter 'allow'
	option encryption 'sae-mixed'
	option disassoc_low_ack '0'
	option ssid 'MyHome'
	list maclist '7C:xxxxx:2E'
	......
	list maclist 'B0:xxxxxx:39'

config wifi-iface 'wifinet3'
	option device 'radio1'
	option key 'xxxxxxxxxxxxxxxxxxxxxx'
	option mode 'ap'
	option network 'LAN'
	option disassoc_low_ack '0'
	option ieee80211w '1'
	option encryption 'sae-mixed'
	option ssid 'MyHome'
	option short_preamble '0'
	option macfilter 'allow'
	list maclist '10:xxxxxxxxxxx:98'
	...
	list maclist 'C4:xxxxxxxxxxx2D'

config wifi-iface 'wifinet4'
	option device 'radio1'
	option mode 'ap'
	option ssid 'gast'
	option key 'yyyyyyyyyyyy'
	option isolate '1'
	option network 'GUEST'
	option ieee80211w '1'
	option encryption 'sae-mixed'
	option disassoc_low_ack '0'
	option disabled '1'

My dhcp:

config dnsmasq
	option leasefile '/tmp/dhcp.leases'
	option local '/fritz.box/'
	option rebind_protection '1'
	option filterwin2k '1'
	option localservice '0'
	option domainneeded '1'
	option strictorder '1'
	option domain 'fritz.box'
	option expandhosts '1'

config dhcp 'LAN'
	option interface 'LAN'
	option ignore '1'
	option ndp 'relay'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option ra 'relay'
	option dhcpv6 'server'
	list dns 'fd00::763d:25c9:844f:3bba'


config odhcpd 'odhcpd'
	option maindhcp '0'
	option leasefile '/tmp/hosts/odhcpd'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '4'

config dhcp 'GUEST'
	option interface 'GUEST'
	option leasetime '6h'
	list dhcp_option '6,192.168.1.100'
	option ra 'server'
	option dhcpv6 'server'
	list dns 'fd00::763d:25c9:844f:3bba'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'
	option start '192.168.5.2'
	option limit '18'

config domain
	option name 'FB'
	option ip '192.168.1.1'
.
.
.
.
config domain
	option name 'Partyraum-TV'
	option ip '192.168.1.29'

config dhcp 'WWAN'
	option interface 'WWAN'
	option start '100'
	option limit '150'
	option leasetime '3'
	option ignore '1'

config dhcp 'WWAN6'
	option interface 'WWAN6'
	option ignore '1'
	option ra 'relay'
	option ndp 'relay'
	option dhcpv6 'relay'
	option master '1'

How aggressive are the sleep settings in the phone?
I can offer very little help with android but this could be be a sleep issue on the phone.

Unfortunately, even when the phone is in use, it does not receive a global address. A global adress is only assigned during a WLAN reconnect.

I think the phone dont sleep, because i see it all the time under "Associated Stations".., in fault situation with only ipv4 and the ula (fd00) adress..

Phones will 'sleep'/suspend usage, discriminately, on its SOC if it thinks it will prolong battery life for the day.

e.g. if a phone thinks it would uses less power to suspend parts of its SOC, it will do so to preserve battery life. My laptop will sleep the WiFi if I am connected to ethernet and using the battery.

I need to add this is just a theory.
The issue may well be in OpenWrt's configurations.

Thanks LilRedDog, sounds good, but ..
Same thing again this morning:


I have already used my phone for browsing the weather, check mails etc. this morning.
After disable/enable WLAN on the phone, it looks like:

Phone is using Android Version 13, i cant find any sleep settings, regarding wifi.
Strange behavior !
What else I should mention:
My ISP provider renews the IPV6 prefix every night at 2:30 a.m.

EDIT:
Of course, it is also possible that it has something to do with the cell phone itself. I only had the focus on my own cell phone (Motorola G72). I'll observe the behavior of other cell phones.

I think you are right: SLAAC/IPv6 seems to be having issues; based on the address you are pulling when working and not working.

I don't use SLACC so I cannot help much.

As a shot in the dark:
Are you using WiFi assist on the phone?

62 is kind of an odd number (pun not intended). Not even available for selection in LuCi (at least with my router, and with my OpenWrt VM). Might be the cause of the issue? Try with 60 instead?

1 Like

Also, why is this 0?

1 Like

OK, i have changed it 1 now. (For LAN)
We will see it tomorrow, whether that is the solution..

GUEST and LAN have to be differnt ip6assign values, otherwise, only one interface is working. Also I saw, if a choose different ipassgin value, Windows network share doesnt work anymore.

Now i have tested one more mobile, same behavior.
This mobile is newer, it has Android 14.

1 Like

No, only standard android functions ..

What's wrong with giving both guest and lan a 64 prefix each?

Good question.. (I had trouble with Windows network share, as i remember right)

Right now, I have done again a test with 64 prefix. (And restarted all devices)
It is also working..
Now, a have set both LAN and GUEST with a 64 prefix.
Let's see, I'll report back

Today: :sleepy:

Modifikations, i have already done:

  • set ipassign to 64 for LAN and GUEST interface
  • set delegate to 1 for LAN

So all android devices flake out after 0230 and

Okay, Nuke it:
Set the IPv6 Prefix Lifetime to 5 minutes and wait. See if that gets you a new lease without having to disconnect/reconnect to the AP. You can set it back later.
LuCI Interfaces/Lan/DHCP Server/Ipv6->IPv6 Prefix Lifetime

OK, i set the Prefix Lifetime to 5 min at 07:45. Now 08:00 still only the ULA Adress.
To be on the safe side, I'll check it again tomorrow morning..

You can set it to something longer if you want, just give it a few hours before you wake up.

Every 5 minutes was for expediency.

Prefix Lifetime is definitly not the solution, still the same behavour.

It was a diagnostic.