How to activate peo tv channels



Author: Johns

An HDTV output plugin for VDR with GPU support.

  • Video VA-API / VA-API (with Intel, NVIDIA and AMD support)
  • Video CPU / VA API
  • Video VDPAU / VDPAU
  • Video CPU / VDPAU
  • Audio FFMpeg / Alsa / Analog
  • Audio FFMpeg / Alsa / Digital
  • Audio FFMpeg / OSS / Analog
  • HDMI / SPDIF passthrough
  • VA-API bob software deinterlace
  • Auto crop


Last update 03/2013

Software requirements

One of the following drivers


Warning: libav is not supported, expect many bugs with it.


cd vdr-plugin-softhddevice make VDRDIR = LIBDIR =.


make VDRDIR = / usr / include / vdr LIBDIR =.

Download latest version from: [1]

tar vxf vdr-softhddevice - *. tar.bz2 cd softhddevice- * make VDRDIR = LIBDIR =.

You can edit Makefile to enable / disable VDPAU / VA-API / Alsa / OSS support.



parameter description
-a audio_device Selects audio output module and device (fe. Alsa: hw: 0,0 oss: / dev / dsp)

"" - to disable audio output
/ ... - to use oss audio module (if compiled with oss support)
other - to use alsa audio module (if compiled with alsa support)

-p audio_device audio device for pass-through (hw: 0.1 or / dev / dsp1)
-c channel_name audio mixer channel name (fe. PCM)
-d display display of x11 server (fe.: 0.0)
-D start plug-in detached, meaning it does not open a window on the X server. svdrp command ATTA shows the window (This information comes from YaVDR part of VDR portal
-f start with fullscreen window (only with window manager)
-g geometry x11 window geometry WxH + X + Y
-v device video device (va-api, vdpau, noop)
-s start in suspended mode
-x start x11 server
-w workaround enable / disable workarounds

no-hw-decoder - disable hw decoder, use software decoder only
no-mpeg-hw-decoder - disable hw decoder for mpeg only
still-hw-decoder - enable hardware decoder for still-pictures
alsa-driver-broken - disable broken alsa driver message
alsa-close-open - this needs a description
alsa-close-open-delay - this needs a description
ignore-repeat-pict - disable repeat pict message

Specifying several options as follows:
-w workaround1 -w workaround2 ...

xorg.conf (.d)

The X server should be configured in such a way that Power Magament is deactivated and the screen / TV works with exactly 50Hz non-interlaced.

Section "ServerLayout" ... Option "NoPM" "true" Option "BlankTime" "0" Option "StandbyTime" "0" Option "SuspendTime" "0" Option "OffTime" "0" EndSection

The refresh rate can be checked e.g. with xrandr (star = current resolution). If necessary, the resolution can be changed by inserting a suitable modeline in xorg.conf.

xrandr Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 16384 x 16384 DVI-I-0 disconnected primary (normal left inverted right x axis y axis) VGA-0 disconnected (normal left inverted right x axis y axis) DVI -I-1 disconnected (normal left inverted right x axis y axis) HDMI-0 connected 1920x1080 + 0 + 0 (normal left inverted right x axis y axis) 1150mm x 650mm 1920x1080 60.00 + 59.94 50.00 * 29.97 25.00 23.97 60.05 60.00 50.04 1280x1024 60.02 1280x720 60.96 60.00 59.94 50.00 1024x768 60.00 800x600 60.32 720x576 50.00 50.08 720x480 59.94 640x480 59.95 59.94 59.93

Example of a 1920x1080 modeline

Section "Monitor" (..) Modeline "1920x1080_50" 148,500 1920 2448 2492 2640 1080 1084 1089 1125 + hsync + vsync EndSection

Note: In the example, the repetition rate results from a pixel clock of 148.5MHz and 2640 pixels per line and 1125 lines per frame: 148.5MHz / (2640 * 1125) = 50Hz. The image repetition rate can therefore be calculated directly from a model line.



Add "XKeySym." definitions to $ VDRCONFIG / remote.conf to control the vdr and plugin with the connected input device. fe.

XKeySym.Up Up XKeySym.Down Down ...

Additional to the x11 input sends the window close button "Close".


XKeySym.Power Close


The following macros can be used for the PIP feature:

@softhddevice 1 # Enable detached mode @softhddevice 2 # Toggle on / off @softhddevice 3 # PIP Zap Mode (not implemented) @softhddevice 4 # PIP Channel + @softhddevice 5 # PIP Channel- @softhddevice 6 # PIP on / swap channels @softhddevice 7 # PIP Swap position @softhddevice 8 # PIP Close

Environment variables

DISPLAY =: 0.0 X11 display name
NO_HW = 1 if 1, do not use hardware decoders
NO_MPEG_HW = 1 if 1, do not use hardware decoders for MPEG1 / 2
STUDIO_LEVELS = 1 if 1, then use Studio Levels with VDPAU (outdated, now available as a plugin setup parameter (setup.conf))
the following variables only when using ALSA:
ALSA_DEVICE = default ALSA PCM device name
ALSA_AC3_DEVICE = ALSA device for AC3 pass-through
ALSA_MIXER = default ALSA mixer device name
ALSA_MIXER_CHANNEL = PCM ALSA mixer channel name
the following variables only when using OSS:
OSS_AUDIODEV = / dev / dsp OSS DSP device name
OSS_AC3_AUDIODEV = OSS AC3 pass-through device name
OSS_MIXERDEV = / dev / mixer OSS mixer device name
OSS_MIXER_CHANNEL = pcm OSS mixer channel name


softhddevice.MakePrimary = 1 0 = unchanged, 1 softhddevice becomes the primary device at startup
softhddevice.HideMainMenuEntry = 0 0 = show main menu entry of softhddevice, 1 = hide entry
of the following parameters is 576i, 720p, 1080i_fake or 1080i.

1080i_fake are "crooked" resolutions like 1280x1080 or 1440x1080
1080i is "real" FullHD with 1920x1080

softhddevice. .Scaling = 0 0 = normal, 1 = fast, 2 = high quality, 3 = anamorphic
softhddevice. .Deinterlace = 0 0 = bob, 1 = weave, 2 = temporal, 3 = temporal_spatial, 4 = software

(only 0 and 1 supported with VAAPI)

softhddevice. .SkipChromaDeinterlace = 0 0 = not used, 1 = used (for less powerful graphics cards, poorer quality)
softhddevice. .Denoise = 0 0 .. 1000 noise reduction (0 off, 1000 maximum)
softhddevice. .Sharpness = 0 -1000 .. 1000 focus setting (0 off, -1000 maximum unsharp, 1000 maximum sharp)
softhddevice.AudioDelay = 0 Sound offset + n or -n in ms
softhddevice.AudioPassthrough = 0 0 = not used, 1 = AC-3, the pass-through device is used for AC-3.
softhddevice.AutoCrop.Interval = 0 0 deactivates autocrop

n: Autocrop checks all 'n' frames.
The smaller, the more power it costs. 10 corresponds to every 200ms.

softhddevice.AutoCrop.Delay = 0 If 'n' checked intervals are the same, the recognized crop area is cut off.

The larger the longer it takes to switch.

softhddevice.AutoCrop.Tolerance = 0 If the determined crop area is too small, a maximum of 'n' pixels will be cut off at the top and bottom.

The bigger the more pixels can be cut away, if not 100% 16: 9 or 14: 9.

softhddevice.SkipLines = 0 Cut off 'n' pixel lines at the top and bottom of the video.
softhddevice.StudioLevels = 0 0 use PC Levels (0-255) with VDPAU.
1 use studio levels (16-235) with vdpau.
softhddevice.Suspend.Close = 0 1 stops softhddevice and closes the X11 window, connections and the audio device.

(use svdrpsend plug softhddevice RESU to continue if LIRC is not used)

softhddevice.Suspend.X11 = 0 1 also terminates the X11 server when softhddevice is stopped (currently without function)
softhddevice.60HzMode = 0 0 deactivates the 60Hz mode, 1 activates the 60Hz mode (e.g. for LC displays)
softhddevice.SoftStartSync = 0 0 deactivates soft video / audio synchronization, 1 activates it
VideoDisplayFormat =? Selecting the video display mode:
0 pan and scan
1 letter box
2 center cut-out
(VDR setting)

SVDRP commands

parameter description
SUSP Suspend plugin.

The plugin is suspended to save energy. Depending on the setup 'softhddevice.Suspend.Close = 0' only the video and audio output is stopped or with 'softhddevice.Suspend.Close = 1' the video and audio devices are closed. If 'softhddevice.Suspend.X11 = 1' is set and the X11 server was started by the plugin, the X11 server would also be closed. (Stopping X11 while suspended isn't supported yet)

RESU Resume plugin.

Resume the suspended plugin. The plugin could be suspended by the command line option '-s' or by a previous SUSP command. If the x11 server was stopped by the plugin, it will be restarted.

DETA Dettach plugin.

The plugin will be detached from the audio, video and DVB devices. Other programs or plugins can use them now.

ATTA <-d display> <-a audio> <-p pass> Attach plugin.

Attach the plug-in to audio, video and DVB devices. Use:

-d display display of x11 server (fe.: 0.0) -a audio audio device (fe. alsa: hw: 0,0 oss: / dev / dsp) -p pass audio device for pass-through (hw: 0,1 or / dev / dsp1)
PRIM Make the primary device.

is the number of device. Without number softhd device becomes the primary device. If becoming primary, the plugin is attached to the devices. If loosing primary, the plugin is detached from the devices.

HOTK Execute hotkey.

is the hotkey number, the following are supported:

10: disable audio pass-through 11: enable audio pass-through 12: toggle audio pass-through 13: decrease audio delay by 10ms 14: increase audio delay by 10ms 20: disable fullscreen 21: enable fullscreen 22: toggle fullscreen 23: disable auto-crop 24: enable auto-crop 25: toggle auto-crop 30: stretch 4: 3 to display 31: pillar box 4: 3 in display 32: center cut-out 4: 3 to display 39: rotate 4: 3 to display zoom mode 40: stretch other aspect ratios to display 41: letter box other aspect ratios in display 42: center cut-out other aspect ratios to display 49: rotate other aspect ratios to display zoom mode
STAT Display Suspend Mode of the plugin.

reply code is 910 + SuspendMode

3DOF turns 3D OSD off.
3DTB enable 3D OSD top and bottom.
3DSB enable 3D OSD side by side.
HELP prints out HELP for




No sound with 6 channel sound
Either the sound card cannot produce 6 channels or libav / ffmpeg has problems converting. To do this, add in .asoundrc in the home directory of the VDR user or globally to /etc/asound.conf:
pcm.51to20 {type route slave.pcm {type hw card device channels 2} ttable.0.0 1 # front left -> left ttable.1.1 1 # front right -> right ttable.2.0 0.707 # back left -> left, attenuation 3dB ttable.3.1 0.707 # back right -> right, attenuation 3dB ttable.4.0 0.5 # center -> left, attenuation 6dB ttable.4.1 0.5 # center -> right, attenuation 6dB ttable.5.0 0.5 # bass channel -> left, attenuation 6dB ttable.5.1 0.5 # bass channel -> right, attenuation 6dB}

Then add or change argument for the plugin '--plugin = "softhddevice ... -a pcm.51to20 ..."' at vdr. Then set in the Menu -> Setup -> Plugins -> softhddevice -> Audio pass-through None.

No volume control possible

softhddevice regulates the "PCM" controller automatically. If its name is different, you can inform softhddevice of this. To do this, check with "alsamixer" how it is now called. "Master" regulates all inputs, in an emergency this can be used. For computers with 6 analog outputs, it is usually "front". The Vdr start script to



Softhddevice cannot control digital outputs. (not yet)

With this entry in asound.conf you can still regulate the digital output.

pcm.! default hdmi_complete pcm.hdmi_hw {type hw card 1 # <- here the number of the card device 7 # <- number of the device} pcm.hdmi_formatted {type plug slave {pcm hdmi_hw #rate 48000 # <- optional! Here is the rate you want. #channels 2 # <- Optional! Amount of channels. }} pcm.hdmi_complete {type softvol slave.pcm hdmi_formatted hdmi_volume control.card 1 # <- here the number of the card}

Now you have to tell softhddevice which controller it should control. To do this, the Vdr start script

export ALSA_MIXER_CHANNEL = hdmi_volume


Timing log messages

e.g. in the syslog

Jul 12 01:43:20 [vdr] video: TT: TT: TT.TTT + SS AAAA DDD / \ ms BB + C v-buf

TT: TT: TT.TTT Is the current video timestamp so that errors can be found in recordings. If the error always occurs in the same place.

+ SS This is the current audio video interval in ms. Whether now with + the sound is in front of the picture or vice versa no idea. The 0 is not really the optimal value, as delays in the kernel or drivers can delay both picture and sound. Even a television with its picture enhancers or an A / V receiver has additional unknown delays. This value should settle to a constant value after a maximum of 1 min. +8888 says that no more A / V sync is attempted.

AAAA This is the size of the audio buffer in ms. Contains the Buffer and Kernel Buffer plug-in. The smaller the faster the switching went. If the values ​​are too small, there are audio dropouts and these lead to picture stuttering.

DDD This value shows the maximum error in the time stamps in ms. Usually one expects a picture to come every 20ms. If something comes sooner or later, the error is noted and displayed here. Some senders have a constant error, this comes from the sender and is not intercepted by ffmpeg / libav. But can also arise in the event of faults.

BB How much undecoded video is buffered.

C. How many fully decoded images are buffered. At the moment there are a maximum of 8 for interlaced and 4 for 720p.

See: Sound and image asynchronous

Bugs and requests

bug tracker

GIT snapshot

git clone git: //

There is a fork with HEVC support here.

git clone

And the following fork supports VA-API, HEVC and current ffmpeg versions:

git clone

Current version



  1. Homepage of the plugin
  2. Thread in the vdr portal