Here’s my solution to the problem with my setup. Hope it helps…
PMS: 1.21.3.4021 on raspberry Pi
iPhone 11 Pro, iOS 14.4 App version: 7.13
Find the iOS.xml file that Plex has created and copy it to somewhere you can edit it:
sudo cp /usr/lib/plexmediaserver/Resources/Profiles/iOS.xml /home/pi
Open the file using Bracket (or similar).
Change the file to read:
<?xml version="1.0" encoding="utf-8"?>
<Client name="iOS">
<!-- Author: Plex Inc. -->
<!-- This profile is used by A5 and higher devices (starting with iPhone 4S and iPad 3) -->
<Settings>
<Setting name="DirectPlayStreamSelection" value="true" />
<Setting name="StreamUnselectedIncompatibleAudioStreams" value="true" />
</Settings>
<TranscodeTargets>
<VideoProfile container="mp4" codec="h264" audioCodec="aac" subtitleCodec="mov_text" context="static" />
<VideoProfile protocol="hls" container="mpegts" codec="h264" audioCodec="aac,mp3" subtitleCodec="eia_608_embedded" context="streaming">
<Setting name="HlsExtraMultiChannelAudioStream" value="ac3" />
</VideoProfile>
<MusicProfile container="mp3" codec="mp3" />
<PhotoProfile container="jpeg" />
<SubtitleProfile protocol="hls" container="webvtt" subtitleCodec="webvtt"/>
</TranscodeTargets>
<DirectPlayProfiles>
<VideoProfile container="mp4,mov" codec="h264,mpeg4" audioCodec="aac" subtitleCodec="mov_text,tx3g,ttxt,text" />
<!-- Allow Direct Play of HLS content -->
<VideoProfile protocol="hls" container="mpegts" codec="h264" audioCodec="aac" />
<MusicProfile container="mp3" codec="mp3" />
<MusicProfile container="mp4" codec="aac" />
<MusicProfile container="mp4" codec="alac" />
<MusicProfile container="m4a" codec="alac" />
<MusicProfile container="flac" codec="flac" />
<PhotoProfile container="jpeg" />
</DirectPlayProfiles>
<CodecProfiles>
<VideoCodec name="h264">
<Limitations>
<UpperBound name="video.width" value="1920" isRequired="true" />
<UpperBound name="video.height" value="1080" isRequired="true" />
<UpperBound name="video.bitDepth" value="8" />
<NotMatch name="video.separateFields" value="1" />
</Limitations>
</VideoCodec>
<VideoAudioCodec name="*">
<Limitations>
<UpperBound name="audio.channels" value="2" onlyTranscodes="true" />
</Limitations>
</VideoAudioCodec>
</CodecProfiles>
</Client>
Copy the file to the user created Profiles directory:
sudo cp /home/pi/iOS.xml /var/lib/plexmediaserver/Library/Application\ Support/Plex\ Media\ Server/Profiles
Change the read/write permits of the file (I did it directly on the raspberry UI)
Change the owner to Plex: (Make sure you’re at the correct directory before changing the owner)
sudo chown plex iPhone.xml
Restart server:
sudo service plexmediaserver restart
Make sure you have sync enabled for your device by following the sync setup guide.
Start syncing a library from Plex web. Limit it to 1 song at 320 kbps (IMPORTANT). This one song won’t be synced at original as far as I can see
Open the mobile App and change the sync setting by:
Downloads & Sync → Manage → Music (or what your library is called):
Audio Quality = Highest
Limit = None
Stop doing anything else with Plex but monitor the conversion tab on Plex web and see all the songs go through ‘conversion’ (nothing actually changes) and have patience as all the songs are synced to your mobile. It took more than an hour for me (≈5000 songs).
I’ve not been able to 100% confirm no conversion but based on the following I assume nothing has been converted:
- Size: Plex App Documents & Data takes up 102.48GB on iPhone vs. 99.23GB on Music on App (I assume the 3GB is for metadata and thumbnails)
- Conversion on a Raspberry Pi showed all the songs run through faster than I could read them, which wouldn’t be the case if it was actually converting based on timespans it has taken my raspberry Pi convert short home videos.