ArchVDR Main Wiki
This is only a draft structure and some initial toughs
- Basic installation tips
- Automount smb shares
- Configure your remote ( half done )
- VDR specific installation tips
- vdr-scripts
- Change your wlan device
- vdr-scripts
- How to contribute PKGBUILD's
Basic Setup For Archlinux
First of all you should already know how to install Linux distribution. Here we will not cover distribution installation, but few tips and trick will follow. In time of writing this WIKI page latest archlinux installation iso is: archlinux-2011.06.10-netinstall-dual.iso from http://releng.archlinux.org/isos/ which have 2.6.39 kernel, and if you select ftp as installation source for your installation, you archlinux will be up to date. As archlinux is rolling release updating it will always give you latest version no need to reinstall it with new installer or something.. You should select mirror near you as archlinux.org is limited in downloading speed.
It is highly recommended creating one partition for system and one for the recordings. And mount it to /var/lib/video.00.
Here is one example fstab entry :
/dev/sda3 /var/lib/video.00 ext3 defaults,user 0 2
After you installed core system and you got login prompt, its good to install ssh for remote access to vdrbox and doing everything we wrote here using ssh protocol.
pacman -Sy openssh
We should edit the configuration file, we are just going to use Protocol 2, change LoginGraceTime? 2m.
nano /etc/ssh/sshd_config
And
nano /etc/ssh/ssh_config
We need to allow local pc to be able to login to vdrbox by editing /etc/hosts.allow by adding this to that file
# let everyone connect to you sshd: ALL
Also check if /etc/hosts.deny have this line, if not then add it.
ALL: ALL
Now we are also going to start sshd daemon, and also to add sshd to rc.conf file to start on boot.
rc.d start sshd nano /etc/rc.conf DAEMONS=(... ... sshd ... ...)
Check if remote connection is working by typing this on your remote pc, or your main pc:
ssh -l <username> <vdrboxip>
Its good to synchronize the local package database with the remote repositories with doing:
pacman -Sy
Its time to install base-developments tool with doing:
pacman -S base-devel
And hit enter for this question: Enter a selection (default=all): Which will download and install : m4; autoconf; automake; bison; fakeroot; flex; mpfr; libmpc; isl; cloog; ppl; gcc; libtool; make; patch; pkg-config
After we install base-devel its time to start preparing for VDR. As we here are using DVB-S2 cards which are budget cards, some extra HW is needed to get HDTV contents working as it should. Nvidia recent publish their VDPAU (Video Decode and Presentation API for Unix) more here VDPAU which make everything easier.
Kernel
We are going to use official archlinux kernel which in time of this wiki changes is 2.6.39-ARCH and most DVB and DVB-S2 cards are working out of box, if you need to compile costum kernel go to https://wiki.archlinux.org/index.php/Kernel_Compilation .
We will use a normal user for compiling stuff, to add one , in our example it will be archvdr (change that name to whatever you like):
useradd -m -G users,audio,lp,optical,storage,video,wheel,power -s /bin/bash archvdr
Which will add that user to groups appended with -G . Now we need to set a password for that user:
passwd archvdr
We need to install a sudo in order to be able to install packages as user.
pacman -S sudo
Add archvdr user to sudoer list:
EDITOR=nano visudo
And under the root line the vdr user line: # User privilege specification root ALL=(ALL) ALL This:
archvdr ALL=(ALL) ALL
Now you should log in with that new user and we will continue with installation:
Lirc
LIRC stands for "Linux Infrared Remote Control", a program to use infrared devices (like your remote control from your TV) with linux.
Install lirc
sudo pacman -S lirc lirc-utils
The lirc packages provides kernel correct kernel module.
X10 based
For X10 based we need to use lirc_atiusb, and therefor we need to blacklist the wrong one which is used from lirc ati_remote
nano /etc/modprobe.d/modprobe.conf
To blacklist:
blacklist ati_remote
Info: You need to unload the wrong kernel module manually if you attached the receiver before blacklisting the module
While still in editing /etc/rc.conf we will add the daemon to the daemons array to start it at boot:
DAEMONS="(... lircd)"
Now all we need is correct lircd.conf for our X10, as i have the same writen here USB_X10i will use his lircd.conf, simple copy the first lircd.conf source from over there, thanks to the autor of that configuration file. Then we need to create a file in /etc/conf.d/ named whatever you like, as we are going to add it to lircd configuration file.
nano /etc/conf.d/lircd_X10.conf
Paste the code from above page and save to that file. Now we need to add it to lircd configuration file:
nano /etc/conf.d/lircd
It shoud be something like this:
LIRC_DEVICE="/dev/lirc0" LIRC_DRIVER="" LIRC_EXTRAOPTS="" LIRC_CONFIGFILE="/etc/conf.d/lircd_X10.conf"
Start lirc with sudo rc.d start lirc and type irw at command line and pressing some button on your remote you should get this respons:
[crow@vdrbox ~]$ irw 00000014e20d0000 00 1 Medion_X10 00000014e20d0000 01 1 Medion_X10 000000140b360000 00 ren Medion_X10 000000140b360000 01 ren Medion_X10 00000014ed180000 00 snapshot Medion_X10 00000014ed180000 01 snapshot Medion_X10
Which mean its all ok and our remote is working as it should.
lirc_serial based
After we did install of lirc and lirc-utils, we need to take shure that we have serial port and to see its port, we will do it with "dmesg |grep ttyS" output should be something like:
$ dmesg |grep ttyS [ 0.850104] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 1.083927] 00:01: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
With this we see that our port is on first port ttyS0. Now we just need to load kernel driver lirc_serial, with doing "sudo modprobe lirc_serial" if you dont see any error then you are fine, but if you see somethinge like this then fix it with command belove.
sudo modprobe lirc_serial FATAL: Error inserting lirc_serial (/lib/modules/2.6.39-ARCH/kernel/drivers/staging/lirc/lirc_serial.ko.gz): Device or resource busy
Which mean that something is already using our serial port and that we need to release it doing:
sudo pacman -S setserial sudo setserial /dev/ttyS0 uart none sudo modprobe lirc_serial
The output in "dmesg" should be something like this:
[ 3966.333491] lirc_serial: module is from the staging directory, the quality is unknown, you have been warned. [ 3967.229641] lirc_serial: auto-detected active low receiver [ 3967.229850] lirc_serial lirc_serial.0: lirc_dev: driver lirc_serial registered at minor = 0
Which mean that everything is fine and we can continue and automate the proces we did above. And doing that will be done using costum config file for lirc.
sudo nano /etc/modprobe.d/lirc_custum.conf
Put these command belove inside it:
alias char-major-61 lirc_serial options lirc_serial irq=4 io=0x3f8 install lirc_serial /usr/bin/setserial /dev/ttyS0 uart none; /sbin/modprobe --ignore-install lirc_serial
After saving file we should check lircd.conf if it have right setup: sudo nano /etc/conf.d/lircd.conf
LIRC_DEVICE="/dev/lirc0" LIRC_DRIVER="" LIRC_EXTRAOPTS="" LIRC_CONFIGFILE="/etc/conf.d/lircd_xbox360.conf"
We also need to add lirc_serial to /etc/rc.conf file so that driver get loaded on boot, in /etc/rc.conf add lirc_serial in MODULES=() :
MODULES=(lirc_serial)
Put lircd_xbox360.conf or the config file for your remote and put it in /etc/conf.d/ , just remmember to change its file name path if different in lircd.conf. After starting lircd and executing irw you should get output like:
$ sudo rc.d start lircd $ irw 000000037ff00bfe 00 1 Harmony_XBOX_360 000000037ff00bfe 01 1 Harmony_XBOX_360 000000037ff00bfd 00 2 Harmony_XBOX_360 000000037ff00bfd 01 2 Harmony_XBOX_360 000000037ff00bfc 00 3 Harmony_XBOX_360 000000037ff00bfc 01 3 Harmony_XBOX_360
We also need to add lircd daemon to /etc/rc.conf like writen above in "X10 based" section, reboot your machine and after long just write irw if you see output it mean your lirc is configured and we are ready for next steps.
Next we start with building xorg and alsa.
xorg alsa and nvidia drivers
sudo pacman -S xorg-server xorg-xinit xorg-utils xorg-server-utils
Advanced Linux Sound Architecture (ALSA)
sudo pacman -S alsa-utils
Now our sound device should already be supported by kernel, check dmesg and look for something like this:
[ 5.970059] hda_codec: ALC662 rev1: BIOS auto-probing.
As we wanna use HDMI and send all audio via HDMI out, we need to un-mute hdmi/iec958/spdif as these are disable bye default. Also we can check if our sound device is listed (hdmi/iec958/spdif) with 'aplay -l'.
$ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: NVidia [HDA NVidia], device 0: ALC662 rev1 Analog [ALC662 rev1 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 1: ALC662 rev1 Digital [ALC662 rev1 Digital] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0] Subdevices: 1/1 Subdevice #0: subdevice #0
If this is found use alsamixer to unmute SPDIF outputs
alsamixer
Using the arrow keys, move over to the 'iec958/hdmi/spdif' device and un-mute it by hitting the 'm' key. Hit "esc" to exit and save the settings.
And check if you are getting sound over HDMI with:
speaker-test -c 2 -D hw:0,1
!!! NOTE: the hw:0,1 would be optical or digital SPDIF (in my case) and hw:0,3 would be HDMI output over Nvidia codec!!!!
!!! NOTE: In oder to get audio over HDMI over Nvidia codec, you will need X running!!!!
Now store alsamixer settings
alsactl -f /var/lib/alsa/asound.state store
Edit /etc/rc.conf and add alsa to the daemons array:
DAEMONS="(... alsa)"
NVIDIA
As we use our kernel we need to compile nvidia for our kernel to.
nvidia and nvidia-utils binary blob
sudo pacman -S nvidia nvidia-utils
When asked to remove libgl do it.
We need add nvidia to modules() line in /etc/rc.conf:
sudo nano /etc/rc.conf MODULES=(lirc_serial nvidia)
Reboot to unload/load correct modules and after that we are ready to create xorg.conf
Now we need to create xorg.conf file for our X11, and as we dont have GUI we need to disable composite which is causing problems if no GUI is installed.
sudo nvidia-xconfig --no-composite
Now when nvidia stuff is installed we are ready for VDR stuff.
Basic VDR Instructions
Its time to build some packages, and we are starting with DVB-S2 driver, ttf-symbols and the start-stop-daemon a VDR dependency's:
Keep in mind that on 32 bit machines the packages have a little bit different name s/x86_64/i686/g ;)
To get archvdr PKGBUILDs do in your home directory:
sudo pacman -S subversion sudo pacman -S sqlite3 # The above sqlite3 is temporary until this bugfix is included in new subversion packages : https://bugs.archlinux.org/task/24250 svn co https://archvdr.svn.sourceforge.net/svnroot/archvdr archvdr
s2-liplianin-hg
cd ~/archvdr/trunk/archvdr/s2-liplianin-hg sudo pacman -S mercurial sudo makepkg --asroot -s sudo pacman -f -U s2-liplianin-hg-*-*.pkg.tar.xz
!!! After every Archlinux kernel update you must reinstall s2-liplianin-hg!!!!
ttf-vdrsymbols
cd ~/archvdr/trunk/archvdr/ttf-vdrsymbols/ sudo makepkg --asroot -s sudo pacman -U ttf-vdrsymbols-*-*.pkg.tar.xz
start-stop-daemon
cd ~/archvdr/trunk/archvdr/start-stop-daemon/ sudo makepkg --asroot -s sudo pacman -U start-stop-daemon-*-*.pkg.tar.xz
VDR
cd ~/archvdr/trunk/archvdr/vdr-1.7.19/ sudo makepkg --asroot -s sudo pacman -U vdr-1.7.*-*.pkg.tar.xz
VDR installation is also adding user and grup vdr, but we need to add it manual to sudors list:
sudo EDITOR=nano visudo
And under the root line the vdr user line: # User privilege specification root ALL=(ALL) ALL This:
vdr ALL=(root) NOPASSWD: ALL
This should be enough for VDR. Lets do some vdr-plugins and system packages needed for VDR.
I think the packages name are self explaining and it isn't need to explain more.
vdr-acpiwakeup
cd ~/archvdr/trunk/archvdr/vdr-addon-acpiwakeup/ sudo makepkg --asroot -s sudo pacman -U vdr-addon-acpiwakeup-*-*.pkg.tar.xz
xine-lib
cd ~/archvdr/trunk/archvdr/xine-lib-1.2/ sudo makepkg --asroot -s sudo pacman -U xine-lib-1.2-*-*.pkg.tar.xz
xine config using Nvidia vdpau
Edit the config with 'sudo /var/lib/vdr/.xine/config' (if file dont exist, it would be created), and edit (or copy/paste) the file to match these settings.
Sound would be outputed using HDMI, in all other case change to own value, to get list of alias use 'aplay -L'.
!!!NOTE: On xine-lib-1.2 installation sometimes will this config file be overwrite, so make sure you have back and if you get any audio/video problem, first check if everthing is ok with xine config file.!!!
$ grep "^[^#]" /var/lib/vdr/.xine/config .version:2 gui.deinterlace_by_default:1 gui.osd_enabled:0 gui.dropped_frames_warning:0 audio.driver:alsa audio.device.alsa_default_device:plug:hdmi audio.device.alsa_front_device:plug:hdmi audio.device.alsa_mixer_name:Master audio.device.alsa_mmap_enable:1 audio.device.alsa_passthrough_device:plug:hdmi audio.device.alsa_surround40_device:plug:hdmi audio.device.alsa_surround51_device:plug:hdmi audio.device.alsa_surround41_device:plug:hdmi audio.output.speaker_arrangement:Pass Through video.driver:vdpau video.output.vdpau_enable_inverse_telecine:0 video.output.vdpau_hd_deinterlace_method:bob video.output.vdpau_sd_deinterlace_method:bob video.output.vdpau_deinterlace_method:bob video.output.vdpau_display_queue_length:4 video.output.vdpau_sd_only_properties:noise+sharpness video.processing.ffmpeg_choose_speed_over_accuracy:1 video.processing.ffmpeg_pp_quality:0 video.processing.ffmpeg_thread_count:2 engine.buffers.audio_num_buffers:275 engine.buffers.video_num_buffers:1800 engine.buffers.video_num_frames:22 engine.performance.memcpy_method:sse
xine-ui
cd ~/archvdr/trunk/archvdr/xine-ui-vdr-cvs/ sudo makepkg --asroot -s sudo pacman -U xine-ui-vdr-*-*.pkg.tar.xz
vdr-xineliboutput
Edit /etc/fstab and add this entry for xineliboutput:
tmpfs /var/lib/vdr/plugins/xineliboutput/fifo tmpfs defaults,uid=vdr,size=4M 0 0
cd ~/archvdr/trunk/archvdr/libbluray/ sudo makepkg --asroot -s sudo pacman -U libbluray-*-*.pkg.tar.xz
cd ~/archvdr/trunk/archvdr/vdr-plugin-xineliboutput-git/ sudo makepkg --asroot -s sudo pacman -U vdr-plugin-xineliboutput-*-*.pkg.tar.xz
xine-vdr
Edit /etc/fstab and add this entry for xineliboutput:
sudo nano /etc/fstab tmpfs /var/lib/vdr/plugins/xine-fifo tmpfs size=4M 0 0
cd ~/archvdr/trunk/archvdr/vdr-plugin-xine/ sudo makepkg --asroot -s sudo pacman -U vdr-plugin-xine-*-*.pkg.tar.xz
NOTE: Xine config file is located and named as: /var/lib/vdr/.xine/config
start vdr
sudo rc.d start vdr
Prepare the graphical VDR client
We assume that you have a working xorg.conf and your X Server starts up.
Install vdr-scripts
We need vdr-plugin-signal as vdr-scripts depends on it
cd ~/archvdr/trunk/archvdr/vdr-plugin-signal/ sudo makepkg --asroot -s sudo pacman -U vdr-plugin-signal-*-*.pkg.tar.xz
vdr-scripts
cd ~/archvdr/trunk/archvdr/vdr-scripts/ sudo makepkg --asroot -s sudo pacman -U vdr-scripts-*-*.pkg.tar.xz
The Package vdr-scripts contains scripts for maintaining your VDR. It also includes some scipts to start and stop the graphical VDR client.
In /etc/default/vdrfrontend you can choose which client is used.
- FRONTEND=xinexv : xine plugin is used with video driver xv
- FRONTEND=xinevdpau : xine plugin is used with video driver vdpau
- FRONTEND=sxfexv: xineliboutput plugin is used with video driver xv
- FRONTEND=sxfevdpau : xineliboutput plugin is used with video driver vdpau
If you wish to start another client or enhance the commandline with your parameters take a look in /var/lib/vdr/vdr-client.
For nvidia vdpau with vdr-plugin-xine use:
sudo nano /etc/default/vdrfrontend #And edit the line to match: FRONTEND=xinevdpau
When you are done with configuration you can fire up the client sudo rc.d start vdrclient
In combination with the plugin vdr-plugin-menuorg you can use vdr-scipts to restart the wlan or make a backup of your VDR installation.
Tip : Double your main boot entry in grub .conf and add nox to the kernel parameters. This let you boot without the vdr client. This is helpfull if you need a shell.
skins
cd ~/archvdr/trunk/archvdr/vdr-plugin-text2skin-git sudo makepkg --asroot -s sudo pacman -U vdr-plugin-text2skin-git-*-*.pkg.tar.xz
cd ~/archvdr/trunk/archvdr/vdr-text2skin-skins/ sudo makepkg --asroot -s sudo pacman -Ufd vdr-text2skin-skins-*-*.pkg.tar.xz
Then edit /var/lib/vdr/setup.conf and add to OSDSkin one of the skins name, for example:
OSDSkin = PearlHD OSDTheme = Blue
Finish
If evrything works as expected you can automaticaly start vdr und the graphical client.
Edit /etc/rc.conf and add the add the daemons to the daemons array to start it at boot :
DAEMONS="(... @dbus lircd @sshd @alsa @at vdr-addon-acpiwakeup vdr-pre @vdr @vdrclient ...)"
Backup
When you are done with this basic steps you should make a backup of your VDR ;).
The easy way is to use vdr-scripts and vdr-plugin-menuorg.
You should see ED's Commands on the main menu. Navigate to it and choose Backup in the next menu.
You see an OSD message that backup ist starting or done. ( Tip use vdr-plugin-mlist to read missed messages. )
When the backup is finished you find the backup in /backup/.
Warning: The backup script will clear your system logs in /var/log/. If you need informations from the logs copy them away.
VDPAU Tips
On AMD machines it is important that you set the minimum CPU frequency to 1.8GHz the get a good VDPAU experience.
This limitation comes from the included memory controller in the CPU.
Install cpufrequtils :
sudo pacman -S cpufrequtils
add it to the daemons array in /etc/rc.conf :
DAEMONS="(... cpufrequtils)"
Edit /etc/conf.d/cpufreq and make sure you set min_freq="1.8GHz" like in the example :
#configuration for cpufreq control # valid governors: # ondemand, performance, powersave, # conservative, userspace governor="ondemand" # valid suffixes: Hz, kHz (default), MHz, GHz, THz min_freq="1.8GHz" max_freq="2.5GHz"
XBMC-PVR
First we need a VDR plugin to be able to serv to XBMC.
cd ~/archvdr/trunk/archvdr/vdr-plugin-vnsiserver/ sudo makepkg --asroot -s sudo pacman -U vdr-plugin-vnsiserver-*-*.pkg.tar.xz
cd ~/archvdr/trunk/archvdr/libmicrohttpd-xbmc/ sudo makepkg --asroot -s sudo pacman -U libmicrohttpd-*-*.pkg.tar.xz
cd ~/archvdr/trunk/archvdr/libbluray/ sudo makepkg --asroot -s sudo pacman -U libbluray-*-*.pkg.tar.xz
cd ~/archvdr/trunk/archvdr/libnfs/ sudo makepkg --asroot -s sudo pacman -U libnfs-*-*.pkg.tar.xz
cd ~/archvdr/trunk/archvdr/xbmc-pvr-git/ sudo makepkg --asroot -s sudo pacman -U xbmc-pvr-git-*-*.pkg.tar.xz
Then we need to enable TV inside System> TV> Enable checkbox, then in System> Add-ons> Installed Add-ons> PVR clients select and VDR VNSI Client Enable. When we enable it it will start to load Channel list. Go back to main screen and select Live TV to enjoy in LIVE TV on XBMC-PVR-testing branch.
How to be the perfect couch potato
This point is verry individual.
- You need chips, poppcorn, beer, coke or whatelse you like.
- Keep in mind to much drinks takes you too often to the toilet.
- Keep your remotes where you can reach them without moving.
- Take a comfortable position which you can hold for hours.