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 http://ftp.us.debian.org/debian/ 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 archive.debian.org repository:

deb http://archive.debian.org/debian/ 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 www.debian.org.

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
or
# 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

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)).

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:

"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

# 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
# DELETE (default), TRUNCATE, PERSIST, MEMORY, WAL, OFF
# 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
}