http://wiki.linuxmce.org/api.php?action=feedcontributions&user=Rwilson131&feedformat=atomLinuxMCE - User contributions [en]2024-03-19T02:37:38ZUser contributionsMediaWiki 1.24.1http://wiki.linuxmce.org/index.php?title=Web_Orbiter&diff=19371Web Orbiter2009-06-11T17:50:04Z<p>Rwilson131: /* From within your home */</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
[[Category: Orbiters]]<br />
[[Category: Hardware]]<br />
[[Category: Tutorials]]<br />
<br />
A Web Orbiter is any device (such as a laptop, PC, etc.) that accesses the Orbiter user interface (UI) through a Web browser. <br />
<br />
== Setup ==<br />
The procedure to setup a Web Orbiter is simple but the order of steps is important.<br />
#First of all, add a new Generic Web Device as a Child Device for your Core:<br />
##Goto the LinuxMCE Admin website-->Show devices tree-->CORE. The CORE's detail page should appear.<br />
##Click 'Create Child Device'.<br />
##In the Add child device window, click the button 'Pick device template'. The new pop-up window contained device templates will be opened.<br />
##In the 'Device Category' dropdown list, choose 'Peripherals'.<br />
##In the 'Device Template' dropdown list, find and select "Generic Web Device" (or just type the template id: 1748 and press go).<br />
##Click the button 'Pick Device Template'. The Add Child Device Window will close, and the Generic Web Device will be added to the Core, as the updated Device Tree will show.<br />
##A new Generic Proxy Orbiter will also be created automatically. Watch the Orbiter generation process on the Orbiters page: Wizard-->Devices-->Orbiters.<br />
#Wait till the Orbiter generation procedure finishes. A message on an active Orbiter or on the Orbiter page will indicate when it has completed.<br />
#Do a "[[Quick reload router]]". Otherwise, the Orbiter won't work properly.<br />
<br />
==Access to the Web Orbiter==<br />
<br />
===From within your home===<br />
You can access the Web Orbiter from any web browser (Mozilla Firefox, IE, Safari):<br />
<br />
'''If you are currently using the 810 alpha releases the correct URL is:'''<br />
''<nowiki>http://&lt;core_ip&gt;/lmce-admin/weborbiter.php</nowiki>''<br />
<br />
'''The current release 710 uses the information below.'''<br />
<br />
*In the browser address bar, type the URL ''<nowiki>http://&lt;core_ip&gt;/pluto-admin/weborbiter.php</nowiki>''.<br />
:* From within the "internal" LinuxMCE LAN, for example: <br />
::::''http://192.168.80.1/pluto-admin/weborbiter.php''<br />
:::::(This assumes the IP address range set by default at installation.)<br />
:*You can also use the network name of the Core in place of the IP address. For example, if the Core was named "dcerouter" during the default installation, you could use:<br />
::::''<nowiki>http://dcerouter/pluto-admin/weborbiter.php</nowiki>''<br />
:*From the "external" home LAN, the core_ip would be the LAN IP address of the core. If, for example, the core is at 192.168.0.50 on the home LAN, use:<br />
:::: ''<nowiki>http://192.168.0.50/pluto-admin/weborbiter.php</nowiki>''<br />
<br />
:::::(Note: To use this method, [[Outside Access]] must be enabled.)<br />
<br />
===From the Internet===<br />
You could use the IP address:port for your home LAN, with port forwarding to the Core's LAN IP address (enabled by your home LAN router). <br />
*''This is an advanced topic and may not be secure in the current version.''.<br />
<br />
By default, LinuxMCE is not accessible outside your home. This makes the system secure, but it prevents you from accessing the web site via the Internet while away from home. You can [[Outside_Access|turn on Internet access]], allowing access to the admin website anywhere. For your own security, however, we recommend you first read about [[Security & Privacy Issues]].<br />
<br />
===Login page===<br />
*A simple login page should be displayed. Input an existing user name and password, then click "Login".<br />
*From the dropdown list of devices, choose Generic Web Device.<br />
*A page that looks similar to this should appear: [[Image:Web Orbiter.jpg|center]]<br />
<br />
==Troubleshooting==<br />
===Connect failed===<br />
If you try to connect to the Web Orbiter and see this message:<br />
<code>"Connect to proxy orbiter failed, please try again"</code>, <br />
this means that Orbiter generation hasn't finished yet, or that you forgot to do a [[Quick_reload_router|quick restart of the router]].<br />
<br />
=== Size ===<br />
I was able to change the size of the rendered image in the Wizard-->Orbiters page. Find the Web Orbiter device in the list and resize it. After another orbiter regen, it was the right size for me. (''Source http://forum.linuxmce.org/index.php?topic=3833.0'')<br />
<br />
=== Problems with rapid refresh rate ===<br />
<br />
Problem:<br />
When using the Web Orbiter over the Internet (instead of from within my home LAN), it refreshed every 5 seconds, making it difficult to use. The images were repeatedly downloaded each time.<br />
<br />
Solution:<br />
*Go to [[LinuxMCE Admin Website]]-->Device tree-->CORE-->Generic Web Device-->Device Data <br />
*Set the Refresh Interval to a higher value (I used 60 seconds for mine).<br />
<br />
=== Changing default room ===<br />
Changing the default room in the Wizard-->Devices-->Orbiters page has no effect.<br />
<br />
Solution:<br />
*Go to [[LinuxMCE Admin Website]]-->Device tree-->CORE-->Generic Web Device<br />
*Check the box for the room to control</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Web_Orbiter&diff=19370Web Orbiter2009-06-11T17:49:08Z<p>Rwilson131: Undo revision 19368 by WhateverFits (Talk)</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
[[Category: Orbiters]]<br />
[[Category: Hardware]]<br />
[[Category: Tutorials]]<br />
<br />
A Web Orbiter is any device (such as a laptop, PC, etc.) that accesses the Orbiter user interface (UI) through a Web browser. <br />
<br />
== Setup ==<br />
The procedure to setup a Web Orbiter is simple but the order of steps is important.<br />
#First of all, add a new Generic Web Device as a Child Device for your Core:<br />
##Goto the LinuxMCE Admin website-->Show devices tree-->CORE. The CORE's detail page should appear.<br />
##Click 'Create Child Device'.<br />
##In the Add child device window, click the button 'Pick device template'. The new pop-up window contained device templates will be opened.<br />
##In the 'Device Category' dropdown list, choose 'Peripherals'.<br />
##In the 'Device Template' dropdown list, find and select "Generic Web Device" (or just type the template id: 1748 and press go).<br />
##Click the button 'Pick Device Template'. The Add Child Device Window will close, and the Generic Web Device will be added to the Core, as the updated Device Tree will show.<br />
##A new Generic Proxy Orbiter will also be created automatically. Watch the Orbiter generation process on the Orbiters page: Wizard-->Devices-->Orbiters.<br />
#Wait till the Orbiter generation procedure finishes. A message on an active Orbiter or on the Orbiter page will indicate when it has completed.<br />
#Do a "[[Quick reload router]]". Otherwise, the Orbiter won't work properly.<br />
<br />
==Access to the Web Orbiter==<br />
<br />
===From within your home===<br />
You can access the Web Orbiter from any web browser (Mozilla Firefox, IE, Safari):<br />
<br />
'''If you are currently using the 810 alpha releases the correct URL is:<br />
''<nowiki>http://&lt;core_ip&gt;/lmce-admin/weborbiter.php</nowiki>''<br />
The current release 710 uses the information below.'''<br />
<br />
*In the browser address bar, type the URL ''<nowiki>http://&lt;core_ip&gt;/pluto-admin/weborbiter.php</nowiki>''.<br />
:* From within the "internal" LinuxMCE LAN, for example: <br />
::::''http://192.168.80.1/pluto-admin/weborbiter.php''<br />
:::::(This assumes the IP address range set by default at installation.)<br />
:*You can also use the network name of the Core in place of the IP address. For example, if the Core was named "dcerouter" during the default installation, you could use:<br />
::::''<nowiki>http://dcerouter/pluto-admin/weborbiter.php</nowiki>''<br />
:*From the "external" home LAN, the core_ip would be the LAN IP address of the core. If, for example, the core is at 192.168.0.50 on the home LAN, use:<br />
:::: ''<nowiki>http://192.168.0.50/pluto-admin/weborbiter.php</nowiki>''<br />
<br />
:::::(Note: To use this method, [[Outside Access]] must be enabled.)<br />
<br />
===From the Internet===<br />
You could use the IP address:port for your home LAN, with port forwarding to the Core's LAN IP address (enabled by your home LAN router). <br />
*''This is an advanced topic and may not be secure in the current version.''.<br />
<br />
By default, LinuxMCE is not accessible outside your home. This makes the system secure, but it prevents you from accessing the web site via the Internet while away from home. You can [[Outside_Access|turn on Internet access]], allowing access to the admin website anywhere. For your own security, however, we recommend you first read about [[Security & Privacy Issues]].<br />
<br />
===Login page===<br />
*A simple login page should be displayed. Input an existing user name and password, then click "Login".<br />
*From the dropdown list of devices, choose Generic Web Device.<br />
*A page that looks similar to this should appear: [[Image:Web Orbiter.jpg|center]]<br />
<br />
==Troubleshooting==<br />
===Connect failed===<br />
If you try to connect to the Web Orbiter and see this message:<br />
<code>"Connect to proxy orbiter failed, please try again"</code>, <br />
this means that Orbiter generation hasn't finished yet, or that you forgot to do a [[Quick_reload_router|quick restart of the router]].<br />
<br />
=== Size ===<br />
I was able to change the size of the rendered image in the Wizard-->Orbiters page. Find the Web Orbiter device in the list and resize it. After another orbiter regen, it was the right size for me. (''Source http://forum.linuxmce.org/index.php?topic=3833.0'')<br />
<br />
=== Problems with rapid refresh rate ===<br />
<br />
Problem:<br />
When using the Web Orbiter over the Internet (instead of from within my home LAN), it refreshed every 5 seconds, making it difficult to use. The images were repeatedly downloaded each time.<br />
<br />
Solution:<br />
*Go to [[LinuxMCE Admin Website]]-->Device tree-->CORE-->Generic Web Device-->Device Data <br />
*Set the Refresh Interval to a higher value (I used 60 seconds for mine).<br />
<br />
=== Changing default room ===<br />
Changing the default room in the Wizard-->Devices-->Orbiters page has no effect.<br />
<br />
Solution:<br />
*Go to [[LinuxMCE Admin Website]]-->Device tree-->CORE-->Generic Web Device<br />
*Check the box for the room to control</div>Rwilson131http://wiki.linuxmce.org/index.php?title=LinuxMCE_Admin_Website&diff=18069LinuxMCE Admin Website2009-03-22T13:36:55Z<p>Rwilson131: /* From within your home */ Outside access is to enable remote connection from the Developers. This has nothing to do with the web services running on the core. This is working as expected!</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
''<center><small>If you were directed here from your Admin page, see the [[:Help:Contents|Help section]].</small></center>''<br />
The LinuxMCE Admin web site is used to setup and configure your LinuxMCE system. It also allows you to do a lot of other tasks, such as to check your voice-mail, organize your media, etc. The web site runs on the LinuxMCE Core. You can access it from the Core web browser, or from any other computer connected to the network. <br />
<br />
==Access to the LinuxMCE Admin Website==<br />
===From a Core or Media Director desktop===<br />
A button is available on the [[Launch Manager]] that is displayed on a Core or Media Director desktop:<br />
* ''Open admin website''<br />
<br />
===From within your home===<br />
You can access the LinuxMCE Admin website from any web browser (Mozilla Firefox, IE, Safari):<br />
<br />
*In the browser address bar, type the URL ''<nowiki>http://&lt;core_ip&gt;/pluto-admin</nowiki>''.<br />
* From within the "internal" LinuxMCE LAN, for example: <br />
**''<nowiki>http://192.168.80.1/pluto-admin</nowiki>''<br />
***(This assumes the IP address range set by default at installation.)<br />
<br />
*You can also use the network name of the Core in place of the IP address. For example, if the Core was named "dcerouter" during the default installation, you could use:<br />
**''<nowiki>http://dcerouter/pluto-admin</nowiki>''<br />
<br />
*From the "external" home LAN, the core_ip would be the LAN IP address of the core. If, for example, the core is at 192.168.0.50 on the home LAN, use:<br />
**''<nowiki>http://192.168.0.50/pluto-admin</nowiki>''<br />
<br />
===From the Internet===<br />
You could use the IP address:port for your home LAN, with port forwarding to the Core's LAN IP address (enabled by your home LAN router). <br />
*''This is an advanced topic and may not be secure in the current version.''.<br />
<br />
By default, the LinuxMCE Admin web site is not accessible outside your home. This makes the system secure, but it prevents you from accessing the web site via the Internet while away from home. You can [[Outside_Access|turn on Internet access]], allowing access to the admin website anywhere. For your own security, however, we recommend you first read about [[Security & Privacy Issues]].<br />
<br />
===Login page===<br />
*The login page should be displayed. Input an existing user name and password, then click "Login".<br />
<br />
=LinuxMCE Admin Website Sections=<br />
<br />
==Admin page structure==<br />
LinuxMCE is a modular platform with a wide variety of optional modules and devices. Generally, each module will have one or more web pages to configure when using that module. The LinuxMCE Admin web site has a pull-down menu that lets you quickly access any of those pages. The menu options for each particular home will be unique, depending on the configuration.<br />
<br />
Two menu options will always be displayed.<br />
<br />
*The ''[[Wizard Pages|Wizard]]'' is the commonly used way to configure and setup your LinuxMCE system. When you choose Wizard, you will see a series of steps that depends on what devices you have installed in your home. The pages in the Wizard section are intended to be simple for the average user. Context-sensitive help is provided through a "Help" button.<br />
<br />
*There are more low level options under the ''Advanced'' option.<br />
<br />
==Wizard==<br />
*[[Wizard Pages]]<br />
===[[Basic Info]]===<br />
*[[Installation]]<br />
*[[Users]]<br />
*[[Rooms]]<br />
*[[Keyboard Layout]]<br />
===[[Devices]]===<br />
*Core<br />
*[[Interfaces]]<br />
*[[AV Devices| A/V Equipment]]<br />
*[[Media Directors]]<br />
*[[Orbiters]]<br />
*[[Lights]]<br />
*[[Climate]]<br />
*[[Irrigation Devices]]<br />
*[[Devices Security | Security]]<br />
*[[Surveillance Cameras]]<br />
*[[Phone Extensions| Phones]]<br />
*[[Phone Lines]]<br />
*[[Generic Serial Devices]]<br />
*[[Floorplans |Floorplan Wizard]]<br />
===[[Scenarios]]===<br />
*[[Lighting Scenarios]]<br />
*[[Media Scenarios]]<br />
*[[Climate Scenarios]]<br />
*[[Irrigation Scenarios]]<br />
*[[Security Scenarios]]<br />
*[[Telecom Scenarios]]<br />
*[[Mobile Orbiter Scenarios]]<br />
*[[Sleeping Scenarios]]<br />
<br />
===[[Events | Events Handler]]===<br />
*[[Respond to Events]]<br />
*[[Timed Events]]<br />
===Security===<br />
*[[Settings By Alert Type]]<br />
*[[Active sensors]]<br />
*[[Security-Video Links]]<br />
*[[Notifications| Cellphone Notifications]]<br />
*[[Outside Access]]<br />
===[[Restart]]===<br />
<br />
==Advanced==<br />
===Software===<br />
*[[Add Software]]<br />
*[[Software Versions]]<br />
*[[Boot Sequence]]<br />
*[[Packages]]<br />
<br />
===Network===<br />
*[[Network Settings]]<br />
*[[Firewall Rules]]<br />
*[[WAP/GPRS Settings]]<br />
*[[Dynamic DNS Settings]]<br />
<br />
===Configuration===<br />
* [[Advanced Pages Devices| Devices]]<br />
* Unknown Devices<br />
* [[Device Templates]]<br />
** [[Edit Device Template]]<br />
* Device Category Device Data<br />
* [[Advanced Pages Scenarios | Scenarios]]<br />
* [[Advanced Pages Events | Events]]<br />
* [[Phones Setup]]<br />
* [[Backup and Restore | Backups]]<br />
* [[Create_RAID_in_LMCE#Creating_RAID| RAID]]<br />
<br />
===[[Privacy Settings]]===<br />
* [[Users#Users and Orbiters|Users-Orbiters]]<br />
* [[Users#Users and Rooms|Users-Rooms]]<br />
* [[Users#Restrict Access|Restrict Access]]<br />
<br />
===sqlCVS===<br />
* Update<br />
* Checkin<br />
* Diff<br />
* View Batch<br />
<br />
===[[DCE]]===<br />
* Device Data<br />
* Commands<br />
* Events<br />
<br />
==Automation==<br />
*[[Device Status]]<br />
*[[Execute Scenarios]]<br />
==Security==<br />
*[[Alert Logs]]<br />
*[[Mode Change Logs]]<br />
*[[Status]]<br />
*[[View Cameras]]<br />
==Files&Media==<br />
* Media Browser<br />
* [[Media Files Sync]]<br />
* Playlist<br />
* Media Providers<br />
* Bookmarks<br />
* [[Cover Art]]<br />
* Ripping Status<br />
<br />
==Telecom==<br />
* My Voicemail<br />
* General Voicemail<br />
* Phone book<br />
* Call Routing<br />
* Priority Callers<br />
* Callers for me<br />
<br />
The following is leftover from another page:<br />
<br />
==Adding custom entries in LinuxMCE Admin menus==<br />
<br />
Currently only option is to enter entries into Pluto_main database, table PageSetup. There you'll find other entries already, go to the end and add yours (but be careful not to break anything and also save your changes, cause they can probably lost in migration or updates - not sure)...<br />
<br />
Anyway for simple test I've created two entries: "Tinia" as main menu entry (after Telecom) and then subentry for phpmyadmin that I frequently use. If I highlight only important fields, my entries look like this :<br />
<br />
'''PK_PageSetup FK_..._Parent Website OrderNum FK_Package Description pageURL showInTopMenu'''<br />
190 NULL 1 70 NULL Tinia 1 <br />
191 190 1 0 NULL PHPMyAdmin http://192.168.0.1/phpmyadmin/ 1<br />
<br />
If FK_PageSetup_Parent is empty, then you'll have main entry on green main bar. If you want subentry, then you just specify PK_PageSetup of your parent in FK_PageSetup_Parent. You can also add URL</div>Rwilson131http://wiki.linuxmce.org/index.php?title=User_Management_Scripts&diff=17692User Management Scripts2009-02-18T21:34:25Z<p>Rwilson131: /* SetupUsers_Homes.sh */</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
==SetupUsers.sh==<br />
* Call /usr/pluto/bin/SetupUsers_Homes.sh script: see below<br />
* Creates user voicemenu by calling:<br />
/usr/pluto/bin/generate_users_voicemenu.pl<br />
===Log Location===<br />
/var/log/pluto/SetupUsers_Homes.log<br />
==SetupUsers_Homes.sh==<br />
* Adds a LinuxMCE user to the system setting up a home user directory /home/user_* and adding the LinuxMCE subdirectories. <br />
* Creates samba share<br />
* Creates permissions for newly created directories.<br />
* UpdateMediaDeamon is enabled and disables via the following script: <br />
/usr/pluto/bin/[[UpdateMediaDaemonControl.sh]]<br />
===Log Location===<br />
/var/log/pluto/SetupUsers_Homes.log<br />
<br />
==RemoveUser.sh==<br />
Removes a LinuxMCE user from the linux system users. This script is executed from the LinuxMCE web-admin interface before the LinuxMCE user is removed from the databases.<br />
RemoveUser.sh [OPTIONS] <LinuxMCEUserID><br />
-d delete home directory<br />
-a delete all files owned by user<br />
-b[=DIR] create at backup of user files before deleting them and place it in<br />
the DIR directory. If no DIR is specified the backup should be placed<br />
/tmp directory<br />
<br />
<br />
<br />
[[Category: LinuxMCEBashScripts]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=UpdateMediaDaemonControl.sh&diff=17620UpdateMediaDaemonControl.sh2009-02-08T19:46:42Z<p>Rwilson131: /* Format */</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
[[Category:LinuxMCEBashScripts]]<br />
==Description== <br />
This script will control the daemon for UpdateMedia plugin. <br />
==Location==<br />
/usr/pluto/bin/<br />
==Used By==<br />
/usr/pluto/bin/SetupUsers_Home.sh <br />
==Format== <br />
UpdateMediaDaemonControl.sh [ -enable | -disable | -status ]<br />
* Calls /usr/pluto/bin/UpdateMediaDaemon.sh<br />
<br />
==Known Issues==</div>Rwilson131http://wiki.linuxmce.org/index.php?title=UpdateMediaDaemonControl.sh&diff=17619UpdateMediaDaemonControl.sh2009-02-08T19:46:11Z<p>Rwilson131: added new page</p>
<hr />
<div> {| align="right"<br />
| __TOC__<br />
|}<br />
[[Category:LinuxMCEBashScripts]]<br />
==Description== <br />
This script will control the daemon for UpdateMedia plugin. <br />
==Location==<br />
/usr/pluto/bin/<br />
==Used By==<br />
/usr/pluto/bin/SetupUsers_Home.sh <br />
==Format== <br />
UpdateMediaDaemonControl.sh [ -enable | -disable | -status ]<br />
* Calls /usr/pluto/bin/UpdateMediaDeamon.sh <br />
==Known Issues==</div>Rwilson131http://wiki.linuxmce.org/index.php?title=User_Management_Scripts&diff=17618User Management Scripts2009-02-08T19:33:06Z<p>Rwilson131: added additional bash scripts used in User Management</p>
<hr />
<div> {| align="right"<br />
| __TOC__<br />
|}<br />
==SetupUsers.sh==<br />
* Call /usr/pluto/bin/SetupUsers_Homes.sh script: see below<br />
* Creates user voicemenu by calling:<br />
/usr/pluto/bin/generate_users_voicemenu.pl<br />
===Log Location===<br />
/var/log/pluto/SetupUsers_Homes.log<br />
==SetupUsers_Homes.sh==<br />
* Adds a LinuxMCE user to the system setting up a home user directory /home/user_* and adding the LinuxMCE subdirectories. <br />
* Creates samba share<br />
* Creates permissions for newly created directories.<br />
* UpdateMediaDeamon is enabled and disables via the following script: <br />
/usr/pluto/bin/UpdateMediaDaemonControl.sh<br />
===Log Location===<br />
/var/log/pluto/SetupUsers_Homes.log<br />
==RemoveUser.sh==<br />
Removes a LinuxMCE user from the linux system users. This script is executed from the LinuxMCE web-admin interface before the LinuxMCE user is removed from the databases.<br />
RemoveUser.sh [OPTIONS] <LinuxMCEUserID><br />
-d delete home directory<br />
-a delete all files owned by user<br />
-b[=DIR] create at backup of user files before deleting them and place it in<br />
the DIR directory. If no DIR is specified the backup should be placed<br />
/tmp directory<br />
<br />
<br />
<br />
[[Category: LinuxMCEBashScripts]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Telecom_Features&diff=17617Telecom Features2009-02-08T18:59:17Z<p>Rwilson131: </p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
<br />
[[Category:Telecom]]<br />
This tries to be a complete list of LinuxMCE's telecom features. I will try to describe the feature, how to use it and few implementation details.<br />
<br />
== Hard phones plug&play ==<br />
Allows the user to simply plug the phone into the network, it should be be detected and automatically configured.<br />
:Note : To each phone an ''extension'' is assigned : a small 3 digit number usually in range 200-299. Please don't try to change it unless you know what are you doing.<br />
=== How to use it ===<br />
Plug the phone (reboot it or reset it if needed), in few seconds on [[Orbiter]] you'll see something like <br />
New device MAC XX:XX:XX:XX:XX:XX was found<br />
Please choose device type<br />
And you are presented with a datagrid with all device templates that matches MAC range of that specific device. After you select it will present you a screen to select room in which that device should be added. After selection wait few seconds while device is configured, then you'll see a screen telling you that device is ready to use after a quickreload.<br />
=== Technical details ===<br />
First few steps are handled by [[Dhcpd-plugin]] so please read there. Then it comes to calling the configuration script.<br />
<br />
The configuration script needs 6 command line parameters : '''-d DEVICE_ID -i DEVICE_IP -m DEVICE_MAC'''. Check one of ''/usr/pluto/bin/configure_*.pl'' to see how it's done.<br />
<br />
The script usually will call another script ''/usr/pluto/bin/sync_pluto2amp.pl'' which will allocate a new extension to the phone and will submit few pages in AMP to create proper asterisk configuration for the phone.<br />
<br />
Then it comes device specific stuff, it may:<br />
* submit some pages on phone's '''web interface''' (Snom, GrandStream)<br />
* create some files in '''/tftpboot''' (Cisco)<br />
* '''other ways''' (like running iaxyprov to setup IAXy)<br />
<br />
== Easy phoneline creation ==<br />
When you sign up with a voip provider it usually gives you following details : ''UserName'', ''Password'', ''PhoneNumber'', ''HostToConnect''. Using this data you may create a working phoneline in few seconds.<br />
:Note : sometimes ''UserName'' is same with ''PhoneNumber'', but not always, sometimes you may have one username/password to connect to provider's website (billing, support, call history) and OTHER pair of username/password to actually use the service. Be careful which one you use.<br />
<br />
=== How to use it ===<br />
Go to Users > Devices > Phone Lines. <br />
<br />
It's a good idea before adding any phone line to fill the data in local prefixes section, like in this image. Filling it after phone line creation is useless, because that configuration can not be easily changed. You'll have to delete and recreate the phone line to make local numbers work.<br />
<br />
[[Image:Local_prefixes.png]]<br />
<br />
Select one of the providers (there are no 'fit them all' settings so there is a script to set up each provider, you are free to add more, just make sure that webpage is changed accordingly)<br />
<br />
Fill the fields with your data and submit the page. The phone line should be set almost immediately, if everything is correct, there are no payment problems and the network is ok, then you can make calls right away. (for troubleshooting please read [[Asterisk-LinuxMCE#Troubleshooting|asterisk]] documentation)<br />
<br />
=== Technical details ===<br />
On submit a script is called with at least 3 parameters '''UserName Password PhoneNumber [ Host [ LinePrefix ] ]'''. ''Host'' is optional, it will be set to host assigned for existing VoIP accounts, new account may be assigned to other server. ''Line prefix'' is the prefix for dialing to outside, it's '9' by default.<br />
<br />
Just check one of ''/usr/pluto/bin/create_amp_*.pl'' too see more details. As a main idea the script simply submits several pages in AMP web interface (creating a '''Trunk''', an '''Incoming Route''' and an '''Outgoing Route''').<br />
<br />
* For creation of the trunk we use all data provided to the script.<br />
* For incoming route usually ''PhoneNumber'' is used. Incoming call will be routed to special asterisk context '''from-LinuxMCE-custom''' which will be explained in [[LinuxMCE_telecom_features#Phoneline_call_routing | Phoneline call routing]]<br />
* For outgoing route we use trunk number (from first step), local prefixes data submitted before line creation.<br />
<br />
The parameters for trunk creation differ a lot between providers. The script we have will create a working configuration, it may not be optimal, some are just hacks to allow proper call routing, but it worked last time we checked.<br />
<br />
== Make and receive calls ==<br />
Even before creating phoneline you already can call from/to any LinuxMCE phone added to installation. This includes hardphones, softphones and as a special case of softphone any [[MediaDirector]], more specifically [[SimplePhone]] running on that media director.<br />
<br />
If phoneline is added than you can call anywhere you service plan allows. <br />
If you set local prefix like in picture from previous section, than you also can just dial 3372199 to actually dial 919543372199.<br />
<br />
For international calls usually you have to dial 9(dial out)+011(international)+40(Romania)+332(IasiRDS)+402618<br />
:(this is true for US providers only, for European providers to dial internationally you need 00)<br />
<br />
=== How to use it ===<br />
From a hard phone just dial the extension of the other phone and it will ring.<br />
<br />
From a MD, go to Telecom > Dial Direct, then enter the number, select from which device to place the call or simply press "place call from here". If you are trying to place fall from anything but a [[SimplePhone]], it will ring you'll have to pick it up, and after that it will dial the number you entered.<br />
<br />
=== Technical details ===<br />
If the call is initiated without orbiter's help (like from hard phone), than the call it's simply routed by asterisk to local extension or outside number.<br />
<br />
Otherwise a PL_Originate command is sent to [[Telecom_Plugin]] which will send CMD_Phone_Initiate if you are trying to place a call from an [[SimplePhone|Orbiter's Embedded Phone]] or CMD_PBX_Originate to [[LinuxMCE-asterisk|Asterisk]] which will pass is to [[asterisk-LinuxMCE|asterisk]].<br />
<br />
== User call routing ==<br />
Each LinuxMCE user gets a telecom extension (like a virtual number) in range 301-399.<br />
<br />
Then he/she may setup a way to handle the call, like try to call phone in my room, then in kitchen, then ring several other phones, then send the call to voicemail. <br />
<br />
But if it's a ''priority caller'' then instead after trying the phone in the room will call directly on mobile. Also you may set different routes if you are at home, or sleeping, or away.<br />
=== How to use it ===<br />
Go to Telecom > CallRouting, you'll see for each user something like the image below.<br />
<br />
[[Image:User_routing_first.png]] <br />
<br />
Then you can set up for each usermode and each called type (normal or priority) what steps to make to reach you.<br />
<br />
[[Image:User routing second.png]]<br />
<br />
=== Technical details ===<br />
After submitting the second page the ''/usr/pluto/bin/create_pluto_dialplan.pl'' script is run which will query '''pluto_telecom :UserRouting''', and will create a dialplan according to your settings, which will be saved in ''/etc/asterisk/extensions_pluto_dial.conf''<br />
<br />
This is a fragment of generated file.<br />
exten => 301,1,AGI(pluto-getusermode.agi)<br />
exten => 301,2,Goto(301-um${USERMODE}-pri${PRIORITYCALLER},1)<br />
exten => 301,3,Hangup<br />
exten => 301-um1-pri0,1,Goto(301-um1-pri0-try1,1)<br />
exten => 301-um1-pri0-try1,1,Dial(Local/200@trusted,15)<br />
exten => 301-um1-pri0-try1,2,Goto(301-um1-pri0-try1-${DIALSTATUS},1)<br />
exten => 301-um1-pri0-try1,3,Hangup<br />
exten => 301-um1-pri0-try1-BUSY,1,Goto(301-um1-pri0-try2,1)<br />
exten => 301-um1-pri0-try1-NOANSWER,1,Goto(301-um1-pri0-try2,1)<br />
exten => 301-um1-pri0-try1-CONGESTION,1,Goto(301-um1-pri0-try2,1)<br />
exten => 301-um1-pri0-try1-CHANUNAVAIL,1,Goto(301-um1-pri0-try2,1)<br />
exten => 301-um1-pri0-try2,1,Dial(Local/201@trusted,15)<br />
exten => 301-um1-pri0-try2,2,Goto(301-um1-pri0-try2-${DIALSTATUS},1)<br />
exten => 301-um1-pri0-try2,3,Hangup<br />
exten => 301-um1-pri0-try2-BUSY,1,Goto(301-um1-pri0-try3,1)<br />
exten => 301-um1-pri0-try2-NOANSWER,1,Goto(301-um1-pri0-try3,1)<br />
exten => 301-um1-pri0-try2-CONGESTION,1,Goto(301-um1-pri0-try3,1)<br />
exten => 301-um1-pri0-try2-CHANUNAVAIL,1,Goto(301-um1-pri0-try3,1)<br />
exten => 301-um1-pri0-try3,1,Dial(Local/919543372199@trusted,15)<br />
exten => 301-um1-pri0-try3,2,Goto(301-um1-pri0-try3-${DIALSTATUS},1)<br />
exten => 301-um1-pri0-try3,3,Hangup<br />
exten => 301-um1-pri0-try3-BUSY,1,Goto(301-um1-pri0-try4,1)<br />
exten => 301-um1-pri0-try3-NOANSWER,1,Goto(301-um1-pri0-try4,1)<br />
exten => 301-um1-pri0-try3-CONGESTION,1,Goto(301-um1-pri0-try4,1)<br />
exten => 301-um1-pri0-try3-CHANUNAVAIL,1,Goto(301-um1-pri0-try4,1)<br />
You will see a lot of '''Local/ @trusted''' numbers. Using this channel will allow you not to care about specific technology (like SIP, IAX2, SCCP or ZAP)<br />
<br />
== Phoneline call routing ==<br />
Is somehow similar to user call routing, However it doesn't allow fail steps (so if the action specified fails, the call will be sent to mailbox). You'll have to select what to do on each housemode.<br />
=== How to use it ===<br />
Go to Wizard > Devices > PhoneLines and then click on '''Settings''' on phoneline you want, and set the route you want<br />
<br />
[[Image:Line_routing.png]]<br />
<br />
=== Technical details ===<br />
The same script which generates [[LinuxMCE_telecom_features#User_call_routing|user call routes]] also generates phone line routing. For fill this part of it looks into '''pluto_telecom : Line_HouseMode'''<br />
<br />
This is a sample of that can be done:<br />
exten => 100,1,VoiceMail(100)<br />
exten => 100,2,Hangup<br />
exten => 102,1,AGI(pluto-gethousemode.agi)<br />
exten => 102,2,Goto(102-hm${HOUSEMODE},1)<br />
exten => 102,3,Hangup<br />
exten => 102-hm1,1,Dial(Local/200@trusted&Local/201@trusted,15)<br />
exten => 102-hm1,2,Goto(102-hm1-${DIALSTATUS},1)<br />
exten => 102-hm1,3,Hangup<br />
exten => 102-hm1-BUSY,1,Goto(100,1)<br />
exten => 102-hm1-NOANSWER,1,Goto(100,1)<br />
exten => 102-hm1-CONGESTION,1,Goto(100,1)<br />
exten => 102-hm1-CHANUNAVAIL,1,Goto(100,1)<br />
exten => 102-hm2,1,Macro(vm,301)<br />
exten => 102-hm2,2,Goto(102-hm2-${DIALSTATUS},1)<br />
exten => 102-hm2,3,Hangup<br />
exten => 102-hm2-BUSY,1,Goto(100,1)<br />
exten => 102-hm2-NOANSWER,1,Goto(100,1)<br />
exten => 102-hm2-CONGESTION,1,Goto(100,1)<br />
exten => 102-hm2-CHANUNAVAIL,1,Goto(100,1)<br />
exten => 102-hm3,1,Dial(Local/200@trusted&Local/201@trusted,15)<br />
exten => 102-hm3,2,Goto(102-hm3-${DIALSTATUS},1)<br />
exten => 102-hm3,3,Hangup<br />
exten => 102-hm3-BUSY,1,Goto(100,1)<br />
exten => 102-hm3-NOANSWER,1,Goto(100,1)<br />
exten => 102-hm3-CONGESTION,1,Goto(100,1)<br />
exten => 102-hm3-CHANUNAVAIL,1,Goto(100,1)<br />
exten => 102-hm4,1,Macro(vm,301)<br />
exten => 102-hm4,2,Goto(102-hm4-${DIALSTATUS},1)<br />
exten => 102-hm4,3,Hangup<br />
exten => 102-hm4-BUSY,1,Goto(100,1)<br />
exten => 102-hm4-NOANSWER,1,Goto(100,1)<br />
exten => 102-hm4-CONGESTION,1,Goto(100,1)<br />
exten => 102-hm4-CHANUNAVAIL,1,Goto(100,1)<br />
exten => 102-hm5,1,Goto(voice-menu-pluto-custom,s,1)<br />
exten => 102-hm5,2,Goto(102-hm5-${DIALSTATUS},1)<br />
exten => 102-hm5,3,Hangup<br />
exten => 102-hm5-BUSY,1,Goto(100,1)<br />
exten => 102-hm5-NOANSWER,1,Goto(100,1)<br />
exten => 102-hm5-CONGESTION,1,Goto(100,1)<br />
exten => 102-hm5-CHANUNAVAIL,1,Goto(100,1)<br />
exten => 102-hm6,1,Dial(Local/919543373199@trusted,15)<br />
exten => 102-hm6,2,Goto(102-hm6-${DIALSTATUS},1)<br />
exten => 102-hm6,3,Hangup<br />
exten => 102-hm6-BUSY,1,Goto(100,1)<br />
exten => 102-hm6-NOANSWER,1,Goto(100,1)<br />
exten => 102-hm6-CONGESTION,1,Goto(100,1)<br />
exten => 102-hm6-CHANUNAVAIL,1,Goto(100,1)<br />
<br />
== Priority callers and callers for me ==<br />
This feature allows user to route differently calls coming from some numbers.<br />
<br />
'''Priority caller''' implies possibility of different routing when dialing a user.<br />
:For example your mother is a priority caller, you don't want to miss a call from her, because when she finally reaches you, you'll be in big trouble<br />
<br />
'''Caller for me''' will be redirected to user extension instead of playing voicemenu when "Prompt user to choose extension or user" is selected as an option for given housemode.<br />
:The call from your boss is a call for you and not for your wife. Your wife's boss is a caller for your wife and not for you.<br />
<br />
A caller for me will be treated as priority caller for me but the reverse is not true.<br />
:Meaning that call from your boss will be as special that the call from your mother (or you can be fired). But If your mother is calling, it doesn't always mean that she wants to talk with you, maybe she wants to speak with her grandchildren, but if she wants to talk to you, than she is treated as a priority caller.<br />
<br />
=== How to use it ===<br />
Go to Telecom > PriorityCallers and set priority callers for each user.<br />
<br />
Then go to Telecom > CallersForMe and set callers for each user.<br />
<br />
Pay attention how you set up those numbers, no checks are done if the same number is a 'caller for me' for more than one user.<br />
<br />
=== Technical details ===<br />
In dialplan we call ''pluto-getusermode.agi'' and ''pluto-callersforme.agi'' scripts which both are responsible to take care of call.<br />
The data is also stored in '''pluto_telecom''' database<br />
<br />
== Blind transfer of a call ==<br />
Allows you to redirect an ongoing call to another destination.<br />
<br />
=== How to use it ===<br />
When you are speaking on an [[SimplePhone|Orbiter's Emmbedded Phone]] you can simply press a button Transfer and select a device or a user or a outside number. In this case you'll hangup and the call will be redirected to destination choosed by you. It will call directly a device or outside number or will follow the user's routing.<br />
<br />
=== Technical details ===<br />
<br />
CMD_PL_Transfer is sent to [[Telecom_Plugin]] with ''bIsConference=false'' which will send CMD_PBX_Transfer to [[LinuxMCE-asterisk|Asterisk]] with exact extension (3xx for a user, 2xx for device). The Asterisk will send a ''redirect'' command to [[asterisk-LinuxMCE|asterisk]].<br />
<br />
If the call is already a conference call then it will continue to be conference call and you'll have to hangup manually.<br />
<br />
== Conference calls ==<br />
Allows you to have conference with many phones. <br />
<br />
It doesn't use asterisk's standard [http://www.voip-info.org/wiki-Asterisk+cmd+MeetMe MeetMe] because it needs a zaptel card for realtime clock. Instead we use [http://www.voip-info.org/wiki/index.php?page=Asterisk+cmd+conference app_conference] which is not standard, but works remarcably well.<br />
<br />
=== How to use it ===<br />
When you are speaking on an Orbiter's Emmbedded Phone you can simply press a button Conference and select a device or a user or a outside number. In this case you and your party will join in next available conference room, and the selected extention will join you into the conference.<br />
<br />
=== Technical details ===<br />
<br />
CMD_PL_Transfer is sent to [[Telecom_Plugin]] with ''bIsConference=true'' which will send CMD_PBX_Transfer to [[LinuxMCE-asterisk|Asterisk]]. The Asterisk will send a redirect command to [[asterisk-LinuxMCE|asterisk]] (so far very similar with transfer), but that redirect command will have an additional channel to allow both channels to enter conference room.<br />
<br />
Then [[Telecom_Plugin]] sends CMD_PL_External_Originate to invite the other party to join the conference room.<br />
<br />
== Join existing call ==<br />
Give you the possibility to join the existing conversation, practically putting it into a conference room and adding more phones to it.<br />
<br />
=== How to use it ===<br />
When there is an ongoing call you can see it by doing to telecom floor plan. Select ome or more devices and click in datagrid on the call you want to join. The call will be put into a conference room and selected devices will be invited to join it.<br />
<br />
=== Technical details ===<br />
Check CMD_PL_Join_Call in [[Telecom_Plugin]], is the one responsable for whole thing, practically it parses channels, devices deciding what devices are already in the call, and what need fo be added, and then <br />
* sends CMD_PL_Transfer with ''bIsConference=true'' if a conference need to be created<br />
* just invites new devices into the conference if the call is already a conference<br />
* do nothing if no new devices are selected<br />
<br />
Also by clicking on that datagrid you will bring up the call in progress screen on all [[SimplePhone]]s connected in that call.<br />
<br />
== Phonebook, speeddial ==<br />
Allows user to dial a number from phonebook and to define speed dial scenarios (like call mother from certain phone, by one click from orbiter)<br />
<br />
=== How to use it ===<br />
To add entries in phone book please go to Telecom > PhoneBook, add an entry there. Then on orbiter go to Phone > PhoneBook. Type first letters and select the contact you want to call.<br />
<br />
Speed dial can be found in Wizard > Scenarios -> TelecomScenarios. Add an entry there, regen all orbiters. then try to call by pressing the button in main telecom menu, or by selecting it from Phone > SpeedDial datagrid.<br />
<br />
:Note : A quick reload my be needed after adding entries and actually using them.<br />
<br />
Also is a good idea to check ''Dial As'' phone number. There is a kind of autocomplete when you are adding a new phonebook entry, but better safe than sorry :)<br />
<br />
=== Technical details ===<br />
No to much details, I wrote filling the SpeedDial datagrid and calling CMD_PL_Originate on click with right parameters.<br />
<br />
Speed dial from the orbiter is done somewhere else.<br />
<br />
Phone Book was already implemented and working.<br />
<br />
== Voice mail ==<br />
Asterisk have voicemail recording capability. We store voicemail for each user and also all 'outside' calls sent to voicemail will be stored in mailbox 100 which is default voicebox for the house. The problem usually is not the storage of voicemail, but actually the retrieval of the voicemail.<br />
<br />
=== How to use it ===<br />
As a linuxMCE user you have several ways to check your voicemail : <br />
* from any phone in the house dial "*98" followed by mailbox number (like "301") and access password (initially it's same "301"). Then you are presented to a voice menu which allows you to change password, listen to messages and so on.<br />
* from webpage go to Telecom > MyVoiceMail. Wou'll se an interface which allows you to check your voicemail<br />
* NOT COMPLETED : There should be an indicator about how many voicemails (new/old) a user have, and a datagrid which will alow to listen to voicemail from the orbiter.<br />
<br />
=== Technical details ===<br />
Voicemail is stored in ''/var/lib/asterisk/sounds/voicemail/default/XXX/INBOX/'', where XXX is mailbox number (same as extension). Old voicemail is moves from that path into ''.../Old/''.<br />
<br />
[[LinuxMCE-asterisk|Asterisk]] sends an event when voicemail count changes. [[Telecom_Plugin]] catches it, process a little and sends CMD_Set_Bound_Icon to all orbiters. Datagrid is implemented but I never tested it. It will use same web interface to allow playing messages on any MD.<br />
<br />
: Need to know : [[asterisk-LinuxMCE|asterisk]] creates voicemail files with bad permissions (asterisk:asterisk), so ''asterisk_keep_running.pl'' will show voicemail once in about a minute to asterisk:www-data. So it's not good idea to check voicemail from web interface immediately after the message was left.<br />
[[Category: Programmer's Guide]]<br />
[[Category: Tutorials]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=User_talk:Rthuey&diff=17386User talk:Rthuey2009-01-26T05:12:15Z<p>Rwilson131: </p>
<hr />
<div>Please use the Show Preview option when updating pages. You have more changes than you have text of your page. This preview allows you to see the new changes and still have the option to make additional changes as needed. --[[User:Rwilson131|Rwilson131]] 05:34, 26 January 2009 (CET)<br />
<br />
is that bad? or unecessary something<br />
:Unnecessary, is more like it. It is much harder to follow along with the recent changes if there are a ton of minor changes to look at. Also, you can select the Minor edit to be set be default from Preferences->Edit, which well tell people that the changes are minor. --[[User:Rwilson131|Rwilson131]] 06:12, 26 January 2009 (CET)</div>Rwilson131http://wiki.linuxmce.org/index.php?title=User_talk:Itsmeok&diff=17384User talk:Itsmeok2009-01-26T04:38:17Z<p>Rwilson131: Request to use Show Preview Button and Minor Edits</p>
<hr />
<div>Please use the Show Preview option when updating pages. This preview allows you to see the new changes and still have the option to make additional changes as needed. Also under Preferences->Edit, you have the option to check edits as minor by default. Please check this box, it makes it easier to follow along with updated information. Thanks --[[User:Rwilson131|Rwilson131]] 05:38, 26 January 2009 (CET)</div>Rwilson131http://wiki.linuxmce.org/index.php?title=User_talk:Rthuey&diff=17383User talk:Rthuey2009-01-26T04:34:30Z<p>Rwilson131: Request to use Show Preview Button</p>
<hr />
<div>Please use the Show Preview option when updating pages. You have more changes than you have text of your page. This preview allows you to see the new changes and still have the option to make additional changes as needed. --[[User:Rwilson131|Rwilson131]] 05:34, 26 January 2009 (CET)</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Lights&diff=16554Lights2008-12-06T19:13:44Z<p>Rwilson131: </p>
<hr />
<div>[[Image:Lights.jpg|thumb|250px|Lights Page Admin Website]]Here you will add all the lights in your home. Note by lights we mean the actual light switches--not the lighting control system. The lighting control system ([[Lutron]], [[Insteon]], [[X10]], [[Z-Wave]] etc.) is added on the interface page first. Then you add the actual lights here. You can have a mix of systems ([[Z-Wave]] and [[X10]], for example). For whatever interfaces you added, you will be able to add the lights here. Blinds, drapes and motorized shutters are also treated as lights.<br />
<br />
The Controlled VIA selection is where you choose what lighting control system is controlling this light. You will also have to supply parameters specific to your type of lighting system, such as the house code for X10 devices, or the Channel for Lutron Radio RA. You could also add generic relay-type devices here that use an interface module like the gc100.<br />
<br />
Port/Channel Number is your X10 house code and address. For example, B3 would be house code "B" and light "3". No spaces, quotes, or commas are needed.<br />
<br />
==Additional Information==<br />
* [[Lighting Scenarios]]<br />
* [[Advanced Lighting Settings]]<br />
* [[Have my lighting or climate settings follow me]]<br />
* [[Control lights/climate using scenarios]]<br />
* [[Control lights or climate with a floorplan]]<br />
[[Category: Admin Website]]<br />
[[Category: Lighting]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Control_lights_or_climate_with_a_floorplan&diff=16553Control lights or climate with a floorplan2008-12-06T19:12:53Z<p>Rwilson131: added links</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
[[Image:Floorplan.jpg|thumb|250px|Floorplan Wizard Page Admin Website]]<br />
==How to set it up==<br />
<br />
Create floorplans for your house using a paint program. Make them roughly square around 1,200 x 1,200 pixels--it can be smaller but then OrbiterGen will have to stretch them for high-res displays and they may not look as good. Save them as jpg or png. You can have as many floorplans as you want. For a big house you could create one floorplan that includes the whole house, called "Overview" on which you place only major objects, and then close-up floorplans like "North wing" for more detail. There are no limits or rules. Then in [[LinuxMCE Admin Website]] go to '''Wizard->Devices->[[Floorplans|Floorplan Wizard]]'''. Click "Add floorplan" and add all the floorplans using the 'browse' button to pick the images. Then use the 2 pull-downs on the floorplan wizard to pick a floorplan, and a type (Lighting, Climate, etc.). Lights, blinds and drapes appear on the Lighting floorplan. Heaters, air conditioners, pool, jacuzzi and sprinklers appear on the Climate floorplan. Drag and drop the devices to indicate their position on the floorplans. To remove a device from a floorplan, drag it back off the floorplan. Note that what icon appears to represent the device is chosen on the Wizard, Devices, Lights/Climate pages in the Floorplan Object Type pulldown. You will need Regen the orbiters UI on Wizard, Devices, Orbiters to see the floorplans<br />
<br />
==How to use it==<br />
Choose one of the floorplan buttons from any Orbiter. There are: Lighting, Media, Climate, Telecom and Security floorplans. With the standard UI and skin, these will be the five buttons on the left side of the Orbiter's main menu. When the floorplan appears you can select another floorplan, or view you want, like "Overview" and "North wing" in our example. You will see all the devices as you laid them out when you set it up. Touch any device to see a pop-up with the commands you can send the device, such as "On", "Off", "50%", etc.<br />
<br />
You can touch other devices to select them too. Then touching a command, like On, will send that command to all the devices. If you touch the same device again you will toggle through the selections of all the "Device Groups" that device belongs to, and finally un-select the device. For example, let's assume you have a light "Front Porch". You create a Device Group in [[LinuxMCE Admin Website]] called "Outdoor devices" which includes all outdoor devices, like the pool and all outdoor lights. You create another device group called "Front yard Lights" that has just the lights in the front yard. This light, "Front Porch", is a member of both groups. So the first time you touch the "Front Porch" on the floorplan it will be selected alone. The second time all other lights in the group "Outdoor devices" will be selected. The third time all lights in the group "Front yard Lights". The fourth time nothing will be selected. This allows you to create groups containing many devices you normally control all at once so you don't need to select them one at a time on the floorplan.<br />
<br />
==Programmer's guide==<br />
==Additional Information==<br />
* [[Lighting Scenarios]]<br />
* [[Advanced Lighting Settings]]<br />
* [[Have my lighting or climate settings follow me]]<br />
* [[Control lights/climate using scenarios]]<br />
<br />
[[Category: Automation]]<br />
[[Category: Programmer's Guide]]<br />
[[Category: Tutorials]]<br />
[[Category: Lighting]]<br />
[[Category: Climate]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Control_lights/climate_using_scenarios&diff=16552Control lights/climate using scenarios2008-12-06T19:12:05Z<p>Rwilson131: </p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
==How to set it up==<br />
<br />
First you must add the lights in the [[LinuxMCE Admin Website]]. Most lights require an interface device. Go to the Wizard, [[Devices]], [[Interfaces]] page and add the interface device, such as a [[Lutron controller]], or an [[X10]] RS232 interface. Then on the Wizard, [[Devices]], [[Lights]] page add all the lights you want to be able to control. The Controlled Via pull-down should be interface that will control it. [[Climate]] devices work the same way.<br />
<br />
'''Go to Wizard->[[Scenarios]]->[[Lights]]''' or '''Wizard->[[Scenarios]]->[[Climate]]''' and add a new scenario for whatever room you want. This results in a new button appearing on all the [[Orbiters]] when they are in the room you added the scenario to. For the scenario specify what lights or climate devices you want to adjust when that button is touched. For example you may add a "go to bed" scenario in the kitchen which turns on a dim trail of lights from the kitchen to the bedroom, and then you may have another "go to bed" scenario in the bedroom which turns off all the lights in the House.<br />
<br />
==How to use it==<br />
<br />
Just touch the button.<br />
<br />
==Programmer's guide==<br />
<br />
There's little to it. The commands are sent to whatever [[DCE]] Device is responsible. For example, if you add an [[X10]] [[CM11A]] interface, and then some lights that are controlled via that interface, the on/off/dim commands get sent to the interface since it implements [[DCE]], and the child devices (the lights) do not. The Lighting_Plugin and Climate_Plugin devices intercept any commands going to lighting or [[climate]] devices so it can keep track of their last known and execute [[follow-me]] actions.<br />
==Additional Information==<br />
* [[Lighting Scenarios]]<br />
* [[Advanced Lighting Settings]]<br />
* [[Have my lighting or climate settings follow me]]<br />
* [[Control lights or climate with a floorplan]]<br />
<br />
[[Category: Automation]]<br />
[[Category: Programmer's Guide]]<br />
[[Category: Tutorials]]<br />
[[Category: Lighting]]<br />
[[Category: Climate]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Category:Lighting&diff=16551Category:Lighting2008-12-06T19:11:02Z<p>Rwilson131: New page: Category for all things related to Lighting</p>
<hr />
<div>Category for all things related to Lighting</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Control_lights/climate_using_scenarios&diff=16550Control lights/climate using scenarios2008-12-06T19:10:04Z<p>Rwilson131: </p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
==How to set it up==<br />
<br />
First you must add the lights in the [[LinuxMCE Admin Website]]. Most lights require an interface device. Go to the Wizard, [[Devices]], [[Interfaces]] page and add the interface device, such as a [[Lutron controller]], or an [[X10]] RS232 interface. Then on the Wizard, [[Devices]], [[Lights]] page add all the lights you want to be able to control. The Controlled Via pull-down should be interface that will control it. [[Climate]] devices work the same way.<br />
<br />
'''Go to Wizard->[[Scenarios]]->[[Lights]]''' or '''Wizard->[[Scenarios]]->[[Climate]]''' and add a new scenario for whatever room you want. This results in a new button appearing on all the [[Orbiters]] when they are in the room you added the scenario to. For the scenario specify what lights or climate devices you want to adjust when that button is touched. For example you may add a "go to bed" scenario in the kitchen which turns on a dim trail of lights from the kitchen to the bedroom, and then you may have another "go to bed" scenario in the bedroom which turns off all the lights in the House.<br />
<br />
==How to use it==<br />
<br />
Just touch the button.<br />
<br />
==Programmer's guide==<br />
<br />
There's little to it. The commands are sent to whatever [[DCE]] Device is responsible. For example, if you add an [[X10]] [[CM11A]] interface, and then some lights that are controlled via that interface, the on/off/dim commands get sent to the interface since it implements [[DCE]], and the child devices (the lights) do not. The Lighting_Plugin and Climate_Plugin devices intercept any commands going to lighting or [[climate]] devices so it can keep track of their last known and execute [[follow-me]] actions.<br />
<br />
==Additional Information==<br />
* [[Lighting Scenarios]]<br />
* [[Advanced Lighting Settings]]<br />
* [[Have my lighting or climate settings follow me]]<br />
* [[Control lights or climate with a floorplan]]<br />
<br />
[[Category: Automation]]<br />
[[Category: Programmer's Guide]]<br />
[[Category: Tutorials]]<br />
[[Category: Lighting]]<br />
[[Category: Climate]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Have_my_lighting_or_climate_settings_follow_me&diff=16549Have my lighting or climate settings follow me2008-12-06T19:05:49Z<p>Rwilson131: added links to related pages</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
[[Category: Tutorials]]<br />
[[Category: Lighting]]<br />
[[Category: Climate]]<br />
==How to set it up==<br />
<br />
When creating your lighting in climate scenarios in [[LinuxMCE Admin Website]], using the page found at:<br />
* '''[[LinuxMCE Admin Website]]-->Wizard-->Scenarios-->[[Lighting Scenarios]]'''<br />
* '''[[LinuxMCE Admin Website]]-->Wizard-->Scenarios-->[[Climate Scenarios]]'''<br />
<br />
You'll note that the first scenario for each room is marked default on, and the second scenario for each room is marked default off. Whenever anybody has follow me lighting or follow me climate turned on their mobile phones, then when they enter a room the default on scenario will automatically be executed, and when all people have left the room, the default off scenario will be executed. Note that when you enter a room it takes approximately 10 seconds before the Bluetooth mobile phone is recognized. This is the nature of Bluetooth, that's just how long it takes to do a scan. If you need a faster response you will need to install another type of identification device such as RFID. <br />
<br />
==How to use it==<br />
<br />
On your mobile phone orbiter, the 1 button displays your lighting scenarios, and 2 button displays your climate scenarios. If you hold down the 1 or 2 button then you will toggle the follow me. When follow me is on, you'll see the big red F. and on a normal orbiter, such as a Web pad or PDA, you can choose the lighting or climate floor plan button, and you'll see a button that toggles between F and F with a cross. When it is an F, then follow me will be enabled for whoever is the currently active user on that orbiter. These orbiters are not automatically able to detect what part of the House you're in, and therefore follow me is not automatic. But if you change the room on the orbiter manually, by choosing the room but in, and you have follow me turned on, then it will still work. For example, on your PDA you can turn the lighting follow me on. Then choose a room, and you'll see the "default on" scenario is executed. Then select another room. You'll see the "default off" scenario is executed in the first room, and "default on" scenario is executed in the new room.<br />
==Programmer's guide==<br />
<br />
The orbiter plug-in has the responsibility for firing the follow me events. There are five follow me events: lighting, climate, media, telecom, and security. There are five plug-ins corresponding to those five types of events. Follow me is just one of the things that those plug-ins do. For example the media plug-in also handles starting stopping and moving all media, and implementing the follow function is just one very small part. However since what triggers the follow me is an event, you can write an event interceptor for any DCE device so that you can add other code that gets executed when any of the follow me events are fired. <br />
<br />
==Additional Information==<br />
* [[Lighting Scenarios]]<br />
* [[Advanced Lighting Settings]]<br />
* [[Control lights/climate using scenarios]]<br />
* [[Control lights or climate with a floorplan]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Lighting_Scenarios&diff=16548Lighting Scenarios2008-12-06T18:55:14Z<p>Rwilson131: added links</p>
<hr />
<div> {| align="right"<br />
| __TOC__<br />
|}<br />
[[Image:Lightingscenario.jpg|thumb|200px|Lighting Scenario Page]]The lighting scenarios are grouped by room. Whenever you enter a room with the mobile orbiter, or choose a room with a regular orbiter, you will see a button for each of the lighting scenarios you created for that room.<br />
==Adding a New Scenario==<br />
To add a new scenario, click the 'Add Scenario' button next to the room you want the lighting scenario to appear in. Note this is not necessarily the room with the lights you want to control. Any lighting scenario can control any light anywhere in your home. This is just the room where you want to see the button. For example, you may want a lighting scenario in the bedroom called 'Go to sleep' which turns off all the lights throughout the house, or a lighting scenario in the kitchen called 'Mealtime' which turns on the lights in the dining room.<br />
<br />
[[Image:Addinglightingscenario.jpg|thumg|left|500px|Successfully Adding New Lighting Scenario]]<br />
<br style="clear:both;"/><br />
==Editing Existing Scenarios==<br />
<br />
[[Image:Editlightingscenario.jpg|thumb|200px|Edit Lighting Scenario Screen]]To edit an existing scenario, click the 'Edit' link next to the scenario.<br />
<br />
Whether adding or editing the scenario, you will see a list of all the lights in the house. For those lights you don't want to be affected by this scenario, just leave the radio button at "Unchanged". That means when you choose this scenario, that light will not change. You can also choose "On", meaning the scenario will turn the light on full brightness, or "Off" to turn it off. "Set Level" lets you type in a level in the text box. The level is a percentage from 0 to 100. If you select "Set Level" and put in "50", then choosing the scenario will dim that light to 50% brightness. You can also preface the Level with a + or - character, meaning a relative change. Then the level can be "+20" or "-10" meaning the scenario will turn the light up 20% or down 10%. Not all types of lights support dimming, and not all dimmable lights support relative dimming. It won't hurt anything to try it.<br />
<br />
Next to each device is a "?" button that will show you information the manufacturer provides about that device. This should explain exactly what the device is capable of doing.<br />
<br />
If you want this scenario to do something besides just control lights, like maybe turn on some music too, then first use this wizard page to specify the lighting settings, and then click "Advanced" to go to the Advanced Scenario editor. That advanced page is a bit more complicated, but it allows to add any command to the scenario--not just lighting control.<br />
<br />
==Additional Information==<br />
* [[Advanced Lighting Settings]]<br />
* [[Have my lighting or climate settings follow me]]<br />
* [[Control lights/climate using scenarios]]<br />
* [[Control lights or climate with a floorplan]]<br />
[[Category: Admin Website]]<br />
[[Category: Automation]]<br />
[[Category: Scenarios]]<br />
[[Category: Lighting]]<br />
[[Category: Lighting]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Lights&diff=16547Lights2008-12-06T18:54:19Z<p>Rwilson131: </p>
<hr />
<div>[[Image:Lights.jpg|thumb|250px|Lights Page Admin Website]]Here you will add all the lights in your home. Note by lights we mean the actual light switches--not the lighting control system. The lighting control system ([[Lutron]], [[Insteon]], [[X10]], [[Z-Wave]] etc.) is added on the interface page first. Then you add the actual lights here. You can have a mix of systems ([[Z-Wave]] and [[X10]], for example). For whatever interfaces you added, you will be able to add the lights here. Blinds, drapes and motorized shutters are also treated as lights.<br />
<br />
The Controlled VIA selection is where you choose what lighting control system is controlling this light. You will also have to supply parameters specific to your type of lighting system, such as the house code for X10 devices, or the Channel for Lutron Radio RA. You could also add generic relay-type devices here that use an interface module like the gc100.<br />
<br />
Port/Channel Number is your X10 house code and address. For example, B3 would be house code "B" and light "3". No spaces, quotes, or commas are needed.<br />
<br />
==Additional Information==<br />
* [[Lighting Scenarios]]<br />
* [[Advanced Lighting Settings]]<br />
* [[Have my lighting or climate settings follow me]]<br />
* [[Control lights/climate using scenarios]]<br />
* [[Control lights or climate with a floorplan]]<br />
[[Category: Admin Website]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Control_lights/climate_using_scenarios&diff=16546Control lights/climate using scenarios2008-12-06T18:52:36Z<p>Rwilson131: </p>
<hr />
<div>==How to set it up==<br />
<br />
First you must add the lights in the [[LinuxMCE Admin Website]]. Most lights require an interface device. Go to the Wizard, [[Devices]], [[Interfaces]] page and add the interface device, such as a [[Lutron controller]], or an [[X10]] RS232 interface. Then on the Wizard, [[Devices]], [[Lights]] page add all the lights you want to be able to control. The Controlled Via pull-down should be interface that will control it. [[Climate]] devices work the same way.<br />
<br />
'''Go to Wizard->[[Scenarios]]->[[Lights]]''' or '''Wizard->[[Scenarios]]->[[Climate]]''' and add a new scenario for whatever room you want. This results in a new button appearing on all the [[Orbiters]] when they are in the room you added the scenario to. For the scenario specify what lights or climate devices you want to adjust when that button is touched. For example you may add a "go to bed" scenario in the kitchen which turns on a dim trail of lights from the kitchen to the bedroom, and then you may have another "go to bed" scenario in the bedroom which turns off all the lights in the House.<br />
<br />
==How to use it==<br />
<br />
Just touch the button.<br />
<br />
==Programmer's guide==<br />
<br />
There's little to it. The commands are sent to whatever [[DCE]] Device is responsible. For example, if you add an [[X10]] [[CM11A]] interface, and then some lights that are controlled via that interface, the on/off/dim commands get sent to the interface since it implements [[DCE]], and the child devices (the lights) do not. The Lighting_Plugin and Climate_Plugin devices intercept any commands going to lighting or [[climate]] devices so it can keep track of their last known and execute [[follow-me]] actions.<br />
<br />
[[Category: Automation]]<br />
[[Category: Programmer's Guide]]<br />
[[Category: Tutorials]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Lights&diff=16545Lights2008-12-06T18:44:15Z<p>Rwilson131: </p>
<hr />
<div>[[Image:Lights.jpg|thumb|250px|Lights Page Admin Website]]Here you will add all the lights in your home. Note by lights we mean the actual light switches--not the lighting control system. The lighting control system ([[Lutron]], [[Insteon]], [[X10]], [[Z-Wave]] etc.) is added on the interface page first. Then you add the actual lights here. You can have a mix of systems ([[Z-Wave]] and [[X10]], for example). For whatever interfaces you added, you will be able to add the lights here. Blinds, drapes and motorized shutters are also treated as lights.<br />
<br />
The Controlled VIA selection is where you choose what lighting control system is controlling this light. You will also have to supply parameters specific to your type of lighting system, such as the house code for X10 devices, or the Channel for Lutron Radio RA. You could also add generic relay-type devices here that use an interface module like the gc100.<br />
<br />
Port/Channel Number is your X10 house code and address. For example, B3 would be house code "B" and light "3". No spaces, quotes, or commas are needed.<br />
[[Category: Admin Website]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Lights&diff=16544Lights2008-12-06T18:44:02Z<p>Rwilson131: </p>
<hr />
<div>[[Image:Lights.jpg|thumb|250px|Lights Page Admin Website]]Here you will add all the lights in your home. Note by lights we mean the actual light switches--not the lighting control system. The lighting control system ([[Lutron]], [[Insteon]], [[X10]], [[Z-Wave]] etc.) is added on the interface page first. Then you add the actual lights here. You can have a mix of systems ([[Z-Wave]] and [[X10]], for example). For whatever interfaces you added, you will be able to add the lights here. Blinds, drapes and motorized shutters are also treated as lights.<br />
<br />
The Controlled VIA selection is where you choose what lighting control system is controlling this light. You will also have to supply parameters specific to your type of lighting system, such as the house code for X10 devices, or the Channel for Lutron Radio RA. You could also add generic relay-type devices here that use an interface module like the gc100.<br />
<br />
Port/Channel Number is your X10 house code and address. For example, B3 would be house code "B" and light "3". No spaces, quotes, or commas are needed.</p><br />
[[Category: Admin Website]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Source_Code&diff=16529Source Code2008-12-06T15:13:11Z<p>Rwilson131: </p>
<hr />
<div>[[Category:Development]]<br />
[[Category:Programmer's Guide]]<br />
'''LinuxMCE''' is a pretty big project. Not counting [[GSD]] devices, LinuxMCE's own code is already well over a million lines in hundreds of modules, with over 1,000 pages of online documentation, and in addition LinuxMCE also incorporates lots of other big open source projects like [[Asterisk]], [[Xine]], [[MythTV]], [[Firefox]], [http://www.videolan.org/ VideoLan], [http://www.slimdevices.com/pi_features.html SlimServer], [http://www.kubuntu.org/ Kubuntu Linux] itself, etc., all of which have special LinuxMCE 'wrappers' to allow them to work together seamlessly as a total home solution. For the brave of heart, you can also download modules by hand, and see all the dependencies and compatibility for each module.<br />
<br />
=SVN repository (always up-to-date)=<br />
<br />
Current source is available here:<br />
http://svn.linuxmce.org/svn/trunk/<br />
you can browse it using web browser or use Subversion tool to check out code and fetch further updates:<br />
<br />
svn checkout http://svn.linuxmce.org/svn/trunk/ linuxmce<br />
<br />
Make sure you do the checkout on a LinuxMCE machine, and running as user linuxmce. DO NOT RUN AS root.<br />
<br />
[[FOSS 0710]] contains information about auto-built debs and binaries<br />
<br />
# Build from source (optional) to 3692MiB, total source+build = 5515MiB.<br />
./configure<br />
make<br />
<br />
=Obsolete Source=<br />
This section refers to the obsolete sourcecode stored at SourceForge. The current (recent 0704 and all 0710) source is stored at svn.linuxmce.org, as mentioned in [[#Current_Source]]. The descriptions of the obsolete code might also be wrong descriptions of the current structure and content of the source code, but it could be a clue where none others exist, because that's where the current source code evolved from. (- [[User:Matthew|Matthew]] 08:51, 10 January 2008 (MST))<br />
<br />
You can browse the [http://linuxmce.svn.sourceforge.net/viewvc/linuxmce/trunk/ web based repository viewer]. Or you can do an anonymous svn checkout as follows:<br />
<br />
svn co <nowiki>http://</nowiki>linuxmce.svn.sourceforge.net/svnroot/linuxmce/trunk/''modulename''<br />
<br />
You can checkout all the software with if you use http://linuxmce.svn.sourceforge.net/viewvc/linuxmce/trunk/ as the repository location for the module name, or go to the [http://linuxmce.svn.sourceforge.net/viewvc/linuxmce/trunk/ repository viewer] to find the name of the SVN directory for the module you are interested in.<br />
<br />
Here are short instructions if you want compile your module with svn sources : [[Building_From_Source|Building from source]].<br />
<br />
<br />
----<br />
<br />
I've made a start at some pointers to finding your way around the code. [Note, I'm a noob here, so I may have got this wrong, so feel free to add/change. Also, it's by no means complete yet!]<br />
<br />
'''''trunk/config-pkgs/''''' contains ...<br />
* ''intel8x0/'' - <br />
'''''trunk/installers/''''' contains ...<br />
* ''CD_Installer/'' - <br />
* ''Installers/'' - <br />
* ''PhoneInstall/'' - <br />
* ''WindowsInstaller/'' - <br />
'''''trunk/libs/''''' contains ...<br />
* ''CrossPlatform/'' - <br />
* ''Libraries/'' - <br />
'''''trunk/src/''''' contains ...<br />
* ''ANSI-to-HTML/ '' - <br />
* ''AVWizard/ '' - <br />
* ''Add_Software/ '' - <br />
* ''App_Server/ '' - <br />
* ''AptUtils/ '' - <br />
* ''Asterisk/ '' - <br />
* ''BD/ '' - <br />
* ''Basic_XML_Data_Source_Plugin/ '' - <br />
* ''Bluetooth_Dongle/ '' - <br />
* ''BootScripts/ '' - <br />
* ''CDDB_Identifier/ '' - <br />
* ''CM11A/ '' - <br />
* ''CheckDependencyScript/ '' - <br />
* ''CliUtils/ '' - <br />
* ''Climate_Plugin/ '' - <br />
* ''ColorSplitter/ '' - <br />
* ''ConfirmDependencies/ '' - <br />
* ''ConfirmDependencies_Script/ '' - <br />
* ''ConfirmDependencies_Script_Offline/ '' - <br />
* ''CreateDevice/ '' - <br />
* ''Crystal_Fontz_USBRS232/ '' - <br />
* ''DCE/ '' - <br />
* ''DCEGen/ '' - <br />
* ''DCERouter/ '' - <br />
* ''Datagrid_Plugin/ '' - <br />
* ''Dhcpd-Plugin/ '' - <br />
* ''DiskMonitor/ '' - <br />
* ''Disk_Drive/ '' - <br />
* ''Disk_Drive_Functions/ '' - <br />
* ''Diskless-Add-Ons/ '' - <br />
* ''DynamicDNS/ '' - <br />
* ''EIB/ '' - <br />
* ''Event_Plugin/ '' - <br />
* ''FakeEPG/ '' - <br />
* ''File_Grids_Plugin/ '' - <br />
* ''Firewire2Video4Linux/ '' - <br />
* ''FirewireVideo/ '' - <br />
* ''GalleryViewer/ '' - <br />
* ''Gen_Devices/ '' - <br />
* ''General_Info_Plugin/ '' - <br />
* ''Generic_Serial_Device/ '' - <br />
* ''GyrationMouse/ '' - <br />
* ''HAL/ '' - <br />
* ''HAL_DeviceFinder/ '' - <br />
* ''HDHomeRun/ '' - <br />
* ''Hooks_rcS/ '' - <br />
* ''IR/ '' - <br />
* ''IRBase/ '' - <br />
* ''IRTrans/ '' - <br />
* ''Infrared_Plugin/ '' - <br />
* ''JobHandler/ '' - <br />
* ''LIRC_DCE/ '' - <br />
* ''Lighting_Plugin/ '' - <br />
* ''Linphone/ '' - <br />
* ''MaemoOrbiterLauncher/ '' - <br />
* ''MakeRelease/ '' - <br />
* ''MakeRelease_PrepFiles/ '' - <br />
* ''Media_Live_LCDButtons/ '' - <br />
* ''Media_Plugin/ '' - <br />
* ''MessageSend/ '' - <br />
* ''MessageTranslation/ '' - <br />
* ''Motion_Wrapper/ '' - <br />
* ''MythTV_Backend_Proxy/ '' - <br />
* ''MythTV_Player/ '' - <br />
* ''MythTV_PlugIn/ '' - <br />
* ''Network_Storage/ '' - <br />
* ''NewMD_interactor/ '' - <br />
* ''Orbiter/ '' - <br />
* ''OrbiterGen/ '' - <br />
* ''Orbiter_Plugin/ '' - <br />
* ''OutlookSync/ '' - <br />
* ''Photo_Screen_Saver/ '' - <br />
* ''Plug_And_Play_Plugin/ '' - <br />
* ''PlutoDHCP/ '' - <br />
* ''PlutoMO/ '' - <br />
* ''PlutoRaidTools/ '' - <br />
* ''PlutoStorageDevices/ '' - <br />
* ''PlutoUpdateSystem/ '' - <br />
* ''PlutoUpgradeHelper/ '' - <br />
* ''PlutoUtils/ '' - <br />
* ''PlutoVIP/ '' - <br />
* ''Powerfile_C200/ '' - <br />
* ''Proxy_Orbiter/ '' - <br />
* ''Qos/ '' - <br />
* ''RA/ '' - <br />
* ''RemoteAssistance/ '' - <br />
* ''SDL_Helpers/ '' - <br />
* ''SMPTE_Fountain/ '' - <br />
* ''STEngine/ '' - <br />
* ''SVNLog/ '' - <br />
* ''SambaScan/ '' - <br />
* ''ScreenGen/ '' - <br />
* ''Security_Plugin/ '' - <br />
* ''Serial/ '' - <br />
* ''SerializeClass/ '' - <br />
* ''Setup_CaptureCards/ '' - <br />
* ''Setup_SoundCards/ '' - <br />
* ''SimplePhone/ '' - <br />
* ''SlimServer_PlugIn/ '' - <br />
* ''Slim_Server_Streamer/ '' - <br />
* ''SoundScripts/ '' - <br />
* ''Speech/ '' - <br />
* ''Splitter/ '' - <br />
* ''Telecom_Plugin/ '' - <br />
* ''TestSerialPort/ '' - <br />
* ''Test_Treo/ '' - <br />
* ''Text_To_Speech/ '' - <br />
* ''Tira/ '' - <br />
* ''Tribune/ '' - <br />
* ''Tribunexml/ '' - <br />
* ''UPnP/ '' - <br />
* ''USB_PNP/ '' - <br />
* ''USB_UIRT_0038/ '' - <br />
* ''UbuntuDiskless/ '' - <br />
* ''Ubuntu_Helpers/ '' - <br />
* ''UpdateEntArea/ '' - <br />
* ''UpdateMedia/ '' - <br />
* ''VDR/ '' - <br />
* ''VDRPlugin/ '' - <br />
* ''VFD_LCD/ '' - <br />
* ''VIPDesign/ '' - <br />
* ''VIPEstablishment/ '' - <br />
* ''VIPServer/ '' - <br />
* ''VIPShared/ '' - <br />
* ''VideoLan_Client/ '' - <br />
* ''VideoLan_PlugIn/ '' - <br />
* ''VideoLan_Server/ '' - <br />
* ''VoiceMailMonitor/ '' - <br />
* ''WinBluetooth/ '' - <br />
* ''Windows_Share_Scanner/ '' - <br />
* ''X-KbLayout/ '' - <br />
* ''X-Resolution/ '' - <br />
* ''XML_Data_Handler_Plugin/ '' - <br />
* ''XinePlayerTest/ '' - <br />
* ''Xine_Player/ '' - <br />
* ''Xine_Plugin/ '' - <br />
* ''bin/ '' - <br />
* ''convert_color/ '' - <br />
* ''convert_mac/ '' - <br />
* ''convert_time/ '' - <br />
* ''database/ '' - <br />
* ''database_audi/ '' - <br />
* ''database_marbella/ '' - <br />
* ''designer/ '' - <br />
* ''docs/ '' - <br />
* ''drivers/ '' - <br />
* ''fakepkgs/ '' - <br />
* ''gc100/ '' - <br />
* ''inotify/ '' - <br />
* ''kernel-upgrade/ '' - <br />
* ''lib/ '' - <br />
* ''mce-installer/ '' - <br />
* ''mce-launcher/ '' - <br />
* ''pluto-ati-drivers/ '' - <br />
* ''pluto-nvidia-drivers/ '' - <br />
* ''pluto_gcs-2.6_module/ '' - <br />
* ''pluto_main/ '' - <br />
* ''pluto_media/ '' - <br />
* ''pluto_media_updater/ '' - <br />
* ''pluto_security/ '' - <br />
* ''pluto_speech/ '' - <br />
* ''pluto_telecom/ '' - <br />
* ''pnp_detection_scripts/ '' - <br />
* ''shift_state/ '' - <br />
* ''skins/ '' - <br />
* ''so_postinst/ '' - <br />
* ''sql2cpp/ '' - <br />
* ''sqlCVS/ '' - <br />
* ''ussp-push/ '' - <br />
* ''utilities/ '' - <br />
* ''BuildWinBinaries.bat '' - <br />
* ''Construct '' - <br />
* ''MakeRelease_All.bat '' - <br />
* ''MakeRelease_Symbian_S60.bat '' - <br />
* ''MakeRelease_Windows.bat '' - <br />
* ''MakeRelease_WindowsCE.bat '' - <br />
* ''Makefile '' - <br />
* ''Makefile_all '' - <br />
* ''SwitchToLinuxMCE.bat '' - <br />
* ''SwitchToPluto.bat '' - <br />
* ''build.xml '' - <br />
* ''pluto.sln '' - <br />
'''''trunk/ubuntu''''' contains ...<br />
* ''asterisk/'' - <br />
* ''libsdl1.2-1.2.10/'' - <br />
* ''libsdl1.2-1.2.7+1.2.8cvs20041007/'' - <br />
* ''lirc-pluto-0.1/'' - <br />
* ''lshwd-2.0-rc4/'' - <br />
* ''mtx-1.3.10/'' - <br />
* ''tee-pluto/'' - <br />
* ''xine-lib-1.1.3/'' - <br />
'''''trunk/web''''' contains the two web-based configuration programs:<br />
* ''Amp'' - The Asterisk (IP Phone exchange) management program<br />
* ''pluto-admin'' - LinuxMCE Web Admin</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Setting_Up_A_Development_Environment&diff=16528Setting Up A Development Environment2008-12-06T15:12:18Z<p>Rwilson131: </p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
[[Category: Tutorials]]<br />
[[Category: Development]]<br />
[[Category: Programmer's Guide]]<br />
<br />
== Introduction ==<br />
<br />
'''/!\ WARNING: at the moment the sources are moving, so there are some bugs related to sources versions. you may not be able to compile'''<br />
<br />
See also: [[Building From Source]]<br />
<br />
See also: [[Building_LinuxMCE]] (these are the build scripts for the official cd build)<br />
<br />
I have seen a lot of questions on how to set up a development environment for LMCE.<br />
As a person with limited programming experience in c++, I can tell you that you don't have to be a master-level programmer to get your feet wet<br />
and examine the source code, and even make changes that add new features or fix existing bugs. It just takes a little patience, some help from experienced members,<br />
and a willingness to learn. There is a lot of information and help available in the forums, the wiki, and the linuxmce channel on IRC freenode servers.<br />
<br />
That being said, dev work can also be risky business. You can seriously damage your installation compiling and testing changes, so '''USE THIS INFORMATION AT YOUR OWN RISK!'''<br />
If you really want to get started developing, the best advice I can give is to get a separate computer to set up as a development machine, so you don't damage your existing LinuxMCE installation accidentally! That way, if you make a change that LMCE really doesn't like, you won't trash your personally installation. (Too bad I don't follow my own advice, as I've done this before!)<br />
<br />
<br />
----<br />
''The following tutorial represents my experiences only, and may not necessarily be the best or correct way to do things - though it has worked very well for me.''<br />
<br />
As I am a linux user, I am going to describe this process as I set up a development environment on my core from a computer running Ubuntu linux. Other linux variants will be very similar, if not the same. For Windows users, there is equivalent software that you can use, though I can't name any off of the top of my head - you will have to do your own research on that one.<br />
<br />
Be sure to set aside a free evening to set up your development environment, as it can take several hours to complete!<br />
----<br />
<br />
== Preface ==<br />
The first thing I found surprising when I went to set up my first development environment is that it must be set up on your core. To my knowledge, you can't just make changes to the source on your desktop computer, compile them on your desktop computer, then upload them to the core. Everything must reside on the core, and you can have access to the source on your normal desktop over SSH (covered later). For those that aren't keen with working with a command line over ssh, this will take some getting used to (as was my case). But, once you get used to it, its not a bad development environment, and it even got me more familiar with the command line, and linux commands, which is something I've been meaning to do anyways.<br />
Lets get started...<br />
<br />
<br />
== Setting Up the Development Environment ==<br />
Once you have a LinuxMCE Core up and running, the first thing we have to do is learn how to connect to it from our Desktop computer. On my Ubuntu desktop, I open a terminal via Applications->Accessories->Terminal. <br />
We will now use SSH to connect to out core - enter the following into the terminal:<br />
ssh linuxmce@192.168.80.1<br />
When prompted for a password, enter "linuxmce".<br />
''(You may be prompted for a password several times during the setup of your development environment - this will always be "linuxmce")''<br />
<br />
<br />
Congratulations! You are now logged into the core over SSH from a remote computer! Now its time to install some packages needed for development. In the terminal, type:<br />
sudo apt-get install subversion build-essential ccache<br />
This will install Subversion (SVN), which is needed to keep your local copy of the source code in sync with the latest changes, and well as some development libraries.<br />
<br />
<br />
For my development environment, I decided to keep everything in my Home directory. The source can actually go many places, but I prefer using the Home directory. Lets go there now...<br />
cd ~/<br />
<br />
<br />
To check out the most recent source code, run the following:<br />
svn co http://svn.linuxmce.org/svn/branches/trunk<br />
<br />
if you have already compiled the sources, the make wo'nt install some packages required(since they are supposed to have already been installed). thus you need to run in trunk/<br />
make clean<br />
cp /usr/pluto/lib/* /src/lib/ -R<br />
<br />
And finally, lets do a compile. This is necessary to setup more development packages, populate the source code with make files, etc. (Don't worry, this won't alter your current installation!) <br />
cd trunk<br />
./configure<br />
make<br />
<br />
Now go take a break. This part may take a while!<br />
<br />
'''GREAT!''' You now have the most recent version of the source code available to you and you will be able to compile changes! You can run svn update at any time from within the trunk directory to get the latest changes that have been committed to SVN.<br />
<br />
<br />
Now that this is finished, you are now ready to compile changes in the source code, then copy the resulting file to the appropriate place in the core.<br />
<br />
<br />
----<br />
'''A quick example''' <br />
<br />
Since I am familiar with the CM11A source, I will use it as an example...<br />
First i cd into the CM11A directory<br />
cd ~/lmce/src/CM11A<br />
Next I make changes to devicepoll.cpp..<br />
Now I want to compile my changes.. But first I have found it good practice to delete any old object files etc. before compiling, so I usually run<br />
rm *.o<br />
rm CM11A<br />
This removes the last resulting CM11A binary if present, as well as the object files that might be present from my last compile.<br />
Next I compile the changes..<br />
make bin<br />
Once it is finished compiling, I have a new CM11A binary that just needs moved to the right place in the core.. In this instance it is /usr/pluto/bin/ (/usr/pluto/lib/ is another hot-spot to check, usually for .so files)<br />
First, I remove the original file that I will be replacing..<br />
sudo rm /usr/pluto/bin/CM11A<br />
then I copy my newly compiled binary over..<br />
sudo cp CM11A /usr/pluto/bin/CM11A<br />
Now with a "quick reload router" from one of my orbiters, my changes will be in effect!<br />
<br />
A quick note - if "make bin" does not work, you may need to run "make so" for some sources that end up being library files, and yet others require just "make". I'm not sure if there is a golden rule to all of this, but I just try each of them until one of them works. Then, for the most part, you can search /usr/pluto/bin and /usr/pluto/lib to see where the resulting compiled file should go.<br />
Also, I have noticed that a "Full reload router" is necessary if you replace a library file (*.so)<br />
<br />
== Helpful Tools and Hints ==<br />
<br />
'''Compiling changes and where to put them on the core'''<br />
<br />
As stated above, I am not sure if there is a golden rule to this, but depending on what you are trying to compile, you will have to use one of the following:<br />
make<br />
make bin<br />
make so<br />
If you try one and get an error, try another one (i'm sure there is a better approach to this!)<br />
For the most part, you should be able to search through /usr/pluto/bin and /usr/pluto/lib to see where the resulting file should go.<br />
<br />
<br />
'''Using VNC to remotely view the on-screen orbiter'''<br />
<br />
As an Ubuntu user, I will explain it from how I do it from Ubuntu.<br />
<br />
First, ssh to the core, and install VNC<br />
ssh linuxmce@192.168.80.1<br />
Now lets install VNC<br />
sudo apt-get install x11vnc<br />
Ok, once it is installed, run the VNC Server from the core<br />
x11vnc<br />
<br />
Now that you have a VNC server running on the core, lets start the client on our Ubuntu desktop:<br />
First, open another terminal on your desktop<br />
now run the following command (in the new terminal, not the terminal that is SSH'd into the core!)<br />
vncviewer 192.168.80.1:0<br />
<br />
Now you can take professional developer-grade screenshots of our on-screen orbiters!<br />
(There are other tools available to take full recorded screencasts of these VNC sessions, but I've never used one)<br />
Also note, that the VNC playback is not at full framerate - this is normal.<br />
<br />
<br />
<br />
<br />
'''Navigating the core remotely with GUI'''<br />
<br />
Unless you like editing source code in a terminal with vim, you will want to make things easier on yourself, and set things up so you can graphically browse the directory tree on the core, and edit source code files with gedit or a similar editor...<br />
In ubuntu, go to Places->Connect To Server<br />
A "Connect Tto Server" window will appear. Fill it out as follows:<br />
Service Type - SSH<br />
Server - 192.168.80.1<br />
Port - 22<br />
Folder - /<br />
User Name - linuxmce<br />
Name to use for connection - <anything you want> (I use Access Core Files)<br />
<br />
You will now have a network folder on your desktop that you can access files with - without having to use the command line. (the first time you will be prompted for a password, which of course is 'linuxmce'. Double clicking files will now open them in your preferred desktop editor!<br />
<br />
<br />
<br />
'''SSH-ing into a Media Director'''<br />
<br />
I'm sure there is a better way, but here is what I do:<br />
<br />
1)ssh into the core<br />
ssh linuxmce@192.168.80.1<br />
..enter password 'linuxmce'<br />
<br />
2) navigate to /usr/pluto/diskless<br />
cd /usr/pluto/diskless<br />
<br />
3) get the "moon numbers" of the media directors<br />
ls<br />
note that each media director has a unique 3-digit number.. you will need this number in the following steps..<br />
<br />
4) change over to the root user:<br />
sudo su<br />
...enter password 'linuxmce'<br />
<br />
5) ssh into one of the media directors<br />
ssh moonxxx<br />
(xxx is the 3-digit number of one of the media directors)<br />
<br />
You are now in the Media Director's file system, be careful, as you are root!<br />
<br />
<br />
<br />
'''Installing phpMyAdmin to examine database structure etc.'''<br />
phpMyAdmin is a graphical (web based) mysql front end that makes looking through the vast LMCE databases effortless. While I would never recommend adding or removing anything directly to the database this way, having a view of the database structure and the ability to easily browse through the tables really helps to understand LMCE and how it works much better. It also makes for a good reference when you are looking for primary keys that are so popular as device data. Now you can look up all of your options.<br />
<br />
First, lets ssh into the core<br />
ssh linuxmce@192.168.80.1<br />
(use password linuxmce)<br />
<br />
Now lets switch to the directory where the admin web pages are stored<br />
cd /var/www/<br />
<br />
...and download the tarball<br />
sudo wget http://internap.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.11.7-rc1-english.tar.gz<br />
<br />
Once the tarball is finished downloading, its time to extract it<br />
sudo tar -xzvf phpMyAdmin-2.11.7-rc1-english.tar.gz<br />
<br />
You will now notice that if you list the directory contents (with ls), that you have a new phpMyAdmin-2.11.7-rc1-english directory. Thats fine, but who wants to type that in their web browser when they want to use phpMyAdmin. Lets rename it to something easier<br />
sudo mv phpMyAdmin-2.11.7-rc1-english phpmyadmin<br />
<br />
thats it! Now you can check out the database and learn from it. Again, be careful, as you can really, truely screw things up internally if you go adding and deleting entries.<br />
To go to phpMyAdmin, in your web browser, just type 192.168.80.1/phpmyadmin</div>Rwilson131http://wiki.linuxmce.org/index.php?title=How_to_compile_Asterisk&diff=16527How to compile Asterisk2008-12-06T15:11:16Z<p>Rwilson131: very old page, can it be removed or at least updated</p>
<hr />
<div>{{delete}}<br />
== Usable docs ==<br />
<br />
[http://www.voip-info.org/tiki-index.php?page=Asterisk+Linux+Debian Asterisk Debian Packages]<br />
<br />
<br />
== Don't read - it's under construction !!! ==<br />
http://plutohome.com/support/mantis/view.php?id=2789<br />
<br />
svn co http://svn.plutohome.com/pluto/trunk/external/asterisk<br />
<br />
$MakeRelease_Flavor is a problem unspecified.<br />
<br />
./make_package.sh 2.6.16.20-pluto-2-686<br />
<br />
(also sources should have been installed)...<br />
<br />
<br />
<br />
Rob: is it hard to do it ? (if you guide me, I'll post to Wiki)...<br />
radu_c_public: there's a make_package.sh script in that directory that does everything<br />
Rob: ok, will try it, thanks...<br />
<br />
<br />
<br />
<br />
<br />
<br />
Here are my notes for compiling Motion Wrapper (after whole procedure I found out that it is already fixed)...<br />
<br />
apt-get install subversion<br />
apt-get install g++<br />
apt-get install libmysqlclient14-dev<br />
apt-get install libhttpfetcher-dev<br />
<br />
svn co http://svn.plutohome.com/pluto/trunk/src/<br />
cd src<br />
cd SerializeClass/<br />
make<br />
cd ../DCE/<br />
make<br />
cd ../PlutoUtils<br />
make<br />
cd ..<br />
cd ../Motion_Wrapper/<br />
make<br />
<br />
after sucessful compilation you can try to run it<br />
<br />
../bin/Motion_Wrapper -d LinuxMCE's ID<br />
<br />
Note :<br />
Put '#' in front of '<-mkr_t_compile_defines-> ' in coresponding Makefile if you get errors for 'mkr_t_compile_defines'<br />
<br />
[[Category:Development]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=DCE_Binary_Communication_Protocol&diff=16526DCE Binary Communication Protocol2008-12-06T15:09:04Z<p>Rwilson131: </p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
[[Category:Development]]<br />
[[Category:Programmer's Guide]]<br />
== Introduction ==<br />
<br />
A device can create a command connection and one or more event connections to the router.<br />
<br />
* The command connection is used as an incoming connection and device will use it to receive message from the router (commands).<br />
* An event connection is used by the device as an outgoing connection to notify the router about events or the deliver commands to other devices.<br />
<br />
The DCERouter process is listening on 3450 port.<br />
<br />
== How to create an event connection ==<br />
<br />
Here is how the handshake is made for an event connection:<br />
<br />
>> Device sends: <br />
<br />
'''''EVENT <my_device_id> '\n''''''<br />
<br />
<br />
<< To router will respond with : <br />
<br />
'''''OK <my_device_id> IP=<device_ip_address> '\n''''''<br />
<br />
<br />
>> To send a message, the device will send :<br />
<br />
'''''MESSAGE <size_of_binary_message> '\n''''''<br />
<br />
and then<br />
<br />
'''''<serialized_binary_message>'''''<br />
<br />
== How to create a command connection ==<br />
<br />
Here is how the handshake is made for a command connection:<br />
<br />
>> Device sends: <br />
<br />
'''''COMMAND <my_device_id> '\n''''''<br />
<br />
<br />
<< To router will respond with : <br />
<br />
'''''OK <my_device_id> IP=<device_ip_address> '\n''''''<br />
<br />
<br />
>> The device will wait for messages from dcerouter; the router will send :<br />
<br />
'''''MESSAGE <size_of_binary_message> '\n''''''<br />
<br />
and then<br />
<br />
'''''<serialized_binary_message>'''''<br />
<br />
== How to serialize data == <br />
<br />
DCE uses SerializeClass to serialize/deserialize data.<br />
<br />
The sources can be found here : src/SerializeClass/Serialize.h/cpp.<br />
<br />
The deserialize the data, the deserializing module must know the way the data was serialized like this:<br />
<br />
- 4 bytes, unsigned long<br />
<br />
- 1 byte, unsigned char<br />
<br />
<br />
Primitives:<br />
<br />
- 8 bytes, unsigned int64<br />
<br />
- 8 bytes, int64<br />
<br />
- 4 bytes, unsigned long<br />
<br />
- 4 bytes, unsigned short<br />
<br />
- 1 byte, unsigned char<br />
<br />
- 1 byte, char<br />
<br />
- 1 byte, long<br />
<br />
- 4 bytes, float<br />
<br />
- 8 bytes, double<br />
<br />
- 2 bytes, short<br />
<br />
<br />
Complex types:<br />
<br />
<br />
1. string<br />
<br />
- STR_LENGTH bytes, the array with chars<br />
<br />
- 1 byte, '/0' (value 0x00)<br />
<br />
<br />
2. block of data<br />
<br />
- BLOCK_LENGTH bytes, the array with bytes<br />
<br />
<br />
3. vector of strings<br />
<br />
- VECT_LENGTH bytes, the number of strings from vector<br />
<br />
- string 0<br />
<br />
- string 1<br />
<br />
...<br />
<br />
- string VECT_LENGTH - 1<br />
<br />
<br />
<br />
Other complex types serialized (see SerializeClass.cpp for details) :<br />
<br />
- map<int,string><br />
<br />
- map<u_int64_t,string><br />
<br />
- map<int,int><br />
<br />
- map<string,string><br />
<br />
- vector<int><br />
<br />
- vector< pair<int,int> ><br />
<br />
- map<string, pair<int,int> ><br />
<br />
<br />
SerializeClass also allowed you to serialize/deserialize custom objects. Examples:<br />
<br />
- PlutoColor<br />
<br />
- PlutoPoint<br />
<br />
- PlutoSize<br />
<br />
- PlutoRectangle<br />
<br />
- PlutoDataBlock<br />
<br />
== How to serialize a message ==<br />
<br />
The class used by DCE is Message class from src/DCE/Message.h/cpp unit.<br />
<br />
<br />
This is how the raw data looks like into a binary message:<br />
<br />
<br />
- long, value must be 1234 (magic number)<br />
<br />
- long, <device_from_id><br />
<br />
- long, <device_to_id><br />
<br />
- long, <device_group_to_id><br />
<br />
- long, <message_id><br />
<br />
- long, <message_priority><br />
<br />
- long, <message_type><br />
<br />
- long, <device_category_to><br />
<br />
- long, <device_template_to><br />
<br />
- unsigned char, <include_children><br />
<br />
- long, <message_broadcast_level><br />
<br />
- long, <message_retry><br />
<br />
- unsigned char, <relative_to_sender><br />
<br />
- long, <expected_response><br />
<br />
- string, <device_list_to><br />
<br />
- unsigned long, <number_of_string_parameters><br />
<br />
* foreach <string_parameter><br />
<br />
* - long, <string_parameter_id><br />
<br />
* - string, <string_parameter_value><br />
<br />
* end_foreach<br />
<br />
- unsigned long, <number_of_data_parameters><br />
<br />
* foreach <data_parameter><br />
<br />
* - long, <data_parameter_id><br />
<br />
* - unsigned long, <data_parameter_length><br />
<br />
* - array of bytes, <data_parameter_value><br />
<br />
* end_foreach<br />
<br />
- unsigned long, <number_of_extra_messages><br />
<br />
* foreach <extra_message><br />
<br />
* - unsigned long, <serialized_extra_message_length><br />
<br />
* - array of bytes, <serialized_extra_message_value><br />
<br />
* end_foreach<br />
<br />
- unsigned long, must be 6789<br />
<br />
<br />
<br />
Enums:<br />
<br />
- enum eBroadcastLevel { BL_None=0, BL_DirectSiblings=1, BL_SameComputer=2, BL_SameRoom=3, BL_SameHouse=4, BL_AllHouses=5 };<br />
<br />
- enum eRetry { MR_None=0, MR_Retry=1, MR_Persist=2 };<br />
<br />
- enum eExpectedResponse { ER_None=0, ER_ReplyMessage, ER_ReplyString, ER_DeliveryConfirmation };<br />
<br />
- message types: enum { MESSAGETYPE_COMMAND=1, MESSAGETYPE_EVENT=2, MESSAGETYPE_DATAPARM_CHANGE=3, MESSAGETYPE_REPLY=4, <br />
MESSAGETYPE_DATAPARM_REQUEST=5, MESSAGETYPE_LOG=6, MESSAGETYPE_SYSCOMMAND=7, <br />
MESSAGETYPE_REGISTER_INTERCEPTOR=8, MESSAGETYPE_MESSAGE_INTERCEPTED=9, MESSAGETYPE_EXEC_COMMAND_GROUP=10,<br />
MESSAGETYPE_START_PING=11, MESSAGETYPE_STOP_PING=12, MESSAGETYPE_PURGE_INTERCEPTORS=13,<br />
MESSAGETYPE_PENDING_TASKS=14 };<br />
<br />
- message priority : enum { PRIORITY_LOW=0, PRIORITY_NORMAL=1, PRIORITY_HIGH=2, PRIORITY_URGENT=3 };<br />
<br />
<br />
Important note:<br />
<br />
- when sending to device template, set <device_template_to> to desired device template and also <device_to_id> to -2000 (DEVICEID_MASTERDEVICE)<br />
<br />
- when sending to device category, set <device_category_to> to desired device category and also <device_to_id> to -2001 (DEVICEID_CATEGORY)<br />
<br />
- when sending to a list with devices, set <device_list_to> to comma delimited list with devices and also <device_to_id> to -2002 (DEVICEID_LIST).<br />
<br />
<br />
<br />
<br />
<br />
Example:<br />
<br />
<br />
Here is the pseudocode to send the "on" command to a light switch.<br />
<br />
We'll assume that the your device has #id 250 and the light switch has device #id 100<br />
<br />
<br />
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
<br />
MyDevice.Connect(router_ip, 3450 /*port*/)<br />
<br />
MyDevice.SendData("EVENT 250\n")<br />
<br />
MyDevice.ReceiveData() //until you'll get a '\n' ; you should receive: "OK 250 IP=<device_ip_address> '\n';<br />
<br />
<br />
//next: creating a message<br />
<br />
//let's say MyData is an array of bytes<br />
<br />
SerializeLong(MyData, 1234) //magic number<br />
<br />
SerializeLong(MyData, 250) //my id<br />
<br />
SerializeLong(MyData, 100) //the light switch<br />
<br />
SerializeLong(MyData, 0) //not used now<br />
<br />
SerializeLong(MyData, 192) //message id of command 'on'<br />
<br />
SerializeLong(MyData, 1) //normal priority<br />
<br />
SerializeLong(MyData, 1) //message type : command<br />
<br />
SerializeLong(MyData, 0) //not used now<br />
<br />
SerializeLong(MyData, 0) //not used now<br />
<br />
SerializeUnsignedChar(MyData, 0) //not including children<br />
<br />
SerializeLong(MyData, 0) //broadcast level : none<br />
<br />
SerializeLong(MyData, 0) //don't retry<br />
<br />
SerializeUnsignedChar(MyData, 0) //relative to sender false<br />
<br />
SerializeLong(MyData, 3) //delivery confirmation<br />
<br />
SerializeString(MyData, "") //device list to empty<br />
<br />
SerializeUnsignedLong(MyData, 2) //2 parameters<br />
<br />
SerializeLong(MyData, 98) //parameter type #98<br />
<br />
SerializeString(MyData, "") //empty value<br />
<br />
SerializeLong(MyData, 97) //parameter type #97<br />
<br />
SerializeString(MyData, "") //empty value<br />
<br />
SerializeUnsignedLong(MyData, 0) //no binary parameters<br />
<br />
SerializeUnsignedLong(MyData, 0) //no extra messages<br />
<br />
SerializeUnsignedLong(6789) //magic number<br />
<br />
<br />
<br />
MyDevice.SendData("MESSAGE " + MyData.length() + '\n')<br />
<br />
MyDevice.SendData(MyData)<br />
<br />
MyDevice.ReceiveData() //until you'll get a '\n' ; you should receive: "OK" an error message<br />
<br />
<br />
MyDevice.CloseConnection();<br />
<br />
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
<br />
== How to serialize data-grids ==<br />
<br />
(in work)<br />
<br />
<br />
Complex objects:<br />
<br />
1) DataGridCellSerializableData <br />
<br />
- unsigned long, <sizeof(DataGridCellSerializableData)><br />
<br />
- unsigned long, <graphic_length><br />
<br />
- unsigned long, <message_length><br />
<br />
- unsigned long, <text_length><br />
<br />
- unsigned long, <value_length><br />
<br />
- unsigned long, <image_path_length><br />
<br />
- unsigned long, <number_of_attributes_length><br />
<br />
- unsigned long, <attributes_length><br />
<br />
- int, <alternate_color><br />
<br />
- unsigned long, <graphic_format><br />
<br />
- unsigned char, <selectable><br />
<br />
- int, <style_detail><br />
<br />
- int, <col_span><br />
<br />
- int, <row_span><br />
<br />
- unsigned char, <dont_fire_grid_event><br />
<br />
<br />
Enums:<br />
<br />
- enum eGraphicFormat { GR_UNKNOWN=0, GR_JPG=1, GR_GIF=2, GR_TIF=3, GR_PNG=4, GR_MNG=5, GR_BMP=6, GR_OCG=7, GR_PFG=8 };<br />
<br />
<br />
<br />
<br />
2) DataGridCell <br />
<br />
- DataGridCellSerializableData, <datagrid_cell_serializable_data><br />
<br />
- array of chars, <text> <br />
<br />
- array of chars, <value><br />
<br />
- array of bytes, <graphic_data><br />
<br />
- array of bytes, <message_data><br />
<br />
- array of chars, <image_path><br />
<br />
* foreach <cell_attribute><br />
<br />
* - array of chars ended with '\0' , <cell_attribute_name><br />
<br />
* - array of chars ended with '\0', <cell_attribute_value><br />
<br />
* end_foreach<br />
<br />
<br />
<br />
3) DataGridTableSerializableData<br />
<br />
- int, <total_number_of_columns><br />
<br />
- int, <total_number_of_rows><br />
<br />
- unsigned char, <keep_row_header><br />
<br />
- unsigned char, <keep_column_header><br />
<br />
- int, <column_count><br />
<br />
- int, <row_count><br />
<br />
- int, <starting_column><br />
<br />
- int, <starting_row><br />
<br />
- int, <cell_count><br />
<br />
<br />
<br />
4) DataGridTableCellIndex<br />
<br />
- unsigned int, <column_row_type><br />
<br />
- unsigned int, <size><br />
<br />
<br />
<br />
5) DataGridTable<br />
<br />
- unsigned long, <sizeof(DataGridTableSerializableData)><br />
<br />
- array of DataGridTableCellIndex, <col * row * sizeof(DataGridTableCellIndex)><br />
<br />
- array of DataGridCell, <col * row * serialized DataGridCell><br />
<br />
/*********************************************************************************/<br />
<br />
Additional step: lzo compression/decompression<br />
<br />
Note: can be disabled if compiled with DISABLE_LZO_DATAGRID <br />
<br />
/*********************************************************************************/</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Building_From_Source&diff=16525Building From Source2008-12-06T15:08:00Z<p>Rwilson131: </p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
[[Category: Tutorials]]<br />
[[Category:Development]]<br />
[[Category:Programmer's Guide]]<br />
= Building for 0810 =<br />
Please see [[Building_LinuxMCE]]<br />
= Building on 0710 =<br />
See also: [[Setting Up A Development Environment]]<br />
== Preparations ==<br />
Set up a directory for the development tree. For example type the following in a shell as "linuxmce" user:<br />
cd /usr/src<br />
sudo mkdir lmce<br />
sudo chown linuxmce lmce<br />
cd lmce<br />
<br />
Install Subversion<br />
sudo apt-get install subversion<br />
<br />
Fetch the source:<br />
svn co http://svn.linuxmce.org/svn/branches/LinuxMCE-0710/<br />
<br />
Copy the libraries needed for to bootstrap:<br />
cp /usr/pluto/lib/* trunk/src/lib<br />
<br />
Run configure:<br />
cd trunk<br />
./configure<br />
<br />
For the svn.linuxmce.org source there is no configure script yet. Run these to prepare bootstrapping:<br />
find . -iname Makefile -exec sed -e 's/<-mkr_t_compile_defines->/-DKDE_LMCE -DDEBUG -DTHREAD_LOG -DLOG_ALL_QUERIES -I\/opt\/libxine1-pluto\/include -I\/opt\/libsdl1.2-1.2.7+1.2.8cvs20041007\/include -I\/opt\/libsdl1.2-1.2.7+1.2.8cvs20041007\/include\/SD/' -i '{}' \;<br />
find . -iname Makefile -exec sed -e 's/<-mkr_t_compile_libs->/-L\/opt\/libxine1-pluto\/lib -L\/opt\/libsdl1.2-1.2.7+1.2.8cvs20041007\/lib/' -i '{}' \;<br />
<br />
== Building ==<br />
Run make:<br />
make<br />
<br />
= Building on 0604 =<br />
'''Source code for LinuxMCE 0704 is on the [[Mirrors]]. This page hasn't been updated for 0704 yet'''<br />
== Before You Begin==<br />
The build script is tested and designed to run on Ubuntu 6.10 x86 but it can be changed to work on various platforms or at least to give others a starting point on how to do it. It'll be harder to port it to non deb based distributions since the software depends on many debian specific stuff but this i hope to be change over time.<br />
<br />
Also since this script was written with a single goal in mind -- to get everything done -- I might have left, by mistake, some lines of code that may not run on your computers (hardcoded paths and stuff like this). But I rely on you to at least try to fix them before asking for help but if the problem is not so obvious I would gladly give you advice.<br />
<br />
== The Build Scripts ==<br />
The build scripts are in sourceforge svn so to get them you will need subversion installed.<br />
sudo apt-get install subversion<br />
svn co https://linuxmce.svn.sourceforge.net/svnroot/linuxmce/trunk/src/Ubuntu_Helpers<br />
<br />
Before running the build script, i insist that you take a look over it so that you know what is doing and not run it blindly. <br />
<br />
The main script that you need to run would be BuildUbuntu.sh. This script should checkout the svn for you, compile the source, build the packages, build an iso and everything else so you can end up with a usable linuxmce build. In this script you can find some functions that are called one by one to perform several operations, here's a short description:<br />
<br />
*''Install_Build_Needed_Packages'': This will install all the deb packages that you will need to build the sourcecode. Probably you will only need to run it once and comment it after the first run on BuildPackages.sh.<br />
*''Create Diskless Archive'': Runs a debootstrap to create a base filesystem for Diskless Media Directors. It's needed later when it'll be packed in a deb packages. You also don't need to run this every time but is safer to leave it uncommented so that the diskless archive will have the latest ubuntu updates.<br />
*''Import_Skins'': Since linuxmce uses a lot of pngs for the all sort of skins, you won't find them in the svn. This function will download a tar.bz2 archive with all the skins and unpack it so that the package builder will now where to take it from.<br />
*''Checkout_Svn'': Will do a svn checkout on sourceforge to get all the needed sources<br />
*''Build_Replacements'': LinuxMCE needs some 3rd party some packages that are not part of ubuntu distribution. This function will build / get them for you.<br />
*''Build_MakeRelease_Binary'': This function compiles the building tools that will do the compilation / package creation of all the other packages by using information stored in the pluto_main_build database.<br />
*''Import_Build_Database'': Imports a fresh copy of the pluto databases needed at build time.<br />
*''Create_Fake_Windows_Binaries'': Orbiter and other aplications don't only run on Linux. Usually the pluto guys compile their applications on windows and put the binaries on the linux build machine so that package creating application will know where to get them. Since we can't compile windows binaries on linux i made this function that creates some fake binary files with a touch so that the package builder won't fail to run.<br />
*''Build_Pluto_Stuff'': Uses MakeRelase to compile the sources and build packages out of them<br />
*''Create_Local_Repository'': Optional you can create a local repository so that you can easily test your debs.<br />
<br />
There is also the get-packages.sh script that is called by BuildUbuntu.sh and has the goal to create and iso with all the needed packages for a linuxmce installation.<br />
<br />
== Source Code Location ==<br />
<br />
Our source code is located on sourceforge and you can get it by svn from : http://svn.linuxmce.org/svn/<br />
<br />
The png used for the skins are located here : http://www.linuxmce.org/build/linuxmce-skins-1.0.tar.bz2<br />
<br />
The sql dumps of the databases needed for the build : http://www.linuxmce.org/build/linuxmce-databases-1.0.tar.gz</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Config_file_/etc/avwizard.conf&diff=16524Config file /etc/avwizard.conf2008-12-06T15:06:33Z<p>Rwilson131: </p>
<hr />
<div>AVWizard store in the config file in XML format:<br />
<br />
+Options<br />
+Screens<br />
+StartScreen<br />
+Page<br />
-Width = 640<br />
-Height = 480<br />
-Caption = "Audio video wizard" <br />
+Label <br />
-Name: TitleText<br />
-Caption: "press and hold the menu key to change video or audio settings"<br />
+<br />
+<br />
<br />
[[Category:Development]]<br />
[[Category:Programmer's Guide]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Bug_Reports&diff=16523Bug Reports2008-12-06T15:05:40Z<p>Rwilson131: updated link</p>
<hr />
<div>Bugs may be reported via http://svn.linuxmce.org/trac.cgi/report, the bug/issue tracking system.<br />
<br />
[[Category:Development]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=LinuxMCE_Admin_Website&diff=16522LinuxMCE Admin Website2008-12-06T15:02:58Z<p>Rwilson131: updated links and formatting</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
''<center><small>If you were directed here from your Admin page, see the [[:Help:Contents|Help section]].</small></center>''<br />
The LinuxMCE Admin web site is used to setup and configure your LinuxMCE system. It also allows you to do a lot of other tasks, such as to check your voice-mail, organize your media, etc. The web site runs on the LinuxMCE Core. You can access it from the Core web browser, or from any other computer connected to the network. <br />
<br />
==Access to the LinuxMCE Admin Website==<br />
===From a Core or Media Director desktop===<br />
A button is available on the [[Launch Manager]] that is displayed on a Core or Media Director desktop:<br />
* ''Open admin website''<br />
<br />
===From within your home===<br />
You can access the LinuxMCE Admin website from any web browser (Mozilla Firefox, IE, Safari):<br />
<br />
*In the browser address bar, type the URL ''<nowiki>http://&lt;core_ip&gt;/pluto-admin</nowiki>''.<br />
* From within the "internal" LinuxMCE LAN, for example: <br />
**''<nowiki>http://192.168.80.1/pluto-admin</nowiki>''<br />
***(This assumes the IP address range set by default at installation.)<br />
<br />
*You can also use the network name of the Core in place of the IP address. For example, if the Core was named "dcerouter" during the default installation, you could use:<br />
**''<nowiki>http://dcerouter/pluto-admin</nowiki>''<br />
<br />
*From the "external" home LAN, the core_ip would be the LAN IP address of the core. If, for example, the core is at 192.168.0.50 on the home LAN, use:<br />
**''<nowiki>http://192.168.0.50/pluto-admin</nowiki>''<br />
***''Note: To use this method, [[Outside Access]] must be enabled.'''<br />
<br />
===From the Internet===<br />
You could use the IP address:port for your home LAN, with port forwarding to the Core's LAN IP address (enabled by your home LAN router). <br />
*''This is an advanced topic and may not be secure in the current version.''.<br />
<br />
By default, the LinuxMCE Admin web site is not accessible outside your home. This makes the system secure, but it prevents you from accessing the web site via the Internet while away from home. You can [[Outside_Access|turn on Internet access]], allowing access to the admin website anywhere. For your own security, however, we recommend you first read about [[Security & Privacy Issues]].<br />
<br />
===Login page===<br />
*The login page should be displayed. Input an existing user name and password, then click "Login".<br />
<br />
=LinuxMCE Admin Website Sections=<br />
<br />
==Admin page structure==<br />
LinuxMCE is a modular platform with a wide variety of optional modules and devices. Generally, each module will have one or more web pages to configure when using that module. The LinuxMCE Admin web site has a pull-down menu that lets you quickly access any of those pages. The menu options for each particular home will be unique, depending on the configuration.<br />
<br />
Two menu options will always be displayed.<br />
<br />
*The ''[[Wizard Pages|Wizard]]'' is the commonly used way to configure and setup your LinuxMCE system. When you choose Wizard, you will see a series of steps that depends on what devices you have installed in your home. The pages in the Wizard section are intended to be simple for the average user. Context-sensitive help is provided through a "Help" button.<br />
<br />
*There are more low level options under the ''Advanced'' option.<br />
<br />
==Wizard==<br />
*[[Wizard Pages]]<br />
===[[Basic Info]]===<br />
*[[Installation]]<br />
*[[Users]]<br />
*[[Rooms]]<br />
*[[Keyboard Layout]]<br />
===[[Devices]]===<br />
*Core<br />
*[[Interfaces]]<br />
*[[AV Devices| A/V Equipment]]<br />
*[[Media Directors]]<br />
*[[Orbiters]]<br />
*[[Lights]]<br />
*[[Climate]]<br />
*[[Irrigation Devices]]<br />
*[[Devices Security | Security]]<br />
*[[Surveillance Cameras]]<br />
*[[Phone Extensions| Phones]]<br />
*[[Phone Lines]]<br />
*[[Generic Serial Devices]]<br />
*[[Floorplans |Floorplan Wizard]]<br />
===[[Scenarios]]===<br />
*[[Lighting Scenarios]]<br />
*[[Media Scenarios]]<br />
*[[Climate Scenarios]]<br />
*[[Irrigation Scenarios]]<br />
*[[Security Scenarios]]<br />
*[[Telecom Scenarios]]<br />
*[[Mobile Orbiter Scenarios]]<br />
*[[Sleeping Scenarios]]<br />
<br />
===[[Events | Events Handler]]===<br />
*[[Respond to Events]]<br />
*[[Timed Events]]<br />
===Security===<br />
*[[Settings By Alert Type]]<br />
*[[Active sensors]]<br />
*[[Security-Video Links]]<br />
*[[Notifications| Cellphone Notifications]]<br />
*[[Outside Access]]<br />
===[[Restart]]===<br />
<br />
==Advanced==<br />
===Software===<br />
*[[Add Software]]<br />
*[[Software Versions]]<br />
*[[Boot Sequence]]<br />
*[[Packages]]<br />
<br />
===Network===<br />
*[[Network Settings]]<br />
*[[Firewall Rules]]<br />
*[[WAP/GPRS Settings]]<br />
*[[Dynamic DNS Settings]]<br />
<br />
===Configuration===<br />
* [[Advanced Pages Devices| Devices]]<br />
* Unknown Devices<br />
* [[Device Templates]]<br />
** [[Edit Device Template]]<br />
* Device Category Device Data<br />
* [[Advanced Pages Scenarios | Scenarios]]<br />
* [[Advanced Pages Events | Events]]<br />
* [[Phones Setup]]<br />
* [[Backup and Restore | Backups]]<br />
* [[Create_RAID_in_LMCE#Creating_RAID| RAID]]<br />
<br />
===[[Privacy Settings]]===<br />
* [[Users#Users and Orbiters|Users-Orbiters]]<br />
* [[Users#Users and Rooms|Users-Rooms]]<br />
* [[Users#Restrict Access|Restrict Access]]<br />
<br />
===sqlCVS===<br />
* Update<br />
* Checkin<br />
* Diff<br />
* View Batch<br />
<br />
===[[DCE]]===<br />
* Device Data<br />
* Commands<br />
* Events<br />
<br />
==Automation==<br />
*[[Device Status]]<br />
*[[Execute Scenarios]]<br />
==Security==<br />
*[[Alert Logs]]<br />
*[[Mode Change Logs]]<br />
*[[Status]]<br />
*[[View Cameras]]<br />
==Files&Media==<br />
* Media Browser<br />
* [[Media Files Sync]]<br />
* Playlist<br />
* Media Providers<br />
* Bookmarks<br />
* [[Cover Art]]<br />
* Ripping Status<br />
<br />
==Telecom==<br />
* My Voicemail<br />
* General Voicemail<br />
* Phone book<br />
* Call Routing<br />
* Priority Callers<br />
* Callers for me<br />
<br />
The following is leftover from another page:<br />
<br />
==Adding custom entries in LinuxMCE Admin menus==<br />
<br />
Currently only option is to enter entries into Pluto_main database, table PageSetup. There you'll find other entries already, go to the end and add yours (but be careful not to break anything and also save your changes, cause they can probably lost in migration or updates - not sure)...<br />
<br />
Anyway for simple test I've created two entries: "Tinia" as main menu entry (after Telecom) and then subentry for phpmyadmin that I frequently use. If I highlight only important fields, my entries look like this :<br />
<br />
'''PK_PageSetup FK_..._Parent Website OrderNum FK_Package Description pageURL showInTopMenu'''<br />
190 NULL 1 70 NULL Tinia 1 <br />
191 190 1 0 NULL PHPMyAdmin http://192.168.0.1/phpmyadmin/ 1<br />
<br />
If FK_PageSetup_Parent is empty, then you'll have main entry on green main bar. If you want subentry, then you just specify PK_PageSetup of your parent in FK_PageSetup_Parent. You can also add URL</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Create_RAID_in_LMCE&diff=16521Create RAID in LMCE2008-12-06T14:59:47Z<p>Rwilson131: added images and category</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
[[Category: Tutorials]]<br />
[[Category: Storage]]<br />
[[Category: Admin Website]]<br />
== Introduction ==<br />
RAID (<b>R</b>edundant <b>A</b>rray of <b>I</b>ndependent <b>D</b>rives) refers to a data storage scheme which has as a benefit increase of the data integrity, fault-tolerance, throughput and/or capacity<br />
There are 3 standard RAID levels which can be used in LMCE, to define RAIDS:<br />
=== RAID 0 ===<br />
* Striped Set (2 disk minimum) without parity<br />
* provides improved performance <br />
* additional storage <br />
* no fault tolerance from disk errors or disk failure. Any disk failure destroys the array, which becomes more likely with more disks in the array<br />
=== RAID 1 ===<br />
* Mirrored Set (2 disks minimum) without parity. <br />
* Provides fault tolerance from disk errors and single disk failure. <br />
* Increased read performance occurs when using a multi-threaded operating system that supports split seeks, very small performance reduction when writing. <br />
* A drive has its data duplicated on another different drive. If either drive fails, the other continues to function as a single drive until the failed drive is replaced. <br />
Conceptually simple, RAID 1 is popular for those who require fault tolerance and don't need top-notch read performance.<br />
=== RAID 5 ===<br />
* Striped Set (3 disk minimum) with Distributed Parity<br />
* Distributed parity requires all but one drive to be present to operate<br />
* drive failure requires replacement, but the array is not destroyed by a single drive failure. <br />
* Upon drive failure, any subsequent reads can be calculated from the distributed parity such that the drive failure is masked from the end user. <br />
* The array will have data loss in the event of a second drive failure and is vulnerable until the data that was on the failed drive is rebuilt onto a replacement drive<br />
== Creating RAID ==<br />
[[Image:AdvancedRaid.jpeg]]<br />
# Go to '''[[LinuxMCE Admin Website]]-->Advanced->Configuration->[[RAID]]''' <br />
## Specify the computer that should hold the RAID in the <i>Parent</i> section. <br />
## Give a <i>Description</i> to the Raid you’re creating. <br />
## Choose the type of RAID, according to what you need to do. <br />
## Check the <i>Use automatically</i> box, if you want your data to be stored automatically using this RAID. <br />
## Choose what kind of data structure you want for this RAID. Then click on the <i>Add</i> button to save your settings.</p><br />
# Choose the disk drives you want to include in the RAID, by selecting the available ones from the drive list. The list contains only the disks that there are not used. Also you have the option to add spare disks.<br />
# When you have finished adding your disks, press the ‘Create RAID array’ button, to re-write your data in the desired pattern. You will see your RAID created in the list and you will be able to access the advanced configuration page, to add new drives, or to delete it.<br />
Note: This is a totally software RAID, you don’t need to activate the RAID in your BIOS.<br />
<br />
== Troubleshooting ==<br />
#If the array keeps coming back as failed, try stopping non-existant RAID devices:<br />
## sudo mdadm --stop /dev/md0<br />
## sudo mdadm --stop /dev/md1<br />
#If you continue having problems then try ssh'ing in, delete any partitions using fdisk, reboot and try again.</div>Rwilson131http://wiki.linuxmce.org/index.php?title=File:AdvancedRaid.jpeg&diff=16520File:AdvancedRaid.jpeg2008-12-06T14:56:05Z<p>Rwilson131: Web Admin Screenshot</p>
<hr />
<div>Web Admin Screenshot</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Edit_Device_Template&diff=16519Edit Device Template2008-12-06T14:49:54Z<p>Rwilson131: added image and spelling corrections</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
[[Category: Admin Website]]<br />
[[Category: Programmer's Guide]]<br />
[[Image:EditDeviceTemplate.jpg|thumb|250px|Select Device Template Admin Page]]<br />
[[Image:Editdevicetemplatepage.jpg|thumb|250px|Edit Device Template Admin Page]]<br />
This is how you define a Device Template, and specify what data it needs, and what commands and events it will implement.<br />
<br />
The data, commands and event sections pertain to [[LinuxMCE Libraries DCE]].<br />
<br />
===Device Template # ....===<br />
<br />
====Description====<br />
This will be used as the name of the device template.<br />
<br />
====Implements DCE====<br />
If "Implements DCE" is checked, that means this Device Template will be able to run as a stand-alone device, connecting directly to the DCE Router to receive and process its own data, commands and events. [[Does the device Implement DCE?]] for an explanation.<br />
<br />
====Command line====<br />
<br />
====Device Category====<br />
The category to which these devices belong.<br />
<br />
====Manufacturer====<br />
The company that makes these devices.<br />
<br />
====Manufacturer URL====<br />
Website of aforementioned manufacturer.<br />
<br />
====Internal URL suffix====<br />
<br />
<br />
====Design Objects to use as remotes====<br />
Design Objects are menus that appear on the Orbiters, and here is where you specify what design objects, or menus, should be used to control this device. [[Design Objects]]<br />
<br />
====This device is controlled via====<br />
You also specify here what devices this one will be controlled via, also referred to as what devices are eligible parents. This is an "or" relationship. Any device that matches any of the categories or any of the device templates you specify will be considered a valid parent, and the user will be allowed to create a child device based on this device template. [[Understanding Controlled Via (aka Parent)]]<br />
<br />
====This device is controlled via category====<br />
<br />
====Packages====<br />
Here you can also specify what package will contain this device's software. If you choose an existing package, then this device will be added to that software package the next time LinuxMCE's "MakeVersion" program is run. Typically, however, each developer will create his own package to contain his software, and only group multiple Device Templates together into a package if they logically belong together as a whole. LinuxMCE's "standard plug-in" package is an example. It contains all the standard plug-in devices since they are really inseparable and belong in the same package. [[Packages]]<br />
<br />
====Audio/Video Device====<br />
If the device is an Audio/Video device, whether or not it implements DCE, you should check the box. This will enable a button allowing you to specify a variety of extra information about this device that is specific to A/V equipment, such as what inputs it uses, if it has different 'modes', settings for controlling it via infrared, etc.<br />
<br />
====Is PlugIn====<br />
====Is Embedded====<br />
====Inherits MAC From PC====<br />
====Is IP Based====<br />
====Comm Method====<br />
====Configuration script====<br />
====Comments====<br />
<br />
===Device data===<br />
When you specify what '''data parameters''' this device needs, try to use one of the existing data parameters in the list if there is an appropriate one. Which one you choose is unimportant so long as the type is correct (string, integer, etc.). DCE makes no differentiation between the parameters--they are just names. If this device implements DCE, then DCEGen will create member variables for setting/accessing all the data parameters for your device, and the names of the members and functions will be the same as the name on the list. Also, when the user adds an instance of this device to his system, either manually or with the wizard, he will be able to fill in a value for this parameter if you check "Allowed to Modify". If you check "Required", then some value will be required and the parameter cannot be empty. If you check "Use Device Template Default", then whatever value you put in here as the default will be used by every device. Note that if you put in a default value, do not check "Allowed to Modify", then the device will be created with the default value. However, if you later change the default value, all the devices values will not change unless you check this "Use Device Template Default" box. In that case, the device really has no local value and just uses the current default every time. If "Set by Device" is checked, then when the DCE class is generated a "set" methods will also be created so the device can set the value itself. Otherwise the data parameter is considered 'read-only' by the device and can only be changed using the [[LinuxMCE Admin Website]].<br />
<br />
===Commands===<br />
Because most devices implement lots of '''commands''', and similar devices will always implement similar commands, commands are put into groups and the groups are added to the device template rather than adding the commands manually. A TV, for example, can have 100 "standard" commands--like Volume Up/Down, Channel Up/Down, On/Off, Brightness Up, etc. Rather than having to add every command to every TV, a group called "Standard TV commands" can be created, and you just add the group to the TV. Command Groups use the same categories as the device template themselves. By default, you will only see here the command groups within the same category as the device template to keep the screen clean. Just check the command groups you want. However, there is a pull-down listing every single command group so you can add command groups that are not in the same category. You can also create a new command group and then specify what commands belong to that group. When you create or edit a command group you will have the option of creating/editing the commands, and there you will be able to specify what parameters that command takes.<br />
<br />
If this device can be controlled via infrared, the infrared code for each command will need to be stored or learned. The number of different models for A/V equipment is staggering. However most manufacturers always use the same infrared codes across their whole line. For example, a Sony remote control for 1 TV will control all other Sony TV's too. So rather than requiring the user to add infrared codes for every Sony TV, we just create an infrared group "Sony TV Commands". Then you can add the DCE Command to Infrared Code commands to the group. Later when someone else adds a Device Template for another model of Sony TV, they can just specify that it uses the same Infrared Group. Note that the infrared group should therefore be a superset of all the commands--every command for every Sony TV. Some high-end models may have commands like "Wide screen" vs "Normal", which the low-end models do not support. In this case, the high-end model may have more commands than the low-end model, but all the commands should be in the infrared group. The low-end model will never use the infrared codes that it doesn't support, but at least they will be there and different infrared groups will not be required. When the manufacturer changes the infrared codes their, then a new infrared group will be required.<br />
<br />
===Events===<br />
Whatever '''events''' this device will fire are also added here. When you create/edit an event, you can specify what parameters that event takes.<br />
<br />
<br />
===Plug & Play===<br />
====Range of MAC====<br />
====Vendor Model ID====<br />
====PNP protocol====<br />
====Serial Number====<br />
====PNP detection script====<br />
====Comment====<br />
===Device Template Related===<br />
====Add device template related #ID====<br />
====Extra====<br />
===Screens===<br />
====This device requires the following screens====</div>Rwilson131http://wiki.linuxmce.org/index.php?title=File:Editdevicetemplatepage.jpg&diff=16518File:Editdevicetemplatepage.jpg2008-12-06T14:40:52Z<p>Rwilson131: Web Admin Screen shot</p>
<hr />
<div>Web Admin Screen shot</div>Rwilson131http://wiki.linuxmce.org/index.php?title=File:PhonesSetup.jpg&diff=16517File:PhonesSetup.jpg2008-12-06T14:40:03Z<p>Rwilson131: Freepbx screen shot</p>
<hr />
<div>Freepbx screen shot</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Installing_Flash&diff=16515Installing Flash2008-12-06T14:23:27Z<p>Rwilson131: Flash moved to Installing Flash: more descriptive title</p>
<hr />
<div>[[Category:Tutorials]]<br />
<br />
==Adobe Flash Player==<br />
Adobe Flash Player is the high-performance, lightweight, highly expressive client runtime that delivers powerful and consistent user experiences across major operating systems, browsers, mobile phones, and devices.<br />
<br />
===Installing On AMD64 Machines===<br />
'''Update: An alpha version of [http://labs.adobe.com/downloads/flashplayer10.html 64-bit Adobe Flash Player 10 for Linux] operating systems was released on 11/17/2008. This should make the instructions below obsolete. However, since LinuxMCE runs an older version of Kubuntu these instructions are still valid.<br />
Will update once new version is out to see if code still applies<br />
'''<br />
*First in the KDE desktop, open the console<br />
*Code: <br />
sudo apt-get install nspluginwrapper (it may ask for your password, which is linuxmce, if you installed from the DVD)<br />
*Next type: <br />
wget http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_9_linux.tar.gz<br />
tar xvfz install_flash_player_9_linux.tar.gz<br />
* Next Type: <br />
mkdir -pv ~/.mozilla/plugins<br />
cp -iv install_flash_player_9_linux/libflashplayer.so ~/.mozilla/plugins<br />
nspluginwrapper -i ~/.mozilla/plugins/libflashplayer.so<br />
*Close firefox and then reopen and test, it should now play flash.</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Flash&diff=16516Flash2008-12-06T14:23:27Z<p>Rwilson131: Flash moved to Installing Flash: more descriptive title</p>
<hr />
<div>#REDIRECT [[Installing Flash]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Installing_Flash&diff=16514Installing Flash2008-12-06T14:22:50Z<p>Rwilson131: add category plus update about flash 10</p>
<hr />
<div>[[Category:Tutorials]]<br />
<br />
==Adobe Flash Player==<br />
Adobe Flash Player is the high-performance, lightweight, highly expressive client runtime that delivers powerful and consistent user experiences across major operating systems, browsers, mobile phones, and devices.<br />
<br />
===Installing On AMD64 Machines===<br />
'''Update: An alpha version of [http://labs.adobe.com/downloads/flashplayer10.html 64-bit Adobe Flash Player 10 for Linux] operating systems was released on 11/17/2008. This should make the instructions below obsolete. However, since LinuxMCE runs an older version of Kubuntu these instructions are still valid.<br />
Will update once new version is out to see if code still applies<br />
'''<br />
*First in the KDE desktop, open the console<br />
*Code: <br />
sudo apt-get install nspluginwrapper (it may ask for your password, which is linuxmce, if you installed from the DVD)<br />
*Next type: <br />
wget http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_9_linux.tar.gz<br />
tar xvfz install_flash_player_9_linux.tar.gz<br />
* Next Type: <br />
mkdir -pv ~/.mozilla/plugins<br />
cp -iv install_flash_player_9_linux/libflashplayer.so ~/.mozilla/plugins<br />
nspluginwrapper -i ~/.mozilla/plugins/libflashplayer.so<br />
*Close firefox and then reopen and test, it should now play flash.</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Realtek_8168&diff=16512Realtek 81682008-12-06T14:07:07Z<p>Rwilson131: /* Asus M3A78-EM */ updated links</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
[[Category: Hardware]]<br />
[[Category: Networking]]<br />
[[Category: Tutorials]]<br />
<br />
=The Realtek RTL8168 network card on LinuxMCE=<br />
<br />
This card is supposed to work with the r8169 module, but this seems to fail for newer cards. Realtek provides the source code for a r8168 module on [http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false#2 their site].<br />
<br />
===What you need to do===<br />
* Download the driver from Realtek (at the time of this article, the version is 8.008.00, released 2008/7/24) to compile the r8168 module<br />
* Install the linux-source package, to hack into the r8169 module.<br />
<br />
The default r8169 module and Realtek's r8168 overlap on a PCI ID, and that's why you need the kernel source. You'll compile the r8169 without the PCI ID that r8168 will associate with.<br />
<br />
>>TODO: Insert section of required packages for the build to work<br />
<br />
===Compiling Realtek's r8168 module===<br />
<br />
* [http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false#2 Download] the Realtek driver: you'll get a file called r8168-8.008.00.tar.bz2<br />
* unpack the file:<br />
tar -jxf r8168-8.008.00.tar.bz2<br />
* switch into the directory that is created:<br />
cd r8168-8.008.00<br />
* build the module:<br />
make<br />
* copy the module to the running kernel:<br />
cp src/r8168.ko /lib/modules/2.6.22-14-generic/kernel/drivers/net/<br />
<br />
===Hacking the r8169 module===<br />
<br />
* Install the kernel source:<br />
apt-get install linux-source<br />
* Un pack the kernel source:<br />
cd /usr/src; tar -jxf linux-source-2.6.22.tar.bz2<br />
* Switch to the kernel directory:<br />
cd linux-source-2.6.22<br />
* Copy the running kernel's configuration:<br />
cp /boot/config-2.6.22-14-generic .config<br />
* Prepare the kernel so you can build modules:<br />
make scripts prepare<br />
* Apply this patch:<br />
patch < r8168.diff<br />
<pre><br />
--- drivers/net/r8169.c.orig 2008-09-05 17:07:29.000000000 +0300<br />
+++ drivers/net/r8169.c 2008-09-04 23:49:51.000000000 +0300<br />
@@ -162,7 +162,7 @@<br />
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8129), 0, 0, RTL_CFG_0 },<br />
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8136), 0, 0, RTL_CFG_2 },<br />
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8167), 0, 0, RTL_CFG_0 },<br />
- { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8168), 0, 0, RTL_CFG_1 },<br />
+ //{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8168), 0, 0, RTL_CFG_1 },<br />
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8169), 0, 0, RTL_CFG_0 },<br />
{ PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4300), 0, 0, RTL_CFG_0 },<br />
{ PCI_DEVICE(0x1259, 0xc107), 0, 0, RTL_CFG_0 },<br />
</pre><br />
* Build the network modules:<br />
make M=`pwd`/drivers/net modules<br />
* Confirm that the new r8169 module doesn't have the "pci:v000010ECd00008168sv" alias:<br />
modinfo drivers/net/r8169.ko<br />
* Copy the new r8169.ko to the running kernel:<br />
cp drivers/net/r8169.ko /lib/modules/2.6.22-14-generic/kernel/drivers/net/<br />
* Run depmod<br />
depmod<br />
* Load the module:<br />
modprobe r8168<br />
<br />
=== MDs ===<br />
After you created the modules as described above:<br />
<br />
* Copy the modules to all the affected MD filesystems, in the corresponding location<br />
* Follow the instructions on the [[Unrecognized NIC]] page<br />
<br />
== Asus M3A78-EM ==<br />
Here are the steps required to get this motherboard's Realtek 8168 Gigabit Ethernet Working for an MD.<br />
<br />
--[[User:Sethj|Sethj]] 15:13, 3 December 2008 (CET)<br />
<br />
[[Generic_PC#Manual_Setup_of_a_Media_Director | First I manually created the Media Director]] from the [[LinuxMCE Admin Website]]. Did not want it to build an AMD64 image, wanted to stay with i386, and I knew the MAC address of the new MD onboard NIC. Ran "Setup Diskless MD" when that completed I clicked the "Rebuild Image" for the new MD. While that was running I completed the next few things. Wait for this to complete, and then continue.<br />
<br />
* Download the driver package for Linux from Asus' web site here : [http://support.asus.com/download/download.aspx?SLanguage=en-us&model=M3A78-EM LinuxDrivers.zip] - It is under "Others"<br />
* unzip the package to /usr/src<br />
sudo su<br />
cd /usr/src<br />
unzip -qq /path/to/LinuxDrivers.zip<br />
cd /usr/src/LinuxDrivers/LAN/r8168-8.003.00/r8168-8.003.00<br />
make<br />
cp src/r8168.ko /lib/modules/2.6.22-14-generic/kernel/drivers/net/<br />
mv /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8169.ko /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8169.ko.not<br />
depmod -a<br />
/usr/pluto/bin/Diskless_BuildDefaultImage.sh<br />
cp /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8168.ko /usr/pluto/diskless/<moon #>/lib/modules/2.6.22-14-generic/kernel/drivers/net<br />
vi /usr/pluto/diskless/<moon #>/etc/initramfs-tools/modules<br />
added r8168 and saved<br />
cd /usr/pluto/diskless<br />
chroot <moon #><br />
mv /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8169.ko /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8169.ko.not<br />
depmod -a /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8168.ko<br />
cd /boot<br />
update-initramfs -uv<br />
(scrolled up to verify the new module was added it was at the top of the output)<br />
for S and G's ran depmod -a again<br />
exit out of the chroot<br />
<br />
Now boot or reboot the MD.<br />
<br />
For a Core: (Not Tested)<br />
<br />
* Download the driver package for Linux from Asus' web site here : [http://support.asus.com/download/download.aspx?SLanguage=en-us&model=M3A78-EM LinuxDrivers.zip] - It is under "Others"<br />
* unzip the package to /usr/src<br />
sudo su<br />
cd /usr/src<br />
unzip -qq /path/to/LinuxDrivers.zip<br />
cd /usr/src/LinuxDrivers/LAN/r8168-8.003.00/r8168-8.003.00<br />
make<br />
cp src/r8168.ko /lib/modules/2.6.22-14-generic/kernel/drivers/net/<br />
mv /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8169.ko /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8169.ko.not<br />
depmod -a /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8168.ko<br />
vi /etc/initramfs-tools/modules<br />
add r8168<br />
cd /boot <br />
update-initramfs -uv<br />
(scroll up to verify the new module was added)<br />
for S and G's run depmod -a again<br />
<br />
Now reboot, and that should sort it out.</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Realtek_8168&diff=16511Realtek 81682008-12-06T14:03:31Z<p>Rwilson131: </p>
<hr />
<div> {| align="right"<br />
| __TOC__<br />
|}<br />
[[Category: Hardware]]<br />
[[Category: Networking]]<br />
[[Category: Tutorials]]<br />
<br />
=The Realtek RTL8168 network card on LinuxMCE=<br />
<br />
This card is supposed to work with the r8169 module, but this seems to fail for newer cards. Realtek provides the source code for a r8168 module on [http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false#2 their site].<br />
<br />
===What you need to do===<br />
* Download the driver from Realtek (at the time of this article, the version is 8.008.00, released 2008/7/24) to compile the r8168 module<br />
* Install the linux-source package, to hack into the r8169 module.<br />
<br />
The default r8169 module and Realtek's r8168 overlap on a PCI ID, and that's why you need the kernel source. You'll compile the r8169 without the PCI ID that r8168 will associate with.<br />
<br />
>>TODO: Insert section of required packages for the build to work<br />
<br />
===Compiling Realtek's r8168 module===<br />
<br />
* [http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false#2 Download] the Realtek driver: you'll get a file called r8168-8.008.00.tar.bz2<br />
* unpack the file:<br />
tar -jxf r8168-8.008.00.tar.bz2<br />
* switch into the directory that is created:<br />
cd r8168-8.008.00<br />
* build the module:<br />
make<br />
* copy the module to the running kernel:<br />
cp src/r8168.ko /lib/modules/2.6.22-14-generic/kernel/drivers/net/<br />
<br />
===Hacking the r8169 module===<br />
<br />
* Install the kernel source:<br />
apt-get install linux-source<br />
* Un pack the kernel source:<br />
cd /usr/src; tar -jxf linux-source-2.6.22.tar.bz2<br />
* Switch to the kernel directory:<br />
cd linux-source-2.6.22<br />
* Copy the running kernel's configuration:<br />
cp /boot/config-2.6.22-14-generic .config<br />
* Prepare the kernel so you can build modules:<br />
make scripts prepare<br />
* Apply this patch:<br />
patch < r8168.diff<br />
<pre><br />
--- drivers/net/r8169.c.orig 2008-09-05 17:07:29.000000000 +0300<br />
+++ drivers/net/r8169.c 2008-09-04 23:49:51.000000000 +0300<br />
@@ -162,7 +162,7 @@<br />
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8129), 0, 0, RTL_CFG_0 },<br />
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8136), 0, 0, RTL_CFG_2 },<br />
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8167), 0, 0, RTL_CFG_0 },<br />
- { PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8168), 0, 0, RTL_CFG_1 },<br />
+ //{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8168), 0, 0, RTL_CFG_1 },<br />
{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8169), 0, 0, RTL_CFG_0 },<br />
{ PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x4300), 0, 0, RTL_CFG_0 },<br />
{ PCI_DEVICE(0x1259, 0xc107), 0, 0, RTL_CFG_0 },<br />
</pre><br />
* Build the network modules:<br />
make M=`pwd`/drivers/net modules<br />
* Confirm that the new r8169 module doesn't have the "pci:v000010ECd00008168sv" alias:<br />
modinfo drivers/net/r8169.ko<br />
* Copy the new r8169.ko to the running kernel:<br />
cp drivers/net/r8169.ko /lib/modules/2.6.22-14-generic/kernel/drivers/net/<br />
* Run depmod<br />
depmod<br />
* Load the module:<br />
modprobe r8168<br />
<br />
=== MDs ===<br />
After you created the modules as described above:<br />
<br />
* Copy the modules to all the affected MD filesystems, in the corresponding location<br />
* Follow the instructions on the [[Unrecognized NIC]] page<br />
<br />
== Asus M3A78-EM ==<br />
Here are the steps required to get this motherboard's Realtek 8168 Gigabit Ethernet Working for an MD.<br />
<br />
--[[User:Sethj|Sethj]] 15:13, 3 December 2008 (CET)<br />
<br />
First I manually created the Media Director [[Generic_PC#Manual_Setup_of_a_Media_Director]] from the Web Admin page. Did not want it to build an AMD64 image, wanted to stay with i386, and I knew the MAC address of the new MD onboard NIC. Ran "Setup Diskless MD" when that completed I clicked the "Rebuild Image" for the new MD. While that was running I completed the next few things. Wait for this to complete, and then continue.<br />
<br />
* Download the driver package for Linux from Asus' web site here : [http://support.asus.com/download/download.aspx?SLanguage=en-us&model=M3A78-EM LinuxDrivers.zip] - It is under "Others"<br />
* unzip the package to /usr/src<br />
sudo su<br />
cd /usr/src<br />
unzip -qq /path/to/LinuxDrivers.zip<br />
cd /usr/src/LinuxDrivers/LAN/r8168-8.003.00/r8168-8.003.00<br />
make<br />
cp src/r8168.ko /lib/modules/2.6.22-14-generic/kernel/drivers/net/<br />
mv /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8169.ko /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8169.ko.not<br />
depmod -a<br />
/usr/pluto/bin/Diskless_BuildDefaultImage.sh<br />
cp /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8168.ko /usr/pluto/diskless/<moon #>/lib/modules/2.6.22-14-generic/kernel/drivers/net<br />
vi /usr/pluto/diskless/<moon #>/etc/initramfs-tools/modules<br />
added r8168 and saved<br />
cd /usr/pluto/diskless<br />
chroot <moon #><br />
mv /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8169.ko /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8169.ko.not<br />
depmod -a /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8168.ko<br />
cd /boot<br />
update-initramfs -uv<br />
(scrolled up to verify the new module was added it was at the top of the output)<br />
for S and G's ran depmod -a again<br />
exit out of the chroot<br />
<br />
Now boot or reboot the MD.<br />
<br />
For a Core: (Not Tested)<br />
<br />
* Download the driver package for Linux from Asus' web site here : [http://support.asus.com/download/download.aspx?SLanguage=en-us&model=M3A78-EM LinuxDrivers.zip] - It is under "Others"<br />
* unzip the package to /usr/src<br />
sudo su<br />
cd /usr/src<br />
unzip -qq /path/to/LinuxDrivers.zip<br />
cd /usr/src/LinuxDrivers/LAN/r8168-8.003.00/r8168-8.003.00<br />
make<br />
cp src/r8168.ko /lib/modules/2.6.22-14-generic/kernel/drivers/net/<br />
mv /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8169.ko /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8169.ko.not<br />
depmod -a /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8168.ko<br />
vi /etc/initramfs-tools/modules<br />
add r8168<br />
cd /boot <br />
update-initramfs -uv<br />
(scroll up to verify the new module was added)<br />
for S and G's run depmod -a again<br />
<br />
Now reboot, and that should sort it out.</div>Rwilson131http://wiki.linuxmce.org/index.php?title=IRC_Chat&diff=16508IRC Chat2008-12-06T04:54:55Z<p>Rwilson131: </p>
<hr />
<div>[[Category: Tutorials]]<br />
[[Category: troubleshooting]]<br />
==From your LinuxMCE box==<br />
# Go to the KDE desktop: '''Advanced --> KDE desktop'''<br />
# Start Konversation: '''K --> Internet --> Konversation (IRC Client)'''<br />
# Hit the '''New''' button<br />
## Identity --> Edit: Change the nicknames<br />
## Network: ''Freenode''<br />
## Servers --> Add: ''irc.freenode.net'' and close with the '''OK''' button<br />
## Auto join Channels --> Add: ''#LinuxMCE'' and close with the '''OK''' button<br />
## Press the '''OK''' button<br />
# Select ''LinuxMCE'' and close the dialog with the '''Connect''' button<br />
<br />
Step 3 is only needed the first time<br />
==From elsewhere==<br />
If your browser is properly configured to handle "irc" URLs you can click here:<br />
[irc://irc.freenode.net/linuxmce irc://irc.freenode.net/linuxmce]<br />
<br />
Most IRC clients allow you to connect manually, simply type the following:<br />
/server irc.freenode.net<br />
Change your nick to your liking (as long as nobody else is using it):<br />
/nick what_ever_nick_you_want<br />
Then join our channel:<br />
/join #linuxmce<br />
<br />
Now you should be dropped right into the channel.</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Pioneer_Pro-1140HD&diff=16507Pioneer Pro-1140HD2008-12-06T04:53:41Z<p>Rwilson131: </p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
[[Category: Hardware]]<br />
[[Category: Displays]]<br />
==Features==<br />
* 50" (diagonal) [[16:9|widescreen]] Plasma television<br />
* [[Control_A/V_equipment_with_RS232/USB/Ethernet | RS232 port]] at the back to allow external control (by LinuxMCE for example)<br />
* HDMI inputs<br />
For detailed specs see the [http://www.pioneerelectronics.com/PUSA/Products/HomeEntertainment/PlasmaTVs+Monitors/EliteTVs/PRO-1140HD Pioneer 1140HD webpage].<br />
* [http://www.pioneerelectronics.com/PUSA/Home+Entertainment+Custom+Install/Detailed+Product+Information/Plasma+Displays Operations manual]<br />
== Serial Port use ==<br />
The Pioneer Pro-1140HD can be controlled by LinuxMCE through the serial port.<br />
#From the factory the 1140HD is set to SR+ mode which ignores the rs232 port. In order to take the tv out of SR+ mode so it will respond to rs232 information you must start with the tv in standby mode. On the television remote, press the "Home Menu" key and within 3 seconds press the power on button. You will see SR+ <=> :On at the bottom of the screen. Press the left key on the direction pad of the remote to turn the SR+ <=> to :Off. If you need to change the baud rate, you can press down on the direction pad of the remote. The factory default baud rate is 9600.<br />
# You will need a "straight" or "pass through" serial cable to connect the tv to the media director or hybrid/core.<br />
=== Create a New Template in LinuxMCE ===<br />
Directions for creating the template are discuss in [http://forum.linuxmce.org/index.php?topic=6045.0 the forum].<br />
The codes for controlling the 1140hd are found on [http://www.pioneerelectronics.com/PUSA/Home+Entertainment+Custom+Install/RS-232+Codes/ch.Plasma+Displays.Default this page].<br />
<br />
An example of the code you enter to turn on the tv is: <$"\x02**PON\x03"$><br />
<br />
An example of the code to change tv input to input 6 (an HDMI port) is: <$"\x02**INPS06\x03"$><br />
<br />
--[[User:Todd|Todd]] 18:24, 23 August 2008 (PDT)<br />
== Note ==<br />
There used to be a Pioneer Kuro template. The Pioneer Kuro 5080 seems to be identical to the Pioneer Pro-1140HD.</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Launch_Manager&diff=16506Launch Manager2008-12-06T04:34:39Z<p>Rwilson131: </p>
<hr />
<div>[[Category:LinuxMCE Devices]]<br />
===LinuxMCE Launch Manager===<br />
*LinuxMCE Launch Manager will start your Media Center.<br />
* The screen shown is displayed on a Media Director. The Core Launch Manager will display additional buttons, including buttons for [[Orbiter Generator|regen]], [[Orbiter Generator|Quick regen]], and [[Quick reload router]]. <br />
*There are checkboxes that will enable the LinuxMCE software on this PC to autostart as a Core, a Media Director, or both (i.e. a hybrid).<br />
*There are buttons to start to start LinuxMCE and to start Core services.<br />
*If no services are started (or autostarted), the PC will function as a Kubuntu Linux PC only.<br />
<br />
<br />
[[Image:LM_LMCE.jpg]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=GSD_Doc&diff=16505GSD Doc2008-12-06T04:28:38Z<p>Rwilson131: </p>
<hr />
<div>{{stub}}<br />
[[Category:Programmer's Guide]]<br />
On the Device Template, add the command group 'Internal Ruby Commands'. Choose 'Advanced, Devices' from the menu, and select the PC on which you want to run your device--whatever PC the external hardware is connected to. Choose 'Create child device', and add an instance of your new device template. Choose 'Wizard, Devices, Generic Serial Device' from the menu, select your device, and choose 'Edit Ruby Code'. Fill in the blanks for implementing each command, and also for how to handle incoming data, process idle messages and so on.<br />
<br />
The documentation for how to do this with GSD is here (todo)</div>Rwilson131http://wiki.linuxmce.org/index.php?title=GPT&diff=16504GPT2008-12-06T04:23:42Z<p>Rwilson131: </p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
[[Category:Tutorials]]<br />
If you want to create partitions larger than 2TB you'll have to use GTP partitioning system instead of classical MBR. Note that you BIOS knows only MBR partitioning schema and will not likely boot from a GTP partition. You cannot mix GTP and MBR partitions on a single drive so drives larger than 2TB will need to be completely GTP and will be non-bootable; you will need a separate hard drive that contains the system.<br />
== Creating Partitions ==<br />
You'll need to use parted to create the partitions since fdisk only know to work with MBR. The next command will open a parted shell, you'll need to replace /dev/sda with the drive that you want to partition.<br />
parted /dev/sda<br />
<br />
The next commands should be typed int the parted shell.<br />
<br />
WARNING: By running this commands you will delete you partition schema and won't be able to access the information that was stored on the disk (if any).<br />
(parted) mklabel gpt <-- This one creates a empty partition table on the disk<br />
<br />
(parted) print <-- List some information about the current partition table, size of the disc<br />
<br />
(parted) mkpart primary 0 3000GB <--- Creates a partition starting from the beginning trough the 3000GB location<br />
(parted) mkpart primary 3000GB 5000GB <--- Creates another partition starting from the 3000GB locations to the 5000GB location<br />
<br />
(parted) quit <-- Exit the parted shell<br />
<br />
After doing the previous command, you should have created two partitions, a 3TB and a 2TB one. In order for udev to create /dev/sda1 and /dev/sda2 devices associated with the partitions, you need to run the next command or reboot your computer:<br />
partprobe /dev/sda<br />
== Formating the Partitions ==<br />
Except of partition creation you won't see any difference between GPT and MBR in linux. So for formatting you can do it the same way as you would format any other discs. For example:<br />
mkfs.ext3 /dev/sda1<br />
== Resize Partition Table ==<br />
If you partitioned a raid array with GPT and you later increased the size by adding more disks you must run parted again on that drive and tell it to use all available space. A simple 'print' command in parted will use the warning message to which you you need to answe 'F'.<br />
# parted /dev/sda<br />
<br />
(parted) print<br />
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all <br />
of the space (an extra 1953103872 blocks) or continue with the current setting? <br />
Fix/Ignore? F<br />
== Resize Existing Partitions ==<br />
'''Warning:''' <span style="color: #700">Parted has some known bugs in both Ubuntu 0710 and LinuxMCE that will prevent resizing of a ext3 partition. Until this bugs get fixed the next instruction are here just for information purpose.</span><br />
Parted can also resize an existing partition to fill some unused space that you added. Before trying doing the partition resize check first that you partition is umounted and that it the filesystem on it is fine. Parted will complain about mounted partitions or inconsistent filesystem anyway.<br />
<br />
For example, let's take a 5000GB drive that has a 4000GB ext3 partition on it.<br />
(parted) print <br />
Model: AMCC 9650SE-16M DISK (scsi)<br />
Disk /dev/sda: 5000GB<br />
Sector size (logical/physical): 512B/512B<br />
Partition Table: gpt<br />
<br />
Number Start End Size File system Name Flags<br />
1 17.4kB 4000GB 4000GB ext3 primary<br />
<br />
To resize that partition, you need to use the ''resize'' parted command which has the fallowing syntax :<br />
resize <partition_no> <new_start> <new_end><br />
<br />
To transform the partition from our example from 4000GB to 5000GB :<br />
(parted) resize 1 0GB 5000GB</div>Rwilson131http://wiki.linuxmce.org/index.php?title=GPT&diff=16503GPT2008-12-06T04:23:21Z<p>Rwilson131: </p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
If you want to create partitions larger than 2TB you'll have to use GTP partitioning system instead of classical MBR. Note that you BIOS knows only MBR partitioning schema and will not likely boot from a GTP partition. You cannot mix GTP and MBR partitions on a single drive so drives larger than 2TB will need to be completely GTP and will be non-bootable; you will need a separate hard drive that contains the system.<br />
== Creating Partitions ==<br />
You'll need to use parted to create the partitions since fdisk only know to work with MBR. The next command will open a parted shell, you'll need to replace /dev/sda with the drive that you want to partition.<br />
parted /dev/sda<br />
<br />
The next commands should be typed int the parted shell.<br />
<br />
WARNING: By running this commands you will delete you partition schema and won't be able to access the information that was stored on the disk (if any).<br />
(parted) mklabel gpt <-- This one creates a empty partition table on the disk<br />
<br />
(parted) print <-- List some information about the current partition table, size of the disc<br />
<br />
(parted) mkpart primary 0 3000GB <--- Creates a partition starting from the beginning trough the 3000GB location<br />
(parted) mkpart primary 3000GB 5000GB <--- Creates another partition starting from the 3000GB locations to the 5000GB location<br />
<br />
(parted) quit <-- Exit the parted shell<br />
<br />
After doing the previous command, you should have created two partitions, a 3TB and a 2TB one. In order for udev to create /dev/sda1 and /dev/sda2 devices associated with the partitions, you need to run the next command or reboot your computer:<br />
partprobe /dev/sda<br />
== Formating the Partitions ==<br />
Except of partition creation you won't see any difference between GPT and MBR in linux. So for formatting you can do it the same way as you would format any other discs. For example:<br />
mkfs.ext3 /dev/sda1<br />
== Resize Partition Table ==<br />
If you partitioned a raid array with GPT and you later increased the size by adding more disks you must run parted again on that drive and tell it to use all available space. A simple 'print' command in parted will use the warning message to which you you need to answe 'F'.<br />
# parted /dev/sda<br />
<br />
(parted) print<br />
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all <br />
of the space (an extra 1953103872 blocks) or continue with the current setting? <br />
Fix/Ignore? F<br />
== Resize Existing Partitions ==<br />
'''Warning:''' <span style="color: #700">Parted has some known bugs in both Ubuntu 0710 and LinuxMCE that will prevent resizing of a ext3 partition. Until this bugs get fixed the next instruction are here just for information purpose.</span><br />
Parted can also resize an existing partition to fill some unused space that you added. Before trying doing the partition resize check first that you partition is umounted and that it the filesystem on it is fine. Parted will complain about mounted partitions or inconsistent filesystem anyway.<br />
<br />
For example, let's take a 5000GB drive that has a 4000GB ext3 partition on it.<br />
(parted) print <br />
Model: AMCC 9650SE-16M DISK (scsi)<br />
Disk /dev/sda: 5000GB<br />
Sector size (logical/physical): 512B/512B<br />
Partition Table: gpt<br />
<br />
Number Start End Size File system Name Flags<br />
1 17.4kB 4000GB 4000GB ext3 primary<br />
<br />
To resize that partition, you need to use the ''resize'' parted command which has the fallowing syntax :<br />
resize <partition_no> <new_start> <new_end><br />
<br />
To transform the partition from our example from 4000GB to 5000GB :<br />
(parted) resize 1 0GB 5000GB</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Edit_Device_Template&diff=16502Edit Device Template2008-12-06T04:22:04Z<p>Rwilson131: </p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
[[Category: Admin Website]]<br />
[[Category: Programmer's Guide]]<br />
[[Image:EditDeviceTemplate.jpg|thumb|250px|Select Device Template Admin Page]]<br />
<br />
This is how you define a Device Template, and specify what data it needs, and what commands and events it will implement.<br />
<br />
The data, commands and event sections pertain to [[LinuxMCE Libraries DCE]].<br />
<br />
===Device Template # ....===<br />
<br />
====Description====<br />
This will be used as the name of the device template.<br />
<br />
====Implements DCE====<br />
If "Implements DCE" is checked, that means this Device Template will be able to run as a stand-alone device, connecting directly to the DCE Router to receive and process its own data, commands and events. [[Does the device Implement DCE?]] for an explanation.<br />
<br />
====Command line====<br />
<br />
====Device Category====<br />
The category to which these devices belong.<br />
<br />
====Manufacturer====<br />
The company that makes these devices.<br />
<br />
====Manufacturer URL====<br />
Website of forementioned manufacturer.<br />
<br />
====Internal URL sufix====<br />
<br />
<br />
====Design Objects to use as remotes====<br />
Design Objects are menus that appear on the Orbiters, and here is where you specify what design objects, or menus, should be used to control this device. [[Design Objects]]<br />
<br />
====This device is controlled via====<br />
You also specify here what devices this one will be controlled via, also referred to as what devices are eligible parents. This is an "or" relationship. Any device that matches any of the categories or any of the device templates you specify will be considered a valid parent, and the user will be allowed to create a child device based on this device template. [[Understanding Controlled Via (aka Parent)]]<br />
<br />
====This device is controlled via category====<br />
<br />
====Packages====<br />
Here you can also specify what package will contain this device's software. If you choose an existing package, then this device will be added to that software package the next time LinuxMCE's "MakeVersion" program is run. Typically, however, each developer will create his own package to contain his software, and only group multiple Device Templates together into a package if they logically belong together as a whole. LinuxMCE's "standard plug-in" package is an example. It contains all the standard plug-in devices since they are really inseparable and belong in the same package. [[Packages]]<br />
<br />
====Audio/Video Device====<br />
If the device is an Audio/Video device, whether or not it implements DCE, you should check the box. This will enable a button allowing you to specify a variety of extra information about this device that is specific to A/V equipment, such as what inputs it uses, if it has different 'modes', settings for controlling it via infrared, etc.<br />
<br />
====Is PlugIn====<br />
====Is Embedded====<br />
====Inherits MAC From PC====<br />
====Is IP Based====<br />
====Comm Method====<br />
====Configuration script====<br />
====Comments====<br />
<br />
===Device data===<br />
When you specify what '''data parameters''' this device needs, try to use one of the existing data parameters in the list if there is an appropriate one. Which one you choose is unimportant so long as the type is correct (string, integer, etc.). DCE makes no differentiation between the parameters--they are just names. If this device implements DCE, then DCEGen will create member variables for setting/accessing all the data parameters for your device, and the names of the members and functions will be the same as the name on the list. Also, when the user adds an instance of this device to his system, either manually or with the wizard, he will be able to fill in a value for this parameter if you check "Allowed to Modify". If you check "Required", then some value will be required and the parameter cannot be empty. If you check "Use Device Template Default", then whatever value you put in here as the default will be used by every device. Note that if you put in a default value, do not check "Allowed to Modify", then the device will be created with the default value. However, if you later change the default value, all the devices values will not change unless you check this "Use Device Template Default" box. In that case, the device really has no local value and just uses the current default every time. If "Set by Device" is checked, then when the DCE class is generated a "set" methods will also be created so the device can set the value itself. Otherwise the data parameter is considered 'read-only' by the device and can only be changed using the [[LinuxMCE Admin Website]].<br />
<br />
===Commands===<br />
Because most devices implement lots of '''commands''', and similar devices will always implement similar commands, commands are put into groups and the groups are added to the device template rather than adding the commands manually. A TV, for example, can have 100 "standard" commands--like Volume Up/Down, Channel Up/Down, On/Off, Brightness Up, etc. Rather than having to add every command to every TV, a group called "Standard TV commands" can be created, and you just add the group to the TV. Command Groups use the same categories as the device template themselves. By default, you will only see here the command groups within the same category as the device template to keep the screen clean. Just check the command groups you want. However, there is a pull-down listing every single command group so you can add command groups that are not in the same category. You can also create a new command group and then specify what commands belong to that group. When you create or edit a command group you will have the option of creating/editing the commands, and there you will be able to specify what parameters that command takes.<br />
<br />
If this device can be controlled via infrared, the infrared code for each command will need to be stored or learned. The number of different models for A/V equipment is staggering. However most manufacturers always use the same infrared codes across their whole line. For example, a Sony remote control for 1 TV will control all other Sony TV's too. So rather than requiring the user to add infrared codes for every Sony TV, we just create an infrared group "Sony TV Commands". Then you can add the DCE Command to Infrared Code commands to the group. Later when someone else adds a Device Template for another model of Sony TV, they can just specify that it uses the same Infrared Group. Note that the infrared group should therefore be a superset of all the commands--every command for every Sony TV. Some high-end models may have commands like "Wide screen" vs "Normal", which the low-end models do not support. In this case, the high-end model may have more commands than the low-end model, but all the commands should be in the infrared group. The low-end model will never use the infrared codes that it doesn't support, but at least they will be there and different infrared groups will not be required. When the manufacturer changes the infrared codes their, then a new infrared group will be required.<br />
<br />
===Events===<br />
Whatever '''events''' this device will fire are also added here. When you create/edit an event, you can specify what parameters that event takes.<br />
<br />
<br />
===Plug & Play===<br />
====Range of MAC====<br />
====Vendor Model ID====<br />
====PNP protocol====<br />
====Serial Number====<br />
====PNP detection script====<br />
====Comment====<br />
===Device Template Related===<br />
====Add device template related #ID====<br />
====Extra====<br />
===Screens===<br />
====This device requries the following screens====</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Does_the_device_implement_DCE%3F&diff=16501Does the device implement DCE?2008-12-06T04:18:28Z<p>Rwilson131: Categories</p>
<hr />
<div>[[Category:Programmer's Guide]]<br />
[[Category:Admin Website]]<br />
On the Device Template edit page within the [[LinuxMCE Admin Website]] you can check whether or not the device will Implement DCE. If the device does implement DCE, then the [[DCE Generator]] will create a C++ class to implement this device.<br />
<br />
The majority of devices do not "Implement DCE" because they are "dumb" devices that do not speak to "DCE" directly, but are rather controlled by some other device that does. All the infrared-remote-controlled audio/video devices fall into this category. The device does not have an Ethernet connection, it does not know how to connect to the DCERouter. It is a device that will implement commands, like Stop, Play, Pause, etc., but all those commands will have to go to another DCE Device that will be responsible for processing them. In this case that device is an interface module, like the GC100. LinuxMCE has a DCE Device driver for the GC100, and all commands for an infrared TV (like on, off, etc.) will actually go to the GC100.<br />
<br />
When the [[DCERouter]] gets a message, it will check if the device implements DCE. If it does, then the router will send the message directly to the device. If it does not, then the router will go up the parent tree, defined by the device's "Controlled Via" pointer, until it finds a device that does implement DCE, and the message will be sent to that device. When you create a DCE Device, you will need to add some special code if your device will have children (ie other devices "Controlled Via" this device) and this device is supposed to handle the commands for the children, like the GC100 does. Otherwise, the framework will cause your DCE Device to ignore messages for its children because there is no default way to handle them.<br />
<br />
Virtually all the device templates in the interface category have this same relationship with a parent device that implements DCE, and which has children that do not. Lighting interfaces have as children light switches, Climate interfaces have thermostats, Security panels have motion detectors and glass break sensors, and so on.</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Xine_Plug-in&diff=16500Xine Plug-in2008-12-06T04:13:59Z<p>Rwilson131: </p>
<hr />
<div>[[Category:LinuxMCE Plugins]]<br />
==How do I get it?==<br />
If you have a Linux based [[Media Director]], go to the page in your '''[[LinuxMCE Admin Website]]--> Wizard-->Devices-->[[Media Directors]]''' and check the box to add [[Xine]]. This will add both the stock [[Xine]] player (which we did not modify) and our LinuxMCE Xine DCE Device (which handles passing DCE commands/events to [[Xine]].) [[Xine]] will then become fully integrated into LinuxMCE and controllable from any [[Orbiter]].<br />
<br />
There are actually 2 DCE Devices:<br />
*[[Xine Plug-in]], which runs within the DCERouter's memory space as a plug-in coordinating all the activities of all the [[Xine]] Players<br />
*[[Xine Player]], which runs on each Media Director and handles the actual communication with the [[Xine]] software.<br />
<br />
[[LinuxMCE Xine Player Audio Settings]]</div>Rwilson131http://wiki.linuxmce.org/index.php?title=Telecom_Plugin&diff=16499Telecom Plugin2008-12-06T04:12:36Z<p>Rwilson131: </p>
<hr />
<div>[[Category:Telecom]]<br />
[[Category:LinuxMCE_Plugins]]<br />
== Description ==<br />
This one provides standard command interface for the PBX, theoretically it can be plugged with any PBX, not sure if it can be done.<br />
<br />
It has a virtual device id = -107, this way all telecom commands from orbiter are sent to Telecom_Plugin, and then it routes commands to specific devices (like from Orbiter to child Embedded Phone) or to Asterisk.<br />
<br />
It depends on command the sender and such parameters as device or channel_ids.<br />
<br />
For example PL_Originatecalled with PK_Device==EmbeddedPhone will send CMD_Phone_Initiate to the device or CMD_PBX_Originate to asterisk. The transfer when the call is already a conference call will be simple joining into the conference room instead of a blind transfer and so on.<br />
<br />
It also provides several DataGrids getting information from internal datastructures in case of ActiveCalls, pluto_main for SpeedDial and asteriskcdr for RecentCalls.<br />
<br />
== Communication with Asterisk ==<br />
In most cases the Telecom_Plugin keeps almost the same list of channels as [[LinuxMCE-asterisk|Asterisk]]. The Asterisk is notifying Telecom_Plugin on all changes and they keep the list in sync.<br />
<br />
In most of the commands(and events) exchanged between Asterisk and Telecom_Plugin one of the parameters is CallID or ChannelID string representing channels connected into a call (something like ''SIP/202-9577 IAX2/teliax-out/6'')<br />
<br />
Only Asterisk is sending that channels were changed, Telecom_Plugin just acknowledges it and changes his state accordingly.</div>Rwilson131