Plex Home Theater for Arch Linux

Well curl error 28 is a timeout, apparently pht can't access your pms. Is there anything that could be blocking network traffic? Can you open http://192.168.178.20:32400/ in a browser?

Well curl error 28 is a timeout, apparently pht can't access your pms. Is there anything that could be blocking network traffic? Can you open http://192.168.178.20:32400/ in a browser?

Yes; it plays the same file just fine. I reverted the PMS to an older version, but nothing changed really; except the timeouts seems to be gone?

18:33:10 T:140217275983872   DEBUG: ------ Window Init (DialogBusy.xml) ------
18:33:10 T:140215305889536   DEBUG: Open - probing detected format [avi]
18:33:11 T:140215314282240   DEBUG: Process, request seek on source to 3158265254
18:33:11 T:140215314282240    INFO: easy_aquire - Created session to http://192.168.178.20
18:33:12 T:140215314282240   DEBUG: Process, request seek on source to 260
18:33:13 T:140215314282240   DEBUG: Process, request seek on source to 3158330822
18:33:15 T:140215314282240   DEBUG: Process, request seek on source to 276
18:33:15 T:140215314282240   DEBUG: Process, request seek on source to 3158396390
18:33:19 T:140215314282240   DEBUG: Process, request seek on source to 292
18:33:19 T:140215314282240   DEBUG: Process, request seek on source to 3158461958
18:33:21 T:140215314282240   DEBUG: Process, request seek on source to 308
18:33:21 T:140215314282240   DEBUG: Process, request seek on source to 3158527526
18:33:23 T:140217068517120   DEBUG: CPlexGlobalTimer::Process firing callback manualServerManager
18:33:23 T:140217068517120   DEBUG: CPlexGlobalTimer::Process waiting 73302 milliseconds for serverDataLoader...
18:33:23 T:140216959440640  NOTICE: Thread Jobworker start, auto delete: true
18:33:23 T:140215556286208  NOTICE: Previous line repeats 1 times.
18:33:23 T:140215556286208   DEBUG: CurlFile::Open(0x7f8694043cc0) http://127.0.0.1:32400/
18:33:23 T:140216959440640   DEBUG: CPlexGlobalTimer::SetTimeout adding timeout: manualServerManager at pos 0 [60000]
18:33:23 T:140217068517120   DEBUG: CPlexGlobalTimer::Process waiting 59999 milliseconds for manualServerManager...
18:33:23 T:140216959440640   DEBUG: CPlexGlobalTimer::SetTimeout adding timeout: manualServerManager at pos 0 [60000]
18:33:23 T:140216782280448  NOTICE: Thread Jobworker start, auto delete: true
18:33:23 T:140217068517120   DEBUG: CPlexGlobalTimer::Process waiting 59999 milliseconds for manualServerManager...
18:33:23 T:140215556286208    INFO: easy_aquire - Created session to http://127.0.0.1
18:33:23 T:140215556286208 WARNING: FillBuffer: curl [127.0.0.1:32400/] failed with code 7
18:33:23 T:140215556286208 WARNING: CPlexManualServerManager::OnJobComplete failed to find a server on http://127.0.0.1:32400/
18:33:23 T:140216782280448   DEBUG: CurlFile::Open(0x7f8694f4a2a0) http://192.168.178.20:32400/
18:33:23 T:140216782280448   DEBUG: CPlexServer::CollectDataFromRoot knowledge complete: Mac Mini version: 0.9.9.5.411-da1d892 owned: YES videoTranscode: YES audioTranscode: YES deletion: NO class:
18:33:23 T:140216782280448   DEBUG: CPlexManualServerManager::OnJobComplete found manually added server Mac Mini
18:33:23 T:140216782280448   DEBUG: CPlexServerManager::MergeServer Merged Mac Mini with 1 connection, now we have 3 total connections.
18:33:23 T:140216782280448   DEBUG: CPlexServerManager::SetBestServer bestServer updated to Mac Mini version: 0.9.9.5.411-da1d892 owned: YES videoTranscode: YES audioTranscode: YES deletion: NO class:
18:33:23 T:140216782280448   DEBUG: CPlexManualServerManager::OnJobComplete all manual server checks done, updating serverManager
18:33:23 T:140216782280448   DEBUG: CPlexServerManager::MergeServer Merged Mac Mini with 1 connection, now we have 3 total connections.
18:33:23 T:140216782280448   DEBUG: CPlexServerManager::UpdateReachability Updating reachability (force=NO)
18:33:23 T:140216782280448    INFO: CPlexServerCacheDatabase::clearTables
18:33:25 T:140215314282240   DEBUG: Process, request seek on source to 324
18:33:25 T:140215314282240   DEBUG: Process, request seek on source to 3158593094
18:33:26 T:140215314282240   DEBUG: Process, request seek on source to 340
18:33:27 T:140215314282240   DEBUG: Process, request seek on source to 3158658662
18:33:29 T:140215314282240   DEBUG: Process, request seek on source to 356
18:33:29 T:140215314282240   DEBUG: Process, request seek on source to 3158724230
18:33:31 T:140215314282240   DEBUG: Process, request seek on source to 372
18:33:31 T:140215314282240   DEBUG: Process, request seek on source to 3158789798
18:33:33 T:140215314282240   DEBUG: Process, request seek on source to 388
18:33:33 T:140215314282240   DEBUG: Process, request seek on source to 3158855366
18:33:35 T:140215314282240   DEBUG: Process, request seek on source to 404
18:33:35 T:140215314282240   DEBUG: Process, request seek on source to 3158920934
18:33:39 T:140215314282240   DEBUG: Process, request seek on source to 420
18:33:39 T:140215314282240   DEBUG: Process, request seek on source to 3158986502
18:33:40 T:140215305889536   ERROR: Open - Error, could not open file plexserver://332b469067bdc23b27845ff495f321a8407da74e/library/parts/261/file.avi
18:33:40 T:140215305889536   ERROR: OpenDemuxStream - Error creating demuxer
18:33:40 T:140215305889536  NOTICE: CDVDPlayer::OnExit()
18:33:40 T:140215305889536  NOTICE: CDVDPlayer::OnExit() deleting input stream
18:33:40 T:140215314282240   DEBUG: Thread CFileCache 140215314282240 terminating
18:33:40 T:140215305889536   DEBUG: Thread CDVDPlayer 140215305889536 terminating
18:33:40 T:140217275983872   DEBUG: CAnnouncementManager - Announcement: OnStop from xbmc
18:33:40 T:140217275983872  NOTICE: CDVDPlayer::CloseFile()
18:33:40 T:140217275983872 WARNING: CDVDMessageQueue(player)::Put MSGQ_NOT_INITIALIZED
18:33:40 T:140217275983872  NOTICE: DVDPlayer: waiting for threads to exit
18:33:40 T:140217275983872  NOTICE: DVDPlayer: finished waiting
18:33:40 T:140217275983872   DEBUG: LinuxRendererGL: Cleaning up GL resources
18:33:40 T:140217275983872   DEBUG: ------ Window Deinit (DialogBusy.xml) ------

Where can I find the error code's? Or are these just Curl errors?

EDIT:
Just found that a regular SD MP4 file just plays fine. #strange.

EDIT2:

Tested some other files; it's not in the logs, but the plex binary complans about libvdpau:

Failed to open VDPAU backend libvdpau_i965.so: cannot open shared object file: No such file or directory
libva info: VA-API version 0.35.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_35
libva info: va_openDriver() returns 0

I installed the libvdpau-va-gl-git from your repo and the default libvdpau-va-gl, none worked. Any ideas?

 

-srry doublepost-


I have Arch + xbmc-git installed on an old laptop connected to my TV so I wanted to try getting Plex to work the same way. I believe it was successful but required a little more legwork. I will edit this when I get home tonight to test sound/power control/etc. on a fresh Arch install but here are the steps so far: I installed "base base-devel xorg xorg-xinit plex-home-theater" (and video drivers) and things worked. The plex account had to be member of the "video" group or hardware acceleration was disabled and videos wouldn't play. I also had to add it to "audio" or the desync would render videos unplayable.

  • Install "plex-home-theater" from the official repository
  • pacman -S plex-home-theater
  • Create plex user 
  • groupadd plex
    useradd -d /opt/plexhometheater -M -g plex -G uucp,video,audio -s /bin/nologin plex
    chown -R plex:plex /opt/plexhometheater
  • Copy modified systemd service provided by the "xbmc" package to /usr/lib/systemd/system/plexhometheater.service
  • [Unit]
    Description = Starts instance of Plex using xinit
    After = remote-fs.target
    

    [Service]
    User = plex
    Group = plex
    Type = simple
    Environment = “XBMC_HOME=/opt/plexhometheater/share/XBMC”
    ExecStart = /usr/bin/xinit /opt/plexhometheater/bin/plexhometheater-standalone – :0 -nolisten tcp
    Restart = on-abort

    [Install]
    WantedBy = multi-user.target

  • Copy modified launch script provided by the "xbmc" package to /opt/plexhometheater/bin/plexhometheater-standalone
  • #!/bin/sh
    

    Copyright © 2009-2013 Team XBMC

    http://xbmc.org

    This Program is free software; you can redistribute it and/or modify

    it under the terms of the GNU General Public License as published by

    the Free Software Foundation; either version 2, or (at your option)

    any later version.

    This Program is distributed in the hope that it will be useful,

    but WITHOUT ANY WARRANTY; without even the implied warranty of

    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License

    along with XBMC; see the file COPYING. If not, write to

    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.

    http://www.gnu.org/copyleft/gpl.html

    prefix="/opt/plexhometheater"
    exec_prefix="/opt/plexhometheater"
    bindir="${exec_prefix}/bin"
    XBMC_HOME="${exec_prefix}/share/XBMC"
    PLEX="${bindir}/plexhometheater --standalone $@"

    PULSE_START="$(which start-pulseaudio-x11)"
    if [ -n “$PULSE_START” ]; then
    $PULSE_START
    else
    PULSE_SESSION="$(which pulse-session)"
    if [ -n “$PULSE_SESSION” ]; then
    PLEX="$PULSE_SESSION $PLEX"
    fi
    fi

    LOOP=1
    CRASHCOUNT=0
    LASTSUCCESSFULSTART=$(date +%s)

    while [ $(( $LOOP )) = “1” ]
    do
    $PLEX
    RET=$?
    NOW=$(date +%s)
    if [ $(( ($RET >= 64 && $RET <=66) || $RET == 0 )) = “1” ]; then # clean exit
    LOOP=0
    else # crash
    DIFF=$((NOW-LASTSUCCESSFULSTART))
    if [ $(($DIFF > 60 )) = “1” ]; then # Not on startup, ignore
    LASTSUCESSFULSTART=$NOW
    CRASHCOUNT=0
    else # at startup, look sharp
    CRASHCOUNT=$((CRASHCOUNT+1))
    if [ $(($CRASHCOUNT >= 3)) = “1” ]; then # Too many, bail out
    LOOP=0
    echo “Plex has exited uncleanly 3 times in the last ${DIFF} seconds.”
    echo “Something is probably wrong”
    fi
    fi
    fi
    done

  • Enable and start the service
  • systemctl enable plexhometheater
    systemctl start plexhometheater

I'm sure there are ways to improve but it seems to work (as best I can tell over VNC).

Thank you corsiva, this works for me too, but I can not shutdown form PHT,  the Program exits to console. Do you know what I need to do to get shutdown working?

Thanks, Nick

Hi ni3,

You can add

systemctl poweroff

at the end of corsiva's /opt/plexhometheater/bin/plexhometheater-standalone script. This will make the system shut down after the while loop completes. I have not tested this, but I guess it should work.

I'm having mpeg2video playback problems. Every Mythtv video plays at a 2X to 4X speed without any audio. The videos play fine in Mythtv as well as other video players like VLC and in the Firefox web interface. Refer to my other Plex post for more details:

https://forums.plex....m-in-pht-linux/

What's the audio codec?

Also, what's your audio configuration, analog or optical? Videos play faster here if I set the audio output to optical and forget to turn my optical receiver on.

What's the audio codec?

Also, what's your audio configuration, analog or optical? Videos play faster here if I set the audio output to optical and forget to turn my optical receiver on.

The audio codec for the mpeg2video is AC3.

I'm using HDMI digital stereo from a computer to a TV.

Also I believe pulseaudio is setup for pass through using pavcontrol.

I have attached the debug log.

Plex can decode AC3 just fine, the problem appears to come from the passthrough (setting everything to analog will work, but this is not what you want). You should try fiddling with your audio settings, my setup is pulseaudio set to analog, and plex set to optical/coax (my computer is linked to my receiver via a toslink) and it works. Now if pulseaudio is set to passthrough, I'm not sure if plex should be configured to use analog, optical or hdmi, you should try at least analog and hdmi, see if one of them works.

Thanks for the reply but see this post for the solution.

https://forums.plex.tv/topic/111968-mpeg2video-format-file-playback-problem-in-pht-linux/?p=665231

Well, yeah, don't check AC3 capable if it's not :P Anyway, glad you got it sorted.

Well, yeah, don't check AC3 capable if it's not :P Anyway, glad you got it sorted.

The plex media player is the only player that doesn't play AC3 correctly. I have used Mythtv for years and TV recordings here is the US have the AC3 codec. So all my hardware and other software play the AC3 fine.

Is anyone having trouble with audio? I have an ATI card and I'm trying to use audio over HDMI. I enabled the kernel module so it works fine in VLC, but refuses to work in plex. The videos play at normal speed, justr without audio. I tried setting the output device in plex settings but this didn't work either.

Is anyone having trouble with audio? I have an ATI card and I'm trying to use audio over HDMI. I enabled the kernel module so it works fine in VLC, but refuses to work in plex. The videos play at normal speed, justr without audio. I tried setting the output device in plex settings but this didn't work either.

I was thinking of creating an arch build for PlexHT, but I was nervous about this... I'm pretty sure you have to have ALSA properly configured with the right output sink so that audio is streamed over the HDMI output.

Has anyone else had any luck bitstreaming any HD audio codecs like DTS-HD MA or TrueHD?  I really want a reliable minimalist setup that has plex and with reall HD audio support.

I don't have any AMD card anymore, but it was working fine on my previous laptop without me doing anything complicated. I had pulseaudio running though, I don't recall having to fiddle with alsa settings at all, choosing HDMI output in plex did the trick.

I can bistream regular dts fine, haven't tried thd or dts-hd because my receiver doesn't support those, but I can't see why they wouldn't work.

From my reading pulse does not support HD codecs like TrueHD and DTS-HD MA... but it should work fine supporting the basic DTS or AC3 streams...

Oh you're right, I didn't know that. Looks like one has to use alsa to bitstream those :(

I have this weird issue with the latest version from the main Arch repo (congratulations btw, great job!), e.g. version 1.2.2-2.

I don't know why, but what happens is that no matter the file I play, the video quality will gradually degrade for a few seconds, until it's quite blurry, and then kind of "snap back" to full quality, and immediately start to degrade again. PMS is on the same machine, and PHT is set to direct stream all the things, etc. The last version from your own repo, alucryd, (version 1.2.2-1) doesn't have this issue.

I only noticed this yesterday, so I haven't tried removing all PHT settings yet, or debugging further, so it might be something that goes away by itself when everything's "fresh" – just wanted to inform about the problem :)

The difference between the one in [community] and the one in my repo is that the former was built against our ffmpeg-compat instead of the ffmpeg plex ships (which is over 9000 years old). I still haven't rebuilt the one in my repo to reflect that change.

However, I don't experience the issue you're talking about. I can only test h264 (8/10bit) videos though, I don't have anything else in my library. This might be an ffmpeg problem rather than plex. I see there was a new release of ffmpeg 0.10, provided there is no soname bump, it should land soon enough in our repos, maybe that'll fix it. Please keep using the one in my repo for the time being, also you might want to add plex-home-theater-git to the 'IgnorePkg' array in '/etc/pacman.conf' so that it doesn't get updated when plex 1.2.3 is out, packages in that repo are built automatically when there's a new release, and the next one will incorporate my changes.