Skip to main content
Contributor I
January 23, 2026

Spanning Tree issues on TP-Link/Omada after replacing downstream/edge switch.

Preface: My networking skills are not what I’d like them to be.  I’ve been referencing the Sonos STP document and Sonos Networking Best Practices guide to try and resolve the issue below.

 

Two questions:

  1. With two (of 14) Sonos devices connected to ethernet should SonosNet be split across those two devices? Isn’t that why the Matrix reports some STP blocking and some forwarding?
  2. If yes to #1, I need help configuring STP to work that way.

Before:

After moving to a larger house three years ago and SonosNet was not working great, Sonos tech support instructed me to connect a second Sonos device to ethernet which resolved the network issues.

My previous topology was:

  • Managed switch with STP enabled
    • Port 5 → to “dumb” switch → Soundbar
    • Port 6 → to another “dumb” switch → Amp

This worked, but unfortunately I don’t remember if or how my 14 Sonos devices were split across those. 

 

The Issue:

 

Last week I replaced the dumb switch connected to the Soundbar above with a managed switch. The remaining “dumb” switch started reporting a loop, so I enabled STP on the new managed switch and that resolved the loop reporting.

BUT, now my network is reporting one of the ports as blocking and it appears that ALL 14 of my Sonos devices are running through just one of the switches -- that is, they are not (somehow) split between the two ethernet connections.

The Sonos matrix reports some as STP state: blocking and some as STP state: forwarding.

I do wonder with my new topology if it’s a (Omada) network config that is forcing one of the ports to be in blocking mode, or if it’s perhaps my mix of dumb and smart downstream switches that STP is just deciding that one path is the lowest cost for everything. (Again, my STP understanding is limited.)

 

Current Topology:

This is all TP-Link hardware with and OC200 hardware controller. I consider my “root” switch, a SG2210P, as it is connected to my ER7206 router. I’ve tried using both “STP” and “RSTP” settings and no change. Currently using “STP” everywhere.

  • SG2210P (CIST Pri: 4096) →
    • Port:5 STP Pri 128 → 
      • Port:1 Pri 128 of an SG2008 (CIST 4096)
        • Port 5 pri 128 → Soundbar
    • Port:6 STP Pri 128 →
      • Port 5 of ES205GP (“dumb”) Port 2 → Sonos Amp

The ES205GP only has “Loopback control”, which is enabled, but no STP settings.

 

With this configuration ALL 14 Sonos devices are showing connected to the ES205GP and Omada is showing Port 5 on the SG2008 as “STP blocking”.

If I unplug the Sonos Amp from the ES205GP then ALL the Sonos devices move to/show as connected to the SG2008 on its port 5.

I’ve tried various settings (like lower CIST for the root than the SG2008), and also setting port 6 of the root SG2210P to 240 (highest) to try and make the SG2008 a higher priority, but TP-Link still blocks port 5 on the SG2008 (soundbar).

 

Assuming that SonosNet should split across the two wired devices, is it STP configuration or could it be the least “cost” is always through the dumb ES205GP to the root SG2210P?

This topic has been closed for further comments. You can use the search bar to find a similar topic, or create a new one by clicking Create Topic at the top of the page.

23 replies

64busmanAuthor
Contributor I
January 27, 2026

Well, it works.

I replaced the ES205G with an SG2008P. I configured every port (upstream, or downstream to a Sonos speaker) exactly the same with STP priority 128, not that I think it matters. Assigned the root switch a CIST Priority of  zero, and the two downstream switches 4096 (below the 32768 as noted in Best Practices doc in my first post).

 

I wonder how hard it would be to generate a network map from the matrix.

 

 

$ python3 sonos_discover.py
Kitchen. State: PLAYING
Title: The Times They Are A-Changin'
Album: The Times They Are A-Changin'
Artist: Bob Dylan
Uri: x-sonos-spotify:spotify:track:52vA3CYKZqZVdQnzRrdZt6?sid=12&flags=8232&sn=21
Guest Room vol:40 192.168.0.35 Channel:RF:
Guest Room vol:40 192.168.0.38 Channel:LF:
Back Bedroom vol:46 192.168.0.24 Channel:RF:
Back Bedroom vol:46 192.168.0.7 Channel:LF:
Bar vol:56 192.168.0.34 Channel:None:
Family Room vol:47 192.168.0.49 Channel:SW: Subwoofer Satellite
Family Room vol:47 192.168.0.29 Channel:LR: Satellite
Family Room vol:47 192.168.0.145 Channel:LF,RF: Sound bar
Family Room vol:47 192.168.0.27 Channel:RR: Satellite
Kitchen vol:41 192.168.0.30 Channel:RF:
*Kitchen vol:41 192.168.0.23 Channel:LF:
Living Room vol:43 192.168.0.39 Channel:LF:
Living Room vol:43 192.168.0.10 Channel:RF:
Sub Mini vol:43 192.168.0.40 Channel:SW: Subwoofer

Now time to convert it all to wifi….

Thanks everyone.

buzz
Grand Maestro
January 27, 2026

I think that the Bar is struggling a little. Are there any nearby devices that you could move?

64busmanAuthor
Contributor I
January 28, 2026

I think that the Bar is struggling a little. Are there any nearby devices that you could move?

Are you saying that because of the high OFDM level? The “Bar” is hard-wired to ethernet, so it’s fine.

SonosNet is on channel 1. That “Bar” (which is as Sonos Amp) is in the same room with an Access Point, so maybe that’s causing the high reading. That said, the AP is on Channel 6 and there’s very little 2.4GHz traffic on it.

 

Here’s the Bar’s interfaces showing it’s hard-wired connection and the Sonos devices it is connected to.

 

(BTW, anyone know if there’s a way to get this data from the devices in a more easily parsable way from a script?)

 

running /usr/sbin/brctl showstp br0br0 bridge id		9000.5caafde71e0e designated root	0000.3460f9c49f82 root port		   2			path cost		20010 max age		  20.00			bridge max age		   6.00 hello time		   2.00			bridge hello time	   1.00 forward delay		  15.00			bridge forward delay	   4.00 ageing time		  60.00			gc interval		   0.00 hello timer		   0.00			tcn timer		   0.00 topology change timer	   0.00			gc timer		   3.11 flags			eth0 (1) port id		8001			state			disabled designated root	8000.5caafde71e0e	path cost		  10 designated bridge	8000.5caafde71e0e	message age timer	   0.00 designated port	8001			forward delay timer	   0.00 designated cost	   0			hold timer		   0.00 flags			eth1 (2) port id		8002			state			forwarding designated root	0000.3460f9c49f82	path cost		  10 designated bridge	1000.503dd1651537	message age timer	  18.11 designated port	8007			forward delay timer	   0.00 designated cost	20000			hold timer		   0.00 flags			ath0 (3) - tunnel to 78:28:CA:A6:3C:F9 (remote STP state = forwarding, direct = 3) port id		8003			state			forwarding designated root	0000.3460f9c49f82	path cost		 202 designated bridge	9000.5caafde71e0e	message age timer	   0.00 designated port	8003			forward delay timer	   0.00 designated cost	20010			hold timer		   0.66 flags			ath0 (4) - tunnel to 94:9F:3E:17:36:C3 (remote STP state = blocking, direct = 3) port id		8004			state			forwarding designated root	0000.3460f9c49f82	path cost		 250 designated bridge	9000.5caafde71e0e	message age timer	   0.00 designated port	8004			forward delay timer	   0.00 designated cost	20010			hold timer		   0.66 flags			ath0 (5) - tunnel to F0:F6:C1:8A:0B:BB (remote STP state = forwarding, direct = 3) port id		8005			state			forwarding designated root	0000.3460f9c49f82	path cost		 250 designated bridge	9000.5caafde71e0e	message age timer	   0.00 designated port	8005			forward delay timer	   0.00 designated cost	20010			hold timer		   0.66 flags			ath0 (6) - tunnel to 94:9F:3E:66:16:27 (remote STP state = blocking, direct = 1) port id		8006			state			forwarding designated root	0000.3460f9c49f82	path cost		 226 designated bridge	9000.5caafde71e0e	message age timer	   0.00 designated port	8006			forward delay timer	   0.00 designated cost	20010			hold timer		   0.66 flags			ath0 (7) - tunnel to F0:F6:C1:8B:C2:21 (remote STP state = forwarding, direct = 3) port id		8007			state			forwarding designated root	0000.3460f9c49f82	path cost		 235 designated bridge	9000.5caafde71e0e	message age timer	   0.00 designated port	8007			forward delay timer	   0.00 designated cost	20010			hold timer		   0.66 flags			ath0 (8) - tunnel to 94:9F:3E:8D:3D:97 (remote STP state = blocking, direct = 3) port id		8008			state			forwarding designated root	0000.3460f9c49f82	path cost		 269 designated bridge	9000.5caafde71e0e	message age timer	   0.00 designated port	8008			forward delay timer	   0.00 designated cost	20010			hold timer		   0.66 flags			ath0 (9) - tunnel to F0:F6:C1:06:18:CF (remote STP state = forwarding, direct = 3) port id		8009			state			forwarding designated root	0000.3460f9c49f82	path cost		 202 designated bridge	9000.5caafde71e0e	message age timer	   0.00 designated port	8009			forward delay timer	   0.00 designated cost	20010			hold timer		   0.66 flags			ath0 (10) - tunnel to 94:9F:3E:F4:E2:9B (remote STP state = blocking, direct = 3) port id		800a			state			forwarding designated root	0000.3460f9c49f82	path cost		 254 designated bridge	9000.5caafde71e0e	message age timer	   0.00 designated port	800a			forward delay timer	   0.00 designated cost	20010			hold timer		   0.66 flags			ath0 (11) - tunnel to 78:28:CA:A7:8E:29 (remote STP state = blocking, direct = 3) port id		800b			state			forwarding designated root	0000.3460f9c49f82	path cost		 259 designated bridge	9000.5caafde71e0e	message age timer	   0.00 designated port	800b			forward delay timer	   0.00 designated cost	20010			hold timer		   0.66 flags			ath0 (12) - tunnel to 94:9F:3E:8D:3E:21 (remote STP state = blocking, direct = 3) port id		800c			state			forwarding designated root	0000.3460f9c49f82	path cost		 719 designated bridge	9000.5caafde71e0e	message age timer	   0.00 designated port	800c			forward delay timer	   0.00 designated cost	20010			hold timer		   0.66 flags