Introduction, description and background
A couple of months ago I was looking for a media player for the bedroom. I already had a TViX running in the living room.
I had a few criteria
- “Cheap” (cheaper than TViX at least)
- Able to play HD content on both HD TV (through HDMI) and my old 32″ Sony Trinitron
- Able to play content from my NFS server
- No mowing parts = No noise and lower power consumptions
- Hopefully a better user interface than the TViX
I looked at several machines and ended up at the Western Digitial WDTV because it was cheap (around 700 DKK =~ $90) and could play the same content as the TViX (as they are based on the same Sigma chipset) – plus it is very small and completely without any moving parts and the default user interface is prettier than that of the TViX.

The WDTV in all its glory
Luckily both problems are pretty easy to solve.
The WD TV is based on a Linux distribution for the Sigma chipset; this means that though some kernel modules (for the Sigma hardware) is released as object code only, large portions of the firmware is GPL and released as such, making it possible for anyone to make their own firmware.
The WDTV community have used this to add networking support. Making the WDTV play content from the network (through a NFS or CIFS share) requires three pretty simple steps
- Flash the device with a custom firmware and install the required driver (if needed)
- Obtaining a supported device
- Configure network support
At the time of writing there a two custom firmwares for the WDTV
The main difference is that ext3-boot is more complete (includes more drivers as well as applications like Dropbear sshd) but does require a USB stick or hard drive to boot where as the basic WDLXTV is able to boot completely from flash. It is extensible through application packs (that resides on a USB stick or hard drive).
Personally I have opted for the WDLXTV firmware and the rest of the article will describe how I have achieved my goals using that particular firmware.
Let’s get cracking then
Finding the right network adapter
Once again our Chinese friends over at DX comes to the rescue. After checking the list of supported devices I settled for these two USB network adapters (one wired and one wireless):
- A MosChip MCS7830 based wired NIC
- A RaLink RT73 based wireless NIC (it turned out to be a RT3070 based NIC – A Pre-N NIC for $10, w00t).
Flashing the WDTV
Flashing the WDTV with an alternate firmware is as easy as flashing it with an official WD firmware
- Download the latest WDLXTV firmware
- Unpack the firmware archive and copy the two files wdtv.bin and wdtv.ver to a FAT32 formated USB stick (2GB maximum)
- Depending on the firmware version installed the WDTV will either automatically start to upgrade or it will auto-select a menu entry in the system configuration menu. Selecting this menu entry will start the firmware upgrade
Mounting network shares
Mounting network shares requires two components; an app package (for either NFS or Samba/CIFS) and the configuration telling WDLXTV which shares to mount.
NFS: Download the nfs app package, unpack it and place the file nfs.app.bin on the the USB stick.
Samba/CIFS: Download the samba app package, unpack it and place the file samba.app.bin on the USB stick.
net.mounts contains any network shares you wish to mount on the WDTV:
# of network shares
# Mount a windows file share (must be done by IP address)
# xmount //192.168.0.33/ShareName ShareName cifs
# if your "guest" account is disabled, you must supply username and password
# xmount //192.168.0.34/ShareName ShareName cifs user=username,pass=password
# Mount a NFS share
# xmount 192.168.0.44:/nfsroot ShareName nfs
# Notice that we no longer need to modprobe, nor create the directory.
# That is handled for us by xmount.
add any mounts you wish to match your local setup.
Wired networking
In addition to the right share app package and net.mounts wired networking just requires on configuration file on the USB stick: net.config
HOST=wdtv
# if you do not set a hostname,a random one is assigned.
# attempt to set jumbo frames
#MTU=9000
#
# Dynamic IP Configuration:
DHCP=yes
#
# Static IP Configuration: (only if not DHCP)
#DHCP=no
#IP=192.168.0.10
#GW=192.168.0.1
#NM=255.255.255.0
#DNS1=192.168.0.1
#DNS2=205.171.3.65
#
# Optional:
#specify time server host
NTP=pool.hest
#specify timezone
TZ=CET
There have been some problems with the NTP service and WDLXTV so setting NTP= to something bogus is a good idea.
With these files on your USB stick and the USB stick and USB network interface card connected to the WDTV, it is a simple matter of going to “Folders” in either the Video, Music or Photo menu, select the mount point and browse your files.
Wireless network
Download the wireless-mod-rt app package, unpack the zip archive and copy the file wireless-mod-rt.app.bin to the USB stick.
Besides this app package wireless networking requires two files on the USB stick:
net.config
# Network configuration file #You can override the hostname here: HOST=wdtv # if you do not set a hostname,a random one is assigned. # attempt to set jumbo frames #MTU=9000 # # Dynamic IP Configuration: DHCP=yes # # Static IP Configuration: (only if not DHCP) #DHCP=no #IP=192.168.0.10 #GW=192.168.0.1 #NM=255.255.255.0 #DNS1=192.168.0.1 #DNS2=205.171.3.65 # # Optional: #specify time server host NTP=pool.hest #specify timezone TZ=CET # #one of rt61sta.dat, rt73sta.dat, RT2400.dat, RT2500STA.dat, RT2570STA.dat, RT2870STA.dat (used by rt3070 as well) WLAN_CFG=RT2870STA.dat #one of rt61.ko, rt73.ko, rt2400.ko, rt2500.ko, rt2570.ko, rt2870sta.ko, rt3070sta.ko WLAN_LOAD=rt3070sta.ko #need to bring up device? WLAN_UP=yes #time to sleep while waiting for wireless association WLAN_SLEEP=10
RT2870STA.dat:
CountryRegion=5
CountryRegionABand=7
CountryCode=
SSID=This is your SSID
NetworkType=Infra
WirelessMode=7
Channel=0
BeaconPeriod=100
TxPower=100
BGProtection=0
TxPreamble=0
RTSThreshold=2347
FragThreshold=2346
TxBurst=1
WmmCapable=0
AckPolicy=0;0;0;0
AuthMode=WPA2PSK
EncrypType=TKIP
WPAPSK=This is your WPA key
DefaultKeyID=1
Key1Type=0
Key1Str=
Key2Type=0
Key2Str=
Key3Type=0
Key3Str=
Key4Type=0
Key4Str=
PSMode=CAM
FastRoaming=0
RoamThreshold=70
HT_RDG=1
HT_EXTCHA=0
HT_OpMode=1
HT_MpduDensity=4
HT_BW=1
HT_AutoBA=1
HT_BADecline=0
HT_AMSDU=0
HT_BAWinSize=64
HT_GI=1
HT_MCS=33
HT_MIMOPSMode=3
IEEE80211H=0
TGnWifiTest=0
WirelessEvent=0
CarrierDetect=0
There have been some problems with the NTP service and WDLXTV so setting NTP= to something bogus is a good idea.
With these files on your USB stick and the USB stick and USB network interface card connected to the WDTV, it is a simple matter of going to “Folders” in either the Video, Music or Photo menu, select the mount point and browse your files.
Troubleshooting
If your WDTV does not connect to the network download the log-saver app package; on next boot this application will save system logfiles (dmes, messages and more) to the USB stick.
Enhancing your WDTV experience
There are several ways of enhancing the look and feel of the WDTV
OSD mod : simple and unadorned
This OSD mod will completely change the look and feel of the WDTV

Original main menu
vs.
Download the latest OSD mod app package and place it on your USB stick. The next time you boot the WDTV the user interface will be completely changed.
Enhancing the file browser
Through an app package and a program called TviXie it is possible to further enhance this cool user interface.
LaurentG: “My pack enhancing OSD”
Here are the enhancements included in this application pack:
- new video thumbmail views using ratio 3/4 instead of 2/3 for thumbmails + menus to choose the configuration,
- new view displaying the movie sheet previously generated for example with the softwares Movie GUI Builder or TViXiE,
- access to the network shares even when the media library is off
The most important feature is the ability to display a custom background when entering a directory, like this one:

More on the actual creation of the background image later.
Download the latest app package, unpack it and copy these files and directories to the USB stick:
LaurentG.app.bin
LaurentG.app.event
LaurentG.conf.txt
LaurentG_templates
Creating custom backgrounds (or movie sheets) using Movie Sheet Generator
I have developed a little tool that will hopefully make some of your lives easier. It is a windows based application that uses theMovieDb.org to get information about films and automatically create movie sheets using the backdrops supplied by themoviedb.org.
Users have the option to select which backdrop and cover art they wish to use from the available list and then generate the movie sheet using these images.
The original version was sort of abandoned by the author, beanian – As far as I remember he simply did not have time to keep on improving the program.
It was picked up by a group of developers and are constantly being improved.
Unfortunately this is a Windows-only program but it is still worth it :)
Download, install and use one of these templates or this one.
I prefer MoreAdorned as it matches lilibabe’s OSD mod but Aeon Basic is a good choice (and is actually included in the Movie Sheet Generator package).
Creating movie sheets are pretty straight forward and should be self-explanatory – Configure MSG to use the right template and “flags”.
Another way to produce movie sheets is using TViXie. It has some more advanced graphic options but overall I find MSG to be easier and faster to use.

[...] Building a cheap HD media player with WD TV [...]
Hey Allan, thanks a lot for this step by step instruction. I’ve been looking at this mod for a while. Got one question for you. Since you’ve tried both wired and wireless connections do you find wireless G is good enough for HD streaming?
Thanks!
Hi. I was wondering; with what you mentioned about WD TV being based on a Linux distro, do you think it is possible to install a web browser. The reason I ask this is if it is possible, it will be perfect for us living in areas where parabolic antenna is forbidden. The browser will give us more possibilities since we can visit more websites with more channels than what is possible on a standard WD Tv. Only downfall will be channels which are crypted and requires windows media player for playing.
Thanks
While it might technically possible to cross-compile a web browser (and Gnash) for the ARM platform you have to remember that the processor in the WDTV is really slow.