Curious issue with OpenWRT and Google Fi/Meet?

Howdy All,

I am having an issue with voice call quality on my home network and some initial testing has led to some strange results, and I am looking for some advice about what to test or do next.

Issue
The issue is significant delay and packet loss in voice calls, causing words or entire sentences to be unintelligable.

Setup
Laptop: System 76 Oryx running Ubuntu 20, browser is recent version of Chrome
Phone: Google Pixel 7 running recent Android
Router: Belkin RT3200 running OpenWRT. I ran the tests below with version 22.03.3, but have since upgraded to 23.05.3 and confirmed the issue is still present.
Modem: Aris Surfboard S33
ISP: Xfinity Cable internet
Cell provider: Google Fi. For those unfamiliar, Google Fi provides cell service by partnering with several cell providers (T-Mobile, Sprint, and Union Cellular). The phones switch between cell networks depending on signal strength, and users can use Wifi calling at home, or make calls from the browser on a computer.

Testing
The following testing was done in as controlled conditions as possible. I was the only person using the network at the time, I only performed one test at a time, and I performed each configuration test multiple times, at different times of the day.

Configuration Call Quality
laptop google fi in browser <-(ethernet cable)-> router <-(ethernet cable)-> modem <-(coax cable)-> wall unacceptable
laptop google fi in browser <-(ethernet cable)-> modem <-(coax cable)-> wall acceptable
laptop google meet in browser <-(ethernet cable)-> modem <-(coax cable)-> wall acceptable
laptop google meet in browser <-(ethernet cable)-> router <-(ethernet cable)-> modem <-(coax cable)-> wall unacceptable (but more "variance" than other configs)
phone Fi Dialer <-(wifi)-> router <-(ethernet cable)-> modem <-(coax cable)-> wall unacceptable
phone Fi Dialer <-(5G cell network)-> cell tower acceptable
phone WhatsApp <-(wifi)-> router <-(ethernet cable)-> modem <-(coax cable)-> wall acceptable

Analysis

The issues seems to present only when using a Google product (Fi or Meet from the laptop in a browser, or from the Fi dialer on the phone) AND the Belkin router. The issue presents with both wired and wireless connections. If I avoid the router (by plugging the computer directly into the modem, or by using the cell network from the phone) the issue disappears. But also, I can make quality voice calls using the phone and whatsapp through the router. I notice that I don't have test cases in the table above using a non-google product from the laptop, but I do have (less careful) testing using discord and skype from the computer through the router without issues.

Next Steps
I am in the process of obtaining another router to test with, but in the meantime, I am unsure exactly what to investigate/try next. What could cause an issue ONLY with google AND openwrt?

What would you all do next? I am happy to share more information about my configuration and settings.

Thanks,
frito

For starters, it looks like your cable modem is actually a modem+router and running in routing mode. Can you confirm that?

It is possible that you have an overlap of the OpenWrt lan and the upstream cable modem+router lan, which will cause exactly this problem.

However, let’s see the configuration to determine if there is anything specifically wrong with your OpenWrt setup.

Please connect to your OpenWrt device using ssh and copy the output of the following commands and post it here using the "Preformatted text </> " button:
grafik
Remember to redact passwords, MAC addresses and any public IP addresses you may have:

ubus call system board
cat /etc/config/network
cat /etc/config/wireless
cat /etc/config/dhcp
cat /etc/config/firewall
ifstatus wan | grep address 

^^^ on the last command, please redact the last two octets of the IP address if it does not begin with 192.168 (i.e. only provide the part in bold: aaa.bbb.ccc.ddd, unless it starts with 192.168).

1 Like

Thanks for your reply.

Here is the website of my modem: https://shop.surfboard.com/s33-surfboard-cable-modem/
As far as I can tell, it is just a modem, not a modem/router. I poked around the modem's settings page and didn't see anything suggesting it was operating as a modem/router.

Here are the results of the requested commands

root@OpenWrt:~# cat /etc/config/network 

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

config globals 'globals'
	option ula_prefix 'fdd4:d3d2:2cc0::/48'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'lan1'
	list ports 'lan2'
	list ports 'lan3'
	list ports 'lan4'

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option ipaddr '192.168.2.1'
	option netmask '255.255.255.0'
	option ip6assign '60'

config interface 'wan'
	option device 'wan'
	option proto 'dhcp'
	option type 'bridge'

config interface 'wan6'
	option device 'wan'
	option proto 'dhcpv6'
	option type 'bridge'

config interface 'guest'
	option proto 'static'
	option ipaddr '192.168.3.1'
	option netmask '255.255.255.0'
	option type 'bridge'

config interface 'printers'
	option proto 'static'
	option device '@printers'
	option type 'bridge'

root@OpenWrt:~# cat /etc/config/wireless 

config wifi-device 'radio0'
	option type 'mac80211'
	option path 'platform/18000000.wmac'
	option band '2g'
	option htmode 'HT20'
	option country 'US'
	option cell_density '0'
	option distance '15'
	option channel '4'

config wifi-device 'radio1'
	option type 'mac80211'
	option path '1a143000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0'
	option band '5g'
	option htmode 'HE80'
	option country 'US'
	option cell_density '0'
	option channel 'auto'

config wifi-iface 'wifinet1'
	option device 'radio1'
	option mode 'ap'
	option network 'lan wan wan6'
	option ssid '(REDACTED)'
	option encryption 'sae-mixed'
	option key '(REDACTED)'

config wifi-iface 'wifinet2'
	option device 'radio0'
	option mode 'ap'
	option ssid '(REDACTED)'
	option encryption 'sae-mixed'
	option key '(REDACTED)'
	option network 'guest'

root@OpenWrt:~# cat /etc/config/dhcp

config dnsmasq
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option localservice '1'
	option ednspacket_max '1232'

config dhcp 'lan'
	option interface 'lan'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option dhcpv4 'server'
	option dhcpv6 'server'
	option ra 'server'
	option ra_slaac '1'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'

config dhcp 'wan'
	option interface 'wan'
	option ignore '1'

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 start '100'
	option limit '150'
	option leasetime '4h'

root@OpenWrt:~# cat /etc/config/firewall

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

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

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

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 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 zone
	option name 'guest'
	option output 'ACCEPT'
	option forward 'REJECT'
	list network 'guest'
	option input 'REJECT'

config forwarding
	option src 'guest'
	option dest 'wan'

config rule
	option name 'Guest DNS'
	option src 'guest'
	option target 'ACCEPT'
	option dest_port '53'

config rule
	option name 'Guest DHCP'
	option src 'guest'
	option dest_port '67-68'
	option target 'ACCEPT'
	list proto 'udp'

root@OpenWrt:~# ifstatus wan | grep address
		"addresses",
	"ipv4-address": [
			"address": "67.190.*.*",
	"ipv6-address": [
		"ipv4-address": [
		"ipv6-address": [

Thanks again!

Mixed is a bad idea, use WPA2 or 3.

Why is wifi attached to wan and lan ?

1 Like

Remove this line, yesterday.

1 Like

This line is ambiguous, no telling which bridge wifi access point will join. There can be only one single interface (seen in interfaces tab of luci/network/interfaces)

1 Like

a glitch in luci permitting this entry.

1 Like

I made the following changes:

option network 'lan'
option encryption 'psk2'

And I removed the 'option distance 15' line.

I am happy to report the issue is no longer present! Thank you all!
I am not sure how or why I configured the wireless that way? I think I thought I needed the wireless to "talk" to both the lan and wan? But obviously that is not correct.

There are still a few issues with your config:
Remove the bridge line from below — it doesn’t belong and can break the interface:

Likewise for the guest interface:

I don’t see printers device anywhere — this whole stanza should be deleted:

Select channels 1, 6, or 11 for the 2G band (in the USA). The other channels are likely to have lower performance as a result of channel overlap from neighboring APS.

You may also want to add a 2G radio for your lan. This is because you’ll get better range on 2.4G, so when the 5G signal becomes weak, your devices will switch to 2G and generally do better. Let your client devices switch bands based on the signal quality and you’ll be better off.

3 Likes

Thanks for the recommendations! I have implemented them and so far the connection of all devices seems improved! The addition of 2G means we get wifi out at the cars now!

Because the interface configuration for 'guest' does not include 'option device 'br-lan'', does that mean that devices connected to my guest wireless network cannot communicate with each other (for example, over ssh)?

Tangentially, I may have experienced the OKD (https://openwrt.org/toh/linksys/e8450). I sent a reboot request over ssh and the device did not reboot! It fortunately responded to reseting the physical power switch, but I am nervous about rebooting it now... :smiley:

For reference, here are my updated config files:

root@OpenWrt:~# cat /etc/config/network 

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

config globals 'globals'
	option ula_prefix 'fdd4:d3d2:2cc0::/48'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'lan1'
	list ports 'lan2'
	list ports 'lan3'
	list ports 'lan4'

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option ipaddr '192.168.2.1'
	option netmask '255.255.255.0'
	option ip6assign '60'

config interface 'wan'
	option device 'wan'
	option proto 'dhcp'

config interface 'wan6'
	option device 'wan'
	option proto 'dhcpv6'

config interface 'guest'
	option proto 'static'
	option ipaddr '192.168.3.1'
	option netmask '255.255.255.0'
root@OpenWrt:~# cat /etc/config/wireless 

config wifi-device 'radio0'
	option type 'mac80211'
	option path 'platform/18000000.wmac'
	option band '2g'
	option htmode 'HT20'
	option country 'US'
	option cell_density '0'
	option channel '1'

config wifi-device 'radio1'
	option type 'mac80211'
	option path '1a143000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0'
	option band '5g'
	option htmode 'HE80'
	option country 'US'
	option cell_density '0'
	option channel 'auto'

config wifi-iface 'wifinet1'
	option device 'radio0'
	option mode 'ap'
	option network 'lan'
	option ssid ''
	option encryption 'psk2'
	option key ''

config wifi-iface 'wifinet2'
	option device 'radio1'
	option mode 'ap'
	option network 'lan'
	option ssid ''
	option encryption 'psk2'
	option key ''

config wifi-iface 'wifinet3'
	option device 'radio0'
	option mode 'ap'
	option ssid ''
	option encryption 'psk2'
	option key ''
	option network 'guest'

No, the bridge is required if you use two or more physical interfaces (2 wifi radios or WiFi + Ethernet). This does not affect the ability for devices to communicate with each other on the same network.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.