DViCO FusionHDTV DVB-T Dual Digital Installation

From MythTV Official Wiki
Revision as of 19:01, 10 October 2010 by GBee (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Clean.png Cleanup: This page should be cleared off in preparation for deletion. Tuner specific information should be migrated to the LinuxTV Wiki, and any additional information moved to more generic pages. Discuss the issue on the talk page

Ubuntu 10.04 Installation

The DViCO Dual Digital 2 works out of the box in Ubuntu 10.04, except you'll need to "enable proprietary drivers" for the DVB firmware.

Ubuntu 6.10 Installation

Important.png Note: Ubuntu 9.10 version at: DViCO_FusionHDTV_DVB-T_Dual_Digital_4_Installation

This documentation is my working notes for installing the DViCO FusionHDTV DVB-T Dual Digital onto an Ubuntu 6.10 (Edgy Eft) Distribution. Having had experience and frustrations with the Mythdora and Knoppmyth distros I had to start from scratch on Ubuntu and in my mind has been the easiest way.

Before you Start

Its a good idea sure your graphics card is installed and you can run glxgears: http://ubuntuguide.org/wiki/Ubuntu_Edgy#How_to_install_Beta_Graphics_Driver_.28NVIDIA.29

Card Source

Living on the Gold Coast in Queensland Australia, I picked up the card from http://www.gamedude.com.au. An alternate source is http://www.umart.com.au.

Hardware

Sound

When installing your card, ensure that you plug the dvico audio-out port into the CD-in port (or AUX, if you have one), on your sound card or directly into your motherboard if it has onboard sound. This is an on-card port in both cases - not one of the ones at the rear that you can access from outside your computer. A suitable cable is supplied with the Dual Digital.

2nd USB Tuner and Remote

The "DViCO FusionHDTV DVB-T Dual Tuner" card has two tuners. One is PCI, the other is USB. You will either need to connect an external USB cable to your card, or use the supplied internal USB cable which connects to your motherboard. This will enable the second tuner and is needed for the remote to function.

Kernel / Packages

After installing Ubuntu Edgy do a full update. Edgy will prompt you to install updates as soon as its loaded. I ended up with the kernel 2.6.17-11-generic after a reboot. As soon as you have rebooted open a terminal and type dmesg to see that the PCI portion at least has been detected.

#dmesg
*snip*
CORE cx88[0]: subsystem: 18ac:db50, board: DViCO FusionHDTV DVB-T Dual Digital [card=44,autodetected]
TV tuner 4 at 0x1fe, Radio tuner -1 at 0x1fe
ACPI: PCI Interrupt Link [APC1] enabled at IRQ 16
ACPI: PCI Interrupt 0000:05:08.2[A] -> Link [APC1] -> GSI 16 (level, low) -> IRQ 66
cx88[0]/2: found at 0000:05:08.2, rev: 5, irq: 66, latency: 32, mmio: 0xfa000000
cx88[0]/2: cx2388x based dvb card
DVB: registering new adapter (cx88[0]).
DVB: registering frontend 0 (Zarlink MT352 DVB-T)...
*snip*


You should also see the directory /dev/dvb/adapter0

Firmware

The card requires firmware to operate. To get the firmware to the following:

cd /lib/firmware/2.6.17-11-generic/
wget http://www.linuxtv.org/downloads/firmware/dvb-usb-bluebird-01.fw

USB Problem

I have had a problem with the usb which may be fixed in the next release of Ubuntu. Let me step you through it if you get this problem.

1. unplug and replug your usb

#dmesg
usb 5-3: USB disconnect, address 2
usb 5-3: new high speed USB device using ehci_hcd and address 3
usb 5-3: config 1 has an invalid descriptor of length 1, skipping remainder of the config
usb 5-3: config 1 has 0 interfaces, different from the descriptor's value: 1
usb 5-3: configuration #1 chosen from 1 choice

Looking at the error I noticed ehci_hcd so for the hell of it - I removed it!

#rmmod ehci_hcd
#dmesg
ehci_hcd 0000:00:10.4: remove, state 1
usb usb5: USB disconnect, address 1
usb 5-3: USB disconnect, address 3
ehci_hcd 0000:00:10.4: USB bus 5 deregistered
ACPI: PCI interrupt for device 0000:00:10.4 disabled
usb 2-1: new full speed USB device using uhci_hcd and address 2
usb 2-1: config 1 has an invalid descriptor of length 1, skipping remainder of the config
usb 2-1: configuration #1 chosen from 1 choice
dvb-usb: found a 'DViCO FusionHDTV DVB-T Dual USB' in cold state, will try to load a firmware
dvb-usb: downloading firmware from file 'dvb-usb-bluebird-01.fw'
usbcore: registered new driver dvb_usb_cxusb
usb 2-1: USB disconnect, address 2
dvb-usb: generic DVB-USB module successfully deinitialized and disconnected.
usb 2-1: new full speed USB device using uhci_hcd and address 3
usb 2-1: configuration #1 chosen from 1 choice
dvb-usb: found a 'DViCO FusionHDTV DVB-T Dual USB' in warm state.
dvb-usb: This USB2.0 device cannot be run on a USB1.1 port. (it lacks a hardware PID filter)
dvb-usb: DViCO FusionHDTV DVB-T Dual USB error while loading driver (-19)
dvb_usb_cxusb: probe of 2-1:1.0 failed with error -22[/code]

In this dmesg you can see that it found our firmware that we downloaded and changed our USB from a cold state to a warm state. However it told us that it needs the usb2.0 drivers to work properly. So we will reload the module that we removed before.

#modprobe ehci_hcd
#dmesg
ACPI: PCI Interrupt 0000:00:10.4[C] -> GSI 21 (level, low) -> IRQ 177
ehci_hcd 0000:00:10.4: EHCI Host Controller
ehci_hcd 0000:00:10.4: new USB bus registered, assigned bus number 5
ehci_hcd 0000:00:10.4: irq 177, io mem 0xbb000000
ehci_hcd 0000:00:10.4: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb5: configuration #1 chosen from 1 choice
hub 5-0:1.0: USB hub found
hub 5-0:1.0: 8 ports detected
usb 2-1: USB disconnect, address 3
usb 5-3: new high speed USB device using ehci_hcd and address 2
usb 5-3: configuration #1 chosen from 1 choice
dvb-usb: found a 'DViCO FusionHDTV DVB-T Dual USB' in warm state.
dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
DVB: registering new adapter (DViCO FusionHDTV DVB-T Dual USB).
DVB: registering frontend 1 (Zarlink MT352 DVB-T)...
input: IR-receiver inside an USB DVB receiver as /class/input/input3
dvb-usb: schedule remote query interval to 150 msecs.
dvb-usb: DViCO FusionHDTV DVB-T Dual USB successfully initialized and connected.

So there you have it, USB second tuner fully loaded and the remote is now working too. You should now have:

/dev/dvb/adapter0 - The PCI tuner
/dev/dvb/adapter1 - The USB Tuner

To do this automatically on startup add this to your rc.local file

gedit /etc/rc.local

Script.png /etc/rc.local

 rmmod "ehci_hcd";
 sleep 3;
 modprobe "ehci_hcd";
 exit 0

Also notice in the last dmesg that the IR receiver was registered on /class/input/input3. To test the remote do:

#cat /dev/input/event3

Now when you press a button on the remote you should see gibberish appear. This proves the remote is working.

Installing MythTV

  1. Go to: System > Administration > Synaptic, then select repositories, tick universe & multiverse then close. Click on reload, to reload the sources. Do all updates.
  2. Open synaptic again (typing synaptic at the terminal or Administration>Synaptic), search for "mysql-server" (should be mysql-server 5), right click on it and "mark to install", click apply and yes to all dependencies. Wait for it to finish.
  3. Stay in Synaptic and search "mythtv", then mark for installation, mythtvplugins, mythtv, mythtv-themes. Yes to all.
  4. After installation mythtv asks for a mysql password, just hit enter for both pop-ups. If you screw this up (like i did) go back to synaptic and search again for myuthtv and press Ctrl-A to select all, Right Click and Mark for complete removal. Then reinstall them.

Set up Myth TV

This is my quick and dirty setup. Leave the defaults for everything else (ie Next.. Next.. etc Finish).

  • Run mythtv-setup
  • Go into General > On the third page:
TV Format=PAL
Chanel Frequency Table=Australia
XML Time Offset=Auto
  • Go into Capture Card > New Capture Card
Card Type=DVB DVT Capture Card (3.x)
Card#=0 (If your usb is working you will also have card 1)
  • Go into Video Sources > New Video Source
Video Source Name=vs1
XMLTV Listings Grabber=No Grabber (we will use our own later!)
Channel Frequency Table=Default
  • Go Into Input connections > DVB:0
Video Source=vs1
Press Scan For Channels

You should see all your channels being found. Wait for it to finish and we will proceed to the next step. If you want to come back here and your myth backend is running you can always stop and start the backend by using these commands:

/etc/init.d/mythbackend stop
/etc/init.d/mythbackend start

Getting Your Australian Channel Listings

My personal preference is to head over to http://www.oztivo.net/twiki/bin/view/Guidedata/WebHome and Sign Up. After that is done click on the TV Guide web interface and choose your channel listings that you wish to download. For me that was: 7TWO, ABC-Qld, ABC2, GO, Nine-Qld, One-Qld, SBS-Qld, SBSTWO-Qld, Seven-Qld, Ten-Qld

Now we need to make a script to download our listings each day and put it in our database:

cd /etc/cron.daily
gedit tvlistings_tvg

Paste the following into tvlistings_tvg and replace username:password with your tvguide username and password.

 #!/bin/bash
 # Get the guide for the channels we receive
 wget --header="accept-encoding: gzip" --output-document=/home/mythtv/tvlistings_tvg.xml.gz http://Username:Password@minnie.tuhs.org/tivo-bin/xmlguide.pl
 # unzip the downloaded file
 gunzip -f /home/mythtv/tvlistings_tvg.xml.gz
 # run mythfilldatabase to load it into the guide
 mythfilldatabase --file 1 7 /home/mythtv/tvlistings_tvg.xml

Save and close and make the script runable, and check to see that it works:

chmod 755 tvlistings_tvg
./tvlistings_tvg

For additional reading about this check out TvGuides HOWTO for MythTV

MythWeb Setup

After you ran tvlisting_tvg the mythfilldatabase section should of complained that it couldn't find certain channels. This is because we haven't mapped the XMLID of the tvlisting channels to the scanned channels. The easiest way to do this is through mythweb.

To get mythweb going you will need to do a few things firstly change the permissions on the directories:

chown -R www-data:www-data /usr/share/mythtv/mythweb/data
chmod 775 /usr/share/mythtv/mythweb/data
chmod +t /usr/share/mythtv/mythweb/data
chmod 777 /var/lib/mythtv

Next you will have to change the password in the mythweb-htaccess.conf file. So open up both files.

cd /etc/mythtv/
gedit mysql.txt mythweb-htaccess.conf 

Cut and paste the password from mysql.txt into mythweb-htaccess.conf Line 53.

setenv db_server "localhost"
setenv db_name "mythconverg"
setenv db_login "mythtv"
setenv db_password "ilqcjfws" <---------- used to be "mythtv"

Then open up a browser and go to http://localhost/mythweb/ to check your work.

Map the XMLTVID

You can map this in mythtv-setup but it is far easier to do it in mythweb.

  1. Open Myththweb > Settings (icon with the key and spanner) > MythTV channel info
  2. I mapped the following XMLTVID's:
Ten-Qld = 1
ABC-Qld = 2
SBS-Qld = 3
Seven-Qld = 7
Nine-Qld = 9
ABC2 = 22

You can change the visibility of the other scanned channels too if you want. In a terminal see if your daily cron job works now:

/etc/cron.daily/tvlistings_tvg

If that worked then you can go back to mythweb and check out your program listings :)

Remote Control (Lircd)

This I found to be the most painful as I was using the wrong driver for a long time. But after i switched it became a breeze. Now on my system i have 2 /dev/input/events that work when you press a button. When i do a cat /dev/input/event3 and press the 0 key on the remote this happens:

cat /dev/input/event3
0000             
[Control-C to quit]

So it seems that this should be the one to use.... Unfortunately Not! Something else is parsing the input from your remote and is producing that. What you really want is something that produces binary gibberish when you press a button:

cat /dev/input/event4
����E�
�����E�
[Control-C to quit]

If your screen is mangled from catting out that then you can type "reset" to reset your terminal. So now that we have determined what device we should use it is time to see if we can record our key presses. We will be using the driver dev/input and not the driver dvico like i did for way to many days. Another thing that may stop the following from working is if lircd is running. You can stop it by "/etc/init.d/lirc stop".

irrecord --driver=dev/input --device=/dev/input/event4 bob.txt
*snip*
Press RETURN to continue.
Hold down an arbitrary button.
................................................................................
Found gap length: 251753
Now enter the names for the buttons.

You must get dots when holding down a key and nothing else. If you don't get dots or other symbols are showing up then you either have a driver problem or are using the wrong input. Otherwise bob.txt will hold all your keys. Also I found that it wants to set the toggle bit to 1 in bob.txt. This is wrong as you will most likely get multiple keypresses sent. Set toggle_bit=0.

Sometimes irrecord sets an incorrect toggle_bit_mask as well. Mine was set to 0x80000000 and I suffered from duplicate events on every keypress. Changing it to toggle_bit_mask 0x16000000 fixed this problem for me.

If you have come this far then your remote is working like a charm. Time to map the keys and make lircd run automatically. This is done with 3 files:

gedit /etc/lirc/hardware.conf

Make sure you modify your DRIVER and DEVICE to be the same as you used for irrecord. I also changed START_LIRCMD=false for some reason.

Script.png /etc/lirc/hardware.conf

 # /etc/lirc/hardware.conf
 #
 # Arguments which will be used when launching lircd
 LIRCD_ARGS=""
 
 #Don't start lircmd even if there seems to be a good config file
 START_LIRCMD=false
 
 #Try to load appropriate kernel modules
 LOAD_MODULES=true
 
 # Run "lircd --driver=help" for a list of supported drivers.
 DRIVER="dev/input"
 # If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be
 # automatically used instead
 DEVICE="/dev/input/event4"
 MODULES=""<br>
 # Default configuration files for your hardware if any
 LIRCD_CONF="/etc/lircd/lircd.conf"
 LIRCMD_CONF=""
gedit /etc/lirc/lircd.conf

Script.png /etc/lirc/lircd.conf

 # Please make this file available to others
 # by sending it to <lirc@bartelmus.de>
 #
 # this config file was automatically generated
 # using lirc-0.8.0(userspace) on Mon Mar  5 16:00:35 2007
 #
 # contributed by: Soth
 #
 # brand:  DViCO FusionHDTV DVB-T Dual Digital
 # model no. of remote control: Fusion MCE
 # devices being controlled by this remote:
 #
   
   begin remote
   
     name  DViCO_Dual_Digital
     bits           16
     eps            30
     aeps          100
   
     one             0     0
     zero            0     0
     pre_data_bits   16
     pre_data       0x1
     gap            251756
     toggle_bit      0   
   
         begin codes
 #starting at the top
             dtv                      0x0179
             mp3                      0x0187
             dvd                      0x0185
             cpf                      0x016C
 #outer circle clockwise from top
             tvpower                  0x0164
             guide                    0x016D
             info                     0x0166
             alttab                   0x000F
             skip                     0x00A3
             start                    0x001C
             replay                   0x00A5
             dvdmenu                  0x008B
             back                     0x009E
             setup                    0x008D
 #inner circle
             up                       0x0067
             down                     0x006C
             left                     0x0069
             right                    0x006A
             ok                       0x0160
 #volume and channel
             voldn                    0x0072
             volup                    0x0073
             chup                     0x0192
             chdn                     0x0193
 #keypad
             camera                   0x00D4
             live                     0x0182
             folder                   0x0086
             1                        0x0002
             2                        0x0003
             3                        0x0004
             4                        0x0005
             5                        0x0006
             6                        0x0007
             7                        0x0008
             8                        0x0009
             9                        0x000A
             aspect                   0x0173
             0                        0x000B
             zoom                     0x0174
 #play buttons
             rew                      0x00A8
             playpause                0x00A4
             ff                       0x00D0
             mute                     0x0071
             stop                     0x0080
             rec                      0x00A7
             power                    0x0074
         end codes 
   end remote

Ok since we have set up these two files lets check our work.

/etc/init.d/lirc restart
ps aux | grep lircd
root 12671  0.0  0.0 2740 572 ?     Ss  16:27  0:00 /usr/sbin/lircd --driver=dev/input --device=/dev/input/event4
root 12675  0.0  0.0 2796 748 pts/1 R+  16:27  0:00 grep lircd

lircd is running with the correct driver and device. Ok let run irw and press some keys (Up, Ok and Start) on our remote

irw
0000000000010067 00 up DViCO_Dual_Digital
0000000000010160 00 ok DViCO_Dual_Digital
000000000001001c 00 start DViCO_Dual_Digital

Great Now we have to map these keys so that mythtv can use them. which brings us to our final file lircrc. You should save this file in your user directory as it is for personal mappings of the remote.

Script.png lircrc

 # lircrc.example.DVICO-nativelirc
 # 2004-07-04, Chris Pascoe
 # mailto:linuxdvb@itee.uq.edu.au
 # Save this file in ~/.mythtv/lircrc
 #
 # Note the "repeat =" strings in the volume and channel.
 # This means that if you hold down the key, every nth instance will be
 # passed.  This depends on your system, so you may want to increase or
 # decrease this and see what happens.  repeat = 1 is probably too
 # fast.
 
 ### Top 4 buttons ###
 
 # DTV - Change focus for PiP (to change channel in the other window)
   begin
     prog = mythtv
     button = dtv
     config = B
  end    
 
  begin
     prog = mythtv
     button = mp3
     config = Ctrl+M
  end
 
  begin
     prog = mythtv
     button = dvd
     config = Ctrl+D
  end
 
  begin
     prog = mythtv
     button = cpf
     config = 
  end
 
 ### Outer Circle (clockwise from the top) ### 
 
 begin
      prog = mythtv
      button = tvpower
      config = Esc
  end
  
  begin
      prog = mythtv
      button = guide
      config = S
  end
  
  begin
      prog = mythtv
      button = info
      config = I
  end
 
 #swap the pip windows
  begin 
     prog = mythtv
     button = alttab
     config = N
  end
 
 #commercial skip forwards
  begin
     prog = mythtv
     button = skip
     config = Z
  end
  
  begin
      prog = mythtv
      button = start
      config = Return
  end
 
 #commercial skip backwards
  begin
     prog = mythtv
     button = replay
     config = Q
  end  
 
  begin
      prog = mythtv
      button = dvdmenu
 #     config = undefined
  end
 
  begin
      prog = mythtv
      button = back
      config = Esc
  end
    
  begin
      prog = mythtv
      button = setup
 #     config = undefined
  end
  
 ### Inner Circle ###
  
  begin
      prog = mythtv
      button = up
      config = Up
  end
  
  begin
      prog = mythtv
      button = down
      config = Down
  end
  
  begin
      prog = mythtv
      button = left
      config = Left
  end
  
  begin
      prog = mythtv
      button = right
      config = Right
  end
  
  begin
      prog = mythtv
      button = ok
      config = Return
  end
 
 ### Volume and Channel ###
  
  begin
    prog = mythtv
    button = voldn
    repeat = 1
    config = F10
  end
  
  begin
    prog = mythtv
    button = volup
    repeat = 1
    config = F11
  end
  
  begin
      prog = mythtv
      button = chup
      config = Up
  end
  
  begin
      prog = mythtv
      button = chdn
      config = Down
  end
 
 ### Keypad ###
 
  begin
      prog = mythtv
      button = camera
      config = P
  end
 
  begin
      prog = mythtv
      button = live
 #      config = undefined
  end
 
  begin
      prog = mythtv
      button = folder
      config = C
  end
  
  begin
      prog = mythtv
      button = 1
      config = 1
      config = return
  end
  
  begin
      prog = mythtv
      button = 2
      config = 2
      config = return
  end
  
  begin
      prog = mythtv
      button = 3
      config = 3
      config = return
  end
  
  begin
      prog = mythtv
      button = 4
      config = 4
      config = return
  end
  
  begin
      prog = mythtv
      button = 5
      config = 5
      config = return
  end
  
  begin
      prog = mythtv
      button = 6
      config = 6
      config = return
  end
  
  begin
      prog = mythtv
      button = 7
      config = 7
      config = return
  end
  
  begin
      prog = mythtv
      button = 8
      config = 8
      config = return
  end
  
  begin
      prog = mythtv
      button = 9
      config = 9
      config = return
  end
 
  begin
     prog = mythtv
     button = aspect
     config = W
  end    
 
  begin
      prog = mythtv
      button = 0
      config = 0
      config = return
  end
 
 # Toggle PiP on/off
  begin
     prog = mythtv
     button = zoom
     config = V
  end
  
 ### Play buttons ###
  
  begin
      prog = mythtv
      button = rew
      config = Left
 #    config = seek -180
  end
  
  begin
      prog = mythtv
      button = playpause
      config = ctrl+p
  end
  
  begin
      prog = mythtv
      button = ff
      config = Right
 #     config = seek +180
  end
    
  begin
      prog = mythtv
      button = mute
      config = |
  end
  
  begin
      prog = mythtv
      button = stop
      config = P
  end
  
  begin
      prog = mythtv
      button = rec
      config = R
  end
  
  begin
      prog = mythtv
      button = power
      config = Esc
  end
 
 # Xine
  
  begin
     prog = xine
     button = playpause
     repeat = 3
     config = Play
  end
  
  begin
     prog = xine
     button = stop
     repeat = 3
     config = Pause
  end
  
  begin
     prog = xine
     button = back
     config = Quit
  end
  
  begin
     prog = xine
     button = tv_onoff
     config = Quit
  end
  
  begin
     prog = xine
     button = right
     repeat = 3
     config = SeekRelative+10
  end
  
  begin
     prog = xine
     button = left
     repeat = 3
     config = SeekRelative-10
  end
  
  begin
     prog = xine
     button = ff
     repeat = 3
     config = SeekRelative+30
  end
  
  begin
     prog = xine
     button = rew
     repeat = 3
     config = SeekRelative-30
  end
  
  begin
     prog = xine
     button = skip
     repeat = 3
     config = SeekRelative+300
  end
  
  begin
     prog = xine
     button = replay
     repeat = 3
     config = SeekRelative-300
  end
  
  begin
     prog = xine
     button = up
     repeat = 1
     config = EventUp
  end
  
  begin
     prog = xine
     button = down
     repeat = 1
     config = EventDown
  end
  
  begin
     prog = xine
     button = ok
     repeat = 0
     config = EventSelect
  end
  
  begin
     prog = xine
     button = guide
     repeat = 0
     config = Menu
  end
  
  begin
     prog = xine
     button = setup
     repeat = 0
     config = Menu
  end
  
  begin
     prog = xine
     button = volup
     repeat = 1
     config = Volume+
  end
  
  begin
     prog = xine
     button = voldn
     repeat = 1
     config = Volume-
  end

Remote Not Working after reboot

Now you may run into this as I did. I rebooted my computer without my USB mouse plugged in and my remotes device /dev/input/event3 had changed to /dev/input/event2. So we now need a way to make sure that the IR is always the same device. A very simple solution is to look at its name in dmesg:

dmesg | grep IR
input: IR-receiver inside an USB DVB receiver as /class/input/input4

Its name is IR-receiver inside an USB DVB receiver so we take that name and edit the udev rules to create a symlink each time it is plugged in. Add the following to the bottom of the file:

gedit /etc/udev/rules.d/60-symlinks.rules
KERNEL=="event*",SYSFS{name}=="IR-receiver inside an USB DVB receiver",SYMLINK="input/irremote"

No reboot is nesessary just unplug and replug the USB. You should now have /dev/input/irremote. So now change your hardware.conf to this new device and restart lirc:

gedit /etc/lirc/hardware.conf

Script.png /etc/lirc/hardware.conf

 # If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be
 # automatically used instead
 DEVICE="/dev/input/irremote"
 MODULES=""
/etc/init.d/lirc restart

Make your power button start MythTV

Taken from the FedoraMyth Tips and Tricks Section. To start and stop your mythfrontend using your remote first you must enable irexec to run in the background. This is simply done using the command:

irexec -d

We will add this to our /etc/rc.local file to have this start on boot:


Script.png /etc/rc.local

irexec -d

Now we need to create a mythpowerbutton.sh script in your /usr/local/bin to start and kill the mythfrontend process:


Script.png /usr/local/bin/mythpowerbutton.sh

#!/bin/bash
PROG=mythfrontend
STATUS=`ps -e | grep $PROG | grep -v grep | wc -l | awk '{print $1}'`

if [ `echo $DISPLAY | grep -c ":0"` -ge 1 ]
then
    if [ $STATUS -eq 0 ]
    then
        ( $PROG & )
    else
        killall $PROG
    fi
fi
exit 0

And dont forget to make it executable:

chmod 777 /usr/local/bin/mythpowerbutton.sh

Next edit your ~/.lircrc file to bind your power button. Add the following lines:


Script.png ~/.lircrc

# Power Button
begin
  prog = irexec
  button = power
  config = /usr/local/bin/mythpowerbutton.sh
end

Now restart lircd to reread your file and restart the irexec daemon (beacuse lircd will shut it down):

sudo /etc/init.d/lircd restart
irexec -d

Now Press your power button (wait a few moments for it to load) and MythTV frontend should spring into view. Press it again and it sould kill the process. Perfect wife/girlfriend proof restart procedure.

VLC DVD and Media Player

I Like VLC as it has never failed to play something i have in Linux or Windows. I did try xine but it failed to play a Divx 5 film that i had. So I went for gold old VLC. It was surprisingly easy to configure too:

  • Synaptic > Search for VLC > Download and Install.
  • To Set up your remote paste the following into your local .lircrc file (NOT .mythtv/lircrc):
gedit ~/.lircrc 


Script.png ~/.lircrc

 # lircrc for VLC
 #
 # Card: Dvico FusionHDTV DVB-T Dual Digital
 # Included Remote: Chunky Fusion MCE Remote
 # 
 # copy to ~/.lircrc
 # Available Keys from: src/libvlc.h or vlc --help --advanced
 #
 #
 ### Top 4 Keys ###
 
   begin
     prog = vlc
     button = dtv
  end    
 
  begin
     prog = vlc
     button = mp3
  end
 
  begin
     prog = vlc
     button = dvd
  end
 
  begin
     prog = vlc
     button = cpf
  end
 
 ### Outer Circle (clockwise from the top) ### 
 
 begin
      prog = vlc
      button = tvpower
      config = key-quit
  end
  
  begin
      prog = vlc
      button = guide
  end
  
  begin
      prog = vlc
      button = info
      config = key-position
  end
 
  begin 
     prog = vlc
     button = alttab
  end
 
  begin
     prog = vlc
     button = skip
     config = key-chapter-next
  end
  
  begin
      prog = vlc
      button = start
  end
 
  begin
     prog = vlc
     button = replay
     config = key-chapter-prev
  end  
 
  begin
      prog = vlc
      button = dvdmenu
      config = key-disc-menu
  end
 
  begin
      prog = vlc
      button = back
      config = key-quit
  end
    
  begin
      prog = vlc
      button = setup
  end
  
 ### Inner Circle ###
  
  begin
      prog = vlc
      button = up
      config = key-nav-up
  end
  
  begin
      prog = vlc
      button = down
      config = key-nav-down
  end
  
  begin
      prog = vlc
      button = left
      config = key-nav-left
  end
  
  begin
      prog = vlc
      button = right
      config = key-nav-right
  end
  
  begin
      prog = vlc
      button = ok
      config = key-nav-activate
  end
 
 ### Volume and Channel ###
  
  begin
    prog = vlc
    button = voldn
    repeat = 1
    config = key-vol-down
  end
  
  begin
    prog = vlc
    button = volup
    repeat = 1
    config = key-vol-up
  end
  
  begin
      prog = vlc
      button = chup
      config = key-title-next
  end
  
  begin
      prog = vlc
      button = chdn
      config = key-title-prev
  end
 
 ### Keypad ###
 
  begin
      prog = vlc
      button = camera
      config = key-snapshot
  end
 
  begin
      prog = vlc
      button = live
  end
 
  begin
      prog = vlc
      button = folder
  end
  
  begin
      prog = vlc
      button = 1
      config = 1
  end
  
  begin
      prog = vlc
      button = 2
      config = 2
  end
  
  begin
      prog = vlc
      button = 3
      config = 3
  end
  
  begin
      prog = vlc
      button = 4
      config = 4
  end
  
  begin
      prog = vlc
      button = 5
      config = 5
  end
  
  begin
      prog = vlc
      button = 6
      config = 6
  end
  
  begin
      prog = vlc
      button = 7
      config = 7
  end
  
  begin
      prog = vlc
      button = 8
      config = 8
  end
  
  begin
      prog = vlc
      button = 9
      config = 9
  end
 
  begin
     prog = vlc
     button = aspect
  end    
 
  begin
      prog = vlc
      button = 0
      config = 0
  end
 
  begin
     prog = vlc
     button = zoom
  end
  
 ### Play buttons ###
  
  begin
      prog = vlc
      button = rew
      config = key-jump-10sec
  end
  
  begin
      prog = vlc
      button = playpause
      config = key-play-pause
  end
  
  begin
      prog = vlc
      button = ff
      config = key-jump+10sec
  end
    
  begin
      prog = vlc
      button = mute
      config = key-vol-mute
  end
 
  begin
      prog = vlc
      button = stop
      config = key-stop
  end
  
  begin
      prog = vlc
      button = rec
  end
  
 begin
      prog = vlc
      button = power
      config = key-quit
 end
  • Finally run mythfrontend > Utilities/Setup > Setup > Media Settings > Video Settings > Player Settings
  • Set VLC to run fullscreen with remote: vlc --control=lirc -f %s

If you want to know what keys you can use for this config file check out: VLC - Lirc Keys. If you just want to use vlc for the show you cant use in xine or mplayer then there is an option to use a separate player for each video.

TV Out Setup

NVIDIA

My TV Out setup was pretty simple I changed my /etc/X11/xorg.conf file so that my screen would be extended to the right.

Important.png Important Point: Remember after changing your xconf file that you reboot with your TV ON and PLUGGED IN to your computer!

When your computer boots typically you will see the boot splash on both screens. When the login page appears you may see a NVIDIA logo on the tv and then it will go black. When you log in the TV will light back up.


There are some good tutorials on this so check out: Separate x-screens on Monitor and TV HOWTO TV-Out

The interesting parts of my /etc/X11/xorg.conf:

Script.png /etc/X11/xorg.conf

 #My 2 NVIDIA Device's (Same card with two outputs VGA and TV Out)
 Section "Device"
        BusID	"PCI:5:0:0"
        Identifier	"Device0"
        Driver	"nvidia"
        Screen	0
 EndSection
 
 Section "Device"
        BusID	"PCI:5:0:0"
        Identifier  "Device1"
        Driver	"nvidia"
        Screen	1
 EndSection
 
 #My 2 Monitors (My BenQ and TV)
 Section "Monitor"
    Identifier     "BenQ FP731"
    Option         "DPMS"
 EndSection
 
 Section "Monitor"
        Identifier "Television" #TV
        HorizSync 30-50
        VertRefresh 60
 EndSection
 
 #MY Two Screens (Monitor and TV) Resolution and Colour Settings
 Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "BenQ FP731"
    DefaultDepth    24
    Option         "AddARGBGLXVisuals" "True"
    SubSection     "Display"
        Depth       24
        Modes      "1280x1024_75" "1024x768_75" "800x600_75"
    EndSubSection
 EndSection
 
 Section "Screen"
        Identifier      "Screen1"
        Device          "Device1"
        Monitor         "Television"
        DefaultDepth    24
        Option  "TVOutFormat" "SVIDEO"
        Option  "TVStandard" "PAL-B"
        Option  "ConnectedMonitor" "TV"
        SubSection "Display"
                Depth 24
                Modes "800x600"
        EndSubSection
 EndSection
 
 #Setting up so that it makes my destop larger to the right!
 #So I can use the browser on the monitor and watch TV.
 Section "ServerLayout"
    Identifier     "Default Layout"
    Screen 0        "Screen0"
    Screen 1        "Screen1" rightof "Screen0"
    InputDevice    "Generic Keyboard"
    InputDevice    "Configured Mouse"
    InputDevice    "stylus" "SendCoreEvents"
    InputDevice    "cursor" "SendCoreEvents"
    InputDevice    "eraser" "SendCoreEvents"
 EndSection

ATI Radeon

Warning.png Warning: Overall I do not recommend this option at all. It is time consuming and very frustrating to get this to work and even then I was still getting segfaults and unexpected mythbackend crashes. Myth should be as reliable as possible so I recommend that you get yourself a nice cheap NVidia card (The extra $20 will save you days of work). In the end I gave up and will be going back to a Nvidia card. You have been warned!

Important.png Note: AMD has released 900+ Pages Of ATI GPU Specs (12th September 2007) - so decent linux support for ATI is finally coming

I recently switched out my card from my expensive NVidia to an cheap ($50) Ati X300 with TV out. It turned out to be a major pain in the ass. All over the place I was getting slow framerates with mythfrontend messages saying my system cannot cope with the current 800x600 output?!. Anyway after about 10hours of mucking around with the thing I finally got a Semi working config. Dual screens and running 1280x1024 on my LCD and 800x600 on my TV. A few things I learned along the way:

  • I tried the free "radeon" driver. My monitor worked - TV was displaying color but I couldn't get it synced properly
  • the proprietary "fglrx" driver works but has these problems:
    • X is a little unstable. When restarting the X Server (Ctrl-Alt-Backspace) sometimes it won't restart properly.. requiring a reboot >:(
    • The Xv video overlay (Which Myth Uses) Stretches the TV Vertically so you only see half. Ati need to fix this in their driver.
    • The OpenGL Overlay consumes too much resources and the TV gets framey
    • I had to use the textured video to get it working... although I was seeing blue people!
  • Make sure you restart x properly. A Logout doesn't work. Use Ctrl-Alt-Backspace or /etc/init.d/gdm restart

A good guide for installing ATI drivers can be found here: Ubuntu_Edgy_Installation_Guide

Installation

  • Go to ATI's website and download their driver. chmod 755 and run it as sudo.
  • Set up your /etc/X11/xorg.conf
aticonfig --initial=dual-head
  • Restart your x-server
sudo /etc/init.d/gdm restart

That should have your tv out working at least. Reboot if necessary and have your svideo plugged into your tv and make sure your tv is on so that it can autodetect. You should see the bootsplash on both your monitor and tv. (Funnily enough the TV seems to be updated faster than my monitor!). The following is tweaks made to your xorg.conf file to get myth running smoothly on your tv out:

Here are the interesting parts of my xorg.conf with the extras I added in bold:

Script.png /etc/X11/xorg.conf

Section "Monitor"
  Identifier   "aticonfig-Monitor[0]"
  Option	    "VendorName" "ATI Proprietary Driver"
  Option	    "ModelName" "Generic Autodetecting Monitor"
  Option	    "DPMS" "true"
EndSection

Section "Monitor"
  Identifier   "aticonfig-Monitor[1]"
  Option     "VendorName" "ATI Proprietary Driver"
  Option     "ModelName" "Generic Autodetecting Monitor"
  Option     "DPMS" "true"
EndSection

Section "Device"
  Identifier  "aticonfig-Device[0]"
       Driver      "fglrx"
       Option      "UseFBDev" "false"
       Option      "VideoOverlay" "on"
       Option      "OpenGLOverlay" "off"
       Option      "TVFormat" "PAL-B"
#      Option      "TVOverscan" "on"
       Option      "ForceMonitors" "crt1,tv"
       Option      "DesktopSetup" "mirror"
       Option      "OverlayOnCRTC2" "1"
       Option      "TexturedVideo" "on"
       Option      "EnableMonitor" "crt1,tv"
  BusID      "PCI:5:0:0"
EndSection

Section "Device"
  Identifier  "aticonfig-Device[1]"
  Driver      "fglrx"
  BusID       "PCI:5:0:0"
  Screen      1
EndSection

Section "Screen"
  Identifier "aticonfig-Screen[0]"
  Device     "aticonfig-Device[0]"
  Monitor    "aticonfig-Monitor[0]"
  DefaultDepth     24
  SubSection "Display"
  Viewport   0 0
  Depth     24
  EndSubSection
EndSection

Section "Screen"
  Identifier "aticonfig-Screen[1]"
  Device     "aticonfig-Device[1]"
  Monitor    "aticonfig-Monitor[1]"
  DefaultDepth     24
  SubSection "Display"
     Modes "800x600"
     Viewport   0 0
     Depth     24
  EndSubSection
EndSection

Section "ServerLayout"
  Identifier     "Default Layout"
  Screen      0  "aticonfig-Screen[0]" 0 0
  Screen         "aticonfig-Screen[1]" RightOf "aticonfig-Screen[0]"
  InputDevice    "Generic Keyboard"
  InputDevice    "Configured Mouse"
  InputDevice    "stylus" "SendCoreEvents"
  InputDevice    "cursor" "SendCoreEvents"
  InputDevice    "eraser" "SendCoreEvents"
EndSection

Section "Extensions"
       Option  "Composite" "0"
EndSection

Section "DRI"
       Mode         0666
EndSection

Blue People Fix

I sourced this from the following thread: Overlay on TV-Out stretched

When you use the texturedvideo overlay you will probably see blue people. To get around this problem there is a flag in the myth source to use ATI's drivers: USE_ATI_PROPRIETARY_DRIVER_XVIDEO_HACK. Luckily some nice folks have already compiled it for us. You can get it here:LibMyth0.20.

  • Download it to your desktop and run it.
  • Stop the backend server, run myth setup then quit, restart the back end server and then try it out:
/etc/init.d/mythbackend stop
mythtv-setup
/etc/init.d/mythbackend start
mythtv

If all goes well you should see no more smurfs

DVD Ripping

This is very useful when you don't want your kids scratching up their (or your) DVD's. You need to run mtd (Myth Transcoding Demon) before mythfrontend for this to work. However if you have protected DVD's this wont work just yet. For example throw in one of your dvd's and type mtd. You will probably see the warning that libdvdread : can't do encrypted files. To get around this run this script as root:

/usr/share/doc/libdvdread3/install-css.sh 

Run mtd again and everything should be OK. Now to have mtd start up in the background each boot add "mtd -d" to rc.local.

gedit /etc/rc.local

Script.png /etc/rc.local

 mtd -d

Connecting to Your MythBox Remotely

If your like me and you dont have a monitor attached to your mythbox you can easily connect to your Desktop using VNC. On your desktop go to:

  1. System > Preferences > Remote Desktop
  2. Make sure all of these are checked
    1. [checked] Allow Others to View your desktop
    2. [checked] Allow Others to Control your desktop
    3. [checked] Reqire the user to enter this password [******]


Thats it for the MythBox. Now you can connect from your remote computer (Windows / Linux / Java) using this free small footprint tool: Tight VNC

Recommended Reading

This Wiki

DVICO-Ultraview_Install_in_Australia

External

MythTV Ubuntu Installation Guide Part 1 Part 2

Ubuntu 6.10 Backend FrontEnd

HOWTO TV-Out

HOWTO VLC

Australian TV Grabbers