Wireless MythTV on MSI Wind netbook

February 18, 2010

Last week I bought a MSI Wind netbook after finding a nice deal on the older U100 model.  I bought the netbook for the primary purpose of using it as a “frontend” for the Perseus software defined receiver (SDR), which only functions under the Windows OS, but this is another story.  When not serving as a Perseus frontend, the netbook will be used for general use when traveling, surfing on the couch, etc.  For this reason I couldn’t resist setting up Ubuntu on it.  Because there’s no optical drive on the netbook, I chose to boot Ubuntu 9.04 live from a USB flash drive using a utility called UNetbootin.  After about six attempts, I finally got a good image onto the flash drive from which I could boot from.  Ubuntu ran without a hitch, so I installed it without any issues.  The three important things: wireless, touchpad, and the internal webcam work flawlessly for me on the U100 under Ubuntu 9.04.  After loading it up with my favorite apps, I wondered how it would function as a MythTV frontend.  From Synaptic, I installed mythtv-frontend (0.21), then opened a terminal and did a sudo dpkg-reconfigure mythtv-common to change the database password to that which matches my backend database.  Success!  It works!  And without wires!  Through myth-frontend, live HD content stutters a bit but live SD television comes through perfectly fine via 802.11g  Below are some pictures of the U100 running as a wireless MythTV frontend, streaming live television from a Motorola 6200 cable box connected to the master backend:

Diskless frontend on a Dell Inspiron 8200

October 3, 2009

One reason that I chose MythTV early on was for its ability to interface with other “satellite” frontend machines that I could place around the house in various locations where I have already installed hardwired Ethernet jacks.  Unless I wish to stream demanding high definition content, the frontend machines do not need to be equipped with expensive or modern hardware.

Here’s a case in point example.  I’ve had an old Dell Inspiron 8200 kicking around for a while that has a bad IDE controller.  It refuses to boot from the hard disk or the optical drive.  By most consequences, this machine is pretty much useless as is.  Enter PXE booting.  A BIOS setting in the 8200 allows for network booting.

I have experimented with linux and network booting in the past and have had joy using Diskless Remote Boot in Linux (DRBL) to network boot a DSL iso file from my Linux server to other computers around the house.  NFSRoot is a popular alternative and requires a dedicated box running a DHCP & TFTP servers and PXELINUX to boot a root filesystem over NFS.  My experience with this method has been frustrating and I never did get it working correctly using Debian.

I thought I would give it another shot and attempt to create a diskless frontend using the Inspiron.  I skipped all the manual configuration and opted to use a script available with the Knoppmyth distro to create a diskless frontend.  Basically the script sets up and configures the DHCP and TFTP servers on the myth backend and does all the hard work.  The Knoppmyth wiki has a good entry on how to get this going:


One thing that must be considered is that your frontend hardware will most likely be different from the backend hardware where the script was executed.  In my situation, from the backend, I had to reconfigure /nfsroot/dell8200/etc/X11/xorg.conf to get it play nicely with the Inspiron.  After a lot of googling and trial and error, I came up with a working xorg.conf that was compatible with the Inspiron’s 1600×1200 display.  Once changed, I had a diskless frontend working on the Inspiron with recorded programs available and live TV from the Motorola 6200 cable box.

Below is my xorg.conf for the Dell Inspiron 8200.  Note that I haven’t been successful getting an updated Nvidia driver installed for the older Nvidia graphics in the 8200.  One other issue involves navigating menus on the frontend.  When cycling through the menu using the arrow keys on the keyboard, it seems that two button clicks are being registered causing the menu to skip ahead one extra level – an annoying issue.  More time needed but it’s a good start…

# File generated by xorgconfig.


# Copyright 2004 The X.Org Foundation


# Permission is hereby granted, free of charge, to any person obtaining a

# copy of this software and associated documentation files (the “Software”),

# to deal in the Software without restriction, including without limitation

# the rights to use, copy, modify, merge, publish, distribute, sublicense,

# and/or sell copies of the Software, and to permit persons to whom the

# Software is furnished to do so, subject to the following conditions:


# The above copyright notice and this permission notice shall be included in

# all copies or substantial portions of the Software.










# Except as contained in this notice, the name of The X.Org Foundation shall

# not be used in advertising or otherwise to promote the sale, use or other

# dealings in this Software without prior written authorization from

# The X.Org Foundation.


# **********************************************************************

# Refer to the xorg.conf(5x) man page for details about the format of

# this file.

# **********************************************************************

# **********************************************************************

# Module section — this  section  is used to specify

# which dynamically loadable modules to load.

# **********************************************************************


Section “Module”

# Alps Touchpad

#    Load   “synaptics”

# This loads the DBE extension module.

Load        “dbe”  # Double buffer extension

# This loads the miscellaneous extensions module, and disables

# initialisation of the XFree86-DGA extension within that module.

SubSection  “extmod”

Option    “omit xfree86-dga”   # don’t initialise the DGA extension


# This loads the font modules

#    Load        “type1”

Load        “speedo”

Load        “freetype”

#    Load        “xtt”

# This loads the GLX module

Load       “glx”

# This loads the DRI module

#    Load       “dri”


# **********************************************************************

# Files section.  This allows default font and rgb paths to be set

# **********************************************************************

Section “Files”

# The location of the RGB database.  Note, this is the name of the

# file minus the extension (like “.txt” or “.db”).  There is normally

# no need to change the default.

RgbPath “/usr/X11R6/lib/X11/rgb”

# Multiple FontPath entries are allowed (which are concatenated together),

# as well as specifying multiple comma-separated entries in one FontPath

# command (or a combination of both methods)



FontPath   “/usr/share/fonts/misc/”

FontPath   “/usr/share/fonts/TTF/”

FontPath   “/usr/share/fonts/Type1/”

#    FontPath   “/usr/share/fonts/CID/”

FontPath   “/usr/share/fonts/75dpi/”

FontPath   “/usr/share/fonts/100dpi/”

FontPath   “/usr/share/fonts/local/”

#    FontPath   “/usr/share/fonts/Speedo/”

#    FontPath   “/usr/share/fonts/TrueType/”

#    FontPath   “/usr/share/fonts/freefont/”

# The module search path.  The default path is shown here.

#    ModulePath “/usr/X11R6/lib/modules”


# **********************************************************************

# Input devices

# **********************************************************************

# **********************************************************************

# Core keyboard’s InputDevice section

# **********************************************************************

Section “InputDevice”

Identifier    “Keyboard1”

Driver  “kbd”

Option “AutoRepeat” “500 30”

Option “XkbRules”   “xorg”

Option “XkbModel”   “pc101”

Option “XkbLayout”  “us”


# **********************************************************************

# Core Pointer’s InputDevice section

# **********************************************************************

Section “InputDevice”

Driver            “mouse”

Identifier  “USB-Mouse”

Option            “Device”    “/dev/input/mice”

Option            “Emulate3Buttons” “true”

Option            “ZAxisMapping”    “4 5”


#Section “InputDevice”

#  Driver  “synaptics”

#  Identifier     “Alps”

#  Option   “Device”          “/dev/psaux”

#  Option   “Protocol”        “auto-dev”

#  Option   “LeftEdge”        “120”

#  Option   “RightEdge”       “830”

#  Option   “TopEdge”         “120”

#  Option   “BottomEdge”            “650”

#  Option   “FingerLow”       “14”

#  Option   “FingerHigh”            “15”

#  Option   “MaxTapTime”            “180”

#  Option   “MaxTapMove”            “110”

#  Option   “EmulateMidButtonTime”  “75”

#  Option   “VertScrollDelta” “20”

#  Option   “HorizScrollDelta”      “20”

#  Option   “MinSpeed”        “0.4”

#  Option   “MaxSpeed”        “0.8”

#  Option   “AccelFactor”           “0.02”

#  Option   “EdgeMotionMinSpeed”    “15”

#  Option   “EdgeMotionMaxSpeed”    “15”

#  Option   “UpDownScrolling” “1”

#  Option   “CircularScrolling”     “1”

#  Option   “CircScrollDelta” “0.1”

#  Option   “CircScrollTrigger”     “2”


#######################This is old touchpad

#Section “InputDevice”

#    Identifier   “Mouse1”

#    Driver “mouse”

#    Option “Protocol”    “GlidePointPS/2”

#    Option “Device”      “/dev/input/mouse0”

#    Option “Emulate3Buttons”


# **********************************************************************

# Monitor section

# **********************************************************************

# Any number of monitor sections may be present

Section “Monitor”

Identifier  “Monitor0”

# HorizSync is in kHz unless units are specified.

# HorizSync may be a comma separated list of discrete values, or a

# comma separated list of ranges of values.



HorizSync   31.5 – 90.0

#    HorizSync    30-64         # multisync

#    HorizSync    31.5, 35.2    # multiple fixed sync frequencies

#    HorizSync    15-25, 30-50  # multiple ranges of sync frequencies

# VertRefresh is in Hz unless units are specified.

# VertRefresh may be a comma separated list of discrete values, or a

# comma separated list of ranges of values.



VertRefresh 59.0 – 85.0


# **********************************************************************

# Graphics device section

# **********************************************************************

# Device configured by xorgconfig:

Section “Device”

Identifier  “Card0”

Driver      “nv”

# unsupported card

#VideoRam    65536

# Insert Clocks lines here if appropriate


# **********************************************************************

# Screen sections

# **********************************************************************

# Any number of screen sections may be present.  Each describes

# the configuration of a single screen.  A single specific screen section

# may be specified from the X server command line with the “-screen”

# option.

Section “Screen”

Identifier  “Screen 1”

Device      “Card0”

Monitor     “Monitor0”

DefaultDepth 24

Subsection “Display”

Depth       8

Modes       “1600×1200” “1280×1024” “1024×768” “800×600”


ViewPort    0 0


Subsection “Display”

Depth       16

Modes       “1600×1200” “1280×1024” “1024×768” “800×600” “640×480”

ViewPort    0 0


Subsection “Display”

Depth       24

Modes       “1280×1024” “1024×768” “800×600” “640×480”

ViewPort    0 0



# **********************************************************************

# ServerLayout sections.

# **********************************************************************

# Any number of ServerLayout sections may be present.  Each describes

# the way multiple screens are organised.  A specific ServerLayout

# section may be specified from the X server command line with the

# “-layout” option.  In the absence of this, the first section is used.

# When now ServerLayout section is present, the first Screen section

# is used alone.

Section “ServerLayout”

# The Identifier line must be present

Identifier  “Simple Layout”

# Each Screen line specifies a Screen section name, and optionally

# the relative position of other screens.  The four names after

# primary screen name are the screens to the top, bottom, left and right

# of the primary screen.  In this example, screen 2 is located to the

# right of screen 1.

Screen “Screen 1”

# Each InputDevice line specifies an InputDevice section name and

# optionally some options to specify the way the device is to be

# used.  Those options include “CorePointer”, “CoreKeyboard” and

# “SendCoreEvents”.

#InputDevice “Mouse1” “CorePointer”

#InputDevice “Alps” “CorePointer”

InputDevice “USB-Mouse” “AlwaysCore”

InputDevice “Keyboard1” “CoreKeyboard”


# Section “DRI”

#    Mode 0666

# EndSection

HTPC power consumption

October 27, 2008

I was slightly concerned about overloading the outlet that services my home theater components.  Thinking the HTPC might add more draw than I was comfortable with, I grabbed my “kill a watt” meter and took a few readings of the HTPC.  Here are the results for anyone interested:

HTPC off / PSU switch on…………4 watts

HTPC on / Idle state………………51 watts

HTPC on / DVD rip………………..60 watts

HTPC on / DVD playback……….67 watts

HTPC on / HD video playback…70 watts

Getting 1080p HD output

October 22, 2008

Prior to this build, getting 1080p output from my old Nvidia FX5200 card was a long process, but I eventually got it working fine.  I was prepared for the same experience this time around with the GeForce7050PV on the Abit board.  The process went much smoother, and I’m not sure why, but I’m not complaining either!  Here’s an excerpt taken from the relevant portions of my xorg.conf that I’m using to achieve 1080p video via HDMI with Nvidia’s driver (version 173.14.09) to a Sony KDS-55A2000:

Section “Monitor”
        Identifier      “Monitor0”
        Option  “DPMS”  “true”
        Option “UseEdidDpi” “FALSE”
        Option “DPI” “100 x 100”
        VendorName “SONY”
        ModelName “KDS-55A2000”
        HorizSync    30 – 110
        VertRefresh  60.0
        ModeLine “1920×1080” 148.5 1920 2008 2056 2200 1080 1084 1089 1125 +HSync +VSync

Section “Device”

        Driver      “nvidia”
        Option “XvmcUsesTextures” “false”
        Option “UseEvents” “true”
        VendorName  “All”
        BoardName   “All”
Section “Screen”
        Identifier “Screen0”
        Device     “Card0”
        Monitor    “Monitor0”
        DefaultColorDepth 24
        SubSection “Display”
                Depth     1
                Modes “1920×1080”
        SubSection “Display”
                Depth     4
                Modes “1920×1080”
        SubSection “Display”
                Depth     8
                Modes “1920×1080”
        SubSection “Display”
                Depth     15
                Modes “1920×1080”
        SubSection “Display”
                Depth     16
                Modes “1920×1080”
        SubSection “Display”
                Depth     24
                Modes “1920×1080”
        SubSection “Display”
                Depth     32
                Modes “1920×1080”

There was some overscan which was easily corrected using Myth’s appearance wizard setting.

1080p goodness on the big Sony:

Sony confirming 1080p input

Miro player scaled to full screen running within MythTV. HD video from Nasa's Jet Propulsion Laboratory

HD content looks stunning!

Installing MythTV

October 19, 2008

I chose to install Knoppmyth (R5.5) since it’s Debian based and it’s somewhat familiar to me from having messed around with it three years ago.  There’s also a good community forum built around Knoppmyth for support.  Mythbuntu also looks nice and I will probably try it out later when I have more time to see how each distro compares with one another.

Installation on the new system was a breeze but I did run into some minor snags.  The installation was done with the HTPC connected to my Westinghouse 22″ LCD, and subsequent tweaks are being done via VNC on my Window’s box.  Once I feel comfortable with the install, I will reconfigure xorg.conf to play nice with my Sony KDS-55A2000 HDTV @1080p.

A nice feature of the Knoppmyth installer is the remote control script.  During installation, I was prompted to select a remote control to use with Myth, and I choose the Imon-Pad option to match the Moneual’s Imon pad remote.  Without any issues, I was able to use my remote immediately without hassling with recompiling LIRC or config files – nice!

Soundgraph Imon VFD
The VFD wasn’t working out of the box.  A few minutes on the Knoppmyth forum yielded a quick solution.  As root, running this script brought the VFD to life:


When prompted to configure, hit “y”.  A reboot was then required before the VFD would activate.  Note: the large clock mode isn’t compatible with my VFD’s two line display so I had to disable this option under the Appearance > LCD settings within MythTV.

EDIT: The VFD install script has broken the pad function on the Imon remote.  All other buttons function normally, however the pad is no longer responsive.  The “pad” on this remote provides up, down, left and right navigation and is essential for myth menu navigation.  After spending several hours trying to resolve this, I gave up and mapped some other buttons to perform the same function by editing:


DVD Playback
DVD’s aren’t working out of the box with my system either.  Xine throws this error at me when trying to play a DVD (both unencrypted and encrypted):

Per Myth’s general settings, the DVD device is set to /dev/dvd which didn’t exist on my system:

Creating a symbolic link fixed the problem allowing me to view a DVD when inserted in the drive:

ln -s /dev/scd0 /dev/dvd

with “scd0” being my optical drive and “/dev/dvd” the location of the DVD device as defined in Myth’s general settings.  However, when rebooting the machine, the symbolic link is lost every time.  I fixed this by modifying (as root):


The lines that contained the string “SYMLINK+=”cdrom1”  were changed to “SYMLINK+=”cdrom”, and similiarly for SYMLINK+=”cdrw1″SYMLINK+=”dvd1″, and SYMLINK+=”dvdrw1″ – the “1” had to be dropped from each instance.

EDIT: After writing the above, and after a fresh “re-install” (long story), the DVD issue did not manifest itself and the DVD functionality works as expected the second time around.  I have no explanation for the DVD problem on the initial install…

Fix Myth Gallery mount failure messages

When myth starts, I was greeted with the following each time:

“Failed to mount device /dev/sde, showing default myth gallery directory”

This is probably caused by myth trying to mount the empty slots of the USB card reader.  For the meantime, I disabled them by adding the following to the “Ignore Devices” list:


Make Samba autostart on reboot so I can copy files to the HTPC at anytime from a Window’s box.  From a terminal as root:

update-rc.d samba defaults

Connecting from Window’s, the default username and password are both mythtv 

X11VNC  – get it working correctly with Nvidia and install TightVNC on my Window’s box.  I’m using VNC on my Window’s box to control the Myth frontend while I setup and tweak things.  Remember, I don’t have xorg.conf configured yet to communicate with my HDTV, and I don’t have a spare monitor sitting around to use to connect to the HTPC.  The HTPC at this point is a headless box – meaning it does not have a monitor, keyboard, or other peripherals connected to it at this point.  VNC is not practical for video streaming but well suited to navigate the myth frontend menus. There are issues with nvidia, so first edit:


uncomment and alter the following line (change is in red):

[startup] {/usr/bin/x11vnc -nap -wait 50 -noxdamage -passwd fubar -display :0 -forever -o /var/log/x11vnc.log -bg}

Next, turn off OpenGL flipping by right clicking on the Fluxbox desktop & Apps > Tools > nvidia-settings to bring up the settings panel.  Uncheck “Allow Flipping”:

Results: Remote access to the new headless HTPC from Windows:

Assembling the components

October 14, 2008

With all the parts on hand and after a lot measuring, I ordered a Zalman CNPS 7500 AlCu CPU cooler.  This cooler seemed to have the best reviews of anything that I could find that would fit into this case.  Given the low profile nature of the case, my choices were greatly limited.

Assembly went well without any major snags.  I decided to forgo any kind of cable management as I was more concerned about verifying all the components worked correctly in case I had to return something.  I will clean the cables up later once I know everything works properly.

The biggest challenge in assembling the system was figuring out how to hook up the VFD panel since there was no documentation present and the connectors were not clearly marked.  There are four different plugs on the VFD, some obvious like the USB plug, while others weren’t so obvious to me.  Luckily I tracked down the information and wiring schematic on Soundgraph’s website.  It then made perfect sense to connect the case’s power button connector to the VFD panel, and the VFD’s power connector to the motherboard’s power button header.  This allows the computer to be powered on via the remote control – a nice feature!  This left two more connectors on the VFD to deal with – the USB header connector (obvious) and a two pin power connector that draws power from an odd adapter that taps power from the PSU to motherboard’s large 24 pin power connector.

Internal IR receiver Imon connection diagram

Internal IR receiver Imon connection diagram

Though the Zalman cooler fits the case nicely, you loose two DIMM slots for the ram.  You could probably utilize the two front slots, but I think the top of the ram would probably just make contact with the radiator fins on the cooler.  Clearance would be very tight and might cause thermal issues.  I just moved the two sticks of ram to the outer two slots.  Aside from this, there are no other clearance issues with the Abit AN-M2HD board and the Zalman cooler.  The cooler comes with a three pin connector and does not use PWM but instead comes with a rheostat which allows you to dial the fan’s speed up or down depending on your needs.  The cooler also has a gimmicky blue LED.

Here are some pictures of the case with components assembled.  The beast comes to life:

Assembled system and a mess of cables to clean up

Assembled system and a rat's nest of cables to clean up

The Zalman CPU cooler

Zalman CPU cooler


Everything works so it’s on to cable management:

Cables better organized to increase airflow and appearance

Cables better organized to increase airflow and appearance.

Cables better organized to increase airflow and appearance

Extra PSU cables are hidden in the unused drive bay located under the optical drive. The Zalman fan control is shown between the PSU and optical drive.

Cables better organized to increase airflow and appearance

I need a short SATA cable for the hard drive but this works for now.

Cable routing turned out to be a huge challenge and took me the better part of a Saturday afternoon.  I was hoping for a little more clearance under the motherboard to hide some cables, but clearance is tight so I routed many of them on the outer edge of the motherboard.  The area located under the optical drive (the second hard drive bay) also conceals the PSU cables, including the large Molex cables.  By default, the case fan is used to exhaust stale air from the interior of the case but I suppose it could be reversed to blow cool air directly to the hard drive.  I may explore that later if thermal issues crop up.


Soundgraph support site