DLNA Media Server Virtual Appliance
A DLNA Media Server is a device that stores media content that can be accessed by media players and rederers found in the same local network. The goal of the project was creating a minimal solution to meet theese requirements. This was achieved using the tools provided by the yocto project through the creation of the meta-dlna layer.
Introduction
Poky is a platform-independant layer that provides useful features and functionalities for embedded solutions. A Quick Start Guide and further information can be found on the main page of the Poky Project.
The functionality of the Media Server was implemented as a new layer, the meta-dlna layer, which can easily be integrated over any poky distribution. Stability and reliability was achieved by using the denzil branch of the yocto project.
[TODO] - KVM
Arhitecture design
A basic requirement of the system is represented by
Package dependencies
Rygel
The solution was build around rygel, an application used for media content sharing on a home network. Rygel implements its functionality through a plugin mechanism.
Tracker plugin
Tracker reprezents a data storage for devices that keeps semantic metadata about files and folders and enables data sharing throughout a local network.
MediaExport plugin
The MediaExport plugin exports files and folders over the network. This solution was preferred to Tracker because it represents a more lightweight alternative and meets to all project requirements.
[TODO] - KVM
How to integrate DLNA to a poky distribution
The meta-dlna layer was created using the combo-layer tool. To enable it, follow the next steps:
- Copy the meta-dlna folder into the root directory of a poky distribution. Cd into the poky folder.
- Add the layer to build/conf/bblayers.conf:
[...] BBLAYERS=" $POKY_HOME/meta-dlna/meta-guacamayo [...]
- Add some extra features to build/local.conf:
[...] DISTRO_FEATURES = "ext2 largefile usbhost xattr nfs zeroconf pci ${DISTRO_FEATURES_LIBC} x11" [...]
- source the oe-init-env script
- build the image using the guacamayo-image-mediaserver target
bitbake guacamayo-image-mediaserver [TODO]
For testing purposes, demo content can be added by inserting the following line into build/conf/local.conf:
[...] IMAGE_FEATURES_append = " guacamayo-demos" [...]