LinuxMCE's main concepts are Devices, Commands (aka Scenarios and Activities), and Events. An Orbiter is the device that displays the User Interface. It can be a Media Station, web pad, mobile phone, or other remote control device. The Orbiter User Interface is standardized for all Orbiters.
A device is generally a piece of hardware or software, like the Xine Media Player, a light switch, or a mobile phone. Devices have three functions, abbreviated "DCE" (Data, Commands, Events):
- Retrieve configuration data
- Perform a command (turn on, turn off, fast forward, etc.)
- Report certain triggered events (e.g. 'motion detected', 'playback started', etc.)
"Scenarios", "Activities", and "Command Groups" are interchangeable terms -- they mean the same thing. A scenario is a group of commands that can be sent to a device (or series of devices). In LinuxMCE, the default Orbiter main menu consists of several scenario categories, grouped by room. These categories are:-
(These default categories are arbitrary and are set up at installation.) To perform an action in LinuxMCE, a scenario is chosen from one of these categories (located on the main menu of an Orbiter).
For example, in rooms which have both a TV and lights, LinuxMCE automatically creates a scenario called 'Showtime.' This scenario dims the lights to 10% whenever the TV starts playing. In rooms with a PVR or other TV-enabled device, another scenario is created called 'TV' (in the 'Media' category) to start the TV. Another scenario in the 'Media' category called 'Video' sends a command to the Orbiter to list your video content. Telecom scenarios are created to make phone calls. Security scenarios are created to view cameras and to arm an alarm.
Some default scenarios are created for you at installation. A fully-functional system can run using only the default scenarios, if you choose. You can also change or remove the default scenarios or add new ones. This is done though the LinuxMCE Admin Website-->Wizard-->Scenarios menu. When creating a scenario, the LinuxMCE Admin Website will show you the most appropriate wizard, based on the category you pick. If you're adding an activity in the lighting category, for example, the wizard will display a list of the lights in the room and let you pick which ones to turn off. If you're creating a scenario in the security category, it will list the installed cameras and will allow you to select which ones to display.
A scenario can send a command to any device in the system. By default, scenarios in the lighting category show you the room lights, allowing you to select which ones to send commands. However, from the Wizard-->Scenarios menu for the specific scenario, you can also specify a command to any device in your home. You could make a phone call, for example, even from a scenario in the lighting category.
Certain scenarios are assigned to certain rooms by default. This can be customized, however. When you manually select a room from the Orbiter main menu, the default scenarios for that room are displayed. In general they control devices in that room, but this can also be changed. If your kitchen is near the garage and you want a scenario to 'turn off the garage light', you can assign a scenario to the room 'kitchen' that will do just that. It doesn't matter that the light is in the garage.
For a Media Director, the on-screen Orbiter User Interface appears on the TV screen. It is manipulated by the mouse/keyboard or remote control connected to your Media Director. By default it is set to display the scenarios for the room in which the Media Director is located.
In contrast, a mobile Orbiter (such as a webpad) can be carried throughout the house. It must be able to select the scenarios for multiple rooms. Fortunately, the option to manually select which room you are currently in is available on every Orbiter's main menu.
This can occasionally cause some confusion. Perhaps both the Living Room and the Bedroom have a scenario called 'TV'. You may have a web pad that is in the Bedroom, but you then carry it to the Living Room. You may forget to tell the web pad that it's now in the Living Room (at the bottom of the Orbiter screen it will still say 'Bedroom'). You hit the 'TV' button expecting the Living Room TV to come on, but in fact you're still controlling the Bedroom and the TV comes on there instead. Finally, you may realize that you must change your room location to Living Room, then you can control the TV there.
Once you get used to this concept, though, you'll find it very useful. Conveniently, any Orbiter can be set to control any room and choose from the scenarios assigned to that room. No matter which Orbiter you use, the same set of scenarios will be displayed for each specific room. For example, the kitchen scenarios will always be the same, no matter which Orbiter you are using. (The scenarios are assigned by room -- not by Orbiter.) No matter whether you pick up your mobile phone, your web pad, or your remote control, you will always be shown the same list of scenario options for the Living Room.
You have the option of preventing some family members from using certain scenarios. From the LinuxMCE Admin Website, certain scenarios and rooms can be restricted to certain users. Maybe little Suzy's mobile phone Orbiter should be restricted so that she is only able to control her room and the living room, for example. She would only be able to execute the scenarios in those rooms, but not the Master Bedroom. Other possible options include requiring a pin code to access the scenarios for a particular room.
Devices report events, such as 'Playback started' and 'Motion Sensor tripped'. If you want something to happen automatically in LinuxMCE, you create Event Handlers that react to these events. For example, you can create an event handler that listens for the 'Motion Sensor tripped' event from a motion detector and turns on the lights in response. An event handler might listen for the 'Sunrise' event, which could then prompt the sprinklers to come on.
LinuxMCE creates several default event handlers. In rooms in which you have a TV and lights, an event handler is created that listens for the 'Watching Media' event sent by a media player. When the event is detected, the Showtime scenario (which dims the lights) is executed in response. When you start a movie, therefore, the Showtime activity will be executed and the lights will be dimmed. There are other default event handlers that monitor for events like 'Security Breach' and 'Fire Alarm' (from a home security system).
Controlling an Orbiter
To control the system, you use an Orbiter, which is the LinuxMCE term for a remote control. All Orbiters have the same basic function: to display the scenarios in the room you're in and let you select one. The different Orbiters may display the User Interface slightly differently, depending on their screen size, but the function and the list of scenarios is always the same. For example, the "UI1" interface (which is used on webpads and PDAs) displays the scenarios in horizontal rows. (If there are more than will fit on a row, there will be a "more" button.) A home button is always displayed that takes you to the main menu. On smaller displays, as on mobile phones or desktop phones, there's not enough room to show the scenarios themselves. The top level menu shows only the categories: Lights, Media, Climate, Security and Telecom. Selecting a category displays the scenarios in that category.
"UI2" is the preferred User Interface for Media Stations. Using a traditional IR remote is not much different from using any other Media Center PC remote. The menu button brings up the main menu, and you use the left/right/up/down/enter buttons to navigate it. The fast forward/rewind/skip +/skip - keys are used for media playback.
If you have a pointing device like a mouse or gyro air mouse, the UI2 interface also supports a unique control architecture that lets you do everything with 3 (programmable) buttons (plus ok and cancel). The 3 buttons are "MEDIA", "MENU", "AMBIANCE".
On a mouse with 3 programmable buttons (such as the gyration), these functions correspond to the buttons from left to right. If you are using a traditional 3 button mouse, you can use the F6, F7 and F8 keys on the keyboard for the three programmable functions instead. In both cases, the left mouse button is "ok", and the right mouse button is "cancel/go back".
Mouse button behavior is "absolute" when you press and hold the media/menu/ambiance button and "relative" when you tap and release.
The "absolute" behavior is generally more efficient. For example, in the case of the middle button (F7), "absolute" behavior means the action is executed without having to additionally click "ok". If you press and hold the middle button (F7) while moving your mouse pointer to the option, then let go, that option is executed. If you instead tap and release the menu button ("relative" behavior), you will only highlight the menu option. You must then press ok (the left mouse button) to execute the option.
Categories appear along the bottom of the screen, and the scenarios in each category popup vertically (like a pull-down menu in a PC, except upside down). If the main menu isn't already visible, bring it up by pressing the "start" button on a Windows IR remote, or the "menu" button on a 3-button mouse. To exit a menu, use the back button on the IR remote, the cancel button (right mouse button on a 3-button mouse), or the ESC key on a keyboard.
In UI2, the media is always full screen. If you're not playing your own media, the background media (i.e. screensaver images) is gallery art from the Internet (using flickr) or pictures you select. If only the screensaver images are displayed on the Media Station, press the menu/middle/F7 button to bring up the menu. Right click/ESC to get rid of it. (This works even if your own media is playing.)
If you're using UI2's 3-button navigation model, the normal media control options on a traditional remote are replaced with a single button: "media" (left soft button or F6). Press this and move the pointer up and down for your skip functions (ch+, ch-, skip fwd, skip back). Move the pointer left and right for speed control (rewind, fast forward). The further you move, the faster the media playback changes. If you hold the button down (the left soft button or F6), your movement will be "absolute". Instead of the traditional "jog shuttle-type" control, movement to the right skips to the end of your media, and movement to the left skips to the beginning. Once you get used to it, you will find that navigating media is orders of magnitude faster and easier with this model than with a traditional remote. You can find a spot in a 2 hour movie in only a couple seconds with a click of a single button (compared to a slew of button clicks required using a traditional remote).
Also, in UI2 you can press the "ambiance" button (right soft button or F8). Move up/down to adjust the lights, and left/right to adjust the volume. As with the media playback, if you hold the F8/right soft button down while you move left and right, your volume control is in "absolute" mode (not "relative"). Moving hard right turns up the volume full blast; hard left is mute. This requires you have a TV or receiver that is serial-controlled, however. LinuxMCE can then directly and instantly set the volume position in sync with your hand movements. (Few TVs and receivers have this feature, unfortunately.)
There are other media control functions besides the most commonly used fast fwd/rewind/skip up/skip down. You can, for example, choose 'subtitles' while watching a DVD, 'guide' while watching TV, and 'random' while listening to an audio CD. In the UI2 3 button model, these functions appear on the main menu (on the left-most pad, entitled 'now playing') and changes according to the type of media you're playing. Press the menu button (middle button/F7) to select these options.
This 3 button model is a new concept and very different from traditional navigation. Most people find it much faster once they become accustomed to it.
Reload Router & Regen Orbiters
While using LinuxMCE you'll see sometimes a message asking if you want to reload the router, or if you want to regenerate the Orbiter UIs (User Interfaces). In general, these options refresh the LinuxMCE databases so that changes to the system can be recognized.
All devices in LinuxMCE obtain their configuration information from the , which is the central piece of software on the Core. All devices request a list of the other devices in the home from the router, so they can respond to them appropriately. (For example, an IP camera device might turn on the lights in the room whenever you're viewing the camera. To doso, the IP camera needs to know what lights are in the room.) Typically a device requests this information only when it's starting up. When you connect additional plug and play devices to the system, these new devices generally will work immediately, but their functionality may not be fully enabled within the LinuxMCE system until the DCE router is reloaded. When the router reloads, it signals all devices on the system to simultaneously reload and re-request the system data. Each existing device can then work with each new device. This process is known as a 'reload'. It generally takes about 10 seconds. Every time you add or remove devices, or change a device's configuration, you may be asked to do a reload. If you're going to add more devices or make more device changes, you can do the reload once you're done. If you're in the middle of watching a movie or TV, you can postpone the reload, since media players generally stop playing during reloads. Phone calls aren't affected, though, and TV shows being recorded by MythTV in the background are also unaffected.
Regen the Orbiter
LinuxMCE's Orbiter User Interfaces are all "pre-rendered" in order to be more efficient. The User Interface source images are all very high resolution, but need to be resized to accommodate the resolution of each Orbiter screen. The Core server has a list of the Orbiters used by your system, and will generate the appropriate User Interface screen for each Orbiter. It will do this each time you request a "regen". If you have five different types of Orbiters (each with a different type of screen), then five different images will be generated during each regen.
These User Interface screen images are stored in the Core. The appropriate UI image is sent to an Orbiter whenever it is activated. For many low-power devices (like mobile phones or desktop phones) there just isn't the processing power to do scaling and rendering of a User Interface screen on the fly. They need to be pre-rendered (with text pre-embedded in the images) to be efficient.
Adding new scenarios may result in the creation of new buttons for the User Interface, or changes to the text on existing buttons. Perhaps an entirely new screen will be created.
Until the User Interface images are regenerated, though, you won't be able to see these new buttons (or screens) on your Orbiter. During the regen, new User Interface images for each type of Orbiter is generated by the Core. This can take about 2-5 minutes, depending on how many Orbiter types you have in your system.
You needn't do a regen every time you add a scenario. You can wait until you have finished adding all the scenarios. Furthermore, you can also regen only the Orbiter you are currently using by doing a "Quick regen". This allows you to see the new User Interface (following the addition of new scenarios) without having to do a full regen for all the Orbiters. Once you have finished adding scenarios, then you can do a full regen.
This regen process can be a bit annoying, but is necessary. In future editions of LinuxMCE, it is planned to allow Media Directors, which have a lot more processing power, to render their on-screen Orbiter User Interfaces on the fly (so you don't have to do a regen each time you add or remove a scenario).
Managing your media
LinuxMCE is always scanning for network shares, on Network-Attached Storage (NAS) devices and other Hard Disk Drives (HDDs) of PCs connected to the system (including Windows PCs). Universal Serial Bus (USB) drives are also detected. Every time a LinuxMCE finds a network share, you will be asked if you would like to use it. Whenever you reply "Yes", the file share can be used by any Media Director on the system. The file share is scanned for media, such as audio, video and photos, and any that are found are then cataloged in the Core's central database. For example, when you plug in a USB drive on a Media Station in the living room and tell LinuxMCE to use it, the media on the drive will be available to Media Directors in other rooms.
At the moment there is no way to restrict your media for 'local use only'; all Media Stations in the LinuxMCE system share the media catalog stored on the Core. (This is a limitation that will be addressed in the near future. Sometimes it is desirable to attach a USB drive in the master bedroom and not allow it to be shared, for example. Note: However, see this article that describes a method to address this problem.)
Storage devices (NAS, USB drives, extra HDDs on the Core or Media Directors) are referred to as "Extra Drives". When an extra drive is added, it is listed in the device tree in LinuxMCE Admin Website-->Advanced-->Configuration-->Devices. Under 'Core' you'll see a device listed for each HDD in the Core, as well as for each NAS device. Under each Media Station will be listed the HDDs in that Media Station. By clicking on the device you can change the device's properties, such as the mount username/password. Each NAS device, and each file share on another PC, will show as a device listed under the Core; each is considered a child of the Core.
LinuxMCE creates a top level folder for 'public' media. This folder can be used by every user in the system. A 'private' media folder is also created for each user. Within each of those folders are sub-folders, labeled 'audio', 'video', 'pictures', 'data' and 'other'. Within each of those will also be sub-folders for the extra storage devices (NAS, USB, extra internal drives, etc). When you attach an extra storage device, you can specify whether the default directory structure should be used for it. Alternatively, you can specify 'just make it public' or 'make it private'.
Here's an example. Let's say you have 2 users: john and mary. You connect 3 storage devices:
- a NAS, for which you specify 'use default directory structure'. It is named 'Generic Network Storage '
- a USB drive for which you specify 'make it all public'. It is named 'USB Drive '
- a SATA drive for which you choose 'make it private for john'. It is named 'General Internal HDD 
Now let's say you're running Windows. Go to Network Neighborhood and find the LinuxMCE Core server. The directory tree ought to look like this: <pre> public
video Generic Network Storage  audio Generic Network Storage  pictures Generic Network Storage  data Generic Network Storage  other USB Drive 
video Generic Network Storage  audio Generic Network Storage  pictures Generic Network Storage  data Generic Network Storage  other General Internal HDD 
video Generic Network Storage  audio Generic Network Storage  pictures Generic Network Storage  data Generic Network Storage  other
</pre> Whether you put your media under video, audio, pictures, data or other is unimportant. It will be scanned by LinuxMCE anyway. The contents of "General Internal HDD " will be displayed in the folder john/other/General Internal HDD . The contents of USB Drive  will be displayed in the folder public/other/USB Drive . When John browses the contents in Network Neighborhood, he will be asked for his username and password. He can then access the content in both the public folder as well as the "john" folders (including General Internal HDD ). When Mary browses the contents with her username and password, she will see both the public and "mary" folders. She will not be able to see anything on General Internal HDD , however, since that drive was specified to be private for John.
In the case of John's private media, it won't be displayed in the LinuxMCE media browser unless you click 'Sources'-->'John'. However you can see the contents of General Internal HDD  (unless you deselect 'Sources'-->'Public' from the media browser). Generic Network Storage  would be different, however, since you specified to use the default directory structure for it. LinuxMCE will have created public directories on Generic Network Storage  for public video and public audio, as well as for john's video and mary's audio. The media file browser will show only the media that is in the public directories. (The same is true with the Windows Network Neighborhood browser.)
If Generic Network Storage  has existing media in the top (root) folder, you won't see it listed anywhere.
It is generally recommended, therefore, that when you add a new (blank) "extra" storage device, you choose to use the default directory structure on it. When you rip media to that device, the media can then be made either public or private, and LinuxMCE will automatically put it in the correct folder (audio, video, etc.).
If you connect an extra storage device that already has media on it, however, and that media isn't already organized in LinuxMCE's default directory structure, it's easiest if you simply 'make it all public' or 'make it all private'. If you were to 'use the default directory structure', you would need to manually move the files from the existing folders into one of the directory folders that LinuxMCE would then create for you.
When you rip files, you have the option of copying them to the Core. If you rip a CD and make it public, it will be stored in public/audio. If you go into Network Neighborhood and add a folder under public/audio, you would essentially be adding a folder on the Core. If you add a folder under public/audio/Generic Network Storage , you would be adding it to Generic Network Storage .
Drive and network drive management
This concept behind drive/network drive management is not the same as the method to which Linux and Windows users are accustomed. In Windows, for example, each network device shows up separately; they are never grouped together. There is an advantage to the way LinuxMCE manages drives. It's much simpler to add devices when you're a novice and don't understand networking. Further, if you're using an infrared remote control, you can manage drives with a single 'yes' or 'no,' click, which is very convenient. Lastly, all your media content is cataloged and presented in the same structure throughout the system, no matter which Media Director you're using or what room you're in.
In Windows, by comparison, if you connect a USB drive to a Windows PC in the bedroom, you won't see that content in the living room unless you 1) open file explorer, 2) create a new network share for it, 3) go into the living room, and 4) create a new mapped network drive there. (That isn't so easy to do with an infrared remote and without some knowledge of networking.) Further, you wouldn't be able to see the media in any other room in the house unless you were to also create mapped network shares in those rooms as well.
With LinuxMCE, when you connect a USB drive, for example, you can 'make it all public'; the media will be available everywhere. No other typing is required. With LinuxMCE, instead of managing multiple network shares and mapped drives, you can choose the Core's public folders in the Network Neighborhood browser from anywhere in the home, without having to know which storage devices the media is actually on. When you remove a USB drive from a Media Station, that media instantly disappears from the catalog displayed in every room. If you reattach it, it will re-appear.
To change the name of an extra device, go to the LinuxMCE Admin Website-->Advanced-->Configuration-->Devices and under the Core you will see listed the HDDs in the core and any connected NAS devices. Under each Media Station you will see the HDDs in that Media Station. All are given default names. You can change the description, which will also change the folder name. In the above example, changing "USB Drive " to "Tokyo" means the directory public/other/USB Drive  would change to public/other/Tokyo.
You can see a list of the files in the system by folder In the LinuxMCE Admin Website-->Files & Media-->Media Files Sync menu. If a file is shown with a check box, the file exists both on the local disk as well as in LinuxMCE's master catalog. If it has a different icon, then LinuxMCE hasn't finished cataloging the media; just be patient. It should appear with a check mark soon (depending on how much new media was added).
Use this interface to manage change cover art and attributes. Under Files & Media there is also a cover art scan utility that will find cover art, as well as other attributes (actor, genre, etc.) obtained from Amazon.
Linux operational details of network and disk mounts
UpdateMedia is a daemon that constantly scans for media files in the /home/public and the /home/user_xxx folder created for each user. Any added media is cataloged in the pluto_media database File table, and attributes and cover art go into the Attribute and Picture tables. Under /home/public and /home/users_xxx is a data subfolder which contains the actual video, audio, pictures folders. (The /home/user_xxx directories themselves contain the system files for each user (like email boxes) as well as the main login for that user (in a "data" subfolder).
Extra devices are mounted as /mnt/device/xxx (where xxx is the device number). The mount point is the same whether it's a local drive or not. For example, USB drive  in a Media Station may be mounted as a local device named /mnt/device/50, but is also mounted as a Samba mount on other Media Stations as /mnt/device/50. The Core and the Media Stations all use the same mount names (/mnt/device/).
Within the /home/public/data and /home/user_xxx/data are symlinks to the physical directories specified by /mnt/device/xxx. Since the Core and all Media Stations mount the same /home directory (and all have the same /mnt/device mounts), they will all show the same files. Therefore, if the UpdateMedia daemon locates the file /home/public/data/audio/Generic Internal Drive /The Beatles/Let it be.mp3, that file will be listed on every Media Station, too.