http://wiki.linuxmce.org/api.php?action=feedcontributions&user=PeteK&feedformat=atomLinuxMCE - User contributions [en]2024-03-29T00:11:05ZUser contributionsMediaWiki 1.24.1http://wiki.linuxmce.org/index.php?title=Building_From_Source&diff=22141Building From Source2010-01-19T04:04:07Z<p>PeteK: Removed sed command and replaced with environmental variable export for building</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_0810|Building LinuxMCE 0810]]<br />
<br />
= Building for 0804 =<br />
Please see [[Building_LinuxMCE]]<br />
<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 commands to set environment variables for the build (or add to your .profile file to automatically run at shell start)<br />
export SNR_LDFLAGS=" "<br />
export SNR_CPPFLAGS="-DKDE_LMCE"<br />
<br />
<br />
== Building ==<br />
Run make:<br />
make<br />
<br />
== Building UpdateMedia ==<br />
Since 7.10 does not use configure, it can be tough getting the entire tree to build. If all you need to build is UpdateMedia (for example), save yourself some trouble and just build that component. For the specific case of UpdateMedia, here are the steps to build based on a 7.10 DVD install and after following the above instructions:<br />
<br />
Install mysqlclient-dev:<br />
sudo apt-get install libmysqlclient15-dev<br />
<br />
Install attr-dev:<br />
sudo apt-get install attr-dev<br />
<br />
Install taglib. Download version 1.5 from http://developer.kde.org/~wheeler/taglib.html, and extract to /usr/src. Then install it with the following commands:<br />
cd /usr/src<br />
sudo chown linuxmce taglib-1.5<br />
cd taglib-1.5<br />
./configure<br />
make<br />
sudo make install<br />
sudo ln -s /usr/local/include/taglib /usr/include/taglib<br />
<br />
Install id3lib. Download version 3.8.3 from http://id3lib.sourceforge.net/, and extract to /usr/src. Then install it with the following commands:<br />
cd /usr/src<br />
sudo chown linuxmce id3lib-3.8.3<br />
cd id3lib-3.8.3<br />
./configure<br />
make<br />
sudo make install<br />
<br />
Build UpdateMedia:<br />
cd /usr/src/lmce/LinuxMCE-0710/src/UpdateMedia<br />
make<br />
<br />
If all goes well, your new binary for UpdateMedia should be in the current folder.<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</div>PeteKhttp://wiki.linuxmce.org/index.php?title=Olevia_2xxT_5xxT_series_lcdtv&diff=21921Olevia 2xxT 5xxT series lcdtv2009-12-28T06:44:20Z<p>PeteK: </p>
<hr />
<div>[[Category: Video]]<br />
[[Category: Displays]]<br />
<br />
{| align="right"<br />
| __TOC__<br />
|}<br />
<br />
==Overview==<br />
<br />
Olevia has several TV's with rs232 serial control ports. These TV's can be controlled by LMCE with some tweaking. Some of them use the standard DB-9 plug, while others require a unique cable made by olevia. A template has been created as well as a plug an play script (included with the 0810 beta 2 release.<br />
<br />
The Template (2030) supports Olevia LCD TVs with an ATI Image Processor (2XXT and 5XXT) as well as possibly others. This was developed and tested on a 232T.<br />
<br />
==Inputs==<br />
The model used for development (232T) has:<br><br />
1 HDMI (w/HDCP)<br><br />
1 VGA<br><br />
1 Component<br><br />
1 S-Video<br><br />
1 Composite<br><br />
<br />
<br />
==Ruby Codes==<br />
<br />
Here are the official codes from olevia for the 2xxT series. Olevia emailed me and told me that these codes should work for the 227V, 232V, and the 232T. Perhaps others as well, but those three for certain. [http://64.168.125.216/jsp/rs232/files/ATI_240_RS232_27_&_32_Inch.pdf pdf]<br />
<br />
<pre><br />
Power<br />
#193 OFF<br />
log('Turning Off')<br><br />
<$"\xBE\x05\x27\x00\xEA"$><br />
#192 ON<br />
log('Turning On')<br />
<$"\xBE\x05\x27\x01\xEB"$><br />
<br />
Inputs<br />
#712 Component 1<br />
log('Switching Input to Component 1')<br />
<$"\xBE\x05\x26\x08\xF1"$><br />
#361 HDMI<br />
log('Switching Input to HDMI')<br />
<$"\xBE\x05\x26\x0C\xF5"$><br />
#769 PC<br />
log('Switching Input to PC')<br />
<$"\xBE\x05\x26\x0A\xF3"$><br />
#180 Svideo<br />
log('Switching Input to Svideo')<br />
<$"\xBE\x05\x26\x05\xEE"$><br />
#166 Tuner<br />
log('Switching Input to Tuner')<br />
<$"\xBE\x05\x26\x00\xE9"$><br />
<br />
Aspect Ratios<br />
#953 Toggle Aspect Ratio<br />
log('Toggling Aspect Ratio')<br />
<$"\xBE\x05\x25\x56\x3E"$> <br />
<br />
General <br />
#190 Enter/Go<br />
log('Enter Key')<br />
<$"\xBE\x05\x25\x1B\x03"$><br />
<br />
Internal<br />
#373 Private Method Listing<br />
def log(line)<br />
$log = File.open("/var/log/pluto/" + device_.devid_.to_s + "_Generic_Serial_Device.log", "a")<br />
$log.puts "(***):" + line.to_s<br />
$log.close<br />
end<br />
<br />
Numbers<br />
#204 0<br />
log('Sending 0')<br />
<$"\xBE\x05\x25\x10\xF8"$><br />
#205 1<br />
log('Sending 1')<br />
<$"\xBE\x05\x25\x11\xF9"$<br />
#206 2<br />
log('Sending 2')<br />
<$"\xBE\x05\x25\x12\xFA"$><br />
#207 3<br />
log('Sending 3')<br />
<$"\xBE\x05\x25\x13\xFB"$><br />
#208 4<br />
log('Sending 4')<br />
<$"\xBE\x05\x25\x14\xFC"$><br />
#209 5<br />
log('Sending 5')<br />
<$"\xBE\x05\x25\x15\xFD"$><br />
#210 6<br />
log('Sending 6')<br />
<$"\xBE\x05\x25\x16\xFE"$><br />
#211 7<br />
log('Sending 7')<br />
<$"\xBE\x05\x25\x17\xFF"$><br />
#212 8<br />
log('Sending 8')<br />
<$"\xBE\x05\x25\x18\x00"$><br />
#213 9<br />
log('Sending 9')<br />
<$"\xBE\x05\x25\x19\x01"$><br />
<br />
On-Screen Menu Navig<br />
#225 Display<br />
log('Selecting Display ') <br />
<$"\xBE\x05\x25\x1E\x06"$><br />
#86 Menu (Show Menu<br />
log('Seleting Menu')<br />
<$"\xBE\x05\x25\x04\xEC"$><br />
#201 Move Down<br />
log('Move Down')<br />
<$"\xBE\x05\x25\x4A\x32"$><br />
#202 Move Left<br />
log('Move Left')<br />
<$"\xBE\x05\x25\x0A\xF2"$><br />
#203 Move Right<br />
log('Move Right')<br />
<$"\xBE\x05\x25\x07\xEF"$><br />
#200 Move Up<br />
log('Move Up')<br />
<$"\xBE\x05\x25\x45\x2D"$><br />
<br />
Simple Control<br />
#64 Skip Back - Channel/Track Lower<br />
log('Channel Down')<br />
<$"\xBE\x05\x25\x01\xE9"$><br />
#63 Skip Fwd - Channel/Track Greater<br />
log('Channel Up')<br />
<$"\xBE\x05\x25\x00\xE8"$><br />
<br />
Volume<br />
#97 Mute<br />
log('Mute')<br />
<$"\xBE\x05\x25\x09\xF1"$><br />
#90 Vol Down<br />
log('Volume Down')<br />
<$"\xBE\x05\x25\x03\xEB"$><br />
#89 Vol Up<br />
log('Volume Up')<br />
<$"\xBE\x05\x25\x03\xEA"$><br />
</pre><br />
<br />
==PNP Script==<br />
<br />
The following script will automatically detect this TV. Note that after a firmware upgrade, the TV used to test this implementation gives an intermittent response when querried by the PNP script. This sometimes causes the script to miss this TV in configuration and require a manual addition of this device.<br />
<br />
The script is 20_OleviaTV_ATI.sh<br />
<br />
<pre><br />
#!/bin/bash<br />
#Play and Play script for Olevia TV's Models Numbers:2XXT/5XXT Possibly more<br />
#Power Up is very slow so it requires several seconds to get feedback<br />
#Device Template Number:2030 on my local Machine.<br />
<br />
#The TV only responds to the "Power Status Query" command when the power is on, so we'll send the Power On command first, then sent the Query command.<br />
#We give it a delay to allow the TV to power up<br />
echo "Olevia TV (ATI) Detection script queue $2"<br />
/usr/pluto/bin/TestSerialPort -p $3 -P N81 -b 115200 -t "\BE\05\27\01\EB" -i 8<br />
echo "Waiting for powerup"<br />
#Now query to check for the TV power status reply<br />
/usr/pluto/bin/TestSerialPort -p $3 -P N81 -b 115200 -t "\BE\05\90\00\53" -i 1 -s "\06\05\90\01\9C"<br />
if [[ "$?" -ne 0 ]]; then<br />
echo "It's not an Olevia TV (ATI)"<br />
/usr/pluto/bin/MessageSend dcerouter -r 0 $1 1 806 224 $2 13 "$4" 44 0<br />
else<br />
echo "It is an Olevia TV (ATI) Template #2030"<br />
/usr/pluto/bin/MessageSend dcerouter -r 0 $1 1 806 224 $2 13 "$4" 44 2030<br />
</pre></div>PeteKhttp://wiki.linuxmce.org/index.php?title=Olevia_2xxT_5xxT_series_lcdtv&diff=21920Olevia 2xxT 5xxT series lcdtv2009-12-28T06:43:45Z<p>PeteK: Added Information for Olevia TV (template #2030)</p>
<hr />
<div>[[Category: Video]]<br />
[[Category: Displays]]<br />
<br />
{| align="right"<br />
| __TOC__<br />
|}<br />
<br />
==Overview==<br />
<br />
Olevia has several TV's with rs232 serial control ports. These TV's can be controlled by LMCE with some tweaking. Some of them use the standard DB-9 plug, while others require a unique cable made by olevia. A template has been created as well as a plug an play script (included with the 0810 beta 2 release.<br />
<br />
The Template (2030) supports Olevia LCD TVs with an ATI Image Processor (2XXT and 5XXT) as well as possibly others. This was developed and tested on a 232T.<br />
<br />
==Inputs==<br />
The model used for development (232T) has:<br><br />
1 HDMI (w/HDCP)<br><br />
1 VGA<br><br />
1 Component<br><br />
1 S-Video<br><br />
1 Composite<br><br />
<br />
<br />
===Ruby Codes===<br />
<br />
Here are the official codes from olevia for the 2xxT series. Olevia emailed me and told me that these codes should work for the 227V, 232V, and the 232T. Perhaps others as well, but those three for certain. [http://64.168.125.216/jsp/rs232/files/ATI_240_RS232_27_&_32_Inch.pdf pdf]<br />
<br />
<pre><br />
Power<br />
#193 OFF<br />
log('Turning Off')<br><br />
<$"\xBE\x05\x27\x00\xEA"$><br />
#192 ON<br />
log('Turning On')<br />
<$"\xBE\x05\x27\x01\xEB"$><br />
<br />
Inputs<br />
#712 Component 1<br />
log('Switching Input to Component 1')<br />
<$"\xBE\x05\x26\x08\xF1"$><br />
#361 HDMI<br />
log('Switching Input to HDMI')<br />
<$"\xBE\x05\x26\x0C\xF5"$><br />
#769 PC<br />
log('Switching Input to PC')<br />
<$"\xBE\x05\x26\x0A\xF3"$><br />
#180 Svideo<br />
log('Switching Input to Svideo')<br />
<$"\xBE\x05\x26\x05\xEE"$><br />
#166 Tuner<br />
log('Switching Input to Tuner')<br />
<$"\xBE\x05\x26\x00\xE9"$><br />
<br />
Aspect Ratios<br />
#953 Toggle Aspect Ratio<br />
log('Toggling Aspect Ratio')<br />
<$"\xBE\x05\x25\x56\x3E"$> <br />
<br />
General <br />
#190 Enter/Go<br />
log('Enter Key')<br />
<$"\xBE\x05\x25\x1B\x03"$><br />
<br />
Internal<br />
#373 Private Method Listing<br />
def log(line)<br />
$log = File.open("/var/log/pluto/" + device_.devid_.to_s + "_Generic_Serial_Device.log", "a")<br />
$log.puts "(***):" + line.to_s<br />
$log.close<br />
end<br />
<br />
Numbers<br />
#204 0<br />
log('Sending 0')<br />
<$"\xBE\x05\x25\x10\xF8"$><br />
#205 1<br />
log('Sending 1')<br />
<$"\xBE\x05\x25\x11\xF9"$<br />
#206 2<br />
log('Sending 2')<br />
<$"\xBE\x05\x25\x12\xFA"$><br />
#207 3<br />
log('Sending 3')<br />
<$"\xBE\x05\x25\x13\xFB"$><br />
#208 4<br />
log('Sending 4')<br />
<$"\xBE\x05\x25\x14\xFC"$><br />
#209 5<br />
log('Sending 5')<br />
<$"\xBE\x05\x25\x15\xFD"$><br />
#210 6<br />
log('Sending 6')<br />
<$"\xBE\x05\x25\x16\xFE"$><br />
#211 7<br />
log('Sending 7')<br />
<$"\xBE\x05\x25\x17\xFF"$><br />
#212 8<br />
log('Sending 8')<br />
<$"\xBE\x05\x25\x18\x00"$><br />
#213 9<br />
log('Sending 9')<br />
<$"\xBE\x05\x25\x19\x01"$><br />
<br />
On-Screen Menu Navig<br />
#225 Display<br />
log('Selecting Display ') <br />
<$"\xBE\x05\x25\x1E\x06"$><br />
#86 Menu (Show Menu<br />
log('Seleting Menu')<br />
<$"\xBE\x05\x25\x04\xEC"$><br />
#201 Move Down<br />
log('Move Down')<br />
<$"\xBE\x05\x25\x4A\x32"$><br />
#202 Move Left<br />
log('Move Left')<br />
<$"\xBE\x05\x25\x0A\xF2"$><br />
#203 Move Right<br />
log('Move Right')<br />
<$"\xBE\x05\x25\x07\xEF"$><br />
#200 Move Up<br />
log('Move Up')<br />
<$"\xBE\x05\x25\x45\x2D"$><br />
<br />
Simple Control<br />
#64 Skip Back - Channel/Track Lower<br />
log('Channel Down')<br />
<$"\xBE\x05\x25\x01\xE9"$><br />
#63 Skip Fwd - Channel/Track Greater<br />
log('Channel Up')<br />
<$"\xBE\x05\x25\x00\xE8"$><br />
<br />
Volume<br />
#97 Mute<br />
log('Mute')<br />
<$"\xBE\x05\x25\x09\xF1"$><br />
#90 Vol Down<br />
log('Volume Down')<br />
<$"\xBE\x05\x25\x03\xEB"$><br />
#89 Vol Up<br />
log('Volume Up')<br />
<$"\xBE\x05\x25\x03\xEA"$><br />
</pre><br />
<br />
==PNP Script==<br />
<br />
The following script will automatically detect this TV. Note that after a firmware upgrade, the TV used to test this implementation gives an intermittent response when querried by the PNP script. This sometimes causes the script to miss this TV in configuration and require a manual addition of this device.<br />
<br />
The script is 20_OleviaTV_ATI.sh<br />
<br />
<pre><br />
#!/bin/bash<br />
#Play and Play script for Olevia TV's Models Numbers:2XXT/5XXT Possibly more<br />
#Power Up is very slow so it requires several seconds to get feedback<br />
#Device Template Number:2030 on my local Machine.<br />
<br />
#The TV only responds to the "Power Status Query" command when the power is on, so we'll send the Power On command first, then sent the Query command.<br />
#We give it a delay to allow the TV to power up<br />
echo "Olevia TV (ATI) Detection script queue $2"<br />
/usr/pluto/bin/TestSerialPort -p $3 -P N81 -b 115200 -t "\BE\05\27\01\EB" -i 8<br />
echo "Waiting for powerup"<br />
#Now query to check for the TV power status reply<br />
/usr/pluto/bin/TestSerialPort -p $3 -P N81 -b 115200 -t "\BE\05\90\00\53" -i 1 -s "\06\05\90\01\9C"<br />
if [[ "$?" -ne 0 ]]; then<br />
echo "It's not an Olevia TV (ATI)"<br />
/usr/pluto/bin/MessageSend dcerouter -r 0 $1 1 806 224 $2 13 "$4" 44 0<br />
else<br />
echo "It is an Olevia TV (ATI) Template #2030"<br />
/usr/pluto/bin/MessageSend dcerouter -r 0 $1 1 806 224 $2 13 "$4" 44 2030<br />
</pre></div>PeteKhttp://wiki.linuxmce.org/index.php?title=Olevia_2xxT_5xxT_series_lcdtv&diff=21919Olevia 2xxT 5xxT series lcdtv2009-12-28T06:38:20Z<p>PeteK: </p>
<hr />
<div>[[Category: Video]]<br />
[[Category: Displays]]<br />
<br />
{| align="right"<br />
| __TOC__<br />
|}<br />
<br />
==Overview==<br />
<br />
Olevia has several TV's with rs232 serial control ports. These TV's can be controlled by LMCE with some tweaking. Some of them use the standard DB-9 plug, while others require a unique cable made by olevia. A template has been created as well as a plug an play script (included with the 0810 beta 2 release.<br />
<br />
The Template (2030) supports Olevia LCD TVs with an ATI Image Processor (2XXT and 5XXT) as well as possibly others. This was developed and tested on a 232T.<br />
<br />
==Inputs==<br />
The model used for development (232T) has:<br><br />
1 HDMI (w/HDCP)<br><br />
1 VGA<br><br />
1 Component<br><br />
1 S-Video<br><br />
1 Composite<br><br />
<br />
<br />
[[Image:Olevia_template_1.jpg|200px]] [[Image:Olevia_template_2.jpg|200px]] <br />
<br />
===Ruby Codes===<br />
<br />
Here are the official codes from olevia for the 2xxT series. Olevia emailed me and told me that these codes should work for the 227V, 232V, and the 232T. Perhaps others as well, but those three for certain. [http://64.168.125.216/jsp/rs232/files/ATI_240_RS232_27_&_32_Inch.pdf pdf]<br />
<br />
<pre><br />
Power<br />
#193 OFF<br />
log('Turning Off')<br><br />
<$"\xBE\x05\x27\x00\xEA"$><br />
#192 ON<br />
log('Turning On')<br />
<$"\xBE\x05\x27\x01\xEB"$><br />
<br />
Inputs<br />
#712 Component 1<br />
log('Switching Input to Component 1')<br />
<$"\xBE\x05\x26\x08\xF1"$><br />
#361 HDMI<br />
log('Switching Input to HDMI')<br />
<$"\xBE\x05\x26\x0C\xF5"$><br />
#769 PC<br />
log('Switching Input to PC')<br />
<$"\xBE\x05\x26\x0A\xF3"$><br />
#180 Svideo<br />
log('Switching Input to Svideo')<br />
<$"\xBE\x05\x26\x05\xEE"$><br />
#166 Tuner<br />
log('Switching Input to Tuner')<br />
<$"\xBE\x05\x26\x00\xE9"$><br />
<br />
Aspect Ratios<br />
#953 Toggle Aspect Ratio<br />
log('Toggling Aspect Ratio')<br />
<$"\xBE\x05\x25\x56\x3E"$> <br />
<br />
General <br />
#190 Enter/Go<br />
log('Enter Key')<br />
<$"\xBE\x05\x25\x1B\x03"$><br />
<br />
Internal<br />
#373 Private Method Listing<br />
def log(line)<br />
$log = File.open("/var/log/pluto/" + device_.devid_.to_s + "_Generic_Serial_Device.log", "a")<br />
$log.puts "(***):" + line.to_s<br />
$log.close<br />
end<br />
<br />
Numbers<br />
#204 0<br />
log('Sending 0')<br />
<$"\xBE\x05\x25\x10\xF8"$><br />
#205 1<br />
log('Sending 1')<br />
<$"\xBE\x05\x25\x11\xF9"$<br />
#206 2<br />
log('Sending 2')<br />
<$"\xBE\x05\x25\x12\xFA"$><br />
#207 3<br />
log('Sending 3')<br />
<$"\xBE\x05\x25\x13\xFB"$><br />
#208 4<br />
log('Sending 4')<br />
<$"\xBE\x05\x25\x14\xFC"$><br />
#209 5<br />
log('Sending 5')<br />
<$"\xBE\x05\x25\x15\xFD"$><br />
#210 6<br />
log('Sending 6')<br />
<$"\xBE\x05\x25\x16\xFE"$><br />
#211 7<br />
log('Sending 7')<br />
<$"\xBE\x05\x25\x17\xFF"$><br />
#212 8<br />
log('Sending 8')<br />
<$"\xBE\x05\x25\x18\x00"$><br />
#213 9<br />
log('Sending 9')<br />
<$"\xBE\x05\x25\x19\x01"$><br />
<br />
On-Screen Menu Navig<br />
#225 Display<br />
log('Selecting Display ') <br />
<$"\xBE\x05\x25\x1E\x06"$><br />
#86 Menu (Show Menu<br />
log('Seleting Menu')<br />
<$"\xBE\x05\x25\x04\xEC"$><br />
#201 Move Down<br />
log('Move Down')<br />
<$"\xBE\x05\x25\x4A\x32"$><br />
#202 Move Left<br />
log('Move Left')<br />
<$"\xBE\x05\x25\x0A\xF2"$><br />
#203 Move Right<br />
log('Move Right')<br />
<$"\xBE\x05\x25\x07\xEF"$><br />
#200 Move Up<br />
log('Move Up')<br />
<$"\xBE\x05\x25\x45\x2D"$><br />
<br />
Simple Control<br />
#64 Skip Back - Channel/Track Lower<br />
log('Channel Down')<br />
<$"\xBE\x05\x25\x01\xE9"$><br />
#63 Skip Fwd - Channel/Track Greater<br />
log('Channel Up')<br />
<$"\xBE\x05\x25\x00\xE8"$><br />
<br />
Volume<br />
#97 Mute<br />
log('Mute')<br />
<$"\xBE\x05\x25\x09\xF1"$><br />
#90 Vol Down<br />
log('Volume Down')<br />
<$"\xBE\x05\x25\x03\xEB"$><br />
#89 Vol Up<br />
log('Volume Up')<br />
<$"\xBE\x05\x25\x03\xEA"$><br />
</pre></div>PeteKhttp://wiki.linuxmce.org/index.php?title=Olevia_2xxT_5xxT_series_lcdtv&diff=21918Olevia 2xxT 5xxT series lcdtv2009-12-28T06:19:44Z<p>PeteK: </p>
<hr />
<div>[[Category: Video]]<br />
[[Category: Displays]]<br />
<br />
{| align="right"<br />
| __TOC__<br />
|}<br />
<br />
==Overview==<br />
<br />
Olevia has several TV's with rs232 serial control ports. These TV's can be controlled by LMCE with some tweaking. Some of them use the standard DB-9 plug, while others require a unique cable made by olevia. A template has been created as well as a plug an play script (included with the 0810 beta 2 release.<br />
<br />
The Template (2030) supports Olevia LCD TVs with an ATI Image Processor (2XXT and 5XXT) as well as possibly others. This was developed and tested on a 232T.<br />
<br />
==Inputs==<br />
The model used for development (232T) has:<br><br />
1 HDMI (w/HDCP)<br><br />
1 VGA<br><br />
1 Component<br><br />
1 S-Video<br><br />
1 Composite<br><br />
<br />
<br />
[[Image:Olevia_template_1.jpg|200px]] [[Image:Olevia_template_2.jpg|200px]] <br />
<br />
===Ruby Codes===<br />
<br />
[[Image:Olevia_template_3.jpg|200px]] [[Image:Olevia_template_4.jpg|200px]] [[Image:Olevia_template_5.jpg|200px]] [[Image:Olevia_template_6.jpg|200px]]<br><br />
<br />
Here are the official codes from olevia for the 2xxT series. Olevia emailed me and told me that these codes should work for the 227V, 232V, and the 232T. Perhaps others as well, but those three for certain. [http://64.168.125.216/jsp/rs232/files/ATI_240_RS232_27_&_32_Inch.pdf pdf]</div>PeteKhttp://wiki.linuxmce.org/index.php?title=LG_42LB5D&diff=21658LG 42LB5D2009-11-27T03:36:39Z<p>PeteK: Changed Ruby commands to put log commands and sends on different lines, as putting them on the same line in the Ruby code fields causes errors</p>
<hr />
<div>[[Category: Video]]<br />
[[Category: Displays]]<br />
<br />
{| align="right"<br />
| __TOC__<br />
|}<br />
==Features==<br />
===Basics===<br />
* 42" (diagonal) [[16:9|widescreen]] [[LCD]] television<br />
* Good build quality on the whole, though some edges on the plastic casing were left "sharp" (I'm OCD about fit and finish)<br />
* Not that heavy for its size (one person can lift it, in or out of packing carton)<br />
Special features and nice touches:<br />
* [[RS232 port]] at the back to allow external control (by LinuxMCE for example)<br />
* Power LED is red on standby, and switches to green when set is on (thank goodness, blue-LED fever is abating! :-)<br />
* Brightness can be instantly adjusted via two remote buttons -- the only thing better would be a photosensor that adjusts things automatically for ambient light (but that's what hacking is all about ;-)<br />
===Picture fidelity===<br />
* Crisp picture when provided with full quality source (e.g. true HD)<br />
* Crisp picture with some ghosting when using the RGB-PC input with a standard (though longer than average) VGA video cable -- I will try to add a photo of the effect; the lowest-tech connections ([[S-Video]], RF, and the like) for PC video are NOT recommended!<br />
* A touch blurry with low-end sources ([[S-Video]], RF) like older game systems, but still a fairly good overall picture; I have yet to test other signal methods with my game systems (requires special cables I don't yet have).<br />
===Usability===<br />
* The [[OSD]] UI and remote are excellent. Both the menus and the buttons are laid out sensibly, and the system incorporates a great idea for settings that are cyclic (most are): the first time you press a button (e.g. [[aspect ratio]]), it brings up an [[OSD]] reminder of the current setting; subsequent presses will cycle through the available options. It's simple, and effective at preventing accidental setting changes by a single inadvertent button press on the remote.<br />
Resolutions:<br />
* 1024x768<br />
* 1280x768<br />
* 1360x768<br />
<br />
== Adding new template ==<br />
Here is a description of adding a Template for LG LCD TV with serial connections for control. According to the manual the following models should work:<br />
LCD TV MODELS 37LB5D / 42LB5D / 47LB5D 52LB5D/ 32LB4D / 37LB4D / 42LB4D<br />
I have the 42LB5D, so I know that this one works. <br />
<br />
=== Specify device data and parameters ===<br />
<br />
On the LinuxMCE admin website go to: Advanced > Configuration > Device Templates<br />
<br />
Select: Manufacturer 'LG', Device Category 'TVs/Plasmas/LCD's/Projectors' and press 'Add device template'<br />
<br />
Description : XXLB4/5D<br />
Implements DCE : yes<br />
Command line : Generic_Serial_Device<br />
Device Category AV TVs/Plasmas/Projection... #77<br />
Manufacturer LG<br />
<br />
Also have added following parameters (You need to add them one by one under the header 'Device data'):<br />
<br />
Device data<br />
Current Data Comments Default Value<br />
#37 COM Port on PC(string) The serial port <br />
#76 COM Port ParityBit/Stop(string) Parity/Stop bits (factory defaults) N81 <br />
#78 COM Port BaudRate(string) Baud rate (factory default) B9600 <br />
#157 Discrete Volume(bool) Indicates if the volume on... 1 <br />
<br />
Settings are factory defaults and shouldn't be changed (9600 baud rate, 8 bits, 1 stop bit). Make sure that the check box for Allowed to Modify is checked, so that you can change to the appropriate COM port later.<br />
<br />
=== 'Edit Ruby code' (on template page) ===<br />
<br />
==== 'Add/remove commands' ====<br />
First, I clicked on 'Add/remove commands' and clicked on commands that are supported by device...<br />
<br />
* Ruby Internal Commands<br />
* Standard TV<br />
<br />
==== 'Add Ruby snippets to commands'==== <br />
Edited corresponding Ruby snippets for each command. Basically those are just simple strings that get send on rs232 to take proper action on device according to received command from LinuxMCE... Use the extended editor for the multiline entries (otherwise ruby won't understand it and gives lot's of errors)<br />
<pre><br />
#193 Off<br />
log('Sending OFF Command') <br />
<$"ka 01 00\r"$> <br />
#192 On<br />
log('Sending ON Command') <br />
<$"ka 01 01\r"$> <br />
Inputs<br />
#419 Antenna<br />
<br />
#316 AV 1<br />
log('Switching Input to AV1') <br />
<$"kb 01 02\r"$> <br />
#317 AV 2<br />
log('Switching Input to AV2') <br />
<$"kb 01 03\r"$> <br />
#712 Component 1<br />
log('Switching Input to Component 1') <br />
<$"kb 01 04\r"$> <br />
#713 Component 2<br />
log('Switching Input to Component 2') <br />
<$"kb 01 05\r"$> <br />
#426 External 3<br />
log('Switching Input to HDMI 3') <br />
<$"kb 01 09\r"$> <br />
#361 HDMI<br />
log('Switching Input to HDMI 1') <br />
<$"kb 01 07\r"$> <br />
#767 HDMI 2<br />
log('Switching Input to HDMI 2') <br />
<$"kb 01 08\r"$> <br />
#376 Input 3<br />
log('Switching Input to HDMI 3') <br />
<$"kb 01 09\r"$> <br />
#154 RGB<br />
log('Switching Input to RGB/PC') <br />
<$"kb 01 06\r"$> <br />
#166 Tuner<br />
log('Switching Input to Analog Tuner') <br />
<$"kb 01 01\r"$> <br />
#873 Tuner - Digital<br />
log('Switching Input to Digital Tuner') <br />
<$"kb 01 00\r"$> <br />
Aspect Ratios<br />
#879 16:9<br />
log('Switching Aspect Ratio to 16:9') <br />
<$"kc 01 02\r"$> <br />
#877 4:3<br />
log('Switching Aspect Ratio to 4:3') <br />
<$"kc 01 01\r"$> <br />
Disk Handle<br />
#48 Eject Disk<br />
<br />
DSP Modes<br />
#116 DSP Mode<br />
log('Switching DSP Modes: Toggled Only') <br />
<$"mc 01 52\r"$> <br />
General<br />
#190 Enter/Go<br />
log('Sending Enter/Go Command') <br />
<$"mc 01 44\r"$> <br />
Internal<br />
#373 Private Method Listing<br />
def log(line)<br />
$log = File.open("/var/log/pluto/" + device_.devid_.to_s + "_Generic_Serial_Device.log", "a")<br />
$log.puts "(***):" + line.to_s<br />
$log.close<br />
end <br />
#351 Process IDLE<br />
<br />
#350 Process Incoming Data<br />
buff = ''<br />
while(true)<br />
buff=conn_.Recv(30,200)<br />
if(buff.length() == 0)<br />
log('Nothing Received')<br />
break<br />
end<br />
log('Received: ' + Regexp.escape(buff.to_s))<br />
if !buff.index("OK").nil?<br />
log(Regexp.escape(buff.to_s) + ': Command Processed Successfully')<br />
elsif !buff.index("NG").nil?<br />
log(Regexp.escape(buff.to_s) +': Command Processed Unsuccessfully')<br />
end<br />
end <br />
#355 Process Initialize<br />
for iRetry in 0...4<br />
print "Initializing unit\n"<br />
conn_.Send("ke 01 01\r") # Send UnMute Command<br />
buf = conn_.Recv(30,200) # Expected Return # ke 01 01\r\ne 00 OK01x\r\n<br />
if !buf.nil? && !buf.index("OK").nil?<br />
print "Initialized ok\n"<br />
print "Setting volume to 30%\n"<br />
cmd_313(15)<br />
SetDeviceDataInDB( device_.devid_, 158, "15" )<br />
# 158 = DEVICEDATA_Volume_Level_CONST<br />
return<br />
end<br />
print "Failed to initialize. Wait 1 secs and try again\n"<br />
sleep(1)<br />
end<br />
#DisableDevice( device_.devid_, true )<br />
#print "The device would not respond. Disabling it.\n" <br />
#384 Process Receive Command For Child<br />
<br />
#356 Process Release<br />
<br />
Misc<br />
#548 Menu<br />
log('Sending Menu Command') <br />
<$"mc 01 43\r"$> <br />
#676 Video Mute<br />
log('Sending Video Mute Command') <br />
<$"kd 01 00\r"$> <br />
Numbers<br />
#364 -/--/---<br />
<br />
#204 0<br />
log('Sending 0 ') <br />
<$"mc 01 10\r"$> <br />
#205 1<br />
log('Sending 1 ') <br />
<$"mc 01 11\r"$> <br />
#206 2<br />
log('Sending 2 ') <br />
<$"mc 01 12\r"$> <br />
#207 3<br />
log('Sending 3 ') <br />
<$"mc 01 13\r"$> <br />
#208 4<br />
log('Sending 4 ') <br />
<$"mc 01 14\r"$> <br />
#209 5<br />
log('Sending 5 ') <br />
<$"mc 01 15\r"$> <br />
#210 6<br />
log('Sending 6 ') <br />
<$"mc 01 16\r"$> <br />
#211 7<br />
log('Sending 7 ') <br />
<$"mc 01 17\r"$> <br />
#212 8<br />
log('Sending 8 ') <br />
<$"mc 01 18\r"$> <br />
#213 9<br />
log('Sending 9 ') <br />
<$"mc 01 19\r"$> <br />
#363 Back / Clear Entry<br />
log('Sending Back/Clear Command ') <br />
<$"mc 01 1A\r"$> <br />
On-Screen Menu Navig<br />
#240 Back / Prior Menu<br />
log('Sending Exit Command ') <br />
<$"mc 01 5B\r"$> <br />
#225 Display<br />
<br />
#368 Help<br />
<br />
#86 Menu (Show Menu)<br />
log('Sending Menu Command ') <br />
<$"mc 01 43\r"$> <br />
#201 Move Down<br />
log('Sending Move Down Command ') <br />
<$"mc 01 41\r"$> <br />
#202 Move Left<br />
log('Sending Move Left Command ') <br />
<$"mc 01 07\r"$> <br />
#203 Move Right<br />
log('Sending Move RighCommand ') <br />
<$"mc 01 06\r"$> <br />
#200 Move Up<br />
log('Sending Move Up Command ') <br />
<$"mc 01 40\r"$> <br />
Simple Control<br />
#92 Pause<br />
log('Sending Pause Command ') <br />
<$"mc 01 BA\r"$> <br />
#139 Play<br />
log('Sending Play Command ') <br />
<$"mc 01 B0\r"$> <br />
#102 Record<br />
#log('Sending Record Command ') <br />
#<$"mc 01 BD\r"$> <br />
#64 Skip Back - Channel/Track Lower<br />
log('Sending Channel Down Command ') <br />
<$"mc 01 01\r"$> <br />
#63 Skip Fwd - Channel/Track Greater<br />
log('Sending Channel Up Command ') <br />
<$"mc 01 00\r"$> <br />
#95 Stop<br />
log('Sending Stop Command ') <br />
<$"mc 01 B1\r"$> <br />
Sound & Volume<br />
#97 Mute<br />
if(@mute) <br />
<$"ke 01 00\r"$><br />
else<br />
<$"ke 01 01\r"$><br />
end<br />
@mute=!@mute <br />
#313 Set Volume<br />
@volume=level.to_i()<br />
ilevel = @volume.to_i<br />
log( 'setting volume to '+ ilevel.to_s)<br />
log('Sending the Following Command: kf 01 '+ilevel.to_s(16)+'\r')<br />
<$"kf 01 "+ilevel.to_s(16)+"\r"$><br />
SetDeviceDataInDB( device_.devid_, 158, ilevel .to_s)<br />
# 158 = DEVICEDATA_Volume_Level_CONST # "volume and corresponding device data set\n" <br />
#90 Vol Down<br />
log('lowering volume from ' + @volume.to_s)<br />
cmd_313(@volume-1) <br />
#89 Vol Up<br />
log('Increasing volume from ' + @volume.to_s)<br />
cmd_313(@volume+1) <br />
Speed Ctrl<br />
#125 Scan Back/Rewind<br />
log('Sending Rewind Command ')<br />
<$"mc 01 8F\r"$> <br />
#93 Scan Fwd/Fast Fwd<br />
log('Sending Fast Fwd Command ')<br />
<$"mc 01 8E\r"$> <br />
#98 Slow Scan Back<br />
<br />
#99 Slow Scan Forward<br />
<br />
TV<br />
#136 Previous Channel<br />
log('Sending Previous Channel Command ')<br />
<$"mc 01 B2\r"$> <br />
</pre><br />
<br />
== Adding device ==<br />
<br />
This is a simple process that you can now add via the [[LinuxMCE Admin Website]] at '''Wizard > [[AV Devices|A/V Equipment]]'''<br />
=== Add device based on created template ===<br />
Just search for the device template that you created and select it from the list<br />
=== Specify COM port for it ===<br />
Just tell LinuxMCE which com port to use.<br />
=== Assing it to new room ===<br />
Tell LinuxMCE which room to assign this device<br />
=== Specifiy Audio pipe connections to inputs on receiver ===<br />
Tell LinuxMCE how you have thing attached to the LG TV and how the LG TV is attached to the computer.<br />
<br />
''I have it attached via RGB port and I have my cable box attached to AV1 and my HDTV connected to Tuner-Digital input.''<br />
<br />
==Making Plug&Play==<br />
This is not needed to use the TV, but I post as an option.<br />
Location: /usr/pluto/pnp<br />
<br />
vi /usr/pluto/pnp/20_LGLCD.sh<br />
add the following and then make the file executable.<br />
<br />
<br />
<pre> #!/bin/bash<br />
#Play and Play script for LG TV's Models Numbers:LGXXLB4/5D<br />
#Set ID needs to be set to 01<br />
#Serial feedback is very slow so it requires several seconds to get feedback<br />
#Device Template Number:1905 on my local Machine.<br />
#Serail Command for Power On ka 01 01 <br />
#Serial Command for Power OFF ka 01 00<br />
#Returns two different strings depending on whether or not the TV is On or Off, so we will try to turn it ON then resend the ON command as it returns proper string (ka 01 01\r\na 00 OK01x\r\n)<br />
echo "LG TV Detection script queue $2"<br />
/usr/pluto/bin/TestSerialPort -p $3 -P N81 -b 9600 -t "ka 01 01\r"<br />
sleep 5s<br />
/usr/pluto/bin/TestSerialPort -p $3 -P N81 -b 9600 -t "ka 01 01\r" -i 5 -s "OK01x\r"<br />
if [[ "$?" -ne 0 ]]; then<br />
echo "It's not a LG TV"<br />
/usr/pluto/bin/MessageSend dcerouter -r 0 $1 1 806 224 $2 13 "$4" 44 0<br />
else<br />
echo "It is a LG TV"<br />
/usr/pluto/bin/MessageSend dcerouter -r 0 $1 1 806 224 $2 13 "$4" 44 1905<br />
fi</pre><br />
<br />
the plugin will run the script with 4 parameters: the device id of the plugin, the unique id for this event (the PK_PnpQueue), a path where the device is located (ip address for ethernet devices, serial port for rs232 devices, etc.), and the name of the pnp detection script.<br />
<br />
The detection script should attempt to determine what device template is on the path using any appropriate means. If it finds a match, it should fire a message using the paramters it received, such as this:<br />
<br />
/usr/pluto/bin/MessageSend dcerouter -r 0 $1 806 224 $2 13 "$4" 44 1905(this is the template id for the devicetemplate you created above)</div>PeteKhttp://wiki.linuxmce.org/index.php?title=Community&diff=19538Community2009-06-30T04:16:03Z<p>PeteK: </p>
<hr />
<div>Right, having looked at the detail in this post [http://forum.linuxmce.org/index.php?topic=8411.0] i felt its time to see what we are made of as a community, please add your details.<br />
<br />
<br />
GUIDE: copy'n'paste the following lines then append them into the table below (prior to the final line that contains '|}'). This formatting should make it easier for the 'big 5' to work out who can contribute what...<br />
<pre><br />
| Your username<br />
| Your relevant expertise/experience <br />
| Your other experience/expertise<br />
| Your approx time available for the project<br />
| Your time zone or location<br />
| Your particular interest area (if any)<br />
|-<br />
</pre><br />
<br />
<br />
<br />
{| border="1"<br />
!Username<br />
!Relevant expertise/experience<br />
!Other Experience/Expertise<br />
!Time available for the project<br />
!Time zone or location<br />
!Particular Interest Area (If any)<br />
|-<br />
| Geekyhawkes<br />
| advanced newbie<br />
| use to some C+/linux/ubuntu/ html / xml / flash<br />
| few evenings a week<br />
| UK GMT<br />
| User documentation, newbie guides, website design , wiki topics and guides. Line by line intros to get 810 up and running regardless of user experiance.<br />
|-<br />
| tmoore<br />
| advanced newbie<br />
| 14 yrs software product management, IT management consulting, marketing, network & systems management, UNIX admin<br />
| about 3 hrs a week on average<br />
| GMT-7<br />
| Product strategy, team management,(non-technical) marketing & communications<br />
|-<br />
| qball4<br />
| regular user<br />
| HADesigner, graphic design, hardware a/v distribution systems<br />
| average 20-40 hrs/wk available<br />
| US CST<br />
| User Interface, new orbiter platforms<br />
|-<br />
| Fastie81<br />
| advanced newbie<br />
| work with linux/Red Hat/ubuntu day to day / Project Manager / Systems Administrator / Quick Learner<br />
| My work load goes up and down so would have few days one week and none another<br />
| GMT +12 (NZ)<br />
| User Documentation, guides, wiki guides. I would like to learn some coding. Adding Hardware support ,Devices Templates.<br />
|-<br />
| Techstyle<br />
| Advanced Newbie<br />
| System builder, Linux newbie, some Wiki writing experience / PMP (Project Management Professional), MBA, Mechanical Engineer, Entrepreneur<br />
| 1hr per day<br />
| US central (Milwaukee, WI)<br />
| Anything structured<br />
|-<br />
| nite_man<br />
| regular user<br />
| Integrator, consultant, GSD, Ruby, Maemo Orbiter / More then 10 years of software development - Perl, PHP, Linux sysadmin<br />
| 2-4 hours per day<br />
| UTC+2:00 Nicosia, Cyprus<br />
| Admin site, Maemo Orbiter, posting news, blogging, Russian translation<br />
|-<br />
| Daballiemo<br />
| regular user<br />
| Worked my way through Linux/Ubuntu/Fedora mainly on virtualization / Working within MOD and about 15 years of exp. with "paper" documentation<br />
| About 3-6 hours a week<br />
| GMT +1, Amsterdam<br />
| Virtualization and interfacing (webui, remote, keyboard, touch aso)<br />
|-<br />
| SteveC<br />
| LMCE Newbie but keen to get cracking.<br />
| Electronics/Software Engr, C/C++ for 15years.<br />
| Approx 5 hours/week<br />
| UTC+10:00 Brisbane, Australia<br />
| Main interests relate to external hardware interfaces eg. Clipsal CBUS lighting, Caddx/Networx Alarm system.<br />
|-<br />
| Lemming86_au<br />
| Advanced Newbie<br />
| IT Consultant, Network Engineer, Asterisk Admin (No programming experience, yet)<br />
| 3-5 hours/Week<br />
| UTC+9:30 Adelaide, Australia<br />
| Asterisk<br />
|-<br />
| castlec<br />
| LMCE Noob. Linux regular user/noob<br />
| Java Dev, C++ trained (University).<br />
| 3-5 hours/Week<br />
| UTC-5 Ohio, USA<br />
| <br />
|-<br />
| ZuG<br />
| Regular User<br />
| Linux, PHP and a bit of C. Very familiar with Asterisk and OpenVPN<br />
| 3-5 hours/Week<br />
| GMT Cardiff, United Kingdom<br />
| OpenVPN development<br />
|-<br />
| ccoudsi<br />
| Regular user <br />
| 15+ years embedded hardware design, 8+ years engineering manager, Assembly, C, Perl, Ruby (newbie)<br />
| 5-8 hours a week<br />
| UTC-08 PT<br />
| Security Panels<br />
|-<br />
| colinjones<br />
| Regular User<br />
| Bit of bash, some simple coding, learning C++, familiar with the DCE system<br />
| ~15-20 hours/Week<br />
| UTC+10, Sydney, Australia<br />
| LMCE!<br />
|-<br />
| sp00nhead<br />
| User since Pluto days<br />
| IT support & Training, want to be python coder, solid knowledge of Linux systems<br />
| ~5 hours/week unless i get hooked again.<br />
| GMT Crewe, UK<br />
| take the LMCE framework and make it as popular as xbmc/boxee!<br />
|-<br />
| darrenmason<br />
| User/Developer since Pluto days, familiar with the codebase and architecture<br />
| IT Consultant with Software engineering background specialising in Integration. Have developed in C++/Java and various other languages<br />
| Varies depending upon family but can/will find time if interest level is there<br />
| UTC+10, Sydney, Australia<br />
| New devices, Microcontroller integration, Constrained resources Media Directors, DLNP <br />
|-<br />
| patricez<br />
| Advanced Newbie <br />
| Tech addict. Dev Team Manager, have experience in C,SQL,Xen,vmware,citrix,Asterisk,network...<br />
| Varies depending my job(s) and family but could be 5-10hrs/week<br />
| UTC-5, Quebec, Canada<br />
| Home Automation, VOIP, Virtualization, Networking <br />
|-<br />
| PeteK<br />
| User Since Pluto, some development work submitted to Pluto (early Insteon) <br />
| Avionics Engineer, Hardware/Software C++ experience<br />
| Shooting for 5-10 hrs/week<br />
| UTC-8/-7 Mojave, CA, USA<br />
| Automation Interfaces<br />
|-<br />
|}</div>PeteKhttp://wiki.linuxmce.org/index.php?title=Building_LinuxMCE_0810&diff=18088Building LinuxMCE 08102009-03-23T06:18:22Z<p>PeteK: </p>
<hr />
<div>[[category: tutorials]]<br />
[[category: programmer's Guide]]<br />
{| align="right"<br />
| __TOC__<br />
|}<br />
<br />
==Setting up a chroot environment==<br />
These steps are optional as you can just build on a clean Kubuntu-8.10 install. But required if you want to build using an existing 0810 core without ruining it's run-time database.<br />
<br />
Start with becoming root as the following steps will need to be done using super user privileges.<br />
sudo su -<br />
<br />
===Create the environment===<br />
apt-get install debootstrap<br />
debootstrap --arch i386 intrepid /media/kubuntu-8.10/<br />
<br />
===Steps after each reboot ===<br />
(Note: For First building, perform steps in the '''Getting Started''' section)<br />
====Mount required directories====<br />
mount --bind /dev /media/kubuntu-8.10/dev<br />
mount none /media/kubuntu-8.10/proc -t proc<br />
mount none /media/kubuntu-8.10/dev/pts -t devpts<br />
<br />
====Change-root into the environment====<br />
chroot /media/kubuntu-8.10<br />
====Start MySQL Server====<br />
Do not execute the mysql start before doing the sed statement listed in the '''Installing needed packages section''' below to reconfigure MySQL.<br />
/etc/init.d/mysql start<br />
<br />
===Verify apt's list of repositories===<br />
Make sure ''/etc/apt/sources.list'' (inside the chroot) contains something very similar to:<br />
deb <nowiki>http://</nowiki>''us.archive.ubuntu.com''/ubuntu/ intrepid main restricted universe multiverse <br />
deb-src <nowiki>http://</nowiki>''us.archive.ubuntu.com''/ubuntu/ intrepid main restricted universe<br />
deb <nowiki>http://</nowiki>''us.archive.ubuntu.com''/ubuntu/ intrepid-updates main restricted universe multiverse<br />
deb-src <nowiki>http://</nowiki>''us.archive.ubuntu.com''/ubuntu/ intrepid-updates main restricted universe<br />
deb <nowiki>http://</nowiki>security.ubuntu.com/ubuntu intrepid-security main restricted universe<br />
deb-src <nowiki>http://</nowiki>security.ubuntu.com/ubuntu intrepid-security main restricted universe<br />
<br />
The following line is added to the sources.list during the prepare script and should not be added before. [[User:Posde|posde]]<br />
deb <nowiki>http://</nowiki>debian.slimdevices.com/ stable main<br />
<br />
===Installing needed packages===<br />
'''Important!''' Perform these also '''after''' chrooting. <br />
apt-get update<br />
apt-get dist-upgrade<br />
apt-get install aptitude openssh-client mysql-server<br />
<br />
Reconfigure MySQL to not open a TCP-IP network port:<br />
<nowiki>sed 's/^[^#]*bind-address[[:space:]]*=.*$/#&\nskip-networking/' -i /etc/mysql/my.cnf</nowiki><br />
<br />
==Building from source==<br />
For a more in detail description of all the steps involved see [[Building LinuxMCE 0804]]<br />
<br />
Currently the focus is on getting the following to work completely.<br />
<br />
===Getting started===<br />
You should only have to do this part once initially.<br />
<br />
The following steps will require superuser privileges, and it is '''always''' wise to refresh the packages list beforehand.<br />
sudo su -<br />
apt-get update<br />
<br />
====Obtaining the build scripts====<br />
apt-get install subversion<br />
svn co http://svn.linuxmce.org/svn/branches/LinuxMCE-0810/src/Ubuntu_Helpers_NoHardcode<br />
<br />
====Installing the build scripts====<br />
cd Ubuntu_Helpers_NoHardcode<br />
./install.sh<br />
cd /usr/local/lmce-build<br />
<br />
====Configuring the build scripts====<br />
cat >/etc/lmce-build/builder.custom.conf <<EOF<br />
<br />
# Uncomment to avoid DVD build step[s]<br />
do_not_build_sl_dvd="yes"<br />
do_not_build_dl_dvd="yes"<br />
<br />
<br />
# Uncomment to create fake win32 binaries<br />
win32_create_fake="yes"<br />
<br />
# Point to the development sqlCVS server for 0810<br />
sqlcvs_host="schema.linuxmce.org"<br />
EOF<br />
<br />
===Preparing for build===<br />
<br />
cd /usr/local/lmce-build<br />
<br />
The preparation steps one at a time (recommended):<br />
prepare-scripts/install-build-pkgs.sh<br />
prepare-scripts/cd1-prepare.sh<br />
prepare-scripts/cd2-prepare.sh<br />
prepare-scripts/create-diskless-debootstrap.sh<br />
prepare-scripts/import-external-files.sh<br />
prepare-scripts/preseed-build-pkgs.sh<br />
<br />
Or, you could do them all in one go with:<br />
./prepare.sh<br />
<br />
===Building from source===<br />
<br />
cd /usr/local/lmce-build<br />
<br />
All the build steps can be executed seperately (recommended at least the first time):<br />
build-scripts/checkout-svn.sh<br />
build-scripts/import-win32bins.sh<br />
build-scripts/build-replacements.sh<br />
build-scripts/build-makerelease.sh<br />
build-scripts/import-databases.sh<br />
build-scripts/build-maindebs.sh<br />
build-scripts/get-closed-source-debs.sh<br />
build-scripts/create-repo.sh<br />
build-scripts/cd1-build.sh<br />
build-scripts/cd2-build.sh<br />
<br />
Or the following script will run them all:<br />
./build.sh</div>PeteKhttp://wiki.linuxmce.org/index.php?title=Building_LinuxMCE_0810&diff=18087Building LinuxMCE 08102009-03-23T05:58:28Z<p>PeteK: Clarified location of mySql configuration statement</p>
<hr />
<div>[[category: tutorials]]<br />
[[category: programmer's Guide]]<br />
{| align="right"<br />
| __TOC__<br />
|}<br />
<br />
==Setting up a chroot environment==<br />
These steps are optional as you can just build on a clean Kubuntu-8.10 install. But required if you want to build using an existing 0810 core without ruining it's run-time database.<br />
<br />
Start with becoming root as the following steps will need to be done using super user privileges.<br />
sudo su -<br />
<br />
===Create the environment===<br />
apt-get install debootstrap<br />
debootstrap --arch i386 intrepid /media/kubuntu-8.10/<br />
<br />
===Steps after each reboot ===<br />
====Mount required directories====<br />
mount --bind /dev /media/kubuntu-8.10/dev<br />
mount none /media/kubuntu-8.10/proc -t proc<br />
mount none /media/kubuntu-8.10/dev/pts -t devpts<br />
<br />
====Change-root into the environment====<br />
chroot /media/kubuntu-8.10<br />
====Start MySQL Server====<br />
Do not execute the mysql start before doing the sed statement listed in the '''Installing needed packages section''' below to reconfigure MySQL.<br />
/etc/init.d/mysql start<br />
<br />
===Verify apt's list of repositories===<br />
Make sure ''/etc/apt/sources.list'' (inside the chroot) contains something very similar to:<br />
deb <nowiki>http://</nowiki>''us.archive.ubuntu.com''/ubuntu/ intrepid main restricted universe multiverse <br />
deb-src <nowiki>http://</nowiki>''us.archive.ubuntu.com''/ubuntu/ intrepid main restricted universe<br />
deb <nowiki>http://</nowiki>''us.archive.ubuntu.com''/ubuntu/ intrepid-updates main restricted universe multiverse<br />
deb-src <nowiki>http://</nowiki>''us.archive.ubuntu.com''/ubuntu/ intrepid-updates main restricted universe<br />
deb <nowiki>http://</nowiki>security.ubuntu.com/ubuntu intrepid-security main restricted universe<br />
deb-src <nowiki>http://</nowiki>security.ubuntu.com/ubuntu intrepid-security main restricted universe<br />
<br />
The following line is added to the sources.list during the prepare script and should not be added before. [[User:Posde|posde]]<br />
deb <nowiki>http://</nowiki>debian.slimdevices.com/ stable main<br />
<br />
===Installing needed packages===<br />
'''Important!''' Perform these also '''after''' chrooting. <br />
apt-get update<br />
apt-get dist-upgrade<br />
apt-get install aptitude openssh-client mysql-server<br />
<br />
Reconfigure MySQL to not open a TCP-IP network port:<br />
<nowiki>sed 's/^[^#]*bind-address[[:space:]]*=.*$/#&\nskip-networking/' -i /etc/mysql/my.cnf</nowiki><br />
<br />
==Building from source==<br />
For a more in detail description of all the steps involved see [[Building LinuxMCE 0804]]<br />
<br />
Currently the focus is on getting the following to work completely.<br />
<br />
===Getting started===<br />
You should only have to do this part once initially.<br />
<br />
The following steps will require superuser privileges, and it is '''always''' wise to refresh the packages list beforehand.<br />
sudo su -<br />
apt-get update<br />
<br />
====Obtaining the build scripts====<br />
apt-get install subversion<br />
svn co http://svn.linuxmce.org/svn/branches/LinuxMCE-0810/src/Ubuntu_Helpers_NoHardcode<br />
<br />
====Installing the build scripts====<br />
cd Ubuntu_Helpers_NoHardcode<br />
./install.sh<br />
cd /usr/local/lmce-build<br />
<br />
====Configuring the build scripts====<br />
cat >/etc/lmce-build/builder.custom.conf <<EOF<br />
<br />
# Uncomment to avoid DVD build step[s]<br />
do_not_build_sl_dvd="yes"<br />
do_not_build_dl_dvd="yes"<br />
<br />
<br />
# Uncomment to create fake win32 binaries<br />
win32_create_fake="yes"<br />
<br />
# Point to the development sqlCVS server for 0810<br />
sqlcvs_host="schema.linuxmce.org"<br />
EOF<br />
<br />
===Preparing for build===<br />
<br />
cd /usr/local/lmce-build<br />
<br />
The preparation steps one at a time (recommended):<br />
prepare-scripts/install-build-pkgs.sh<br />
prepare-scripts/cd1-prepare.sh<br />
prepare-scripts/cd2-prepare.sh<br />
prepare-scripts/create-diskless-debootstrap.sh<br />
prepare-scripts/import-external-files.sh<br />
prepare-scripts/preseed-build-pkgs.sh<br />
<br />
Or, you could do them all in one go with:<br />
./prepare.sh<br />
<br />
===Building from source===<br />
<br />
cd /usr/local/lmce-build<br />
<br />
All the build steps can be executed seperately (recommended at least the first time):<br />
build-scripts/checkout-svn.sh<br />
build-scripts/import-win32bins.sh<br />
build-scripts/build-replacements.sh<br />
build-scripts/build-makerelease.sh<br />
build-scripts/import-databases.sh<br />
build-scripts/build-maindebs.sh<br />
build-scripts/get-closed-source-debs.sh<br />
build-scripts/create-repo.sh<br />
build-scripts/cd1-build.sh<br />
build-scripts/cd2-build.sh<br />
<br />
Or the following script will run them all:<br />
./build.sh</div>PeteKhttp://wiki.linuxmce.org/index.php?title=MessageSend&diff=14846MessageSend2008-07-13T18:13:52Z<p>PeteK: /* MsgID */</p>
<hr />
<div>{| align="right"<br />
| __TOC__<br />
|}<br />
==Command==<br />
MessageSend server [-targetType [device|category|template]] [-r | -o] [-p path] [-bl BroadcastLevel] [-retry value] DeviceFrom DeviceTo MsgType(1=Command, 2=Event) MsgID [parm1id param1value] [parm2id parm2value] ...<br />
==Parameters==<br />
This are derived from the help text of the above command, Please add any additional information that will be useful for helping understand this very important command.<br />
===server=== <br />
is the name/ip of the router, such as localhost or dcerouter<br />
===targetType===<br />
the default target type is the device, category, or template<br />
===-r===<br />
means the message will be sent with a response request<br />
===-o===<br />
means the message will expect out parameters which will be echoed to the screen as resp: [response]<br />
===-p=== <br />
specifies the path for output parameters<br />
===-bl===<br />
means the broadcast level if the message is sent to category or template;<br />
:;values :<br />
::;#none<br />
::;#direct_siblings<br />
::;#same_computer<br />
::;#same_room<br />
::;#same_house*<br />
::;#all_houses<br />
<nowiki>*needs valid device ID for this to be useful</nowiki><br />
===-retry===<br />
means what to do if the message cannot be delivered;<br />
:;values:<br />
::;#none (don't retry)<br />
::;#retry (send it when the device registers)<br />
::;#persist (retry, but survive a reload router)<br />
===DeviceFrom===<br />
Device number the messages is coming from.<br />
<br />
===DeviceTo===<br />
Device number the message is going to'<br />
<br />
===MsgType===<br />
1= Command<br />
2= Event<br />
===MsgID===<br />
format is as follows: MsgID [parm1id param1value] [parm2id parm2value] ... <br />
the parm ID can be prefixed with a letter:<br />
D send as a data parameter, rather than text<br />
U send as a data parameter, rather than text, parameter is UU-encoded<br />
B the value is a filename, the contents sent as a data parameter<br />
T the value is a filename, the contents sent as a text parameter<br />
<br />
Alternatively: MessageSend uuencode file_in [file_out] (writes to stdout no file_out)<br />
or MessageSend uudecode file_out [uuencodeddata | file_in]<br />
<br />
==System Devices Hard Coded==<br />
from src/DCE/Message.h<br />
<pre>// Some system devices<br />
30 #define DEVICEID_DCEROUTER -1000 // System commands for the router itself<br />
31 #define DEVICEID_EVENTMANAGER -1001 // Not a real device, just the destination of events<br />
32 #define DEVICEID_LOGGER -1002<br />
33 #define DEVICEID_MESSAGESEND -1003 // The message send utility<br />
34 <br />
35 // Virtual devices<br />
36 #define DEVICEID_MASTERDEVICE -2000<br />
37 #define DEVICEID_CATEGORY -2001<br />
38 #define DEVICEID_LIST -2002<br />
39 #define DEVICEID_GROUP -2003<br />
40 <br />
41 // Other<br />
42 #define DEVICEID_HANDLED_INTERNALLY -300<br />
</pre><br />
==Detailed Breakdown of MessageSend for a Command==<br />
/usr/pluto/bin/MessageSend localhost 0 13 1 19 5 6 17 7 99 5678 100 0 101 R<br />
Parameters in this command line are :<br />
localhost server<br />
0 DeviceFrom<br />
13 DeviceTo (Security plugin)<br />
1 MsgType: Command<br />
19-Command "Set house mode"<br />
The rest are MsgID blocks which require [parmid paramvalue]<br />
parmid 5(Value To Assign): paramvalue 6<br />
parmid 17(PK_Users): paramvalue 7<br />
parmid 99(Password): paramvalue 5678<br />
parmid 100(PK_DeviceGroup): paramvalue 0<br />
parmid 101(Handling Instructions): paramvalue R<br />
Additional Commands on the [[LinuxMCE Admin Website]] under Advance|DCE|Commands<br />
Open a command to see valid parameters available for each command<br />
==Detailed Breakdown of MessageSend for an Event==<br />
Tripping security sensor with ID of 195 to ON :<br />
/usr/pluto/bin/MessageSend dcerouter 195 -1000 2 9 25 1<br />
Parameters in this command line are :<br />
dcerouter server<br />
195 DeviceFrom<br />
-1000 DeviceTo (DCERouter)<br />
2 MsgType: Event<br />
9 Event "Sensor Tripped"<br />
The rest are MsgID blocks which require [parmid paramvalue]<br />
paramid 25(Tripped) : 1 <br />
<br />
Additional Events on the [[LinuxMCE Admin Website]] under Advance|DCE|Events<br />
Open a event to see valid parameters available for each event<br />
==Detaild Breakdown of MessageSend to Display Alert on Orbiters==<br />
/usr/pluto/bin/MessageSend dcerouter -targetType category -bl 5 1 5 1 809 251 0 9 "TESTING DISPLAY ALERT" 182 15 70 "test"<br />
Parameters in this command line are :<br />
dcerouter server<br />
category targetType(device category found on template page)<br />
5 -bl broadcast level 5 or whole house<br />
1 DeviceFrom (Core)<br />
5 DeviceCategory (actually device category 5 orbiters)<br />
1 MsgType: Command<br />
809 Command "DISPLAY ALERT"<br />
The rest are MsgID blocks which require [parmid paramvalue]<br />
251 (Interruption : 0<br />
9 (Text) : "TESTING DISPLAY ALERT"<br />
182 (Timeout) : 15 seconds<br />
70 (Tokens) : "test"<br />
<br />
For additional information regarding the MessageSend command take a look at the following pages:<br />
*[[DCE from commandline]]<br />
*[[Sensors]]<br />
<br />
==Samples with MessageSend==<br />
Here are some sample messages you can send with the MessageSend utility. <br />
===Detection Commands===<br />
* Detected a new device on the network<br />
./MessageSend dcerouter $PK_Device -1001 2 65 28 "192.168.80.99" 5 "00:10:75:00:D2:22" 52 3 53 2<br />
* and when the device is no longer on the network<br />
./MessageSend dcerouter $PK_Device -1001 2 66 28 "192.168.80.99" 5 "00:10:75:00:D2:22" 52 3 53 2<br />
* A USB device is detected<br />
./MessageSend dcerouter $PK_Device -1001 2 65 55 "37|usb2/2-2/2-2:1.7" 52 4 51 "0403f850"<br />
Note that the vendor/model id is specified, which will be looked up in the DHCP Device database. And parameter 55 is specified so that when the device is created it will have a device data 37 (com port on pc) of "usb2/2-2/2-2:1.7". The usb detection device should automatically determine that the device connected appears as a usb com port, and therefore pass in that com port as a parameter to the event.<br />
* Some RS232 device is detected, probably because a generic USB->RS232 dongle was attached<br />
./MessageSend dcerouter $PK_Device -1001 2 65 55 "37|usb2/2-2/2-2:1.8" 52 2<br />
Note the comm method is RS232, and the port "usb2/2-2/2-2:1.8" is specified. The plugin will run every detection script in DHCPDevice for all RS232 devices until one detection script reports a match.<br />
* An internal hard drive is detected<br />
./MessageSend dcerouter $PK_Device -1001 2 65 55 "152|/dev/hdb1" 52 8 49 1790<br />
* The detection script should attempt to determine what device template is on the path using any appropriate means. If it finds a match, it should fire a message using the paramters it received, such as this:<br />
/usr/pluto/bin/MessageSend dcerouter -r 0 $1 806 224 $2 13 "$4" 44 1752<br />
which means the device is template 1752.<br />
* If the device template is not something that it can determine, send the message leaving off parameter 44 (ie leave off the 44 1752). If there is some error condition you want logged, add parameter 18, as this:<br />
/usr/pluto/bin/MessageSend localhost -r 0 $1 806 224 $2 13 "$4" 18 "the com port doesn't exist" <br />
* For a NAS this comes from dhcp monitor and has the ip/mac and plug and play plugin figures out what it is, like this:<br />
/usr/pluto/bin/MessageSend dcerouter 0 -1001 2 65 52 3 53 2 5 "00:0D:0B:99:10:43" 28 "192.168.80.7"<br />
* For the “scan the network for windows shares” utility that always runs in the background, it explicitly sends a device detected event with the device template Generic File Server 1837, like this:<br />
/usr/pluto/bin/MessageSend dcerouter 0 -1001 2 65 52 3 53 2 49 1837 <br />
* Once the device is created, the configure script will be ran, for example: Configure_1794.sh for the [[Buffalo Terastation]]. This script should lookup the username and password for the device from the database and fire a 'device detected' for each network share, as follows:<br />
/usr/pluto/bin/MessageSend dcerouter X -1001 2 65 52 3 53 2 49 1768 55 "182|1"<br />
That that the X must be the device number of the fileserver, since the file share will be a child of that. 1768 is the template for a samba share, 1769 for nfs. If the share does not require a password, leave off the 55 "182|1". If the username and password already specified in the database are valid for the share, then instead of 55 "182|1" do 55 "127|username|128|password". <br />
===Events===<br />
* Tripping security sensor with ID of 195 to ON :<br />
/usr/pluto/bin/MessageSend dcerouter 195 -1000 2 9 25 1<br />
* Tripping security sensor with ID of 195 to OFF :<br />
/usr/pluto/bin/MessageSend dcerouter 195 -1000 2 9 25 0<br />
* Report that light with ID of 210 is ON :<br />
/usr/pluto/bin/MessageSend dcerouter 210 -1000 2 48 10 1<br />
* Report that light with ID of 210 is OFF :<br />
/usr/pluto/bin/MessageSend dcerouter 210 -1000 2 48 10 0<br />
* Send a new temperature to thermastat with ID of 121<br />
/usr/pluto/bin/MessageSend dcerouter 121 -1000 2 25 30 temperature_value<br />
replace temperature_value with a actual temperature in degrees<br />
* Event "output on"<br />
/usr/pluto/bin/MessageSend dcerouter ID -1000 2 28<br />
* Event "output off"<br />
/usr/pluto/bin/MessageSend dcerouter ID -1000 2 29<br />
===Sending Commands===<br />
* Play media (/home/public/data/tts/0.wav) on Xine player with ID of 44 :<br />
/usr/pluto/bin/MessageSend localhost 0 44 1 37 29 "" 41 "" 42 "" 59 "/home/public/data/tts/0.wav"<br />
* Execute scenario with PK_CommandGroup = 157 from device with ID :<br />
/usr/pluto/bin/MessageSend localhost ID -1000 1 370 28 "157"<br />
<br />
===Other messages===<br />
''Work in Progress''<br />
<br />
Will parse the meaning of DCE messages below in future. Just wrote it here to remember....<br />
<br />
* It seems like "Goto Screen" command<br />
/usr/pluto/bin/MessageSend localhost 0 64 1 741 10 "Whatever" 159 53 9 'A message|Ok|Remind me later' 137 '-targetType device <%=!%> 15 1 67 13 "/root/Something.sh" 51 "--answer yes"|-targetType device <%=!%> 15 1 67 13 "/root/Something.sh" 51 "--answer no"'<br />
* To display Text Alert on Orbiter :<br />
/usr/pluto/bin/MessageSend localhost 0 20 1 809 9 "Text to Display" 70 "alert" 182 "30" 251 "??"<br />
<br />
Also interesting command is #397 "Show popup", but I have yet to discover how to use it...<br />
<br />
Does anyone know how to display popup with question and few answer buttons (yes/no for example) ? Can this be done without Designer to create screen - just to specify question, texts on buttons and actions on click ? <br />
<br />
==Additional Resources==<br />
* [[Message Interceptors]]<br />
<br />
[[Category:Programmer's Guide]]</div>PeteKhttp://wiki.linuxmce.org/index.php?title=ZWave&diff=8518ZWave2008-01-22T05:53:24Z<p>PeteK: Updated Implementation Section</p>
<hr />
<div>[[Category: Hardware| ]]<br />
[[Category: Automation]]<br />
[[Category: ZWave]]<br />
[[Category: Programmer's Guide]]<br />
<br />
Z-Wave™ is a wireless RF-based communications technology designed for residential and light commercial control and status reading applications such as meter reading, lighting and appliance control, HVAC, access control, intruder and fire detection.<br />
<br />
== Overview ==<br />
The support from LinuxMCE system is represented by an executable '''ZWave''' (it's placed in /usr/pluto/bin) which is the device implementation and a '''DeviceTemplate (1754)''' which is used to create LinuxMCE Devices for ZWave.<br />
<br />
The source code is available in LinuxMCE's SVN repository at src/ZWave.<br />
<br />
== Implementation ==<br />
ZWave implementation is based on a ZWaveJob-s manager (PlutoZWSerialAPI, a singleton class) which supports asynchronous or synchronous tasks management. We are using the asynchronous model right now because we want to send commands to many ZWave dimmable lighting switches at one moment. We are sending the switch On/Off commands as soon as possible then we are waitting for confirmation. This should make the lights switching almost in the same time and the customer gets a nice feedback. In the synchronous mode, ZWave jobs manager can watch only one job at one moment, that means the lights are switched On/Off successively and it can take some time until all the lights are changed.<br />
<br />
<br />
The Z-Wave implementation uses two main classes to operate. <br />
<br />
ZWave.h/.cpp define the ZWave class, which handles interactions with the DCERouter. PlutoZWSerialAPI.h/.cpp define the low-level Z-Wave implementation. This class handles communication with the Z-Wave adapter. The Zwave class receives (for example) light status change commands from the DCERouter and creates he appropriate 'jobs.' To do this, the ZWave class creates an object of type ZwaveJob. Then it inserts the newly-created job class in the PlutoZWSerialAPI class command queue by passing a pointer to the job class to PlutoZWSerialAPI's insertJob() function. The Zwave class then calls PlutoZWSerialAPI's start() function to command the PlutoZWSerialAPI class to begin executing the commands in its command queue.<br />
<br />
PlutoZWSerialAPI is threaded to allow it to execute multiple Z-Wave commands in the command queue without having to wait for each command to be acknowledged by the receiving device before continuing. The current implementation is asynchronous. PlutoZWSerialAPI spawns as a thread its DoAsynch() function, which call's PlutoZWSerialAPI's listenAsynchronous() function. This function processes received replies and matches them with executed commands in PlutoZWSerialAPI's command queue.<br />
<br />
<br />
== Interfaces ==<br />
===ACT Homepro ZCS000/010 & ZCU000/010===<br />
'''Status:''' Supported (see below)<br />
===ACT Homepro ZCU101/201===<br />
'''Status:''' Support is being worked on<br />
<br />
http://forum.linuxmce.org/index.php?topic=3665.0<br />
<br />
===Intermatic HA22 / HA23C=== <br />
'''Status:''' It appears that the current USB controlers made by Intermatic on the market are not supported at this time<br />
<br />
http://www.homesettings.com/products-ha23.html<br />
<br />
http://forum.linuxmce.org/index.php?topic=2288.0 (this thread claims no current support)<br />
===Selxit viaSENS Homecontroller===<br />
'''Status:''' Support is being worked on<br />
[[Seluxit_viaSENS_Homecontroller]]<br />
== How to install and use ZWave ==<br />
These instructions are for HomePro ZWave USB interface (ZCU000/ZCU010). The same method might work for other (future?) supported ZWave controllers.<br />
<br />
These instructions have been tested working under VMWare 1.0.1-29996 using FC4 (2.6.16.18) as host operating system.<br />
<br />
<br />
Let's assume that you have LinuxMCE installed with IP: 10.0.2.128 (these instructions are also done by assuming that you have "hybrid" LinuxMCE installation).<br />
<br />
Once you have successfully installed the ZWave USB controller and it is seen on LinuxMCE ([[media:zwave_homepro_interface.png]]), you can proceed by populating the ZWave network information to LinuxMCE.<br />
<br />
# Add your ZWave devices to your master ZWave master remote controller (like ZTH200)<br />
#* Once the devices are added to remote and verified they are working (you can control them with your remote controller), you need to copy the ZWave network information to LinuxMCE.<br />
# Go to LinuxMCE admin page (<nowiki>"http://10.0.2.128/pluto-admin/"</nowiki>), then choose "Wizard -> Devices -> Interfaces -> [your ZWave controller] -> Advanced".<br />
## On the device page select "Send command to device".<br />
## Select command "Download Configuration" and choose "Send Message".<br />
##* Leave the data and file fields as blank<br />
# Now LinuxMCE is waiting for the ZWave information and you should send a copy of the ZWave network with your master remote controller to LinuxMCE.<br />
#* If you are using HomePro remote controller this is done by selecting: "Setup -> Copy Remote Ctrl. -> Send Information -> Identical Copy". Once you have done that, the remote will show "Sending information..." and after successful sending it will return to clock screen (this shouldn't take more than couple of minutes).<br />
#* You can monitor the process by watching the Zwave log file on LinuxMCE (usually "/var/log/pluto/*ZWave.log"). Unfortunately the admin page doesn't give much information of what is being done and is everything going smoothly. If the process is successfully, you should see the LinuxMCE communicating with the USB controller<br />
#* Make sure the sending remote controller is near enough the USB receiver, otherwise nothing will happen.<br />
# Go to device tree (Show devices tree) and you should see ([[Media:zwave_devices_tree.png]]) the newly added ZWave modules/devices on the tree under "CORE -> ZWave".<br />
<br />
You should do quick reload (Wizard -> Restart -> Quick Reload Router) in order to use the newly added devices with LinuxMCE. Once you have done that you should be able to control (like switching on/off) the devices under the Light ([[Media:zwave_lights.png]]).<br />
<br />
<br />
== Troubleshooting ==<br />
<br />
=== HomePro USB ZWave controller ===<br />
If the ZWave controller is not seen (or it's not working) by LinuxMCE, check that linux sees the USB device. The HomePro USB receiver uses USB serial device converter (it's not really a "true" USB device).<br />
<br />
Once you plug in the device you should see the following kernel messages ("dmesg") when the correct modules are loaded:<br />
<pre><br />
usbcore: registered new driver usbserial<br />
drivers/usb/serial/usb-serial.c: USB Serial support registered for generic<br />
usbcore: registered new driver usbserial_generic<br />
drivers/usb/serial/usb-serial.c: USB Serial Driver core<br />
drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI USB Serial Device<br />
ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected<br />
drivers/usb/serial/ftdi_sio.c: Detected FT232BM<br />
usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0<br />
usbcore: registered new driver ftdi_sio<br />
drivers/usb/serial/ftdi_sio.c: v1.4.3:USB FTDI Serial Converters Driver<br />
</pre><br />
<br />
Then you should have the following kernel modules loaded:<br />
<pre><br />
dcerouter_6722:/var/log/pluto# lsmod<br />
Module Size Used by<br />
ftdi_sio 32584 1<br />
usbserial 32488 3 ftdi_sio<br />
</pre><br />
<br />
On the admin page (Interfaces -> Advanced) the ZWave interface COM port should point to USB device:<br />
<pre><br />
Device data:<br />
COM Port on PC pci0000:00/0000:00:07.2+1<br />
</pre><br />
<br />
<pre><br />
dcerouter_6722:/var/log/pluto# lspci |grep USB<br />
0000:00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB<br />
</pre><br />
<br />
<br />
<br />
=== ZWave communication ===<br />
<br />
If the controller is seen by LinuxMCE, try sending some commands ("Wizard -> Devices -> Interfaces -> [your ZWave controller] -> Advanced") and watching the log files ("tail -f /var/log/pluto/*ZWave.log") at the same time. <br />
<br />
You can try command like "Report Child Devices" which in my case (since I have 5 ZWave appliances supported by LinuxMCE) gives the following results:<br />
<br />
<pre><br />
36 11/05/06 10:45:51.358 ZWave::ReportChildDevices got:<br />
36 11/05/06 10:45:51.358 <br />
1 37<br />
4 37<br />
5 37<br />
6 37<br />
7 37<br />
</pre><br />
<br />
In order to get these results you should already have downloaded the ZWave network configuration to LinuxMCE from master (remote) controller.<br />
<br />
<br />
== PIR (Binary Sensor) support ==<br />
<br />
PIR (Passive Infra Red) sensor, a type of motion detector which uses invisible infra red light to detect movement in a room.<br />
PIR is sending "Sensor Tripped" events, so that you can use it in security scenarious.<br />
<br />
All the tests were made using HomePro ZIR000 (RF Transmitter PIR) model.<br />
<br />
=== HowTo install PIR ===<br />
<br />
1) Open the PIR box so that you have access to Z-Wave button, it is used to remove/add (reset) the PIR from/to Z-Wave network<br />
2) Use your Z-Wave Master Controller to add PIR<br />
3) Copy the new Z-Wave network configuration to your Z-Wave USB device (see command "Download Configuration")<br />
4) Reload Router<br />
5) You should see the PIR device available as a child device of ZWave (see LinuxMCE admin web pages), but the setup isn't ready yet.<br />
6) Power off PIR, then power on again (remove a battery for few seconds). Close the PIR box.<br />
This step is important because PIR is in awake state only for 10 min after it's powered up.<br />
7) After 2-3 min from step 6, PIR will send the wake up notification and PIR will be able to set its configuration.<br />
8) You should receive the events from PIR<br />
<br />
=== Notes ===<br />
<br />
1) PIR needs 2 min of 'silence' to get to Trigger Off<br />
2) Z-Wave has some new commands to support PIR :<br />
- Assign Return Route<br />
- Set Association<br />
- Set Configuration Parameter<br />
- Set Wake Up<br />
The configuration commands are sent automatically by LinuxMCE's ZWave device.<br />
But if you are using a different PIR device and you need another setup parameters, you can use the new commands.<br />
3) The PIR wake up notification is important, no commands are sent to PIR if the notification wasn't received.<br />
We must be sure that PIR is able to communicate with Z-Wave network.</div>PeteKhttp://wiki.linuxmce.org/index.php?title=Insteon&diff=6786Insteon2007-10-24T16:25:20Z<p>PeteK: </p>
<hr />
<div>[[Category: Hardware| ]]<br />
[[Category: Automation]]<br />
{{stub}}<br />
<br />
Insteon is the product name for a series of devices which communicate using either powerline signalling, RF signalling, or a combination of both. LinuxMCE support for Insteon devices is currently under development. More information on the Insteon devices can be found at [http://www.insteon.com Insteon]. Products are available at [http://www.smarthome.com SmartHome]<br />
<br />
Insteon development is currently underway.</div>PeteKhttp://wiki.linuxmce.org/index.php?title=Contacts&diff=4901Contacts2007-08-26T22:43:57Z<p>PeteK: </p>
<hr />
<div>LinuxMCE is a hot new open source project. It's stable, practical and usable, and really cool. Just check out the [[Screenshots|Screen Shots]] to see for yourself. I'm looking for developers and maintainers to '''[[Contribute|join the team]]'''. New LinuxMCE team members, please add your name, contact info, and a brief bio or description of what you're working on. Thanks!<br />
<br />
----<br />
'''Paul Webber''' -- contact: webpaul1 -at- gmail (.com)<br><br />
Responsibilities: Installer, Ubuntu packaging, build system, linuxmce.com site<br><br />
I launched LinuxMCE on March 15, 2007. [[History|'''History of LinuxMCE, why I started this project, and the goals''']]<br />
----<br />
'''Justin Burdine''' -- contact: justin -at- cyburdinehosting (.com)<br><br />
Offering: Hosting/Bandwidth, Graphic Design (see [[http://cbvfx.com cbvfx.com]]), Video Editing/Promotion (see [[http://cbvfx.com cbvfx.com]]), install/testing<br><br />
----<br />
'''John Botte''' -- contact: qualityinterfaces -at- gmail (.com)<br><br />
Offering: Forum moderation help. Conceptual ideas, help with firewire support, UI help and testing<br><br />
----<br />
'''Jonathan Iannone''' -- Contact: thorn168 -at- yahoo (.com)<br><br />
Offering: Help with documentation<br />
----<br />
'''Michael Stepanov''' -- Contact: stepanov.michael -at- gmail (.com)<br><br />
Offering: Build and test SDL Orbiter for Linux-based PC and Nokia770/N800.<br />
----<br />
'''Paul D''' aka Trout -- Contact: linuxmce.gqn@gishpuppy.com<br><br />
Offering: Help with documentation, Wiki participation, Testing and feedback.<br />
----<br />
'''Pete Kalogiannis''' -- Contact: pkalogiannis -at- gmail (dot) com<br><br />
Offering: Insteon Integration</div>PeteKhttp://wiki.linuxmce.org/index.php?title=Insteon&diff=4692Insteon2007-08-20T18:11:19Z<p>PeteK: </p>
<hr />
<div>Insteon is the product name for a series of devices which communicate using either powerline signalling, RF signalling, or a combination of both. LinuxMCE support for Insteon devices is currently under development. More information on the Insteon devices can be found at [http://www.insteon.com Insteon]. Products are available at [http://www.smarthome.com SmartHome]<br />
[[Category: Automation]]</div>PeteKhttp://wiki.linuxmce.org/index.php?title=Orbiters&diff=4232Orbiters2007-07-22T17:11:48Z<p>PeteK: Removed spam</p>
<hr />
<div> '''Orbiters'''<br />
|-<br />
| [[WebDT 366]]<br />
| [[Samsung Q1]]<br />
| [[Asus R2H]]<br />
| [[ TabletKiosk eo]]<br />
| [[Nokia 770]]<br />
| [[Pepperpad 3]]<br />
| [[Generic PC]]<br />
|}<br />
<br />
<p>An "Orbiter" is a remote control--anything you use to control your LinuxMCE system.</p><br />
<p>Here you add all the orbiters you want to use in your house, no matter what type. This includes the mobile orbiters (ie mobile phones), the regular orbiters (like wireless webpads and tablet pc's), any orbiters you want to run on a normal PC, as well as the on-screen displays. Every Media Director displays an Orbiter on screen as well. All these orbiters, and every one will appear on this page.</p><br />
<p><b>Room</b>: is where the room where the orbiter is normally kept. For mobile orbiters this selection isn't important since you carry them everywhere. For regular orbiters, whatever room you choose is the room that the orbiter will use until the user selects something else.</p><br />
<p><b>Leave Monitor on for OSD</b>: OSD (On-screen display) refers to the orbiters that run on the media directors. These are a little different since the media director is normally connected to a tv. If you want to use the Orbiter on a media director using a keyboard/mouse or infrared remote control, check this box. It means that when media stops LinuxMCE won't turn the tv off right away so you can continue using the Orbiter using the Media Director's keyboard or mouse, or the infrared remote. The TV will turn off only when the screen saver starts, or if you touch the 'power' button and 'turn off display'. If you always control the Media Director using another orbiter, like a web pad or mobile phone, you can leave it unchecked. Then the TV will come on only when you're going to play media or watch TV, and it will turn off immediately when you stop watching media.</p><br />
<p><b>This device uses a Wi-Fi connection</b> Is useful for webpads and pda's with a wi-fi signal. Since wi-fi is rather unreliable, the core and Orbiter will constantly 'ping' each other so they both know the connection is still strong enough, and the Orbiter software will automatically exit when the Orbiter goes out of range.</p><br />
<p><b>No Effects</b>: Many screens have special effects, like animated buttons, fades, and so on. If the orbiter has a slow processor, this can make it take longer to respond. Choose this to disable any special effects on the orbiter so it runs as fast as possible.</p><br />
<p><b>Language:</b> All the text on the screen will appear in this language, if possible.</p><br />
<p><b>NOTE:</b> You can create your own menus and translate screens into other languages using [[Designer]].</p><br />
<p><b>Size</b>: Choose the screen size you want. If this is an on-screen orbiter (an orbiter that appears on a media director), this will also set the media director's screen resolution.</p><br />
<p><b>Skin</b>: There may be several skins, or motif's, to choose from, like 'Wood', 'Marble', etc.</p><br />
<p><b>User</b>: Is the person who normally uses this orbiter.</p><br />
<p><b>Quick Regen</b>: To make the orbiters respond quickly, all the images you see on their screens are pre-rendered. The User interface is "built" by the program [[Orbiter Generator]]. This will cause Orbiter Generator to re-generate the user interface for this orbiter, but it will only regenerate the screens that appear to have changed.</p><br />
<p><b>Full Regen</b>: This will cause Orbiter Generator to re-generate every screen on the Orbiter.</p><br />
<p><b>Reduce image size by %</b>: This will cause Orbiter Generator to add some padding to the screens. This is useful if the screen margins are being displayed outside of the TV screen. <b>Developer info</b>: although it may sound intuitive that the corresponding DeviceData is also called "Reduce image size by %", it is in fact called "Spacing". The PK_DeviceData for it is 150. The text "Reduce image size by %" comes from the DeviceTemplate_DeviceData table and it's the meaning of the device data in that specific device context</p><br />
<p><b>Offset</b>: This will cause Orbiter...</p><br />
<br />
<br />
[[Category: Orbiters]]</div>PeteKhttp://wiki.linuxmce.org/index.php?title=Control_regular_A/V_equipment&diff=4166Control regular A/V equipment2007-07-15T19:11:37Z<p>PeteK: Removed spam</p>
<hr />
<div><p><h1>How to set it up</h1></p><br />
<p>First add the infrared transmitter on the Wizard, Devices, Interfaces page in LinuxMCE Admin. Then add your a/v devices on the Wizard, Devices, A/V Equipment page. [[Control a TV or cable/satellite box]] for an example of adding a TV, and creating a new Device Template if your model isn't already in the system.</p><br />
<p>On the A/V Equipment page issue specify for each device what infrared transmitter will be controlling it in the Controlled Via pulled down. If this device uses infrared codes, when you click the "A/V properties" button next to that device you should the "Uses I/R" box is checked. Confirm the inputs and other I/R settings, such as toggle vs. discrete are correct. If they are not, then whoever added the device template for this model originally may have done it wrong, or perhaps he had a different model. In either case you can create a new Device Template for your model as explained [[Control a TV or cable/satellite box]]. Then click the "IR/GSD codes" button to select or learn new infrared codes.</p><br />
<br />
<p>LinuxMCE includes a stock library of infrared codes supplied by other users. These codes are grouped, sometimes referred to as code sets or Infrared Groups. For example, Sony may make a thousand and models of TV sets, but nearly all of them use the same infrared codes; the remotes are interchangeable. Therefore it makes no sense to learn or input the infrared codes for every single model, rather it's much easier to put all the codes into a group called "Sony TV codes", and then only 1 user needs to add the codes, and then every other user with the Sony TV can use that set of codes. On the IR/GSD codes page you can select what Infrared Group, or codeset, you want to use for this device. All the codes are stored in Pronto format. If there are multiple Infrared Groups for that Manufacturer and Device Category, you can choose the one you want from the pull down, and then click the test code button next to one of the codes to see if the device responds. Worst case you need to create your own I/R codes. If an existing Infrared Group is correct, but there are just more new codes you need to add, choose the Infrared Group and then choose Add/remove commands. If none of the existing Infrared Groups are correct, you can create a new infrared group, or leave the Infrared Group pull-down empty and the codes you provide will be used only for this model, without belonging to an Infrared Group.</p><br />
<br />
<p>Check off one of the Command Groups check boxes to add groups of codes, such as Standard navigation, or volume control. Or click the add remove command buttons to add them individually. Try to use the existing command whenever possible; they are already quite complete. It is important to use the correct existing commands, even if your device gives them another name. For example, when you hit the channel up button on any remote-control, it will send to the "Skip Fwd - Channel/Track Greater" command to the device. Different remote controls call this function different things. Maybe yours calls it "Seek Up". If you create a new command called "Seek Up", then the existing remote-control which is designed to send our stock command will not work with your device, and you'll need to create a whole new remote control for your device. You don't want to do that. LinuxMCE Orbiter runs on web pads, pda's, phones, etc. We already have stock remote controls for all those types of devices that send our stock commands. Therefore it is much easier to use the existing commands even if the names are different than what you're device uses.</p><br />
<br />
<p>If your infrared device supports learning, then when you click the "new code" button on the I/R code page you'll be able to learn the code automatically. For example, if you're using the gc100, there is a learning dongle for it. Plug it into the gc100's port or into another serial port on the computer that is controlled in the gc100. On the gc100's device page, specify what serial port you're using in the "comm port parameter". If your device does not support learning, or is unable to learn the code correctly, then you'll need to get the code in pronto format on your own. One of the best sources is the http://www.remotecentral.com website. You can copy and paste the infrared codes from that website into the LinuxMCE Admin page. On the A/V equipment page if you leave the check box "Share my I/R codes with others" checked the infrared codes will automatically be shared with other users.</p><br />
<br />
<p>To test codes you can either do it by clicking the test code button from the infrared code page in LinuxMCE Admin, or by clicking the Advanced button on the orbiter, which is normally the LinuxMCE logo. On the Orbiter's advanced page is an option to test infrared codes. Note that to test i/r codes with that button on the orbiter only I/R codes that were already in the system before the last Router reload will work. This isn't the case with the LinuxMCE Admin website, so, when setting up devices for the first time, the website is the preferred tool.</p><br />
<br />
<p><h1>How to use it</h1></p><br />
<p>Just add a media scenario for the device, as explained [[Control a TV or cable/satellite box]]<br />
<br />
<p><h1>Programmer's guide</h1></p><br />
<p>The logic for determining what infrared codes each device uses is in Infrared_Plugin. The command is Get Infrared Codes. Each infrared interface device, like the gc100, should inherit from the MessageTranslation class which handles translating for toggle codes, proper formatting of numbers, etc.</p></div>PeteKhttp://wiki.linuxmce.org/index.php?title=Talk:Quick_Start_Guides&diff=4165Talk:Quick Start Guides2007-07-15T19:10:27Z<p>PeteK: </p>
<hr />
<div></div>PeteK