Forums » Tutorial and setups »
[TUTO] Debian 8.5 + Tvheadend 4.1 (git) + transcoding + SiliconDust HDHomeRun (from scratch)
Added by Sylvain Cecchetto over 8 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
su root apt-get update apt-get upgrade
- Add "sudo" command
su root apt-get install sudo adduser lamda_user sudo
- Chande SSH default port
sudo nano /etc/ssh/sshd_config
Port XXX (as you want)
sudo /etc/init.d/ssh restart
- Reduce Grub wait time
sudo nano /etc/default/grub
GRUB_TIMEOUT = 0 (on boot, pres ESC to access menu)
sudo update-grub
- Install pm-utils
sudo apt-get install pm-utils
- Static IP
sudo nano /etc/network/interfaces
iface eth0 inet static
address 192.168.XX.XX
netmask 255.255.255.0
gateway 192.168.1.1
sudo nano /etc/resolv.conf
nameserver 192.168.1.1
sudo /etc/init.d/networking restart
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¶
cd /usr/src sudo git clone https://github.com/tvheadend/tvheadend.git cd tvheadend sudo ./configure
if necessary
sudo ./configure --enable-ffmpeg_static --enable-hdhomerun_client --enable-hdhomerun_static
sudo make -j8 sudo make install
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.
sudo groupadd video sudo adduser hts sudo usermod -a -G video hts
Optionnal
sudo adduser hts sudo
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
sudo nano /etc/init.d/tvheadend
sudo chmod 755 /etc/init.d/tvheadend
Only if you want to run Tvheadend on Debian start-up
sudo update-rc.d tvheadend defaults
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.
su hts /usr/local/bin/tvheadend -C
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
Ctrl+C
Now we can run Tvheadend as a service
To start Tvheadend
sudo service tvheadend start
Divers¶
Tvheadend log¶
sudo tail -f /var/log/syslog | grep tvheadend
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 :
https://github.com/SylvainCecchetto/Notes-guides-tutorials-and-other-tips
Replies (6)
RE: [TUTO] Debian 8.5 + Tvheadend 4.1 (git) + transcoding + SiliconDust HDHomeRun (from scratch) - Added by BabThooka Bong over 8 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 over 8 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 over 8 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 over 8 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 over 8 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 over 8 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?