I did some more digging. It looks like the roon server is constantly multicasting out mdns queries and ssdp queries.
I installed SSDPTester app and verified my phone does see the SSDP packets.
I also tried this test app for multi-cast:
Within that app, I see the multi-cast mdns packets coming from my roon core to my phone.
So it looks like the multicast traffic from roon core is indeed reaching my Google Pixel 2 phone over wifi. Either the app itself is not correctly receiving the packets from the Android OS or it receives them but then something goes wrong when it tries to send a reply back to the roon server to establish a connection.
I checked my RoonServer logs. When I start the app on my phone, I see that the roon core is able to connect to RAAT on my phone. (IP address hidden)
04/30 11:58:00 Trace: [raatserver] [RaatServer Matt Fioravante's Pixel 2 @ XXX.XXX.XXX.XXX:39387] connected
When I open roon from another machine and go to the audio settings, I can see my Pixel phone listed there as a networked device. I can go in and change its settings and rename it like any other audio device. Despite that, I cannot actually tell roon to send audio to it. The device is missing from the list in the main gui.
After that I looked at some packet captures. I’ve been so far unable to get a full capture on the actual phone, so I ran tcpdump on my roon server vm.
When I start the roon app on my phone, I can see UDP traffic going to port 9003 from my phone. From what I understand I believe that’s the RAAT network traffic which appears to be sort of working.
Next I filtered on TCP and noticed a specific difference in behavior.
When I open the roon app with my Windows client or with the Samsung Galaxy S7, the client initiates a TCP connection on port 9101 to the server. Some of the packets contain ASCII text saying “Sooloss.Msg.DistributedBroker.ConnectRequest” so this looks like the necessary traffic to establish a connection to the core server.
However when I open the roon app with my Google Pixel, I never see any TCP traffic over port 9101. Either the roon app on my phone never tries to establish this connection, or it does and then the TCP packets get lost somewhere (very unlikely as this is a normal unicast TCP connection).
Now finally one more piece of data. When I start the roon app on windows I can connect to my linux server as normal. Now after the windows app is running, if I try to start the roon app on my phone it will locate the windows machine but not the linux server. When I look at a packet dump, I can see my phone establishing that TCP connection over port 9101 to the windows machine. So somehow it works with windows but not linux.
Finally, going back to the logs. For windows and samsung, I see this:
04/30 13:15:42 Info: [brokerserver] Client connected: XXX.XXX.XXX.XXX:43367
I never see the above log message with my pixel. I never see any logs with the [brokerserver] tag.
So in summary, my google pixel 2 phone somehow does not try to establish the TCP connection over port 9101 to my roon core server on linux. I believe this is what is causing the problem. Without additional debugging/logging in the android app itself I’m not sure what else I can do to diagnose further. I have no idea why my google pixel exhibits the problem but my wife’s samsung galaxy S7 does not.
@support, let me know privately if you’d like me to try a debug package or want copies of my logs, packet dumps, or anything else. I’d really like to be able to use roon from my phone.
EDIT: One more data point.
There is one strange sequence of events that actually works. First I start the roon app on my pixel 2. It doesn’t find any servers. Next I reboot my server vm while leaving the app open. Once the roon server starts up, the pixel 2 finds it and is able to connect. In a packet dump, I see the TCP port 9101 traffic. Next I kill the roon app on my phone and restart it. After restarting I’m unable to connect indefinitely.
I hope this is enough information to help get at the bottom of this issue.
I was able to run tcpdump on the ubiquiti AP itself. The AP never receives any TCP packets on port 9101 from the Pixel 2. Very unlikely its a wifi or network configuration related issue.