This project is closed and read-only.
Forums » Tutorial and setups »
[TUTO] Debian 8.5 + Tvheadend 4.1 (git) + transcoding + SiliconDust HDHomeRun (from scratch)
Added by Sylvain Cecchetto over 10 years ago
Tutorial to install and configure Tvheadend 4.1 (build from Github) on Debian 8.5 with transcoding feature and the dual tuner SiliconDust HDHomeRun (HDHR4-2DT)¶
Hello ! This is my first tuto about this amazing tool: Tvheadend. First of all, sorry for my english, I'm french.
In this tuto I will explain you how to create a Tvheadend backed server from scratch.
Debian install and configuration¶
Preparing the USB stick (Mac users)¶
- Download ISO file debian-*-amd64-netinst.iso
- Copy the file to the USB stick with unetbootin
- Boot on the USB stick
Debian installation¶
- Choose standard installation
- Software selection: uncheck all except SSH server and Standard system utilities
Debian configuration¶
- Update / Upgrade
- Add "sudo" command
- Chande SSH default port
Port XXX (as you want)
- Reduce Grub wait time
GRUB_TIMEOUT = 0 (on boot, pres ESC to access menu)
- Install pm-utils
- Static IP
iface eth0 inet static
address 192.168.XX.XX
netmask 255.255.255.0
gateway 192.168.1.1
nameserver 192.168.1.1
Tvheadend build, install and configuration¶
Preliminary packages¶
sudo apt-get update sudo apt-get install build-essential git pkg-config libssl-dev bzip2 wget cmake sudo apt-get install libavahi-client-dev zlib1g-dev libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libavresample-dev libavfilter-dev libav-tools liburiparser1 liburiparser-dev debhelper libcurl4-gnutls-dev liba52-0.7.4-dev
Build and install¶
if necessary
Create hts user in video group¶
We create a specific user to run tvheadend in the video group. The video group is important to allow Tvheadend to control the TV tuner.
Optionnal
Create daemon¶
The daemon allows us to use the sudo service tvheadend start and sudo service tvheadend stop command. Furthermore we can run Tvheadend on Debian start-up.
tvheadend_daemon file
#! /bin/sh ### BEGIN INIT INFO # Provides: tvheadend # Required-Start: $local_fs $remote_fs udev # Required-Stop: $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 ### END INIT INFO # Author: Andreas Öman # Modify by: Sylvain Cecchetto # Do NOT "set -e" # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin DESC="Tvheadend" NAME=tvheadend DAEMON=/usr/local/bin/$NAME PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME TVH_USER=hts TVH_GROUP=video TVH_ENABLED=1 # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME # Configure command line options [ "$TVH_ENABLED" = "1" ] || exit 0 ARGS="-f" [ -z "$TVH_USER" ] || ARGS="$ARGS -u $TVH_USER" [ -z "$TVH_GROUP" ] || ARGS="$ARGS -g $TVH_GROUP" [ -z "$TVH_CONF_DIR" ] || ARGS="$ARGS -c $TVH_CONF_DIR" [ -z "$TVH_ADAPTERS" ] || ARGS="$ARGS -a $TVH_ADAPTERS" [ "$TVH_IPV6" = "1" ] && ARGS="$ARGS -6" [ -z "$TVH_HTTP_PORT" ] || ARGS="$ARGS --http_port $TVH_HTTP_PORT" [ -z "$TVH_HTTP_ROOT" ] || ARGS="$ARGS --http_root $TVH_HTTP_ROOT" [ -z "$TVH_HTSP_PORT" ] || ARGS="$ARGS --htsp_port $TVH_HTSP_PORT" [ -z "$TVH_ARGS" ] || ARGS="$ARGS $TVH_ARGS" [ "$TVH_DEBUG" = "1" ] && ARGS="$ARGS -s" # Load the VERBOSE setting and other rcS variables [ -f /etc/default/rcS ] && . /etc/default/rcS # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # # Function that starts the daemon/service # do_start() { # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started udevadm settle start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ $ARGS \ || return 2 } # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. rm -f $PIDFILE return "$RETVAL" } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; restart|force-reload) # # If the "reload" option is implemented then remove the # 'force-reload' alias # log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; status) status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $? ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 exit 3 ;; esac :
Copy the entire tvheadend_daemon file above in the file /etc/init.d/tvheadend
Only if you want to run Tvheadend on Debian start-up
First run¶
The first run is particular because you have to run Tvheadend without user access control. After the Tvheadend wizard allow you to create an admin user.
Now open a browser at tvheadend_ip:9981 and follow the Tvheadend wizard. Once the wizard completed come back to the Tvheadend bash.
To kill the Tvheadend process
Now we can run Tvheadend as a service
To start Tvheadend
Divers¶
Tvheadend log¶
Comments¶
I home this tutorial can help. Thanks a lot to the dev(s) for this work and this tool!
Feel free to ask questions or to offer suggestions.
You can find all the files, tutorials and other things on my Github :
Replies (6)
RE: [TUTO] Debian 8.5 + Tvheadend 4.1 (git) + transcoding + SiliconDust HDHomeRun (from scratch)
-
Added by BabThooka Bong about 10 years ago
Thanks for this tutorial. It's great!
Hereby bookmarked.
RE: [TUTO] Debian 8.5 + Tvheadend 4.1 (git) + transcoding + SiliconDust HDHomeRun (from scratch)
-
Added by jamper serman about 10 years ago
Thanks for this tutorial!
Hello as serious server installation on Ubuntu 14.04?
RE: [TUTO] Debian 8.5 + Tvheadend 4.1 (git) + transcoding + SiliconDust HDHomeRun (from scratch)
-
Added by Sylvain Cecchetto about 10 years ago
I'm not sure I understand your question (my English ...).
But installing on ubuntu is almost the same I think. Before I was on ubuntu.
RE: [TUTO] Debian 8.5 + Tvheadend 4.1 (git) + transcoding + SiliconDust HDHomeRun (from scratch)
-
Added by jamper serman about 10 years ago
Thank you very much , I have it installed.
For future updates as serious ?
RE: [TUTO] Debian 8.5 + Tvheadend 4.1 (git) + transcoding + SiliconDust HDHomeRun (from scratch)
-
Added by Sylvain Cecchetto about 10 years ago
Cool !
For future updates you have to stop tvheadend service : "sudo service tvheadend stop".
Then follow the "build and install" step in the tuto. That's all.
By doing that you "overwrite" the current tvheadend install with the last git version.
During the first start of the new tvheadend version, if you look at the log you will see that tvheadend automatically backup all the configuration files present in the .hts folder.
Hope it can help
RE: [TUTO] Debian 8.5 + Tvheadend 4.1 (git) + transcoding + SiliconDust HDHomeRun (from scratch)
-
Added by Etienne PRIEUR about 10 years ago
Thank you very much , I have installed it twice on a esxi Virtual Machine.
When i launch tvheadend all work fine.
But I cant start with daemon:
$ sudo service tvheadend start Job for tvheadend.service failed. See 'systemctl status tvheadend.service' and 'journalctl -xn' for details. sudo tail -f /var/log/syslog | grep tvheadend systemd[911]: Failed at step EXEC spawning /etc/init.d/tvheadend: No such file or directory systemd[1]: tvheadend.service: control process exited, code=exited status=203 systemd[1]: Unit tvheadend.service entered failed state. $ systemctl status tvheadend.service ● tvheadend.service - (null) Loaded: loaded (/etc/init.d/tvheadend) Active: failed (Result: exit-code) since ven. 2016-08-05 20:24:38 CEST; 3min 17s ago Process: 878 ExecStart=/etc/init.d/tvheadend start (code=exited, status=203/EXEC)
I'm newbie on linux, I don't know what can I do? :(