English > Software
Notes on using tvheadend on beaglebone black with MediaTV Digital Home DVB-C
kamakamadaun:
I spend a considerable amount of time getting a sundtek tuner to work with tvheadend on a beaglebone black. Sundtek support has been fantastic in helping with this so this post is to share my observations about how to solve some issues I have incountered.
There are also a few remaining issues I hope to get some help on.
Installing tvheadend
We need to install python
--- Code: ---opkg install python-distutils
opkg install python-compile
opkg install python-doctest
--- Ende Code ---
Then install tvheadend form source since there are no packages available for this platform
--- Code: ---git clone git://github.com/tvheadend/tvheadend.git
cd tvheadend
./configure
make install
--- Ende Code ---
You will get a number of warnings about missing packages. It seems to work anyway though...
The first time you launch Tvheadend you will want to use the command:
--- Code: ---/usr/local/bin/tvheadend -C
--- Ende Code ---
To launch Tvheadend after that simply use the command without the -C argument:
--- Code: ---/usr/local/bin/tvheadend
--- Ende Code ---
To make it work you need to make a user
--- Code: ---groupadd tvheadend
useradd -g tvheadend -G video -m tvheadend
--- Ende Code ---
Then we need a startup script to make it start at boot
Create file named /etc/init.d/tvheadend
and copy the following
--- Code: ---#!/bin/bash
# Required-Start: $local_fs $remote_fs mediasrv
TVHNAME="tvheadend"
TVHBIN="/usr/local/bin/tvheadend"
TVHUSER="tvheadend"
TVHGROUP="tvheadend"
case "$1" in
start)
echo "Starting tvheadend"
start-stop-daemon --start --user ${TVHUSER} --exec ${TVHBIN} -- \
-u ${TVHUSER} -g ${TVHGROUP} -f -C
;;
stop)
echo "Stopping tvheadend"
start-stop-daemon --stop --quiet --name ${TVHNAME} --signal 2
;;
restart)
echo "Restarting tvheadend"
start-stop-daemon --stop --quiet --name ${TVHNAME} --signal 2
start-stop-daemon --start --user ${TVHUSER} --exec ${TVHBIN} -- \
-u ${TVHUSER} -g ${TVHGROUP} -f -C
;;
*)
echo "Usage: tvheadend {start|stop|restart}"
exit 1
esac
exit 0
--- Ende Code ---
Set the permissions to make it runnable:
--- Code: ---chmod 755 /etc/init.d/tvheadend
--- Ende Code ---
Enable start during boot process
--- Code: ---update-rc.d tvheadend defaults
--- Ende Code ---
Finally start it manually so we can configure it:
--- Code: ---/etc/init.d/tvheadend start
--- Ende Code ---
Setting up the driver
Before you can do anything you need to install the drivers for the tuner
http://support.sundtek.com/index.php/topic,4.0.html
Now you can setup the channels in tvheadend
Avoid high CPU usage
1.
Under configuration --> DVB Inputs --> TV adapters find your adapter and set "Full Mux RX mode" to ON.
This should lower CPU usage.
2.
One problem with the BBB is that it lowers the clock frequency to lower power usage. However that means that there is not enough power to run the tuner when the clock frequency is set low.
This can be fixed by making the BBB change the frequency less frequently by setting:
--- Code: ---cpufreq-set -g conservative
--- Ende Code ---
Current settings can be seen by running:
--- Code: ---cpufreq-info
--- Ende Code ---
Unfortunately this is reset 10 min after reboot by a script. So we need to change that.
In "/lib/systemd/system/cpu-ondemand.service" change ondemand to conservative
3.
Turning the log off can help prevent CPU spikes.
Create or modify the file "/etc/sundtek.conf" and add.
--- Code: ---loglevel=off
--- Ende Code ---
EDIT: Updated the way to set the CPU governor so that it doesn't reset.
EDIT2: Added info about turning off the log.
kamakamadaun:
Remaining issues
Starting driver correctly
SOLVED
even if "systemctl status sundtek.service" reports that the drivers are started correctly it appears they are not. Upon reboot I need to manually run the following to get the tuner working:
--- Code: ---/opt/bin/mediaclient --start
--- Ende Code ---
CPU spikes
SEEMS TO HAVE BEEN SOLVED
I still get CPU usage spikes for mediasrv. mediasrv normally uses ~12% CPU but often suddenly jumps to 70%. This combined with tvheadend uses all the CPU. This causes dropped frames as reported by tvheadend as:
--- Code: ---2014-02-05 23:45:47.621 TS: 514000/DR K: MPEG2VIDEO @ #2360: Continuity counter error
2014-02-05 23:45:47.621 TS: 514000/DR K: TELETEXT @ #2362: Continuity counter error
2014-02-05 23:45:47.621 TS: 514000/DR K: MPEG2AUDIO @ #2361: Continuity counter error
2014-02-05 23:45:51.627 TS: 514000/DR K: MPEG2AUDIO @ #2361: Continuity counter error, 1 duplicate log lines suppressed
2014-02-05 23:45:51.627 TS: 514000/DR K: MPEG2VIDEO @ #2360: Continuity counter error, 1 duplicate log lines suppressed
2014-02-05 23:45:51.627 TS: 514000/DR K: TELETEXT @ #2362: Continuity counter error, 1 duplicate log lines suppressed
2014-02-05 23:45:51.926 parser: transport stream MPEG2VIDEO, DTS discontinuity. DTS = 237913200, last = 237204000
2014-02-05 23:45:52.094 parser: transport stream MPEG2AUDIO, DTS discontinuity. DTS = 237891243, last = 237146043
--- Ende Code ---
and mediasrv report repeatedly in the log:
--- Code: ---Resetting TS Port
--- Ende Code ---
This is severe enough that many files are very painful to watch.
Sundtek:
Thank you for your feedback!
Maybe you can try to turn off the logfile:
/etc/sundtek.conf
loglevel=off
There should not be any CPU spikes generated by the driver, if so there must be some reason behind that.
Do you have any /etc/sundtek.conf file? If so please post it here.
You can also start a script once a device is detected by the system
/etc/sundtek.conf
device_attach=/path/to/yourscript.sh
yourscript.sh might contain your additional commandline commands (eg. to set the cpu scheduler)
kamakamadaun:
The only sundtek.conf seem to be /opt/doc/sundtek.conf.
Is that file used or just a reference?
--- Code: ---
# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.8.4a(devinput) on Sun Aug 16 23:03:30 2009
#
# contributed by
#
# brand: sundtek.conf
# model no. of remote control:
# devices being controlled by this remote:
#
begin remote
name sundtek.conf
bits 16
eps 30
aeps 100
one 0 0
zero 0 0
pre_data_bits 16
pre_data 0x8001
gap 211362
toggle_bit_mask 0x80010004
begin codes
Power 0x0074
Menu 0x0161
User1 0x0174
Shutdown 0x00AE
1 0x0002
2 0x0003
3 0x0004
4 0x0005
5 0x0006
6 0x0007
7 0x0008
8 0x0009
9 0x000A
0 0x000B
Channel+ 0x0192
Channel- 0x0193
Volume+ 0x0073
Volume- 0x0072
Ok 0x001C
Record 0x00A7
Stop 0x0080
Play 0x00CF
Mute 0x0071
Up 0x0067
Down 0x006C
Left 0x0069
Right 0x006A
Red 0x018E
Green 0x018F
Yellow 0x0190
Blue 0x0191
Back 0x009e
end codes
end remote
--- Ende Code ---
Sundtek:
Nope, sundtek.conf is fully optional.
You can create it and use the callback device_attach for starting the cpu commands and restarting tvheadend once a device is available to the system.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln