MyBook Live

This section deals on all and everything concerning the Western Digital (WD) personal NAS MyBook Live version.

Getting in

  1. Getting SSH : just activate it using http://yourIP/UI/ssh (beware case sensitive) post
  2. Installing Packages (programs)
    • apt-get and aptitude : the normal way with Debian based Linux : it is pre-installed
    • install Optware refer to the optware page
  3. Basic Tools (Putty, Nano, SCP, …)

Upgrade recommendations & problems

The MyBook Live is delivered with a Lenny linux based system. Any update of the WD firmware wipes out your own installed upgrades and new packages. The delivered firmware is not compatible with all upgrades you can make. We will try to list known problems mostly related to packages very near from the system (exemple : udev), or related to WD Web System Management ( //yourIP/UI).

If you don't know what you do, do not do a full apt-get distr-upgrade or aptitude full-upgrade or safe-upgrade : It can brick your system !!! (you can see some related experience in the forum)
Be conservative and upgrade when needed i.e. to only install dependencies needed by a specific package and find help in the forum.

1. By default WD authorize to install packages from "debian lenny" and "squeeze" version to avoid incompatibilities you should limit to "lenny packages". To install only "lenny" packages comment out the "debian squeeze" line in '/etc/apt/sources.list' :

#deb squeeze main

If you get 404 errors while updating or do not have a lenny line in your sources.list file (as is the case with recent firmware updates) you will need to use the repository:
deb lenny main

Although it's safer to stick with "lenny", never downgrade packages to resolve dependency issues. As WD hasn't upgraded these packages just for fun, this will probably brick your system. In case there is no other way to fulfill dependency requirements, try to install necessary packages from "squeeze". Be very careful! Think twice before doing any changes! Always do a test run with the option '—simulate' first. Limit the number of packages you install to the minimum. In case you are not sure what will be installed, ask in the forum or check package contents using

2. do not upgrade 'udev' : There are compatibility issues with the kernel. To reload the good version of udev (see post) and to avoid any upgrade of udev :

# echo "udev hold" | dpkg --set-selections
# aptitude hold udev

If you want a newer udev, you have to disable
General setup -> enable deprecated sysfs features which may confuse old userspace tools (CONFIG_SYSFS_DEPRECATED_V2)
and recompile the Kernel

You can also build modules whithout recompile the whole kernel

3. if you upgrade to PHP 5.3 : your will need to modify php.ini and restart apache or install a version of cake >= 1.3 (if you don't want to lose access to the Web System Management ( http://yourIP/UI)).

# echo "error_reporting  =  E_ALL & ~E_NOTICE & ~E_DEPRECATED" >   /etc/php5/conf.d/cake_1.2.6.ini
# /etc/init.d/apache2 restart

4. If you upgrade the firmware through WD's UI, all customizations will be removed. This does not include SSH access, but it includes packages, kernel modules, SSH keys in /root/.ssh, everything that is not configured through the Web UI.
WD's upgrade is actually very clever: the system's root partition is a 'fake RAID' (two 2GB partitions on the same disk) and during upgrade, they disable one copy of the copies, install a new partition image, then synchronize the fake RAID, and reboot. So everything gets overwritten. This can also help if something is broken - just upgrade the firmware again, and everything will be reset to normal. You can force a firmware upgrade by making the Mybook Live think it has an old version:

  echo "02.01.06" > /etc/version


  1. Setup development tools to compile packages Setup development tools on MyBook Live
  2. Compile kernel modules Compile modules for the MyBook Live
  3. Compile source packages. Example : compile-nano-from-source
  4. Mysql post
  5. Mail : mini_sendmail
  6. Git and gitolite : git
  7. Partially bricked (SSH access) & re-install firmware post
  8. Completly bricked : Debricking guide - draft
  9. Resize data partition (sda4) after cloning from a smaller disk : post
  10. Pull Data from removed hard drive : use of debugfs
  11. Windows based method for replacing HD : []
  12. Backups
    1. Data Backup : The MyBook Live lacks USB port, you have to backup on your LAN
      1. for backup a partition over the lan google for +dd +netcat
    2. System backup
      1. backup-images-of-mybook
      2. FileSystem Backup : todo
  13. stop Load_Cycle_Count on WD drives
    1. see here:
    2. use this tool for MyBook Live
  14. leave cron running when going in standby : post
  15. Harden SSH : how-to
  16. Setting up webdav on mybooklive : how-to

Mediaserver improvements

  1. How-to let Twonky decode Flac files
  2. Playing flac files > 3 mn in iTunes —» Solved in firmware since april 2012 !


- command line help : # any-command - -help
- copy/paste to Putty : to paste in Putty at the blinking cursor 'click right' on your mouse

Others tools specific to MyBook Live

HightLevelBits packages by Teintureman :
pre-prepared packages with Web Server (share files, photo, music) inside your local net but also from everywhere (secure SSH)
and a lot more for complete newbees. Like Transmission (peer-to-peer download), OpenVPN …


Wikidots existing infos
Wikidot Forum
Google : Google is your friend you can type to search anything : command line, PHP, Pearl,.. , errors, etc …
Debian/Ubuntu : a lot of Ubuntu documentation can be of help

  1. first steps
  2. command line memento
  3. man pages :
    • Wikipedia -
    • "Okay, If you donno what it means RTFM, let me tell you what is it. It is Read The Fucking Manuals. This is what the linux “expert” user trying to be helpful in the forums or channels and ask you to check out the available manuals for help." link

Modifying the Hardware


A good description : by smallnetbuilder
disassembling pics from MyBook Live


Here is a link to the NZBget 14.2 stable binaries (compiled 20/02/2015).


  1. copy files in package to / (so that /nzbget-14.2-package/usr goes to /usr)
  2. Edit nzbget.conf to your desires
  3. Run following items one by one
mkdir /usr/share/man
mkdir /usr/share/man/man1
mkdir /usr/share/man/man2
mkdir /usr/share/man/man3
mkdir /usr/share/man/man4
mkdir /usr/share/man/man5
mkdir /usr/share/man/man6
mkdir /usr/share/man/man7
mkdir /usr/share/man/man8
echo "deb sid  non-free" | tee -a /etc/apt/sources.list
echo "deb squeeze-backports main" | tee -a /etc/apt/sources.list
apt-get update
apt-get install libtinfo5 mc par2 p7zip p7zip-full libssl1.0.0 unrar libstdc++6

ITunes server

Here is a link to the lastest version of forked-daapd, working with iTunes of 15 january 2015
link to forked-daapd v22.3
How to:

  1. Copy files from package to /
  2. add code hereunder to /etc/apt/sources.list:
deb squeeze-backports main
  1. run apt-get update
  2. run apt-get -t squeeze-backports install libwscale0 libavformat53
  3. change /etc/avahi/avahi-daemon.conf —> comment out first 2 lines under publish
  1. change /etc/forked-daapd.conf and forked-daapd.conf.orig to your whises


# A quick guide to configuring forked-daapd:
# For regular use, the most important setting to configure is "directories",
# which should be the location of your media. Whatever user you have set as
# "uid" must have read access to this location. If the location is a network
# mount, please see the README.
# In all likelihood, that's all you need to do!

general {
        # Username
        # Make sure the user has read access to the library directories you set
        # below, and full access to the databases, log and local audio
        uid = "daapd"

        # Database location
        db_path = "/CacheVolume/forked-daapd/songs3.db"

        # Log file and level
        # Available levels: fatal, log, warning, info, debug, spam
        logfile = "/var/log/forked-daapd.log"
        loglevel = warning

        # Admin password for the non-existent web interface
        admin_password = "unused"

        # Enable/disable IPv6
        ipv6 = no

        # Location of cache database
#       cache_path = "/var/cache/forked-daapd/cache.db"

        # DAAP requests that take longer than this threshold (in msec) get their
        # replies cached for next time. Set to 0 to disable caching.
#       cache_daap_threshold = 1000

# Library configuration
library {
        # Name of the library as displayed by the clients
        # %h: hostname, %v: version
        name = "Music on %h"

        # TCP port to listen on. Default port is 3689 (daap)
        port = 3689

        # Password for the library. Optional.
#       password = ""

        # Directories to index
        directories = { "/shares/music" }

        # Directories containing podcasts
        # For each directory that is indexed the path is matched against these
        # names. If there is a match all items in the directory are marked as
        # podcasts. Eg. if you index /srv/music, and your podcasts are in
        # /srv/music/Podcasts, you can set this to "/Podcasts".
        # (changing this setting only takes effect after rescan, see the README)
        podcasts = { "/Podcasts" }

        # Directories containing audiobooks
        # For each directory that is indexed the path is matched against these
        # names. If there is a match all items in the directory are marked as
        # audiobooks.
        # (changing this setting only takes effect after rescan, see the README)
        audiobooks = { "/Audiobooks" }

        # Directories containing compilations (eg soundtracks)
        # For each directory that is indexed the path is matched against these
        # names. If there is a match all items in the directory are marked as
        # compilations.
        # (changing this setting only takes effect after rescan, see the README)
        compilations = { "/Compilations" }

        # Compilations usually have many artists, and if you don't want every
        # artist to be listed when artist browsing in Remote, you can set
        # a single name which will be used for all music in the compilation dir
        # (changing this setting only takes effect after rescan, see the README)
        compilation_artist = "Various artists"

        # There are 5 default playlists: "Library", "Music", "Movies", "TV Shows"
        # and "Podcasts". Here you can change the names of these playlists.
#       name_library    = "Library"
#       name_music      = "Music"
#       name_movies     = "Movies"
#       name_tvshows    = "TV Shows"
#       name_podcasts   = "Podcasts"
#       name_audiobooks = "Audiobooks"

        # Artwork file names (without file type extension)
        # forked-daapd will look for jpg and png files with these base names
        artwork_basenames = { "artwork", "cover", "Folder" }

        # Enable searching for artwork corresponding to each individual media
        # file instead of only looking for album artwork. This is disabled by
        # default to reduce cache size.
#       artwork_individual = false

        # File types the scanner should ignore
        # Non-audio files will never be added to the database, but here you

        # can prevent the scanner from even probing them. This might improve
        # scan time. By default .db, .ini, .db-journal and .pdf are ignored.
        filetypes_ignore = { ".db", ".ini", ".db-journal", ".pdf" }

        # File paths the scanner should ignore
        # If you want to exclude files on a more advanced basis you can enter
        # one or more POSIX regular expressions, and any file with a matching
        # path will be ignored.
#       filepath_ignore = { "myregex" }

        # Disable startup file scanning
        # When forked-daapd starts it will do an initial file scan of your
        # library (and then watch it for changes). If you are sure your library
        # never changes while forked-daapd is not running, you can disable the
        # initial file scan and save some system ressources. Disabling this scan
        # may lead to forked-daapd's database coming out of sync with the
        # library. If that happens read the instructions in the README on how
        # to trigger a rescan.
        filescan_disable = false
        # Should iTunes metadata override ours?
#       itunes_overrides = false

        # Formats: mp4a, mp4v, mpeg, alac, flac, mpc, ogg, wma, wmal, wmav, aif, wav
        # Formats that should never be transcoded
#       no_transcode = { "alac", "mp4a" }
        # Formats that should always be transcoded
        force_transcode = { "ogg", "flac" }

# Local audio output
audio {
        # Name - used in the speaker list in Remote
        nickname = "Computer"

        # Audio device name for local audio output
#       card = "default"

        # Mixer channel to use for volume control - ALSA/Linux only
        # If not set, PCM will be used if available, otherwise Master.
#       mixer = ""

# AirPlay/Airport Express device settings
# (make sure you get the capitalization of the device name right)
#airplay "My AirPlay device" {
        # forked-daapd's volume goes to 11! If that's more than you can handle
        # you can set a lower value here
#       max_volume = 11

        # AirPlay password
#       password = "s1kr3t"

# Spotify settings (only have effect if Spotify enabled - see README/INSTALL)
spotify {
        # Directory where user settings should be stored (credentials)
#       settings_dir = "/var/cache/forked-daapd/libspotify"

        # Cache directory
#       cache_dir = "/tmp"

        # Set preferred bitrate for music streaming
        # 0: No preference (default), 1: 96kbps, 2: 160kbps, 3: 320kbps
#       bitrate = 0

# SQLite configuration (allows to modify the operation of the SQLite databases)
# Make sure to read the SQLite documentation for the corresponding PRAGMA statements as
# changing them from the defaults may increase the possibility of database corruptions!
# By default the SQLite default values are used.
sqlite {
        # Cache size in number of db pages for the library database
        # (SQLite default page size is 1024 bytes and cache size is 2000 pages)
#       pragma_cache_size_library = 2000

        # Cache size in number of db pages for the daap cache database
        # (SQLite default page size is 1024 bytes and cache size is 2000 pages)
#       pragma_cache_size_cache = 2000

        # Sets the journal mode for the database
#       pragma_journal_mode = DELETE

        # Change the setting of the "synchronous" flag
        # 0: OFF, 1: NORMAL, 2: FULL (default)
#       pragma_synchronous = 2

        # Should the database be vacuumed on startup? (increases startup time,
        # but may reduce database size). Default is yes.
#       vacuum = yes
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License