WhatsApp Call Not Connecting

# cat /etc/config/firewall 

config defaults
	option syn_flood '1'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'REJECT'

config zone
	option name 'lan'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'ACCEPT'
	list network 'lan'

config zone
	option name 'wan'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option masq '1'
	option mtu_fix '1'
	list network 'wan'

config forwarding
	option src 'lan'
	option dest 'wan'

config rule
	option name 'Allow-DHCP-Renew'
	option src 'wan'
	option proto 'udp'
	option dest_port '68'
	option target 'ACCEPT'
	option family 'ipv4'

config rule
	option name 'Allow-Ping'
	option src 'wan'
	option proto 'icmp'
	option icmp_type 'echo-request'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-IGMP'
	option src 'wan'
	option proto 'igmp'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-DHCPv6'
	option src 'wan'
	option proto 'udp'
	option src_ip 'fc00::/6'
	option dest_ip 'fc00::/6'
	option dest_port '546'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-MLD'
	option src 'wan'
	option proto 'icmp'
	option src_ip 'fe80::/10'
	list icmp_type '130/0'
	list icmp_type '131/0'
	list icmp_type '132/0'
	list icmp_type '143/0'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Input'
	option src 'wan'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	list icmp_type 'router-solicitation'
	list icmp_type 'neighbour-solicitation'
	list icmp_type 'router-advertisement'
	list icmp_type 'neighbour-advertisement'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Forward'
	option src 'wan'
	option dest '*'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-IPSec-ESP'
	option src 'wan'
	option dest 'lan'
	option proto 'esp'
	option target 'ACCEPT'

config rule
	option name 'Allow-ISAKMP'
	option src 'wan'
	option dest 'lan'
	option dest_port '500'
	option proto 'udp'
	option target 'ACCEPT'

config rule
	option name 'Support-UDP-Traceroute'
	option src 'wan'
	option dest_port '33434:33689'
	option proto 'udp'
	option family 'ipv4'
	option target 'REJECT'
	option enabled 'false'

config include
	option path '/etc/firewall.user'

/etc/config/firewall looks okay.
Are you using iPhones?

No, Android 12

I have the same issue on devices in my home wifi network also.
It is marked something like "connection in progress" and its on Android 10 & 12.
Don't know what could be the issue...
@rares your firewall seems to be default configuration, isn't it ?
Do you have Secure DNS on your android devices ? If yes, maybe try without it ?
Is your Android a custom rom ?

The firewall is the default configuration.

The Android is the default ROM from Samsung (S22). The Private DNS is set to Automatic. I'll try OFF and report back.

On WhatsApp enable "the Nearby Devices-permission" if it's listed. And test again.

Also here is a list of changes you can make-

Set WhatsApp battery to unrestricted
Turn off background usage limits > put unused apps to sleep
WhatsApp > application data usage > allow background data usage turned ON
WhatsApp > application data usage > allow data usage while data saver in on turned ON
Intelligent WiFi > switch to mobile data turned OFF

I tend to believe the issue is with Whatsapp only & not OpenWrt.
If everything fails then reset your firmware to default settings and test again

@rares If I'm correct, your issue is the same as me ?
When a call comes or go, it's okay for the reception. But as soon as we answer the call or they answer the call, we have on the phone that the "connection is in progress" (in other words). The connection never establish.

Moreover, I've tried on another network with the same Internet box & provider but without OpenWRT router behind and it works. Both phones connected to the WiFi have the same behavior on both networks.
Because of those reason, I doubt it's an issue on the phones.

I'll try asap on WiFi network of the internet provider box directly to confirm.

Can your adblock be doing this? Have you tried once with that disabled?

By my side, I have no adblock on my router and android devices.

Does it work over cellular data plan - e.g. Vodafone?

I don't know how Whatsapp works, but VOIP calls have two elements - signalling and media.

  • Signalling = Connect me to this number, make the phone ring, use this codec, etc.
  • Media = The audio and or video data.

It looks like your signalling is partially working.

  • The call is proceeding to the stage where the other phone rings.
  • The 'start media transmission' part is failing - i.e. the other person can't answer the call.

Does their phone continue to ring despite them pressing answer (signalling not being generated/relayed correctly)?

Does the call drop immediately when they answer (possible codec issue, but that seems unlikely given you're both using Whatsapp)?

Is the call established (incrementing call timer) but with silence for one or both participants (routing issue leading to packet drops)?

As a first step, I would disable this firewall rule. Perhaps Whatsapp is using a non standard RTP or signalling port and it is being blocked?

config rule
	option name 'Support-UDP-Traceroute'
	option src 'wan'
	option dest_port '33434:33689'
	option proto 'udp'
	option family 'ipv4'
	option target 'REJECT'
	option enabled 'false'

The description in this comment is very accurate of the situation.

Yes, I have tried with Adblock disabled and it did not make a difference.

Does their phone continue to ring despite them pressing answer (signalling not being generated/relayed correctly)?

No. As soon as they answer the phone goes into Media mode. There is a period of 1-2 seconds where it tries to start the call (see/hear the other party) and then it disconnects. The WhatsApp window shows an error message about the WiFi network not allowing calls.

Does the call drop immediately when they answer (possible codec issue, but that seems unlikely given you're both using Whatsapp)?

No, see previous answer.

Is the call established (incrementing call timer) but with silence for one or both participants (routing issue leading to packet drops)?

No, no incrementing timer.

I'll try disabling the firewall rule as advised.

Trying to update the firewall rule @Chatmandu mentioned. It looks like it is not enabled (Enable checkbox not ticked).

config rule
option name 'Support-UDP-Traceroute'
...
option enabled 'false

You should try this approach.

Thanks, will give it a try and report back.

even though it is a v1, when mentioning WIFI Issues, the following combination is sometimes a harbinger of hell:
newer Linksys WRT + WIFI + 21.02.x + certain clients

I would first try 22 rc 6 before further debugging.

Make sure "802.11w Management Frame Protection" is disabled.

Thanks, I'll give openwrt 22 a try once it is stable.

802.11w Management Frame Protection was disabled.

I'm trying the Android settings suggested by @AlanDias17

I've installed 22.03 but still have the issue.
How about you ?

is isolate clients turned on your wifi settings ? please turn this off.

I don't understand how can "client isolation" configuration be the issue since the other device is on the internet. Anyway, I'll try it and report asap.
Thanks for the suggestion.