Plexamp offline server playback in iOS broken since mid October 2021 (potential certificate issue in TLSv1.2?)

Hi,
I have my home Plex server running on an RPI 4 with very good stability and reliability. Since the RPI 4 can also become a portable Plex server, I cloned my main server’s library to another RPI 4 specifically to use on the go, where internet is either not available or expensive, like when driving or in an airplane.

Since the beginning of this year, I successfully got Plexamp on iOS to play from my home server and when connected to the portable server (access point, without mobile data), would continue playing from the portable server, as if it stayed connected to the home server. Plexamp on iOS would also recognize and play from the portable server when Plexamp was killed and opened again.

When I attempted in connecting Plexamp (v3.8.2) from iOS to the portable server this October 2021, Plexamp would refuse to find the portable server, with the home screen showing “offline and the retry button” and the music tab showing “Unable to load data. This makes me sad”. Indeed, this makes me sad as well. My portable music server which consists of mainly FLAC files was saving me precious mobile data in Ontario, considering that the mobile data plan prices over here are ridiculously expensive.

Currently, Plexamp on macOS (v3.7.1) does not have the offline playback issue from the portable server. This is clearly a feature which was removed or the iOS version of Plexamp regressed recently.

This use case may not be common but I hope that the devs take notice of this and give some insight into (and hopefully fix?) this now broken capability.

Thank you.

it’s hard to tell what’s going on without plexamp logs. if it’s failing to connect, there’s likely a good reason for it.

Is this specifically with Plexamp, or does it happen on the normal Plex client too?

Hi Elan, thanks for your reply.
Plexamp-Logs-2021-11-25-1.zip (30.6 KB) for Plexamp on iOS. I killed the app before switching access points.
I also deleted the iOS app and re installed, but that did not help.

I’m also attaching logs for a macOS with Plexamp v3.8.2 which does not work.
Plexamp-macOS-not-working-v3.8.2.zip (17.0 KB)

However, my other macOS which had v3.7.1 just updated to v3.8.2 and tried it over there and interestingly, it does not have this issue. I’m attaching the logs for this one over here as well, in the hope that it will help in the investigation.
Plexamp-macOS-working-v3.8.2.zip (18.5 KB)

Just to make it clear, my home server is on a different access point as my portable server. The portable server is an RPI4 having its own access point, with its own Plex server and a clone of the Plex library of the home server. Both the home and portable server have the same IP address so that the client is able to find it while switching access points.

Normal Plex client has the same issue on iOS.

I should also mention that I blocked cellular data for Plexamp, so that it does not accidentally connect to the home server while I am travelling.

I compared the logs from iOS with the working case in macOS both connecting to the same portable Plex server and I noticed that in macOS it works on the first try

Nov 25, 2021 15:46:39.569 [0x0a1f2000] DEBUG - Networking: Completed request 6: (GET https://192-168-1-232.1bb52c215dc942cd967029cf4a6c4525.plex.direct:32400/resources) with code 200 (have 354 bytes) in 385 ms.

followed by

Nov 25, 2021 15:46:39.585 [Javascript] INFO - DEVICE: Server connection worked for Apollo ~ https://192-168-1-232.1bb52c215dc942cd967029cf4a6c4525.plex.direct:32400

In iOS I see

Nov 25, 2021 15:11:34.135 [0x70237000] DEBUG - Networking: Completed request 6: (GET https://192-168-1-232.1bb52c215dc942cd967029cf4a6c4525.plex.direct:32400/resources) with code -60 (have 0 bytes) in 101 ms.
Nov 25, 2021 15:11:34.252 [Javascript] WARNING - DEVICE: Server connection https://192-168-1-232.1bb52c215dc942cd967029cf4a6c4525.plex.direct:32400 didn't work for Apollo: HTTP status -60

I also see something interesting. These return code 200, but use the IP address instead of the plex.direct domain names.

Nov 25, 2021 15:11:37.673 [Javascript] WARNING - DEVICE: Connection testing failed for Apollo
Nov 25, 2021 15:11:37.673 [0x70237000] DEBUG - Networking: Completed request 81: (GET http://192.168.1.232:32400/identity) with code 200 (have 141 bytes) in 58 ms.
Nov 25, 2021 15:11:37.675 [0x70237000] DEBUG - Networking: Completed request 75: (GET http://192.168.1.232:32400/identity) with code 200 (have 141 bytes) in 81 ms.
Nov 25, 2021 15:11:37.677 [0x70237000] DEBUG - Networking: Completed request 88: (GET http://192.168.1.232:32400/identity) with code 200 (have 141 bytes) in 38 ms.
Nov 25, 2021 15:11:37.677 [0x70237000] DEBUG - Networking: Completed request 85: (GET http://192.168.1.232:32400/identity) with code 200 (have 141 bytes) in 44 ms.
Nov 25, 2021 15:11:37.678 [0x70237000] DEBUG - Networking: Completed request 97: (GET http://192.168.1.232:32400/identity) with code 200 (have 141 bytes) in 7 ms.
Nov 25, 2021 15:11:37.681 [0x70237000] DEBUG - Networking: Completed request 91: (GET http://192.168.1.232:32400/identity) with code 200 (have 141 bytes) in 28 ms.
Nov 25, 2021 15:11:37.681 [0x70237000] DEBUG - Networking: Completed request 94: (GET http://192.168.1.232:32400/identity) with code 200 (have 141 bytes) in 19 ms.
Nov 25, 2021 15:11:37.687 [0x70237000] DEBUG - Networking: Completed request 64: (GET https://192-168-1-232.1bb52c215dc942cd967029cf4a6c4525.plex.direct:32400/) with code -60 (have 0 bytes) in 161 ms.
Nov 25, 2021 15:11:37.687 [Javascript] WARNING - DEVICE: Server connection https://192-168-1-232.1bb52c215dc942cd967029cf4a6c4525.plex.direct:32400 didn't work for Apollo: HTTP status -60

What does code -60 mean?
What is the client doing with http://192.168.1.232:32400/identity ?
How does the plex.direct (192-168-1-232.1bb52c215dc942cd967029cf4a6c4525.plex.direct) domain name resolution work?

Thanks.

I continued digging into this issue and did tcpdumps in the portable Plex server. I noticed several of the following entry when Plexamp in iOS communicates with the portable server.

224	5.803661	192.168.1.163	192.168.1.232	TLSv1.2	73	Alert (Level: Fatal, Description: Certificate Unknown)

I wonder if the certificate is the culprit, since a GET for http://192.168.1.232:32400/identity resulted in code 200, while GETs to https://192-168-1-232.1bb52c215dc942cd967029cf4a6c4525.plex.direct:32400 always fails. I wanted to compare the tcpdump with my supposedly working Plexamp in macOS, but even this is failing now.

If the certificate requires fixing, I have no idea how to do it. Any help will be much appreciated.
Thank you.

I sorted out the broken Plexamp communication with the portable server in macOS. It stopped working because I disabled Secure connections in the server in the hopes that Plexamp in iOS would work. I set it back to preferred and now Plexamp in macOS is back to normal but not in iOS.

During the communication of Plexamp in macOS with the portable Plex server, I found

67	8.971089	192.168.1.253	192.168.1.232	TLSv1.2	111	Encrypted Handshake Message

I never saw this entry for iOS. This is additional information hinting to an issue with certificates.

Hi,
I was able to get Plexamp in iOS connecting to both my home and portable server working today. In brief, disabling secure connections fixed the issue.

The following is what I did in detail.

  1. Since the previous investigations hinted at a certificate issue, I disabled secure connections in my home server.
  2. I then signed out of Plexamp and signed in again so that it could get and cache the new connection details. (I think this is how it works based on my findings).
  3. I synced the library again to the portable server. The server was failing to start due to some connection issues with plex.tv although I never got this error before. This portable server is never meant to be online, its purpose being to not rely on internet to serve media. This looked like another certificate issue, and I synced the time using ntp, restarted the server and it started downloading a bunch of codecs. It then came back on.
  4. In Plexamp from iOS, I switched from my home access point (AP) to the portable Plex server’s AP (RPI4) and it worked!

Previously, before getting into this connection issue with the portable server, I was using the same IP address and subnet as my home server (so that Plexamp would recognize the server while travelling) which was a hassle when I had to sync the library and media at home due to IP collision on the network. So I had to manually disable the AP on the portable server before plugging in the network cable. I discovered the “Custom server access URLs” while fixing the issue posted in this thread. I can now use a different subnet on my portable server. Switching from my home AP to the portable AP works seamlessly with Plexamp :slight_smile:

Now without the IP collision, I could hopefully sync the library and media with ease.

In conclusion, I think all of this happened due to the lack of an RTC in the PI4.

Thanks @elan for the guidance in getting the logs which led to my in depth investigations. I never knew that this was possible in the iOS app. If there’s interest from the community in my synced portable server setup, I could make a high level post on it sooner. I never posted my setup online due to its experimental and complicated nature.

1 Like

glad you got it working!

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