Raspberry Pi als XBMC media speler met OpenELEC

Door kraades op zondag 15 juli 2012 18:46 - Reacties (23)
CategorieŽn: OpenELEC, Raspberry Pi, Views: 25.942

Na gisteren Raspbmc te hebben geinstalleerd is nu OpenELEC aan de beurt!

Dezelfde hardware en context als voor Raspbmc maar een ander SD kaartje en andere software. Voor de SD kaart heb ik deze keer een oude SanDisk 2GB class 2 kaart gebruikt. Het wisselen van besturingssysteem kan simpelweg door het wisselen van de SD kaart.

Op de OpenELEC Downloads pagina staat geen versie voor RaspPi genoemd. Maar onderaan de pagina staat een link Official Daily Builds waar je als je erop klikt een directory openelec-rpi ziet staan. Vervolgens kun je deze omschrijving gebruiken om de SD kaart te installeren.

Je hebt een Linux installatie nodig. Ik heb zelf een bootable USB stick gemaakt met Ubuntu 12.04 Desktop 32-bit. Hoe dit moet staat hier beschreven.

Boot vanaf de USB stick en stop de SD kaart met OpenELEC in de computer.

Zorg dat je een netwerkverbinding hebt. Maak bijvoorbeeld een wireless verbinding door rechtsboven op het Wireless icon te klikken.

Start een Terminal sessie. Zoek deze eventueel via "Dash Home" (linksboven).

Download de laatste build. Kopieer link van de laatste build van hier.

ubuntu@ubuntu:~$ sudo su -
root@ubuntu:~# wget http://sources.openelec.tv/tmp/image/openelec-rpi/OpenELEC-RPi.arm-devel-20120704203304-r11493.tar.bz2
--2012-07-17 17:27:00--  http://sources.openelec.tv/tmp/image/openelec-rpi/OpenELEC-RPi.arm-devel-20120704203304-r11493.tar.bz2
Resolving sources.openelec.tv (sources.openelec.tv)... 212.101.13.10
Connecting to sources.openelec.tv (sources.openelec.tv)|212.101.13.10|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 73665908 (70M) [application/x-bzip2]
Saving to: `OpenELEC-RPi.arm-devel-20120704203304-r11493.tar.bz2'

100%[======================================>] 73,665,908   909K/s   in 56s     

2012-07-17 17:28:02 (1.26 MB/s) - `OpenELEC-RPi.arm-devel-20120704203304-r11493.tar.bz2' saved [73665908/73665908]

root@ubuntu:~# 

Zoek de naam van de SD kaart op. In dit geval is dit /dev/mmcblk0.

root@ubuntu:~# fdisk -l

<knip>

Disk /dev/mmcblk0: 7969 MB, 7969177600 bytes
4 heads, 16 sectors/track, 243200 cylinders, total 15564800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00039d84

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1   *        2048      258047      128000    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          258048    15532031     7636992   83  Linux
root@ubuntu:~# 

Pak de tar file uit en maak de SD kaart aan.

root@ubuntu:~# tar xf OpenELEC-RPi.arm-devel-20120704203304-r11493.tar.bz2 
root@ubuntu:~# cd OpenELEC-RPi.arm-devel-20120704203304-r11493
root@ubuntu:~/OpenELEC-RPi.arm-devel-20120704203304-r11493# ./create_sdcard /dev/mmcblk0

#########################################################
#                                                       #
#             OpenELEC.tv USB Installer                 #
#                                                       #
#########################################################
#                                                       #
#     This will wipe any data off your chosen drive     #
# Please read the instructions and use very carefully.. #
#                                                       #
#########################################################
checking MD5 sum...
target/KERNEL: OK
target/SYSTEM: OK
umount: /dev/mmcblk0: not mounted
umount: /dev/mmcblk0p2: not mounted
writing new disklabel on /dev/mmcblk0 (removing all partitions)...
creating partitions on /dev/mmcblk0...
marking partition active...
telling kernel we have a new partition table...
creating filesystem on /dev/mmcblk0p1...
mkfs.vfat 3.0.12 (29 Oct 2011)
creating filesystem on /dev/mmcblk0p2...
mke2fs 1.42 (29-Nov-2011)
Discarding device blocks: done                            
Filesystem label=Storage
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
477664 inodes, 1909248 blocks
95462 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1958739968
59 block groups
32768 blocks per group, 32768 fragments per group
8096 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 

mounting partition /dev/mmcblk0p1 ...
creating bootloader configuration...
copying files to /dev/shm/openelec_install...
syncing disk...
unmounting partition /dev/shm/openelec_install ...
cleaning tempdir...
...installation finished
root@ubuntu:~/OpenELEC-RPi.arm-devel-20120704203304-r11493# cd
root@ubuntu:~# 

Stop hierna de SD kaart in de RaspPi en start deze op.

Voor OpenELEC is het niet nodig dat er nog een installatie plaatvindt na het opstarten van de RaspPi. Dit scheelt een hoop tijd. Belangrijker is dat ook de boot tijd tot XBMC een stuk korter is dan bij Raspbmc.

Misschien dat ik daarom ook geen verschil merk tussen de eerder gebruikte class 10 SD kaart en de class 2 SD kaart?

OpenELEC op de RaspPi is opgedeeld in /flash and /storage waarbij flash read-only is gemount.

root ~ # df -h
Filesystem                Size      Used Available Use% Mounted on
none                     58.9M    128.0K     58.8M   0% /dev
/dev/mmcblk0p1          124.7M     70.8M     53.9M  57% /flash
/dev/mmcblk0p2          738.3M     39.4M    661.9M   6% /storage
/dev/loop0               64.3M     64.3M         0 100% /
none                     60.3M         0     60.3M   0% /dev/shm
/dev/sda1               465.2G     14.9G    427.0G   3% /var/media/01826c0f-04a3-4ec2-8be2-d7df84e9eb39
root ~ #

Net als bij Raspbmc staat ook OpenELEC de XBMC web server standaard UIT. Dus dat moet eerst worden gefixt.

Omdat ik eerder al op de router een IP-adres aan het MAC-adres (dit verandert niet) van de RaspPi had gekoppeld, was het IP-adres weer hetzelfde.

Zodra het IP-adres is achterhaald, kun je met SSH verbinding maken met username is "root" en password is "openelec". Op Windows kun je hiervoor bijvoorbeeld de terminal emulator PuTTY gebruiken.

De XBMC folder is /storage/.xbmc. In /storage/.xbmc/userdata/guisettings.xml kun je de webserver aanzetten.

<webserver>true</webserver>

Ook dit keer gebruik ik xbmcRemote op de iPad om XBMC aan te sturen.

http://img163.imageshack.us/img163/8059/remotez.jpg

De volgende XBMC versie is geinstalleerd:

root ~ # grep -i git /storage/.xbmc/temp/xbmc.log
00:00:16 T:1101709312  NOTICE: Starting XBMC (12.0-ALPHA3 Git:39c680e), Platform: Linux (OpenELEC - Version: devel-20120710191624-r11535, 3.2.22 armv6l). Built on Jul 10 2012
root ~ #

Ook hier dus een XBMC 12.0 alpha versie.

Gelukkig wordt nu wel de USB disk automatisch gemount dus daar heb ik verder geen omkijken naar. In XBMC zie je zelfs netjes een melding "Mounted Removable Hardware" voorbij komen.

Met SFTP kun je de RaspPi benaderen en files/media overzetten.

Ook deze keer heb ik weer getest met Alice in Wonderland 1080p H.264 met DTS welke vloeiend afspeelt. Let op dat ik een lokale direct gekoppelde USB disk gebruik. Als ik de film afspeel via NFS op een Synology DS211 dan is dit een stap te ver en wordt er om de 2 seconden gebufferd. Waarbij 720p H.264 AC3 content geen probleem is.

De RaspPi is er wel behoorlijk druk mee. Ongeveer 90% van de CPU tijd gaat naar XBMC. De GPU wordt behoorlijk heet tijdens het afspelen en kun je al na 15 minuten niet meer met je vinger aanraken.

Mem: 115184K used, 8352K free, 0K shrd, 4048K buff, 49988K cached
CPU: 32.9% usr  0.9% sys 62.9% nic  0.0% idle  2.9% io  0.0% irq  0.2% sirq
Load average: 3.11 2.59 1.98 3/91 1619
  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
  943     1 root     R     240m199.1   0 93.5 /usr/lib/xbmc/xbmc.bin --standalone -fs --lircdev /var/run/lirc/lircd
  524     2 root     SW<      0  0.0   0  0.9 [VCHIQ-0]
  525     2 root     SW<      0  0.0   0  0.6 [VCHIQr-0]
 1619  1438 root     R     2532  2.0   0  0.4 top
 1434   927 root     S     6888  5.5   0  0.3 {sshd} sshd: root@pts/0
 1593     2 root     SW       0  0.0   0  0.3 [usb-storage]
    3     2 root     SW       0  0.0   0  0.2 [ksoftirqd/0]
 1101     1 root     S    10824  8.7   0  0.1 nmbd --daemon --configfile=/var/run/smb.conf
  405     2 root     DW       0  0.0   0  0.1 [kswapd0]
    4     2 root     SW       0  0.0   0  0.1 [kworker/0:0]
  921     1 root     S    24092 19.4   0  0.0 /usr/lib/udisks/udisks-daemon
  941     1 root     S    23496 19.0   0  0.0 /usr/lib/polkit-1/polkitd --no-debug
  876     1 root     S    20844 16.8   0  0.0 rpi-cecd

Geheugengebruik:

root ~ # free -m
             total         used         free       shared      buffers
Mem:           120          112            8            0            3
-/+ buffers:                108           12
Swap:            0            0            0
root ~ #

Wat wel direct opvalt is dat de RaspPi nu niet direct in de stress schiet als je bijvoorbeeld naar een ander hoofdstuk wilt of na een fast forward. Je ziet dan overigens wel een paar seconden artifacts.

De RaspPi met OpenELEC lijkt een stuk stabieler te zijn dan met Raspbmc. Hierbij moet wel worden opgemerkt dat een nightly build van Raspbmc mogelijk beter zal presteren.

Pas tenslotte het root password aan (bron).

Gebruik ook hier de bootable USB stick gemaakt met Ubuntu 12.04 Desktop 32-bit.

Installeer squashfs-tools.

ubuntu@ubuntu:~$ sudo su -
root@ubuntu:~# apt-get install squashfs-tools
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package squachfs-tools
root@ubuntu:~# apt-get install squashfs-tools
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  liblzo2-2
The following NEW packages will be installed:
  liblzo2-2 squashfs-tools
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 193 kB of archives.
After this operation, 497 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://archive.ubuntu.com/ubuntu/ precise/main liblzo2-2 i386 2.06-1 [60.6 kB]
Get:2 http://archive.ubuntu.com/ubuntu/ precise/main squashfs-tools i386 1:4.2-4build1 [133 kB]
Fetched 193 kB in 0s (536 kB/s)         
Selecting previously unselected package liblzo2-2.
(Reading database ... 150248 files and directories currently installed.)
Unpacking liblzo2-2 (from .../liblzo2-2_2.06-1_i386.deb) ...
Selecting previously unselected package squashfs-tools.
Unpacking squashfs-tools (from .../squashfs-tools_1%3a4.2-4build1_i386.deb) ...
Processing triggers for man-db ...
Setting up liblzo2-2 (2.06-1) ...
Setting up squashfs-tools (1:4.2-4build1) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
root@ubuntu:~# 

Maak de nodige directories aan.

root@ubuntu:~# mkdir /openelec
root@ubuntu:~# cd /openelec
root@ubuntu:~# mkdir flash original updated newsquashfs
root@ubuntu:~# 

Zoek de naam van de SD kaart op. In dit geval is dit /dev/mmcblk0.

root@ubuntu:~# fdisk -l

<knip>

Disk /dev/mmcblk0: 2032 MB, 2032664576 bytes
4 heads, 16 sectors/track, 62032 cylinders, total 3970048 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000846a2

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1   *        2048      258047      128000    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          258048     1775615      758784   83  Linux
root@ubuntu:~# 

Unmount de SD kaart indien deze al automatisch is gemount.

root@ubuntu:~# umount /media/System 
root@ubuntu:~# umount /media/Storage
root@ubuntu:~# 

Maak een kopie van SYSTEM.

root@ubuntu:~# mount /dev/mmcblk0p1 /openelec/flash
root@ubuntu:~# ls /openelec/flash
bootcode.bin  kernel.img  openelec.ico  start.elf
cmdline.txt   loader.bin  README.md     SYSTEM
root@ubuntu:~# mount -o loop /openelec/flash/SYSTEM /openelec/original
mount: warning: /openelec/original seems to be mounted read-only.
root@ubuntu:~# cp -a /openelec/original/* /openelec/updated
root@ubuntu:~# 

Maak een nieuw encrypted password.

root@ubuntu:~# useradd simon
root@ubuntu:~# passwd simon
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
root@ubuntu:~# grep simon /etc/shadow | cut -f2 -d:
$6$RgpM6XB4$ZFz1JEJ3sXSkm6XLj88vSRUvp1bsdIGNRxNXnWI1W1g.I85PHeBDgazihYtWGs923dRipM5K3Taw8toyOyM/10
root@ubuntu:~# 

Zoek en vervang het bestaande encrypted password door de string die hierboven staat.

root@ubuntu:~# vi /openelec/updated/etc/shadow
root@ubuntu:~# 

Maak een nieuwe SYSTEM.

root@ubuntu:~# mksquashfs /openelec/updated /openelec/newsquashfs/SYSTEM
Parallel mksquashfs: Using 2 processors
Creating 4.0 filesystem on /openelec/newsquashfs/SYSTEM, block size 131072.
[=============================================================\] 3954/3954 100%
Exportable Squashfs 4.0 filesystem, gzip compressed, data block size 131072
	compressed data, compressed metadata, compressed fragments, compressed xattrs
	duplicates are removed
Filesystem size 60431.50 Kbytes (59.02 Mbytes)
	45.73% of uncompressed filesystem size (132162.45 Kbytes)
Inode table size 40248 bytes (39.30 Kbytes)
	28.78% of uncompressed inode table size (139826 bytes)
Directory table size 42492 bytes (41.50 Kbytes)
	48.41% of uncompressed directory table size (87781 bytes)
Number of duplicate files found 191
Number of inodes 4169
Number of files 3251
Number of fragments 295
Number of symbolic links  412
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 506
Number of ids (unique uids + gids) 2
Number of uids 1
	root (0)
Number of gids 2
	root (0)
	unknown (81)
root@ubuntu:~# 

Kopieer de nieuwe SYSTEM over de oude SYSTEM heen.

root@ubuntu:~# umount /openelec/original 
root@ubuntu:~# cp /openelec/newsquashfs/SYSTEM /openelec/flash/SYSTEM
root@ubuntu:~# umount /openelec/flash 
root@ubuntu:~# 

Hierna kun je inloggen met het nieuwe password.