Update OpenELEC on RaspberryPI
You can use a RaspberryPI computer in many differents way. Personally I decided to use it as mediacenter with an XBMC program.
After the first installation I spent lot of time to configure any things in XBMC: share folders for videos, share folders for music, ... So the problem I had was about the "update" process. The OpenELEC is based on a linux distribution but there is nothing to automate packages installation or update (I mean something like yum or apt-get), I it's not possible for any system update to reconfigure anything.
I looked on internet and in the end I found a simple script that help you in the update process.
#!/bin/bash
# change working directory
cd /storage
# location of the nightlies
url="http://openelec.thestateofme.com/"
# get base, revision and filename of last build
last_base=`curl -s $url | grep .tar.bz2 | sed 's/.*\(OpenELEC-RPi.*\).tar.bz2.*/\1/' | sort | tail -1`
last_revision=`echo $last_base | sed 's/.*\(r[0-9]*\)/\1/'`
last_filename=$last_base.tar.bz2
# folder name is set equal to base
foldername=$last_base
# get currently installed revision
this_revision=`cat /etc/version | sed 's/.*\(r[0-9]*\)/\1/'`
# check if currently installed revision is up-to-date
if [ $this_revision == $last_revision ]
then
echo "System is up-to-date, no update required."
exit
else
echo "Update required, will download latest version."
fi
# clean up previously interrupted update
if [ -a $last_filename ]; then
echo "Clean up previously interrupted update files."
rm $last_filename
fi
if [ -a $foldername ]; then
echo "Clean up previously interrupted update files."
rm -rf $foldername
fi
# download corresponding file to working directory
urltolast=$url/$last_filename
wget $urltolast
echo -e "Download complete\n"
# uncompressing the tarball
echo "Uncompressing tarball, files extracted:"
tar -xvjf $last_filename
# check if image folder exists, otherwise exit
if [ ! -d $foldername ]; then
echo "Cannot find extracted folder."
exit
fi
# check if .update folder exists, otherwise create it
if [ ! -d /storage/.update ]; then
mkdir /storage/.update
fi
# move OpenELEC files (including .md5 files) to update folder
mv $foldername/target/* /storage/.update/
echo -e "\nOpenELEC files succesfully moved to update directory"
# clean up
rm -r $foldername
rm $last_filename
echo "Temporary files deleted"
# sync and reboot system to apply updates
echo "System will restart shortly"
echo "Enjoy!"
sleep 5s
sync
reboot
Sorry to the author because I can't remember where I found it, and I don't even know if it's the original version or if I modified it. In any case it works perfectly.
What you just need to do is to copy it on your RaspberryPi/OpenELEC system and execute it. The script will check if a new version is available, it will download it and then reboot the raspberry when all is ready for the update (update will be automatically installed after the reboot).
How you can copy the script on your OpenELEC and execute an update? You can make an SSH connection to the RaspberryPi.
ssh [email protected]
##############################################
# OpenELEC - The living room PC for everyone #
# ...... visit http://www.openelec.tv ...... #
##############################################
OpenELEC Version: devel-20130119143821-r12975
OpenELEC git: 6bc259fb5cdf4f941e85e43132a0a31e211af937
[email protected]'s password:
Where 192.168.0.25 is the ip address of my Raspberry. I make the SSH connection using a Linux/Mac computer (where ssh is available by default on the command line); if you are on Windows, you need to use Putty to make the ssh connection!
The default username/password to connect to OpenELEC via SSH are:
username: root
password: openelec
After connection you can create your script where you want on your system (you are root so be carefull because you can do anything). Normally where you have a lot of free space is /storege, but if you are not sure, you can check it with a df -h:
df -h
Filesystem Size Used Available Use% Mounted on
none 185.0M 90.1M 94.9M 49% /dev
/dev/mmcblk0p1 124.7M 98.8M 26.0M 79% /flash
/dev/mmcblk0p2 3.6G 127.5M 3.3G 4% /storage
/dev/loop0 90.0M 90.0M 0 100% /
none 186.5M 0 186.5M 0% /dev/shm
Then you can create the script file using vi, for example typing something like:
vi update.sh
And here you can paste the content of the script I put in this article.
After this you need to make the script executable and execute it, with:
chmod +x update.sh
./update.sh
You should have an output like the following:
./update.sh
Update required, will download latest version.
Connecting to openelec.thestateofme.com (46.149.19.9:80)
OpenELEC-RPi.arm-dev 100% |*| 92078k 0:00:00 ETA
Download complete
Uncompressing tarball, files extracted:
OpenELEC-RPi.arm-devel-20130228144321-r13387/
[...]
OpenELEC-RPi.arm-devel-20130228144321-r13387/target/SYSTEM
OpenELEC-RPi.arm-devel-20130228144321-r13387/openelec.ico
OpenELEC-RPi.arm-devel-20130228144321-r13387/INSTALL
OpenELEC files succesfully moved to update directory
Temporary files deleted
System will restart shortly
Enjoy!
Finished! After the reboot your OpenELEC is updated. You can check it simply with an ssh connection (after the connection you should see the version directly on your screen) or going in the settings in your XBMC.