Usage Intro

From LinuxMCE
Revision as of 00:29, 21 May 2008 by Perspectoff (Talk | contribs) (Reload Router)

Jump to: navigation, search

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, etc. The Orbiter User Interface is standardized for all Orbiter devices.

Devices

A device is generally a piece of hardware or software, like the Xine Media Player, a light switch, or a mobile phone. Devices can do 3 things: 1) Retrieve configuration data 2) Perform a command (turn on, turn off, fast forward, etc.) and 3) Report certain triggered events (e.g. 'motion detected', 'playback started', etc.) These three functions are abbreviated "DCE" (Data, Commands, Events).

Scenarios

"Scenarios", "Activities", and "Command Groups" are interchangeable terms -- they mean the same thing. This is a group of commands that is sent to a device or series of devices. In LinuxMCE, the Orbiter main menu consists of several scenario categories, grouped by room. These categories are

  • Lighting
  • Media
  • Climate
  • Telecom
  • Security

These default categories are arbitrary and are set up at installation. To perform an action in LinuxMCE, you would choose a scenario 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), which starts the TV. Another scenario in the 'Media' category is called 'Video'; it sends a command to the Orbiter GUI 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.

These are some of the default scenarios created for you at installation. A fully-functional system can run using only the default scenarios, but you can change or remove the default scenarios and add new ones. This is done though the LinuxMCE Admin Website-->Wizard-->Scenarios. When creating a scenario, the admin web page will show you the most appropriate wizard, based on the category you picked. If you're adding an activity in the lighting category, for example, the wizard will show all 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 show you which cameras you have installed and will allow you to select which ones to display.

A scenario can send a command to any device. By default, scenarios in the lighting category show you the room lights, allowing you to select the ones to which to to send commands. However, by clicking the 'Advanced Wizard' option, you can also choose to send a command to any other device in your home. You could make a phone call, for example, even though it is a scenario in the lighting category.

Certain scenarios are assigned to certain rooms by default. However, this can be customized. 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 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 Orbiter user interface appears on the TV screen. It is manipulated by the mouse/keyboard or remote control connecteds to your Media Director. By default it is set to the room in which the Media Director is located. A mobile Orbiter like a webpad, however, can be carried throughout the house. The option of manually selecting which room you are currently in is available as an option 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, and you can then finally control the TV there.

Once you get used to this concept, 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 that particular 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 admin web panel, 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, for example. Other possible options include requiring a pin code to access the scenarios for a particular room.

Events

Devices report events, like 'Playback started', 'Motion Sensor tripped', and so on. If you want something to happen automatically in LinuxMCE, you create Event Handlers. For example, you can create an event handler that listens for the 'Motion Sensor tripped' event from a motion detector device and in response turns on the lights. An event handler might listen for the 'Sunrise' event, which could prompt the sprinklers to come on.

LinuxMCE creates some default event handlers. For example, in rooms in which you have a TV and lights, an event handler is created that listens for the 'Watching Media' event from the media player in that room. When the event is detected, the Showtime scenario is executed in response. Whenever you start a movie, therefore, the Showtime activity will be executed (which by default dims the lights). There are default event handlers to monitor for events like 'Security Breach' and 'Fire Alarm' (from a home security system).

Controlling an Orbiter

To control the system, you use any 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 this slightly differently, depending on their screen size, but the function and the list of scenarios is always the same. The normal UI1 interface which you'll use on webpads and PDAs displays the scenarios in horizontal rows. (If there are more than will fit on a row, you'll have a "more" button.) If you're not already at the main menu, there will be a home button that takes you there. On small displays, like mobile phones and desktop phones, there's not enough room to show the scenarios themselves, so the top level menu just shows the categories: Lights, Media, Climate, Security and Telecom. Selecting a category shows the scenarios in that category.

UI2 is the preferred user interface for the Media Stations. If you're using a traditional I/R remote, you'll find that it's not much different than any other Media Center PC. 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.

UI2 supports a unique control architecture that lets you do everything with only 3 programmable buttons (plus ok and cancel), however, if you have a pointing device like a mouse or gyro air mouse. The 3 buttons are: MEDIA, MENU, AMBIANCE.

On a mouse with 3 programmable buttons, such as the gyration, these are the 3 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 instead. In both cases, the left mouse button is "ok", and the right mouse button is "cancel/go back". In all cases, the behavior is "absolute" when you press and hold the menu/menu/ambiance button and "relative" when you tap and release.

The "absolute" behavior is generally more efficient. In the case of the middle button (or F7), "absolute" behavior means the action is executed without having to additionally click "ok". If you press and hold the middle button (or 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 I/R remote, or the "menu" button on a 3-button mouse. To exit whichever menu is on the screen, click the back button on the I/R remote, the cancel button (right mouse button on a 3-button mouse), or press the ESC key on a keyboard. In UI2 the media is always full screen. This media is gallery art from the Internet, if you're not playing your own media. If you see scrolling pictures on the Media Station, press the menu/middle/F7 button to bring up the menu, and right click/ESC to get rid of it. The same works if your own media is playing.

If you're using UI2's 3-button navigation model, the normal media control options on the traditional remote are replaced with a single button: "media" (the left soft button or F6). Press this, then move the pointer up and down for your skip functions (i.e. ch+, ch-, skip fwd, skip back). Move the pointer left and right for speed control (i.e. rewind, fast forward). The further you move, the faster the media playback changes. If you keep the button held down (the left soft button or F6), your movement will be "absolute", not "relative". Instead of the traditional jog shuttle-type control, moving to the right skips to the end of your media, and moving 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, and you can find any 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 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, so that LinuxMCE can 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 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/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.

Reload Router

All devices in LinuxMCE obtain their configuration information from the DCE router, which is the central piece of software on the Core. All devices also request from the router a list of the other devices in the home, so they can react accordingly. For example, an IP camera device will turn on lights in the room when you're viewing the camera. Thus, the IP camera needs to know what lights are in the room. Typically a device requests this information only once when it's starting up. When you add new plug and play devices, those new devices will generally work immediately, but the functionality may not be fully enabled until the DCE router is reloaded. When it does so it signals all devices on the system to also reload and re-request the data. They can then work with the 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 still going to be adding more devices or making more changes, just say no. (There's no hurry, you can do the reload when 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 a reload. Phone calls aren't affected, however, 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 source images are all very high resolution, and need to be resized for whatever resolution your screen is running. Also, as you add new activities, those will result in new buttons for the main menu, and sometimes new screens, or perhaps changes to the text on existing buttons. So when you add new activities, you won't immediately see them on an orbiter until you do a regen. If you're still going to be adding more activities, just say 'no', and do a regen when you're all done. If you added new activities and want to test them quickly without waiting for a regen of all the Orbiters, which takes about 2 to 5 minutes each, then just regen the one Orbiter you're using for your tests. Regen the others only after you're sure everything is done. Once you do a regen of all Orbiters, they will all have the same list of activities.

This regen process is a bit annoying but necessary for a lot of low-power devices like the desktop phones which just don't have the processing power to do scaling and rendering on the fly. They need all the images pre-rendered, with the text pre-embedded in the images. However, since the media stations have a lot more processing power and can render their UIs on the fly, it's in the works to make the Orbiters on the Media Directors render their UIs on the fly so you don't need to do a regen every time you add/remove activities.

Managing your media

LinuxMCE is always scanning for network shares on NAS devices and other PCs, including Windows PCs, and will ask you "if you want to use it" every time it finds a network share. It also scans for internal hard drives (ide, scsi, and sata drives), as well as USB drives. Whenever you reply "Yes" to use it, it can then be shared by all Media Directors. It is scanned for media (audio, video and photos), and that media is then catalogued in a central database on the core. When you plug in a USB drive on a Media Station in the living room, for example, and say 'yes' to use it, that media will be available to Media Stations in other rooms, too. At the moment there is no way to restrict your media for 'local use only'; all Media Stations in the LinuxMCE system use the same media catalog on the Core. This is a limitation that will be addressed in the near future, in case you wish to attach a USB drive in the master bedroom but don't want it shared, for example.

These storage devices (NAS, USB drives, extra HDDs on the Core or Media Stations) 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 extra HDD in the Core, and any NAS devices. Under each Media Station will be listed each extra HDD in that Media Station. By clicking on the device you can change the device's properties, such as the mount username/password used to mount a NAS. Each NAS device and each file share on a PC will show as a device listed under the Core; they are 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, labelled '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, if you specify the default directory structure, the same directory structure will be created on it. You can also specify: 'just make it public' or 'make it private' whenever a new storage device is detected.

Here's an example. Let's say you have 2 users: john and mary. You connect 3 storage devices: 1) a NAS for which you specify 'use default directory structure' and which is called 'Generic Network Storage [50]', 2) a USB drive for which you specify 'make it all public' and which is called 'USB Drive [51]' , and 3) a SATA drive for which you choose 'make it private for john' and which is called 'General Internal HDD [52].

Now let's say you're running Windows and go to Network Neighborhood, finding the LinuxMCE Core server. The directory tree you will see ought to look like this:

public

 video
   Generic Network Storage [50]
 audio
   Generic Network Storage [50]
 pictures
   Generic Network Storage [50]
 data
   Generic Network Storage [50]
 other
   USB Drive [51]

john

 video
   Generic Network Storage [50]
 audio
   Generic Network Storage [50]
 pictures
   Generic Network Storage [50]
 data
   Generic Network Storage [50]
 other
   General Internal HDD [52]

mary

 video
   Generic Network Storage [50]
 audio
   Generic Network Storage [50]
 pictures
   Generic Network Storage [50]
 data
   Generic Network Storage [50]
 other

Whether you put your media under video, audio, pictures, data or other is unimportant. It will be scanned anyway. The contents of "General Internal HDD [52]" will be found in the folder john/other/General Internal HDD [52]. The contents of USB Drive [51] will be found in the folder public/other/USB Drive [51]. When John browses the contents in Network Neighborhood he will be asked for his username and password and can then access the content in both the public and john folders, including the General Internal HDD [52]. When Mary browses the content with her username and password she will see the public and mary folders, but will not be able to see anything on General Internal HDD [52] that was private for John.

In the case of John's private media, you won't see it in the LinuxMCE media browser unless you click 'Sources'-->'John', since it's private for John. However you will always see the contents of General Internal HDD [52] (unless you deselect 'Sources'-->'Public' from the media browser). Generic Network Storage [50] is different, however, because you specified to use the default directory structure. This means that LinuxMCE will create directories on Generic Network Storage [50] for public video, public audio, john's video, mary's audio, etc, and the media file browser will only show the media that is in those directories. The same is true with the Windows Network Neighborhood browser.

If Generic Network Storage [50] has existing media on it in the top folder, you won't see it anywhere.

For this reason, it is generally recommended that when you add a new, blank extra storage device, you specify the default directory structure. That way when you rip media in LinuxMCE to that extra device, you can choose to make the media public or private, and LinuxMCE will automatically put it in the right folder (audio, video, etc.).

However if you connect an extra storage device that already has media on it, and that media isn't already organized in LinuxMCE's default directory structure, it's easiest to just 'make it all public' or 'make it all private'. If you choose 'use the default directory structure', you will need to manually move files from the existing folders into one of the directory folders that LinuxMCE will then create for you.

When you rip files you also have the option of copying them to the Core. If you rip a cd and make it public, it will be found in public/audio. If you go into Network Neighborhood and add a folder under public/audio, you will essentially be adding a folder on the Core. If you add a folder under public/audio/Generic Network Storage [50], you are adding it to Generic Network Storage [50].

This concept behind drive/network drive management is not the same as the method which Linux and Windows use. 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, however. It's much simpler to add devices when you're a total novice and don't understand networking. If you're using an infrared remote control and just want a way to manage drives by clicking a simple 'yes' or 'no,' this method is convenient. Furthermore, all your media content is cataloged and presented in the same structure, no matter 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. That isn't so easy to do with an infrared remote, or without some knowledge of networking concepts. Further, you won't be able to see the media in any other room in the house unless you create mapped network shares there too.

With LinuxMCE, when you connect a USB drive, for example, you can just say 'make it all public' and the media is available everywhere, without any typing involved. And with LinuxMCE, rather than managing multiple network shares and mapped drives, you just go to Network Neighborhood, chose the LinuxMCE Core, and under 'public' you will see all the public folders everywhere 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 in every room. If you reattach it, it re-appeears.

You can also media on the Core. LinuxMCE has built-in RAID 5 (see LinuxMCE Admin Website-->Advanced-->RAID), so its HDD can function as a NAS.

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 [51]" to "Tokyo" means the directory public/other/USB Drive [51] would change to public/other/Tokyo.

In the LinuxMCE Admin Website-->Files & Media-->Media Files Sync is listed the files in the system by folder. You can change the cover art and attributes. 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 differing 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). 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.

Background details

Here's how it works: UpdateMedia is a daemon that constantly scans for media files in the /home/public and each /home/user_xxx folder that is created for each user. Any added media is catalogued 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, and the main login for that user, in a 'data' subfolder.

Extra devices are mounted as: /mnt/device/xxx (where xxx is the device number (see the admin site)). The mount point is the same if it's a local drive or not. For example, USB drive #50 in a Media Station may be mounted as a local device as /mnt/device/50, but also is mounted as a Samba mount called /mnt/device/50 on other Media Stations as well. Therefore, the Core and all Media Stations have the same /mnt/device/ mount names. Within the /home/public/data and /home/user_xxx/data are symlinks to the physical directories in /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. If the UpdateMedia daemon locates the file: /home/public/data/audio/Generic Internal Drive [50]/The Beatles/Let it be.mp3, that file will be listed on every Media Station, too.