<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.linuxmce.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=B4rney</id>
	<title>LinuxMCE - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.linuxmce.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=B4rney"/>
	<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php/Special:Contributions/B4rney"/>
	<updated>2026-07-22T04:55:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=TBS6981_DVB-S2_Dual_Tuner_PCIe_Card&amp;diff=32611</id>
		<title>TBS6981 DVB-S2 Dual Tuner PCIe Card</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=TBS6981_DVB-S2_Dual_Tuner_PCIe_Card&amp;diff=32611"/>
		<updated>2012-10-06T13:27:18Z</updated>

		<summary type="html">&lt;p&gt;B4rney: Added script to compile the firmware&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TBS6981 PCI-E DVB-S2 Twin Tuner TV card is designed to fulfill the needs of watching/recording multiple satellite TV channels on PC simultaneously.You may record two whole TS(Transponder Stream),one of which could contains maximum ten, twelve SD or HD TV channels into your PC hard disk. Which means you will be able to record up to 24 channels with TBS6981 in the same time. This feature contribute a lot especially when you are building up HTPC or IPTV streaming server.It’s ready with Linux driver up to the latest kernel(Tested on Ubuntu,Fedora,Opensuse and other Linux distributions).&lt;br /&gt;
&lt;br /&gt;
[[Image:6981 1.jpg]] &lt;br /&gt;
===Overview/Features===&lt;br /&gt;
&lt;br /&gt;
* 1x PCI Express&lt;br /&gt;
* Two Channels DVB-S2/S HD/SD TV Receiving &lt;br /&gt;
* Support DiSEqC2.0&lt;br /&gt;
&lt;br /&gt;
===Components Used===&lt;br /&gt;
&lt;br /&gt;
* CX24132(Tuner)&lt;br /&gt;
* CX24117(Demod)&lt;br /&gt;
* CX23885&lt;br /&gt;
&lt;br /&gt;
=== Images===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery perrow=4&amp;gt;&lt;br /&gt;
 Image:6981 4.jpg|&lt;br /&gt;
 Image:6981_5.jpg|&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Identification===&lt;br /&gt;
&lt;br /&gt;
 $lspci -v&lt;br /&gt;
 02:00.0 Multimedia video controller: Conexant Systems, Inc. CX23885 PCI Video and Audio  Decoder  (rev   04)&lt;br /&gt;
 Subsystem: Device 6981:8888&lt;br /&gt;
 Flags: bus master, fast devsel, latency 0, IRQ 18&lt;br /&gt;
 Memory at fd400000 (64-bit, non-prefetchable) [size=2M]&lt;br /&gt;
 Capabilities: &amp;lt;access denied&amp;gt;&lt;br /&gt;
 Kernel driver in use: cx23885&lt;br /&gt;
 Kernel modules: cx23885&lt;br /&gt;
&lt;br /&gt;
===Sample Kernel Output===&lt;br /&gt;
&lt;br /&gt;
$dmesg&lt;br /&gt;
 [   12.015023] IR JVC protocol handler initialized&lt;br /&gt;
 [   12.208535] IR Sony protocol handler initialized&lt;br /&gt;
 [   12.236648] r8169 0000:04:00.0: eth0: link down&lt;br /&gt;
 [   12.236654] r8169 0000:04:00.0: eth0: link down&lt;br /&gt;
 [   12.236868] ADDRCONF(NETDEV_UP): eth0: link is not ready&lt;br /&gt;
 [   12.322025] IR MCE Keyboard/mouse protocol handler initialized&lt;br /&gt;
 [   12.358349] lirc_dev: IR Remote Control driver registered, major 249 &lt;br /&gt;
 [   12.381569] IR LIRC bridge handler initialized&lt;br /&gt;
 [   12.713180] cx25840 7-0044: loaded v4l-cx23885-avcore-01.fw firmware (16382 bytes)&lt;br /&gt;
 [   12.720769] cx23885_dvb_register() allocating 1 frontend(s)&lt;br /&gt;
 [   12.720773] cx23885[0]: cx23885 based dvb card&lt;br /&gt;
 [   12.798025] tbs6981fe: module license &#039;TurboSight Proprietary: www.tbsdtv.com&#039; taints kernel.&lt;br /&gt;
 [   12.798029] Disabling lock debugging due to kernel taint&lt;br /&gt;
 [   12.798546] TurboSight TBS 6981 Frontend 0 Attaching...&lt;br /&gt;
 [   13.067776] DVB: registering new adapter (cx23885[0])&lt;br /&gt;
 [   13.067780] DVB: registering adapter 0 frontend 0 (TurboSight TBS 6981 DVBS/S2 frontend)...&lt;br /&gt;
 [   13.095333] TurboSight TBS698x Dual DVB-S2 card port0 MAC=00:22:ab:f0:36:fa&lt;br /&gt;
 [   13.095335] cx23885_dvb_register() allocating 1 frontend(s)&lt;br /&gt;
 [   13.095341] cx23885[0]: cx23885 based dvb card&lt;br /&gt;
 [   13.095399] TurboSight TBS 6981 Frontend 1 Attaching...&lt;br /&gt;
 [   13.184120] DVB: registering new adapter (cx23885[0])&lt;br /&gt;
 [   13.184125] DVB: registering adapter 1 frontend 0 (TurboSight TBS 6981 DVBS/S2 frontend)...&lt;br /&gt;
 [   13.211862] TurboSight TBS698x Dual DVB-S2 card port1 MAC=00:22:ab:f0:36:fb&lt;br /&gt;
 [   13.211866] cx23885_dev_checkrevision() Hardware revision = 0xa5&lt;br /&gt;
 [   13.211872] cx23885[0]/0: found at 0000:02:00.0, rev: 4, irq: 18, latency: 0, mmio: 0xfd400000&lt;br /&gt;
 [   13.211878] cx23885 0000:02:00.0: setting latency timer to 64&lt;br /&gt;
 [   13.792539] r8169 0000:04:00.0: eth0: link up&lt;br /&gt;
 [   13.792727] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready&lt;br /&gt;
&lt;br /&gt;
===Linux Driver===&lt;br /&gt;
You can download the latest Linux drivers on TBS official website [http://www.tbsdtv.com/download/ Download Center]&lt;br /&gt;
&lt;br /&gt;
===Script to compile===&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 &lt;br /&gt;
 cd ~&lt;br /&gt;
 wget http://www.tbsdtv.com/download/document/common/tbs-linux-drivers_v120827.zip&lt;br /&gt;
 apt-get install -y gcc rar tar gzip&lt;br /&gt;
 aptitude install -y linux-headers-`uname -r` build-essential cvs libncurses5-dev gcc rar tar gzip unzip&lt;br /&gt;
 cd /usr/local/src/&lt;br /&gt;
 rm tbs* -r&lt;br /&gt;
 mkdir tbs6981&lt;br /&gt;
 cd tbs6981&lt;br /&gt;
 unzip ~/tbs-linux-drivers_v120827.zip&lt;br /&gt;
 tar xjvf linux-tbs-drivers.tar.bz2&lt;br /&gt;
 find linux-tbs-drivers -type d -exec chmod u+wx &#039;{}&#039; \;&lt;br /&gt;
 find linux-tbs-drivers -name &amp;quot;*.sh&amp;quot; -o -name &amp;quot;*.pl&amp;quot; -exec chmod u+x &#039;{}&#039; \;&lt;br /&gt;
 cd linux-tbs-drivers&lt;br /&gt;
 ./v4l/tbs-x86.sh&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
 cd ..&lt;br /&gt;
 cp v4l-cx23885-avcore-01.fw /lib/firmware/&lt;br /&gt;
 echo &amp;quot;&amp;quot;&lt;br /&gt;
 echo &amp;quot;please reboot...&amp;quot;&lt;br /&gt;
 echo &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===External Links===&lt;br /&gt;
&lt;br /&gt;
* [http://www.tbsdtv.com/english/product/6981.html TBS6981 Product page]&lt;br /&gt;
* [http://www.tbsdtv.com/forum/index.php TBS Technologies Support forum]&lt;br /&gt;
* [http://www.buydvb.net Online Store]&lt;br /&gt;
&lt;br /&gt;
[[Category:TV Cards]]&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Squeezeslave_on_the_core&amp;diff=26996</id>
		<title>Squeezeslave on the core</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Squeezeslave_on_the_core&amp;diff=26996"/>
		<updated>2011-02-20T17:59:16Z</updated>

		<summary type="html">&lt;p&gt;B4rney: /* Setting Up LinuxMCE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Tutorials]]&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
==Whats does it do?==&lt;br /&gt;
Squeezeslave basically makes it possible to add additional &#039;virtual&#039; Squeezeboxes to your Core or MD&#039;s just by adding additional sound-cards. Each Squeezeslave/Sound-card combo uses about 4-5% CPU on an ATOM/Ion based MD. We have tested an ATOM/Ion based MD running 3 x Squeezeslave/Sound-Card combo&#039;s while playing a ripped DVD from the Core without any problems at all. Using Squeezeslave/Sound-Card combo&#039;s makes it possible to have several independent audio outputs from your Core or from an MD allowing you to use the 2nd Zone of your Surround Amp for example to provide audio to an adjoining room eg a bathroom or maybe a kitchen. All of this expands the options you have when designing your system, gives you enormous additional flexibility to locate additional audio sources where you need them, and reduces the energy footprint of your system at the same time (in comparison to adding additional physical Squeezeboxes).&lt;br /&gt;
&lt;br /&gt;
==Squeezeslave Setup==&lt;br /&gt;
Here&#039;s how to setup squeezeslave to run on your core or in fact any of your MD&#039;s.  It&#039;s fairly straight forward but currently requires manual config/install of each Squeezeslave - I&#039;m working on making this something you can just configure from Web Admin simply and quickly.  One small issue is that because squeezeslave uses the OSS interface, you will need a separate sound card for each instance of squeezeslave you want to run.&lt;br /&gt;
&lt;br /&gt;
==Hardware Supported==&lt;br /&gt;
The Startech Virtual 7.1 USB Audio Adapter (model No. ICUSBAUD107) works fine. This tiny USB Stick style adapter works perfectly under 7.10, 9.10 &amp;amp; 10.04. No installation...just plug it in and its ready a few secs later. Only stereo out jack and Mic input jack.&lt;br /&gt;
&lt;br /&gt;
Many other brands of USB Audio adapter will probably work too. Please add your experiences with other working hardware here too.&lt;br /&gt;
&lt;br /&gt;
Under LinuxMCE 0810 it may be necessary to downgrade Alsa in order for the device to appear (in &#039;aplay -l&#039; or &#039;squeezeslave -L&#039;). Be aware that downgrading alsa will remove audio over hdmi capabilities on the affected computer.&lt;br /&gt;
&lt;br /&gt;
===Setting Up Squeezeslave on your Core or MD&#039;s===&lt;br /&gt;
If you want to setup Squeezeslave on your Core then either open Konsole session from the KDE Desktop or ssh in from another machine and sudo yourself. If you want to set up Squeezeslave on an MD then ssh into your Core and then use;&lt;br /&gt;
&lt;br /&gt;
 ssh moonNNN (**where NNN is the ID number of the MD you want to ssh into.)&lt;br /&gt;
&lt;br /&gt;
You can find the ID of your MD from the Web Admin page at Wizard-&amp;gt;Devices-&amp;gt;Media Directors and the ID is the number with a &#039;#&#039; in front of it at the top of each MD section. Now follow the instructions below for each MD you want to add Squeezeslave too.&lt;br /&gt;
&lt;br /&gt;
===Needed Dependencies===&lt;br /&gt;
System libraries needed are subversion and libasound2-dev&lt;br /&gt;
  sudo apt-get install subversion&lt;br /&gt;
  sudo apt-get install libasound2-dev&lt;br /&gt;
Since squeezeslave is only updating the display versions of their makefiles also needed for building&lt;br /&gt;
  sudo apt-get install libncurses5-dev&lt;br /&gt;
  sudo apt-get install liblircclient-dev&lt;br /&gt;
&lt;br /&gt;
===Squeezeslave is available in the debs===&lt;br /&gt;
Easiest for anybody will be&lt;br /&gt;
  sudo apt-get install squeezeslave&lt;br /&gt;
This will install squeezeslave in the right directory for you to use. If you want to build it yourself follow the next steps.&lt;br /&gt;
&lt;br /&gt;
===Typical build===&lt;br /&gt;
  svn checkout http://squeezeslave.googlecode.com/svn/squeezeslave/trunk/squeezeslave&lt;br /&gt;
  cd squeezeslave&lt;br /&gt;
  make -f makefile.linux26-alsa-display realclean&lt;br /&gt;
  make -f makefile.linux26-alsa-display&lt;br /&gt;
&lt;br /&gt;
===Or Download Source / look at the squeezeslave wiki===&lt;br /&gt;
Download a version of [http://sourceforge.net/project/showfiles.php?group_id=105169 Squeezeslave].  I&#039;m running the latest version which was 0.9-173 &lt;br /&gt;
&lt;br /&gt;
Look at the slimdevices wiki for the latest options and install instructions http://wiki.slimdevices.com/index.php/SqueezeSlave&lt;br /&gt;
&lt;br /&gt;
===Installing=== &lt;br /&gt;
*You&#039;ll want to put it somewhere in your path. (This is already done if you did the apt-get install method)&lt;br /&gt;
*There will be a file in the /bin directory called squeezeslave (there might be something added to this to represent the version you build, just rename the file to squeezeslave and copy to your wanted directory&lt;br /&gt;
*Example: /usr/bin&lt;br /&gt;
====Modify /etc/rc.local====&lt;br /&gt;
Next add the following to /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
If your setting up Squeezeslave on your Core then use;&lt;br /&gt;
  /usr/bin/squeezeslave -o4 -m00:00:00:00:00:01 -r5 -M/var/log/squeezeslave.log&lt;br /&gt;
&lt;br /&gt;
If your setting up Squeezeslave on one of your MD&#039;s then use;&lt;br /&gt;
  /usr/bin/squeezeslave -o4 192.168.80.1 -m00:00:00:00:00:01 -r5 -M/var/log/squeezeslave.log&lt;br /&gt;
&lt;br /&gt;
* the IP address should be the IP address of your Core (**Only needed if your running Squeezeslave on MD&#039;s**).&lt;br /&gt;
* the MAC address can be whatever you want, it just needs to be the same as the device created in linux mce&lt;br /&gt;
* the -o option specifies which output device ie /dev/dsp1 (check with &amp;quot;squeezeslave -L&amp;quot; for available devices then use &#039;-oN&#039; where &#039;N&#039; is the number next to your output device)&lt;br /&gt;
See example output using &#039;squeezeslave -L&#039; below;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Output devices:&lt;br /&gt;
  0: (ALSA) SB Live! Value [CT4832]: ADC Capture/Standard PCM Playback (hw:0,0) (11/46)&lt;br /&gt;
  2: (ALSA) SB Live! Value [CT4832]: Multichannel Capture/PT Playback (hw:0,2) (10/42)&lt;br /&gt;
  3: (ALSA) SB Live! Value [CT4832]: Multichannel Playback (hw:0,3) (10/42)&lt;br /&gt;
  4: (ALSA) USB Audio Device: USB Audio (hw:1,0) (10/42)&lt;br /&gt;
  5: (ALSA) front (11/46)&lt;br /&gt;
  6: (ALSA) rear (11/46)&lt;br /&gt;
  7: (ALSA) center_lfe (11/46)&lt;br /&gt;
  8: (ALSA) surround40 (11/46)&lt;br /&gt;
  9: (ALSA) surround41 (11/46)&lt;br /&gt;
 10: (ALSA) surround50 (11/46)&lt;br /&gt;
 11: (ALSA) surround51 (11/46)&lt;br /&gt;
 12: (ALSA) iec958 (10/42)&lt;br /&gt;
 13: (ALSA) spdif (10/42)&lt;br /&gt;
 14: (ALSA) spdif_playback (11/46)&lt;br /&gt;
 15: (ALSA) asym_spdif (11/46)&lt;br /&gt;
 17: (ALSA) asym_analog (42/46)&lt;br /&gt;
 18: (ALSA) usb_analog (42/46)&lt;br /&gt;
 19: (ALSA) dmix (42/42)&lt;br /&gt;
*20: (ALSA) default (42/46)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I am using the No.18 device in the output above and therefore would use &#039;-o18&#039; switch when using the squeezeslave command.&lt;br /&gt;
&lt;br /&gt;
* the -r option tells squeezeslave to keep retrying to connect to the server, useful if the server is not running yet.&lt;br /&gt;
* the -M option makes it run as a Daemon and creates log&lt;br /&gt;
&lt;br /&gt;
===Setting Up Alsamixer===&lt;br /&gt;
Next make sure all the volume levels in the mixer (alsamixer) are set correctly&lt;br /&gt;
  alsamixer&lt;br /&gt;
Make sure that the settings are as desired and save (Esc button)&lt;br /&gt;
===Setting Up LinuxMCE===&lt;br /&gt;
&lt;br /&gt;
Next step, manually add the squeezeslave to linuxmce as a squeezebox using the mac address you gave it. The squeezebox player can be assigned to a room/entertainment area without an MD, in fact this would be a typical installation.&lt;br /&gt;
&lt;br /&gt;
====Select Device====&lt;br /&gt;
* Select &#039;&#039;&#039;Device-&amp;gt;A/V Equipment&#039;&#039;&#039;&lt;br /&gt;
* Select SqueezeBox Player from the dropdown options&lt;br /&gt;
* Assign it to a room and entertainment area.  &lt;br /&gt;
* Regen your orbiters and reload the router.&lt;br /&gt;
&lt;br /&gt;
Restart the core to make sure it&#039;s starting automatically, to run it manually just run the line made in the rc.local&lt;br /&gt;
&lt;br /&gt;
  /usr/bin/squeezeslave -o5 -m 00:00:00:00:00:01 -r5 -M/var/log/squeezeslave.log&lt;br /&gt;
&lt;br /&gt;
* Check with ps if it is running:&lt;br /&gt;
  ps aux | grep squeezeslave&lt;br /&gt;
**Example output:&lt;br /&gt;
 root     11502  0.0  0.8  51484  8812 ?        SLl  Apr07   0:33 /usr/bin/squeezeslave -05 -m00:00:00:00:00:02 -r5 -M/var/log/squeezeslave&lt;br /&gt;
&lt;br /&gt;
That should do it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
use /usr/bin/squeezeslave -L for available audio devices&lt;br /&gt;
&lt;br /&gt;
use /usr/bin/squeezeslave -h for a list of options (see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/bin/squeezeslave -h&lt;br /&gt;
squeezeslave 0.9-143&lt;br /&gt;
compile flags: linux portaudio:1485 debug signals daemon&lt;br /&gt;
&lt;br /&gt;
Squeezeslave is licensed free of charge. There is NO WARRANTY for&lt;br /&gt;
the program. This program is provided &amp;quot;as is&amp;quot; without warranty of&lt;br /&gt;
any kind, either expressed or implied, including, but not limited&lt;br /&gt;
to, the implied warranties of merchantability and fitness for a&lt;br /&gt;
particular purpose.  The entire risk as to the quality and&lt;br /&gt;
performance of the program is with you.  Should the program prove&lt;br /&gt;
defective, you assume the cost of all necessary servicing, repair&lt;br /&gt;
or correction.&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2004-2007 Richard Titmuss,&lt;br /&gt;
              2008-2010 Duane Paddock.&lt;br /&gt;
&lt;br /&gt;
squeezeslave [options] [&amp;lt;server address&amp;gt;]&lt;br /&gt;
The Squeezebox Server address defaults to 127.0.0.1.&lt;br /&gt;
Options:&lt;br /&gt;
-h, --help:                 Prints this message.&lt;br /&gt;
-a,                         Sets the amplitude of a high-frequency tone&lt;br /&gt;
--predelay_amplitude &amp;lt;val&amp;gt;: produced during the predelay (see --predelay).&lt;br /&gt;
                            The frequency is set at the source&#039;s sampling&lt;br /&gt;
                            rate/2 and the amplitude is in absolute value.&lt;br /&gt;
                            For 16-bit sources, the max is 32767, but values&lt;br /&gt;
                            below 10 are likely to work.  The goal is to&lt;br /&gt;
                            produce an inaudible signal that will cause DACs&lt;br /&gt;
                            to wake-up and lock before actual samples are&lt;br /&gt;
                            played out.  If the DAC locks using only silence,&lt;br /&gt;
                            do not use this option (it will default to 0).&lt;br /&gt;
-k, --keepalive &amp;lt;sec&amp;gt;:      Controls how frequently squeezeslave sends a&lt;br /&gt;
                            alive signal to SqueezeCenter.  6.5.x servers&lt;br /&gt;
                            need this to avoid dropping the player&#039;s&lt;br /&gt;
                            connection.  By default, the implementation&lt;br /&gt;
                            chooses the right value: 10s for a &amp;gt;=6.5.x server&lt;br /&gt;
                            and 0s for a &amp;lt;6.5.x server, which means no&lt;br /&gt;
                            keepalive.&lt;br /&gt;
-M, --daemonize &amp;lt;logfile&amp;gt;   Run squeezeslave as a daemon.&lt;br /&gt;
                            Messages written to specified file.&lt;br /&gt;
                            Not supported with lirc and display modes.&lt;br /&gt;
-L, --list                  List available audio devices and exit.&lt;br /&gt;
-m, --mac &amp;lt;mac_address&amp;gt;:    Sets the mac address for this instance.&lt;br /&gt;
                            Use the colon-separated notation.&lt;br /&gt;
                            The default is 00:00:00:00:00:01.&lt;br /&gt;
                            SqueezeCenter uses this value to distinguish&lt;br /&gt;
                            multiple instances, allowing per-player settings.&lt;br /&gt;
-o, --output &amp;lt;device_id&amp;gt;:   Sets the output device id.&lt;br /&gt;
                            The default id is 0.&lt;br /&gt;
                            The output device ids can be found with -L.&lt;br /&gt;
-P, --port &amp;lt;portnumber&amp;gt;:    Sets the SqueezeCenter port number.&lt;br /&gt;
                            The default port is 3483.&lt;br /&gt;
-p, --predelay &amp;lt;msec&amp;gt;:      Sets a delay before any playback is started.  This&lt;br /&gt;
                            is useful if the DAC used for output is slow to&lt;br /&gt;
                            wake-up/lock, causing the first few samples to be&lt;br /&gt;
                            dropped.&lt;br /&gt;
--retry                     Causes the program to retry connecting to&lt;br /&gt;
                            SqueezeCenter until it succeeds or is stopped using&lt;br /&gt;
                            SIGTERM or keyboard entry (see -s/--signal).&lt;br /&gt;
                            If the connection to SqueezeCenter is lost, the&lt;br /&gt;
                            program will poll it until it restarts.  --retry&lt;br /&gt;
                            enables retry with a 5 second delay between&lt;br /&gt;
                            attempts.&lt;br /&gt;
-r &amp;lt;sec&amp;gt;                    For a different retry interval use -r and the&lt;br /&gt;
                            desired interval in seconds. (ie. -r10)&lt;br /&gt;
                            A value is required for this option.&lt;br /&gt;
-s, --signal:               Ignored. Always uses SIGTERM to exit.&lt;br /&gt;
-V, --version:              Prints the squeezeslave version.&lt;br /&gt;
-v, --volume &amp;lt;sw|off&amp;gt;:      Enables/disables volume changes done by&lt;br /&gt;
                            SqueezeCenter during its operation, such as when&lt;br /&gt;
                            changing the volume through the web interface or&lt;br /&gt;
                            when applying replay gain.  Defaults to sw.&lt;br /&gt;
                                  sw:  volume changes performed in software.&lt;br /&gt;
                                  off: volume changes ignored.&lt;br /&gt;
-Y, --debuglog &amp;lt;logfile&amp;gt;:   Redirect debug output from stderr to &amp;lt;logfile&amp;gt;.&lt;br /&gt;
-d, --debug &amp;lt;trace_name&amp;gt;:   Turns on debug tracing for the specified level.&lt;br /&gt;
                            The option can be used multiple times to enable&lt;br /&gt;
                            multiple levels.&lt;br /&gt;
                            Available levels:&lt;br /&gt;
                                  all&lt;br /&gt;
                                  slimproto&lt;br /&gt;
                                  slimaudio&lt;br /&gt;
                                  slimaudio_buffer&lt;br /&gt;
                                  slimaudio_buffer_v&lt;br /&gt;
                                  slimaudio_decoder&lt;br /&gt;
                                  slimaudio_decoder_r&lt;br /&gt;
                                  slimaudio_decoder_v&lt;br /&gt;
                                  slimaudio_http&lt;br /&gt;
                                  slimaudio_http_v&lt;br /&gt;
                                  slimaudio_output&lt;br /&gt;
                                  slimaudio_output_v&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
If you use a USB audio card and squeezeslave gives you an error, try the following&lt;br /&gt;
&lt;br /&gt;
First of all make sure you are running the latest version.&lt;br /&gt;
&lt;br /&gt;
Edit your /etc/asound.conf and add the following&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;pcm.usb_analog {&lt;br /&gt;
        type asym&lt;br /&gt;
        playback.pcm &amp;quot;plug:dmix:1&amp;quot;&lt;br /&gt;
        capture.pcm &amp;quot;plughw:1&amp;quot;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this restart alsa&lt;br /&gt;
&lt;br /&gt;
  /etc/init.d/alsa-utils restart&lt;br /&gt;
&lt;br /&gt;
check your alsamixer to make sure pcm is unmuted and on a good level&lt;br /&gt;
&lt;br /&gt;
Try squeezeslave again&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Squeezeslave_on_the_core&amp;diff=26995</id>
		<title>Squeezeslave on the core</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Squeezeslave_on_the_core&amp;diff=26995"/>
		<updated>2011-02-20T17:52:32Z</updated>

		<summary type="html">&lt;p&gt;B4rney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Tutorials]]&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
==Whats does it do?==&lt;br /&gt;
Squeezeslave basically makes it possible to add additional &#039;virtual&#039; Squeezeboxes to your Core or MD&#039;s just by adding additional sound-cards. Each Squeezeslave/Sound-card combo uses about 4-5% CPU on an ATOM/Ion based MD. We have tested an ATOM/Ion based MD running 3 x Squeezeslave/Sound-Card combo&#039;s while playing a ripped DVD from the Core without any problems at all. Using Squeezeslave/Sound-Card combo&#039;s makes it possible to have several independent audio outputs from your Core or from an MD allowing you to use the 2nd Zone of your Surround Amp for example to provide audio to an adjoining room eg a bathroom or maybe a kitchen. All of this expands the options you have when designing your system, gives you enormous additional flexibility to locate additional audio sources where you need them, and reduces the energy footprint of your system at the same time (in comparison to adding additional physical Squeezeboxes).&lt;br /&gt;
&lt;br /&gt;
==Squeezeslave Setup==&lt;br /&gt;
Here&#039;s how to setup squeezeslave to run on your core or in fact any of your MD&#039;s.  It&#039;s fairly straight forward but currently requires manual config/install of each Squeezeslave - I&#039;m working on making this something you can just configure from Web Admin simply and quickly.  One small issue is that because squeezeslave uses the OSS interface, you will need a separate sound card for each instance of squeezeslave you want to run.&lt;br /&gt;
&lt;br /&gt;
==Hardware Supported==&lt;br /&gt;
The Startech Virtual 7.1 USB Audio Adapter (model No. ICUSBAUD107) works fine. This tiny USB Stick style adapter works perfectly under 7.10, 9.10 &amp;amp; 10.04. No installation...just plug it in and its ready a few secs later. Only stereo out jack and Mic input jack.&lt;br /&gt;
&lt;br /&gt;
Many other brands of USB Audio adapter will probably work too. Please add your experiences with other working hardware here too.&lt;br /&gt;
&lt;br /&gt;
Under LinuxMCE 0810 it may be necessary to downgrade Alsa in order for the device to appear (in &#039;aplay -l&#039; or &#039;squeezeslave -L&#039;). Be aware that downgrading alsa will remove audio over hdmi capabilities on the affected computer.&lt;br /&gt;
&lt;br /&gt;
===Setting Up Squeezeslave on your Core or MD&#039;s===&lt;br /&gt;
If you want to setup Squeezeslave on your Core then either open Konsole session from the KDE Desktop or ssh in from another machine and sudo yourself. If you want to set up Squeezeslave on an MD then ssh into your Core and then use;&lt;br /&gt;
&lt;br /&gt;
 ssh moonNNN (**where NNN is the ID number of the MD you want to ssh into.)&lt;br /&gt;
&lt;br /&gt;
You can find the ID of your MD from the Web Admin page at Wizard-&amp;gt;Devices-&amp;gt;Media Directors and the ID is the number with a &#039;#&#039; in front of it at the top of each MD section. Now follow the instructions below for each MD you want to add Squeezeslave too.&lt;br /&gt;
&lt;br /&gt;
===Needed Dependencies===&lt;br /&gt;
System libraries needed are subversion and libasound2-dev&lt;br /&gt;
  sudo apt-get install subversion&lt;br /&gt;
  sudo apt-get install libasound2-dev&lt;br /&gt;
Since squeezeslave is only updating the display versions of their makefiles also needed for building&lt;br /&gt;
  sudo apt-get install libncurses5-dev&lt;br /&gt;
  sudo apt-get install liblircclient-dev&lt;br /&gt;
&lt;br /&gt;
===Squeezeslave is available in the debs===&lt;br /&gt;
Easiest for anybody will be&lt;br /&gt;
  sudo apt-get install squeezeslave&lt;br /&gt;
This will install squeezeslave in the right directory for you to use. If you want to build it yourself follow the next steps.&lt;br /&gt;
&lt;br /&gt;
===Typical build===&lt;br /&gt;
  svn checkout http://squeezeslave.googlecode.com/svn/squeezeslave/trunk/squeezeslave&lt;br /&gt;
  cd squeezeslave&lt;br /&gt;
  make -f makefile.linux26-alsa-display realclean&lt;br /&gt;
  make -f makefile.linux26-alsa-display&lt;br /&gt;
&lt;br /&gt;
===Or Download Source / look at the squeezeslave wiki===&lt;br /&gt;
Download a version of [http://sourceforge.net/project/showfiles.php?group_id=105169 Squeezeslave].  I&#039;m running the latest version which was 0.9-173 &lt;br /&gt;
&lt;br /&gt;
Look at the slimdevices wiki for the latest options and install instructions http://wiki.slimdevices.com/index.php/SqueezeSlave&lt;br /&gt;
&lt;br /&gt;
===Installing=== &lt;br /&gt;
*You&#039;ll want to put it somewhere in your path. (This is already done if you did the apt-get install method)&lt;br /&gt;
*There will be a file in the /bin directory called squeezeslave (there might be something added to this to represent the version you build, just rename the file to squeezeslave and copy to your wanted directory&lt;br /&gt;
*Example: /usr/bin&lt;br /&gt;
====Modify /etc/rc.local====&lt;br /&gt;
Next add the following to /etc/rc.local&lt;br /&gt;
&lt;br /&gt;
If your setting up Squeezeslave on your Core then use;&lt;br /&gt;
  /usr/bin/squeezeslave -o4 -m00:00:00:00:00:01 -r5 -M/var/log/squeezeslave.log&lt;br /&gt;
&lt;br /&gt;
If your setting up Squeezeslave on one of your MD&#039;s then use;&lt;br /&gt;
  /usr/bin/squeezeslave -o4 192.168.80.1 -m00:00:00:00:00:01 -r5 -M/var/log/squeezeslave.log&lt;br /&gt;
&lt;br /&gt;
* the IP address should be the IP address of your Core (**Only needed if your running Squeezeslave on MD&#039;s**).&lt;br /&gt;
* the MAC address can be whatever you want, it just needs to be the same as the device created in linux mce&lt;br /&gt;
* the -o option specifies which output device ie /dev/dsp1 (check with &amp;quot;squeezeslave -L&amp;quot; for available devices then use &#039;-oN&#039; where &#039;N&#039; is the number next to your output device)&lt;br /&gt;
See example output using &#039;squeezeslave -L&#039; below;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Output devices:&lt;br /&gt;
  0: (ALSA) SB Live! Value [CT4832]: ADC Capture/Standard PCM Playback (hw:0,0) (11/46)&lt;br /&gt;
  2: (ALSA) SB Live! Value [CT4832]: Multichannel Capture/PT Playback (hw:0,2) (10/42)&lt;br /&gt;
  3: (ALSA) SB Live! Value [CT4832]: Multichannel Playback (hw:0,3) (10/42)&lt;br /&gt;
  4: (ALSA) USB Audio Device: USB Audio (hw:1,0) (10/42)&lt;br /&gt;
  5: (ALSA) front (11/46)&lt;br /&gt;
  6: (ALSA) rear (11/46)&lt;br /&gt;
  7: (ALSA) center_lfe (11/46)&lt;br /&gt;
  8: (ALSA) surround40 (11/46)&lt;br /&gt;
  9: (ALSA) surround41 (11/46)&lt;br /&gt;
 10: (ALSA) surround50 (11/46)&lt;br /&gt;
 11: (ALSA) surround51 (11/46)&lt;br /&gt;
 12: (ALSA) iec958 (10/42)&lt;br /&gt;
 13: (ALSA) spdif (10/42)&lt;br /&gt;
 14: (ALSA) spdif_playback (11/46)&lt;br /&gt;
 15: (ALSA) asym_spdif (11/46)&lt;br /&gt;
 17: (ALSA) asym_analog (42/46)&lt;br /&gt;
 18: (ALSA) usb_analog (42/46)&lt;br /&gt;
 19: (ALSA) dmix (42/42)&lt;br /&gt;
*20: (ALSA) default (42/46)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I am using the No.18 device in the output above and therefore would use &#039;-o18&#039; switch when using the squeezeslave command.&lt;br /&gt;
&lt;br /&gt;
* the -r option tells squeezeslave to keep retrying to connect to the server, useful if the server is not running yet.&lt;br /&gt;
* the -M option makes it run as a Daemon and creates log&lt;br /&gt;
&lt;br /&gt;
===Setting Up Alsamixer===&lt;br /&gt;
Next make sure all the volume levels in the mixer (alsamixer) are set correctly&lt;br /&gt;
  alsamixer&lt;br /&gt;
Make sure that the settings are as desired and save (Esc button)&lt;br /&gt;
===Setting Up LinuxMCE===&lt;br /&gt;
&lt;br /&gt;
Next step, manually add the squeezeslave to linuxmce as a squeezebox using the mac address you gave it.  &lt;br /&gt;
&lt;br /&gt;
====Select Device====&lt;br /&gt;
* Select &#039;&#039;&#039;Device-&amp;gt;A/V Equipment&#039;&#039;&#039;&lt;br /&gt;
* Select SqueezeBox Player from the dropdown options&lt;br /&gt;
* Assign it to a room and entertainment area.  &lt;br /&gt;
* Regen your orbiters and reload the router.&lt;br /&gt;
&lt;br /&gt;
Restart the core to make sure it&#039;s starting automatically, to run it manually just run the line made in the rc.local&lt;br /&gt;
&lt;br /&gt;
  /usr/bin/squeezeslave -o5 -m 00:00:00:00:00:01 -r5 -M/var/log/squeezeslave.log&lt;br /&gt;
&lt;br /&gt;
* Check with ps if it is running:&lt;br /&gt;
  ps aux | grep squeezeslave&lt;br /&gt;
**Example output:&lt;br /&gt;
 root     11502  0.0  0.8  51484  8812 ?        SLl  Apr07   0:33 /usr/bin/squeezeslave -05 -m00:00:00:00:00:02 -r5 -M/var/log/squeezeslave&lt;br /&gt;
&lt;br /&gt;
That should do it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
use /usr/bin/squeezeslave -L for available audio devices&lt;br /&gt;
&lt;br /&gt;
use /usr/bin/squeezeslave -h for a list of options (see below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/bin/squeezeslave -h&lt;br /&gt;
squeezeslave 0.9-143&lt;br /&gt;
compile flags: linux portaudio:1485 debug signals daemon&lt;br /&gt;
&lt;br /&gt;
Squeezeslave is licensed free of charge. There is NO WARRANTY for&lt;br /&gt;
the program. This program is provided &amp;quot;as is&amp;quot; without warranty of&lt;br /&gt;
any kind, either expressed or implied, including, but not limited&lt;br /&gt;
to, the implied warranties of merchantability and fitness for a&lt;br /&gt;
particular purpose.  The entire risk as to the quality and&lt;br /&gt;
performance of the program is with you.  Should the program prove&lt;br /&gt;
defective, you assume the cost of all necessary servicing, repair&lt;br /&gt;
or correction.&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2004-2007 Richard Titmuss,&lt;br /&gt;
              2008-2010 Duane Paddock.&lt;br /&gt;
&lt;br /&gt;
squeezeslave [options] [&amp;lt;server address&amp;gt;]&lt;br /&gt;
The Squeezebox Server address defaults to 127.0.0.1.&lt;br /&gt;
Options:&lt;br /&gt;
-h, --help:                 Prints this message.&lt;br /&gt;
-a,                         Sets the amplitude of a high-frequency tone&lt;br /&gt;
--predelay_amplitude &amp;lt;val&amp;gt;: produced during the predelay (see --predelay).&lt;br /&gt;
                            The frequency is set at the source&#039;s sampling&lt;br /&gt;
                            rate/2 and the amplitude is in absolute value.&lt;br /&gt;
                            For 16-bit sources, the max is 32767, but values&lt;br /&gt;
                            below 10 are likely to work.  The goal is to&lt;br /&gt;
                            produce an inaudible signal that will cause DACs&lt;br /&gt;
                            to wake-up and lock before actual samples are&lt;br /&gt;
                            played out.  If the DAC locks using only silence,&lt;br /&gt;
                            do not use this option (it will default to 0).&lt;br /&gt;
-k, --keepalive &amp;lt;sec&amp;gt;:      Controls how frequently squeezeslave sends a&lt;br /&gt;
                            alive signal to SqueezeCenter.  6.5.x servers&lt;br /&gt;
                            need this to avoid dropping the player&#039;s&lt;br /&gt;
                            connection.  By default, the implementation&lt;br /&gt;
                            chooses the right value: 10s for a &amp;gt;=6.5.x server&lt;br /&gt;
                            and 0s for a &amp;lt;6.5.x server, which means no&lt;br /&gt;
                            keepalive.&lt;br /&gt;
-M, --daemonize &amp;lt;logfile&amp;gt;   Run squeezeslave as a daemon.&lt;br /&gt;
                            Messages written to specified file.&lt;br /&gt;
                            Not supported with lirc and display modes.&lt;br /&gt;
-L, --list                  List available audio devices and exit.&lt;br /&gt;
-m, --mac &amp;lt;mac_address&amp;gt;:    Sets the mac address for this instance.&lt;br /&gt;
                            Use the colon-separated notation.&lt;br /&gt;
                            The default is 00:00:00:00:00:01.&lt;br /&gt;
                            SqueezeCenter uses this value to distinguish&lt;br /&gt;
                            multiple instances, allowing per-player settings.&lt;br /&gt;
-o, --output &amp;lt;device_id&amp;gt;:   Sets the output device id.&lt;br /&gt;
                            The default id is 0.&lt;br /&gt;
                            The output device ids can be found with -L.&lt;br /&gt;
-P, --port &amp;lt;portnumber&amp;gt;:    Sets the SqueezeCenter port number.&lt;br /&gt;
                            The default port is 3483.&lt;br /&gt;
-p, --predelay &amp;lt;msec&amp;gt;:      Sets a delay before any playback is started.  This&lt;br /&gt;
                            is useful if the DAC used for output is slow to&lt;br /&gt;
                            wake-up/lock, causing the first few samples to be&lt;br /&gt;
                            dropped.&lt;br /&gt;
--retry                     Causes the program to retry connecting to&lt;br /&gt;
                            SqueezeCenter until it succeeds or is stopped using&lt;br /&gt;
                            SIGTERM or keyboard entry (see -s/--signal).&lt;br /&gt;
                            If the connection to SqueezeCenter is lost, the&lt;br /&gt;
                            program will poll it until it restarts.  --retry&lt;br /&gt;
                            enables retry with a 5 second delay between&lt;br /&gt;
                            attempts.&lt;br /&gt;
-r &amp;lt;sec&amp;gt;                    For a different retry interval use -r and the&lt;br /&gt;
                            desired interval in seconds. (ie. -r10)&lt;br /&gt;
                            A value is required for this option.&lt;br /&gt;
-s, --signal:               Ignored. Always uses SIGTERM to exit.&lt;br /&gt;
-V, --version:              Prints the squeezeslave version.&lt;br /&gt;
-v, --volume &amp;lt;sw|off&amp;gt;:      Enables/disables volume changes done by&lt;br /&gt;
                            SqueezeCenter during its operation, such as when&lt;br /&gt;
                            changing the volume through the web interface or&lt;br /&gt;
                            when applying replay gain.  Defaults to sw.&lt;br /&gt;
                                  sw:  volume changes performed in software.&lt;br /&gt;
                                  off: volume changes ignored.&lt;br /&gt;
-Y, --debuglog &amp;lt;logfile&amp;gt;:   Redirect debug output from stderr to &amp;lt;logfile&amp;gt;.&lt;br /&gt;
-d, --debug &amp;lt;trace_name&amp;gt;:   Turns on debug tracing for the specified level.&lt;br /&gt;
                            The option can be used multiple times to enable&lt;br /&gt;
                            multiple levels.&lt;br /&gt;
                            Available levels:&lt;br /&gt;
                                  all&lt;br /&gt;
                                  slimproto&lt;br /&gt;
                                  slimaudio&lt;br /&gt;
                                  slimaudio_buffer&lt;br /&gt;
                                  slimaudio_buffer_v&lt;br /&gt;
                                  slimaudio_decoder&lt;br /&gt;
                                  slimaudio_decoder_r&lt;br /&gt;
                                  slimaudio_decoder_v&lt;br /&gt;
                                  slimaudio_http&lt;br /&gt;
                                  slimaudio_http_v&lt;br /&gt;
                                  slimaudio_output&lt;br /&gt;
                                  slimaudio_output_v&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
If you use a USB audio card and squeezeslave gives you an error, try the following&lt;br /&gt;
&lt;br /&gt;
First of all make sure you are running the latest version.&lt;br /&gt;
&lt;br /&gt;
Edit your /etc/asound.conf and add the following&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;pcm.usb_analog {&lt;br /&gt;
        type asym&lt;br /&gt;
        playback.pcm &amp;quot;plug:dmix:1&amp;quot;&lt;br /&gt;
        capture.pcm &amp;quot;plughw:1&amp;quot;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this restart alsa&lt;br /&gt;
&lt;br /&gt;
  /etc/init.d/alsa-utils restart&lt;br /&gt;
&lt;br /&gt;
check your alsamixer to make sure pcm is unmuted and on a good level&lt;br /&gt;
&lt;br /&gt;
Try squeezeslave again&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Foscam_FI8908W&amp;diff=26305</id>
		<title>Foscam FI8908W</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Foscam_FI8908W&amp;diff=26305"/>
		<updated>2010-12-04T14:09:25Z</updated>

		<summary type="html">&lt;p&gt;B4rney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware]]&lt;br /&gt;
{{Versioninfo}}&lt;br /&gt;
[[Category: Cameras]]&lt;br /&gt;
[[Category: IP Cameras]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Foscam-FI8908W.jpg|right|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
== Info ==&lt;br /&gt;
Cheap IR wireless IP/Network Pan/tilt Camera&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Provisionally working either as a plug and play IP camera with pan/tilt commands or as a &#039;Generic Motion IP camera&#039; under motion wrapper and used as a sensor as well as recording movement etc.&lt;br /&gt;
&lt;br /&gt;
== Generic Motion IP Camera Hack ==&lt;br /&gt;
If using under motion the pan/tilt commands do not work. It can optionally be made &#039;plug and play&#039; under motion by manually adding the mac range of both the wireless and wired adapters into the &#039;Generic Motion IP Camera&#039; template:&lt;br /&gt;
* Wireless range 79373008896 to 79389786111 (DHCP).&lt;br /&gt;
* Wired range 414170742784 to 414171791359 (DHCP).&lt;br /&gt;
&lt;br /&gt;
After the device has been detected and assigned a room just give it a sensible name and add the following to the path parameter in web admin:&lt;br /&gt;
* hxxp://&amp;lt;CAMERA_IP_ADDRESS&amp;gt;/videostream.cgi?user=XXXXX&amp;amp;pwd=XXXXX&lt;br /&gt;
&lt;br /&gt;
Replace the ip address and the XXXXX with your settings&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Plug and Play (Just give it a sensible name)&lt;br /&gt;
* Installed under motion for security monitoring/recording&lt;br /&gt;
Cons:&lt;br /&gt;
* Path must be manually set as described above&lt;br /&gt;
* No Pan/Tilt other than via its own web interface&lt;br /&gt;
&lt;br /&gt;
== Plug and Play Template Settings ==&lt;br /&gt;
This camera is fully plug and play as a stand-alone pan/tilt camera by duplicating the panasonic template and inserting the following scripts.&lt;br /&gt;
&lt;br /&gt;
#84 Get video frame&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
&lt;br /&gt;
fix_path=device_.devdata_[2]+auth_s;&lt;br /&gt;
fix_path=&#039;/&#039;+fix_path if(fix_path[0]!=&#039;/&#039;[0]);&lt;br /&gt;
&lt;br /&gt;
s = &amp;quot;GET &amp;quot;+fix_path+&amp;quot; HTTP/1.0\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;Accept: */*\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(16384, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
if (recv=~ /^HTTP[^\r\n]+200\sOK.+?\r\n\r\n(.+)$/m)&lt;br /&gt;
  fileName=&amp;quot;/tmp/ip_camera_img&amp;quot;+device_.devid_.to_s&lt;br /&gt;
  imageFile=File.new(fileName+&amp;quot;.jpg&amp;quot;,&#039;w&#039;)&lt;br /&gt;
  imageFile.print $1&lt;br /&gt;
  imageFile.close()&lt;br /&gt;
  system(&amp;quot;/usr/bin/convert &amp;quot;+fileName+&amp;quot;.jpg &amp;quot;+fileName+&amp;quot;.png&amp;quot;);&lt;br /&gt;
  size=File.stat(fileName+&amp;quot;.png&amp;quot;).size &lt;br /&gt;
  imageFile=File.new(fileName+&amp;quot;.png&amp;quot;,&#039;r&#039;)&lt;br /&gt;
  img = imageFile.read(size);&lt;br /&gt;
  imageFile.close()&lt;br /&gt;
  data_set(img)&lt;br /&gt;
  format_set(&#039;png&#039;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#201 Move Down&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=2&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#202 move left&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=4&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#203 Move Right&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=6&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#200 Move Up&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=0&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It can be made &#039;plug and play&#039; by adding the mac range of both the wireless and wired adapters into the new template:&lt;br /&gt;
* Wireless range 79373008896 to 79389786111 (DHCP).&lt;br /&gt;
* Wired range 414170742784 to 414171791359 (DHCP).&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Plug and play (Just give it a sensible name)&lt;br /&gt;
* Pan and Tilt work from on screen arrows&lt;br /&gt;
Cons:&lt;br /&gt;
* No motion capture&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Browser based&lt;br /&gt;
* 10/100mbit LAN&lt;br /&gt;
== Dropouts ==&lt;br /&gt;
There have been reports of dhcp dropouts. Suggested fix:&lt;br /&gt;
http://blog.stead.id.au/2010/06/resolving-foscam-connection-dropouts.html&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.gadgetvictims.com/2009/07/foscam-ip-camera-part-two.html Foscam IP Camera (Part Two)]&lt;br /&gt;
* [http://forum.linuxmce.org/index.php?topic=9969.0 Forum discussion]&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Foscam_FI8908W&amp;diff=26231</id>
		<title>Foscam FI8908W</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Foscam_FI8908W&amp;diff=26231"/>
		<updated>2010-11-30T11:28:54Z</updated>

		<summary type="html">&lt;p&gt;B4rney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware]]&lt;br /&gt;
{{Versioninfo}}&lt;br /&gt;
[[Category: Cameras]]&lt;br /&gt;
[[Category: IP Cameras]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Foscam-FI8908W.jpg|right|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
== Info ==&lt;br /&gt;
Cheap IR wireless IP/Network Pan/tilt Camera&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Provisionally working either as a plug and play IP camera with pan/tilt commands or as a &#039;Generic Motion IP camera&#039; under motion wrapper and used as a sensor as well as recording movement etc.&lt;br /&gt;
&lt;br /&gt;
== Generic Motion IP Camera Hack ==&lt;br /&gt;
If using under motion the pan/tilt commands do not work. It can optionally be made &#039;plug and play&#039; under motion by manually adding the mac range of both the wireless and wired adapters into the &#039;Generic Motion IP Camera&#039; template:&lt;br /&gt;
* Wireless range 79373008896 to 79389786111 (DHCP).&lt;br /&gt;
* Wired range 414170742784 to 414171791359 (DHCP).&lt;br /&gt;
&lt;br /&gt;
After the device has been detected and assigned a room just give it a sensible name and add the following to the path parameter in web admin:&lt;br /&gt;
* hxxp://&amp;lt;CAMERA_IP_ADDRESS&amp;gt;/videostream.cgi?user=XXXXX&amp;amp;pwd=XXXXX&lt;br /&gt;
&lt;br /&gt;
Replace the ip address and the XXXXX with your settings&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Plug and Play (Just give it a sensible name)&lt;br /&gt;
* Installed under motion for security monitoring/recording&lt;br /&gt;
Cons:&lt;br /&gt;
* Path must be manually set as described above&lt;br /&gt;
* No Pan/Tilt other than via its own web interface&lt;br /&gt;
&lt;br /&gt;
== Plug and Play Template Settings ==&lt;br /&gt;
This camera is fully plug and play as a stand-alone pan/tilt camera by duplicating the panasonic template and inserting the following scripts.&lt;br /&gt;
&lt;br /&gt;
#84 Get video frame&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
&lt;br /&gt;
fix_path=device_.devdata_[2]+auth_s;&lt;br /&gt;
fix_path=&#039;/&#039;+fix_path if(fix_path[0]!=&#039;/&#039;[0]);&lt;br /&gt;
&lt;br /&gt;
s = &amp;quot;GET &amp;quot;+fix_path+&amp;quot; HTTP/1.0\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;Accept: */*\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(16384, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
if (recv=~ /^HTTP[^\r\n]+200\sOK.+?\r\n\r\n(.+)$/m)&lt;br /&gt;
  fileName=&amp;quot;/tmp/ip_camera_img&amp;quot;+device_.devid_.to_s&lt;br /&gt;
  imageFile=File.new(fileName+&amp;quot;.jpg&amp;quot;,&#039;w&#039;)&lt;br /&gt;
  imageFile.print $1&lt;br /&gt;
  imageFile.close()&lt;br /&gt;
  system(&amp;quot;/usr/bin/convert &amp;quot;+fileName+&amp;quot;.jpg &amp;quot;+fileName+&amp;quot;.png&amp;quot;);&lt;br /&gt;
  size=File.stat(fileName+&amp;quot;.png&amp;quot;).size &lt;br /&gt;
  imageFile=File.new(fileName+&amp;quot;.png&amp;quot;,&#039;r&#039;)&lt;br /&gt;
  img = imageFile.read(size);&lt;br /&gt;
  imageFile.close()&lt;br /&gt;
  data_set(img)&lt;br /&gt;
  format_set(&#039;png&#039;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#201 Move Down&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=2&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#202 move left&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=4&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#203 Move Right&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=6&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#200 Move Up&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=0&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It can be made &#039;plug and play&#039; by adding the mac range of both the wireless and wired adapters into the new template:&lt;br /&gt;
* Wireless range 79373008896 to 79389786111 (DHCP).&lt;br /&gt;
* Wired range 414170742784 to 414171791359 (DHCP).&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Plug and play (Just give it a sensible name)&lt;br /&gt;
* Pan and Tilt work from on screen arrows&lt;br /&gt;
Cons:&lt;br /&gt;
* No motion capture&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Browser based&lt;br /&gt;
* 10/100mbit LAN&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.gadgetvictims.com/2009/07/foscam-ip-camera-part-two.html Foscam IP Camera (Part Two)]&lt;br /&gt;
* [http://forum.linuxmce.org/index.php?topic=9969.0 Forum discussion]&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Foscam_FI8908W&amp;diff=25904</id>
		<title>Foscam FI8908W</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Foscam_FI8908W&amp;diff=25904"/>
		<updated>2010-10-15T15:45:08Z</updated>

		<summary type="html">&lt;p&gt;B4rney: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware]]&lt;br /&gt;
{{Versioninfo}}&lt;br /&gt;
[[Category: Cameras]]&lt;br /&gt;
[[Category: IP Cameras]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Foscam-FI8908W.jpg|right|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
== Info ==&lt;br /&gt;
Cheap IR wireless IP/Network Pan/tilt Camera&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Provisionally working either as a plug and play IP camera with pan/tilt commands or as a &#039;Generic Motion IP camera&#039; under motion wrapper and used as a sensor as well as recording movement etc.&lt;br /&gt;
&lt;br /&gt;
If using under motion the pan/tilt commands do not work. It can optionally be made &#039;plug and play&#039; under motion by manually adding the mac range of both the wireless and wired adapters into the &#039;Generic Motion IP Camera&#039; template:&lt;br /&gt;
* Wireless range 79373008896 to 79389786111 (DHCP).&lt;br /&gt;
* Wired range 414170742784 to 414171791359 (DHCP).&lt;br /&gt;
&lt;br /&gt;
After the device has been detected and assigned a room just give it a sensible name and add the following to the path parameter in web admin:&lt;br /&gt;
* hxxp://&amp;lt;CAMERA_IP_ADDRESS&amp;gt;/videostream.cgi?user=XXXXX&amp;amp;pwd=XXXXX&lt;br /&gt;
&lt;br /&gt;
Replace the ip address and the XXXXX with your settings&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Plug and Play (Just give it a sensible name)&lt;br /&gt;
* Installed under motion for security monitoring/recording&lt;br /&gt;
Cons:&lt;br /&gt;
* Path must be manually set as described above&lt;br /&gt;
* No Pan/Tilt other than via its own web interface&lt;br /&gt;
&lt;br /&gt;
This camera is fully plug and play as a stand-alone pan/tilt camera by duplicating the panasonic template and inserting the following scripts.&lt;br /&gt;
&lt;br /&gt;
#84 Get video frame&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
&lt;br /&gt;
fix_path=device_.devdata_[2]+auth_s;&lt;br /&gt;
fix_path=&#039;/&#039;+fix_path if(fix_path[0]!=&#039;/&#039;[0]);&lt;br /&gt;
&lt;br /&gt;
s = &amp;quot;GET &amp;quot;+fix_path+&amp;quot; HTTP/1.0\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;Accept: */*\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(16384, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
if (recv=~ /^HTTP[^\r\n]+200\sOK.+?\r\n\r\n(.+)$/m)&lt;br /&gt;
  fileName=&amp;quot;/tmp/ip_camera_img&amp;quot;+device_.devid_.to_s&lt;br /&gt;
  imageFile=File.new(fileName+&amp;quot;.jpg&amp;quot;,&#039;w&#039;)&lt;br /&gt;
  imageFile.print $1&lt;br /&gt;
  imageFile.close()&lt;br /&gt;
  system(&amp;quot;/usr/bin/convert &amp;quot;+fileName+&amp;quot;.jpg &amp;quot;+fileName+&amp;quot;.png&amp;quot;);&lt;br /&gt;
  size=File.stat(fileName+&amp;quot;.png&amp;quot;).size &lt;br /&gt;
  imageFile=File.new(fileName+&amp;quot;.png&amp;quot;,&#039;r&#039;)&lt;br /&gt;
  img = imageFile.read(size);&lt;br /&gt;
  imageFile.close()&lt;br /&gt;
  data_set(img)&lt;br /&gt;
  format_set(&#039;png&#039;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#201 Move Down&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=2&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#202 move left&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=4&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#203 Move Right&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=6&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#200 Move Up&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=0&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It can be made &#039;plug and play&#039; by adding the mac range of both the wireless and wired adapters into the new template:&lt;br /&gt;
* Wireless range 79373008896 to 79389786111 (DHCP).&lt;br /&gt;
* Wired range 414170742784 to 414171791359 (DHCP).&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Plug and play (Just give it a sensible name)&lt;br /&gt;
* Pan and Tilt work from on screen arrows&lt;br /&gt;
Cons:&lt;br /&gt;
* No motion capture&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Browser based&lt;br /&gt;
* 10/100mbit LAN&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.gadgetvictims.com/2009/07/foscam-ip-camera-part-two.html Foscam IP Camera (Part Two)]&lt;br /&gt;
* [http://forum.linuxmce.org/index.php?topic=9969.0 Forum discussion]&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Foscam_FI8908W&amp;diff=25903</id>
		<title>Foscam FI8908W</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Foscam_FI8908W&amp;diff=25903"/>
		<updated>2010-10-15T15:40:12Z</updated>

		<summary type="html">&lt;p&gt;B4rney: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware]]&lt;br /&gt;
{{Versioninfo}}&lt;br /&gt;
[[Category: Cameras]]&lt;br /&gt;
[[Category: IP Cameras]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Foscam-FI8908W.jpg|right|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
== Info ==&lt;br /&gt;
Cheap IR wireless IP/Network Pan/tilt Camera&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Provisionally working either as a plug and play IP camera with pan/tilt commands or as a &#039;Generic Motion IP camera&#039; under motion wrapper and used as a sensor as well as recording movement etc.&lt;br /&gt;
&lt;br /&gt;
If using under motion the pan/tilt commands do not work. It can be installed under motion by adding the mac range of both the wireless and wired adapters into the &#039;Generic Motion IP Camera&#039; template:&lt;br /&gt;
* Wireless range 79373008896 to 79389786111 (DHCP).&lt;br /&gt;
* Wired range 414170742784 to 414171791359 (DHCP).&lt;br /&gt;
&lt;br /&gt;
After the device has been detected and assigned a room just give it a sensible name and add the following to the path parameter in web admin:&lt;br /&gt;
* hxxp://&amp;lt;CAMERA_IP_ADDRESS&amp;gt;/videostream.cgi?user=XXXXX&amp;amp;pwd=XXXXX&lt;br /&gt;
&lt;br /&gt;
Replace the ip address and the XXXXX with your settings&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Plug and Play (Just give it a sensible name)&lt;br /&gt;
* Installed under motion for security monitoring/recording&lt;br /&gt;
Cons:&lt;br /&gt;
* Path must be manually set as described above&lt;br /&gt;
* No Pan/Tilt other than via its own web interface&lt;br /&gt;
&lt;br /&gt;
This camera is fully plug and play as a stand-alone pan/tilt camera by duplicating the panasonic template and inserting the following scripts.&lt;br /&gt;
&lt;br /&gt;
#84 Get video frame&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
&lt;br /&gt;
fix_path=device_.devdata_[2]+auth_s;&lt;br /&gt;
fix_path=&#039;/&#039;+fix_path if(fix_path[0]!=&#039;/&#039;[0]);&lt;br /&gt;
&lt;br /&gt;
s = &amp;quot;GET &amp;quot;+fix_path+&amp;quot; HTTP/1.0\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;Accept: */*\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(16384, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
if (recv=~ /^HTTP[^\r\n]+200\sOK.+?\r\n\r\n(.+)$/m)&lt;br /&gt;
  fileName=&amp;quot;/tmp/ip_camera_img&amp;quot;+device_.devid_.to_s&lt;br /&gt;
  imageFile=File.new(fileName+&amp;quot;.jpg&amp;quot;,&#039;w&#039;)&lt;br /&gt;
  imageFile.print $1&lt;br /&gt;
  imageFile.close()&lt;br /&gt;
  system(&amp;quot;/usr/bin/convert &amp;quot;+fileName+&amp;quot;.jpg &amp;quot;+fileName+&amp;quot;.png&amp;quot;);&lt;br /&gt;
  size=File.stat(fileName+&amp;quot;.png&amp;quot;).size &lt;br /&gt;
  imageFile=File.new(fileName+&amp;quot;.png&amp;quot;,&#039;r&#039;)&lt;br /&gt;
  img = imageFile.read(size);&lt;br /&gt;
  imageFile.close()&lt;br /&gt;
  data_set(img)&lt;br /&gt;
  format_set(&#039;png&#039;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#201 Move Down&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=2&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#202 move left&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=4&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#203 Move Right&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=6&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#200 Move Up&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=0&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Plug and play (Just give it a sensible name)&lt;br /&gt;
* Pan and Tilt work from on screen arrows&lt;br /&gt;
Cons:&lt;br /&gt;
* No motion capture&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Browser based&lt;br /&gt;
* 10/100mbit LAN&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.gadgetvictims.com/2009/07/foscam-ip-camera-part-two.html Foscam IP Camera (Part Two)]&lt;br /&gt;
* [http://forum.linuxmce.org/index.php?topic=9969.0 Forum discussion]&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Foscam_FI8908W&amp;diff=25902</id>
		<title>Foscam FI8908W</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Foscam_FI8908W&amp;diff=25902"/>
		<updated>2010-10-15T15:39:44Z</updated>

		<summary type="html">&lt;p&gt;B4rney: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware]]&lt;br /&gt;
{{Versioninfo}}&lt;br /&gt;
[[Category: Cameras]]&lt;br /&gt;
[[Category: IP Cameras]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Foscam-FI8908W.jpg|right|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
== Info ==&lt;br /&gt;
Cheap IR wireless IP/Network Pan/tilt Camera&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Provisionally working either as a plug and play IP camera with pan/tilt commands or as a &#039;Generic Motion IP camera&#039; under motion wrapper and used as a sensor as well as recording movement etc.&lt;br /&gt;
&lt;br /&gt;
If using under motion the pan/tilt commands do not work. It can be installed under motion (my preferred option) by adding the mac range of both the wireless and wired adapters into the &#039;Generic Motion IP Camera&#039; template:&lt;br /&gt;
* Wireless range 79373008896 to 79389786111 (DHCP).&lt;br /&gt;
* Wired range 414170742784 to 414171791359 (DHCP).&lt;br /&gt;
&lt;br /&gt;
After the device has been detected and assigned a room just give it a sensible name and add the following to the path parameter in web admin:&lt;br /&gt;
* hxxp://&amp;lt;CAMERA_IP_ADDRESS&amp;gt;/videostream.cgi?user=XXXXX&amp;amp;pwd=XXXXX&lt;br /&gt;
&lt;br /&gt;
Replace the ip address and the XXXXX with your settings&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Plug and Play (Just give it a sensible name)&lt;br /&gt;
* Installed under motion for security monitoring/recording&lt;br /&gt;
Cons:&lt;br /&gt;
* Path must be manually set as described above&lt;br /&gt;
* No Pan/Tilt other than via its own web interface&lt;br /&gt;
&lt;br /&gt;
This camera is fully plug and play as a stand-alone pan/tilt camera by duplicating the panasonic template and inserting the following scripts.&lt;br /&gt;
&lt;br /&gt;
#84 Get video frame&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
&lt;br /&gt;
fix_path=device_.devdata_[2]+auth_s;&lt;br /&gt;
fix_path=&#039;/&#039;+fix_path if(fix_path[0]!=&#039;/&#039;[0]);&lt;br /&gt;
&lt;br /&gt;
s = &amp;quot;GET &amp;quot;+fix_path+&amp;quot; HTTP/1.0\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;Accept: */*\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(16384, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
if (recv=~ /^HTTP[^\r\n]+200\sOK.+?\r\n\r\n(.+)$/m)&lt;br /&gt;
  fileName=&amp;quot;/tmp/ip_camera_img&amp;quot;+device_.devid_.to_s&lt;br /&gt;
  imageFile=File.new(fileName+&amp;quot;.jpg&amp;quot;,&#039;w&#039;)&lt;br /&gt;
  imageFile.print $1&lt;br /&gt;
  imageFile.close()&lt;br /&gt;
  system(&amp;quot;/usr/bin/convert &amp;quot;+fileName+&amp;quot;.jpg &amp;quot;+fileName+&amp;quot;.png&amp;quot;);&lt;br /&gt;
  size=File.stat(fileName+&amp;quot;.png&amp;quot;).size &lt;br /&gt;
  imageFile=File.new(fileName+&amp;quot;.png&amp;quot;,&#039;r&#039;)&lt;br /&gt;
  img = imageFile.read(size);&lt;br /&gt;
  imageFile.close()&lt;br /&gt;
  data_set(img)&lt;br /&gt;
  format_set(&#039;png&#039;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#201 Move Down&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=2&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#202 move left&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=4&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#203 Move Right&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=6&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#200 Move Up&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=0&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Plug and play (Just give it a sensible name)&lt;br /&gt;
* Pan and Tilt work from on screen arrows&lt;br /&gt;
Cons:&lt;br /&gt;
* No motion capture&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Browser based&lt;br /&gt;
* 10/100mbit LAN&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.gadgetvictims.com/2009/07/foscam-ip-camera-part-two.html Foscam IP Camera (Part Two)]&lt;br /&gt;
* [http://forum.linuxmce.org/index.php?topic=9969.0 Forum discussion]&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Foscam_FI8908W&amp;diff=25901</id>
		<title>Foscam FI8908W</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Foscam_FI8908W&amp;diff=25901"/>
		<updated>2010-10-15T15:37:43Z</updated>

		<summary type="html">&lt;p&gt;B4rney: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware]]&lt;br /&gt;
{{Versioninfo}}&lt;br /&gt;
[[Category: Cameras]]&lt;br /&gt;
[[Category: IP Cameras]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Foscam-FI8908W.jpg|right|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
== Info ==&lt;br /&gt;
Cheap IR wireless IP/Network Pan/tilt Camera&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Provisionally working either as a plug and play IP camera with pan/tilt commands or as a &#039;Generic Motion IP camera&#039; under motion wrapper and used as a sensor as well as recording movement etc.&lt;br /&gt;
&lt;br /&gt;
If using under motion the pan/tilt commands do not work. It can be installed under motion (my preferred option) by adding the mac range of both the wireless and wired adapters into the &#039;Generic Motion IP Camera&#039; template:&lt;br /&gt;
* Wireless range 79373008896 to 79389786111 (DHCP).&lt;br /&gt;
* Wired range 414170742784 to 414171791359 (DHCP).&lt;br /&gt;
&lt;br /&gt;
After the device has been detected and assigned a room just give it a sensible name and add the following to the path parameter in web admin:&lt;br /&gt;
* hxxp://&amp;lt;CAMERA_IP_ADDRESS&amp;gt;/videostream.cgi?user=XXXXX&amp;amp;pwd=XXXXX&lt;br /&gt;
&lt;br /&gt;
Replace the ip address and the XXXXX with your settings&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Plug and Play (Just give it a sensible name)&lt;br /&gt;
* Installed under motion for security monitoring/recording&lt;br /&gt;
Cons:&lt;br /&gt;
* Path must be manually set as described above&lt;br /&gt;
* No Pan/Tilt other than via its own web interface&lt;br /&gt;
&lt;br /&gt;
This camera is fully plug and play as a stand-alone pan/tilt camera by duplicating the panasonic template and inserting the following scripts.&lt;br /&gt;
&lt;br /&gt;
#84 Get video frame&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
&lt;br /&gt;
fix_path=device_.devdata_[2]+auth_s;&lt;br /&gt;
fix_path=&#039;/&#039;+fix_path if(fix_path[0]!=&#039;/&#039;[0]);&lt;br /&gt;
&lt;br /&gt;
s = &amp;quot;GET &amp;quot;+fix_path+&amp;quot; HTTP/1.0\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;Accept: */*\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(16384, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
if (recv=~ /^HTTP[^\r\n]+200\sOK.+?\r\n\r\n(.+)$/m)&lt;br /&gt;
  fileName=&amp;quot;/tmp/ip_camera_img&amp;quot;+device_.devid_.to_s&lt;br /&gt;
  imageFile=File.new(fileName+&amp;quot;.jpg&amp;quot;,&#039;w&#039;)&lt;br /&gt;
  imageFile.print $1&lt;br /&gt;
  imageFile.close()&lt;br /&gt;
  system(&amp;quot;/usr/bin/convert &amp;quot;+fileName+&amp;quot;.jpg &amp;quot;+fileName+&amp;quot;.png&amp;quot;);&lt;br /&gt;
  size=File.stat(fileName+&amp;quot;.png&amp;quot;).size &lt;br /&gt;
  imageFile=File.new(fileName+&amp;quot;.png&amp;quot;,&#039;r&#039;)&lt;br /&gt;
  img = imageFile.read(size);&lt;br /&gt;
  imageFile.close()&lt;br /&gt;
  data_set(img)&lt;br /&gt;
  format_set(&#039;png&#039;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#201 Move Down&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=2&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#202 move left&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=4&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#203 Move Right&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=6&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#200 Move Up&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=0&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* Plug and play (Just give it a sensible name)&lt;br /&gt;
* Pan and Tilt work from on screen arrows&lt;br /&gt;
Cons:&lt;br /&gt;
* No motion capture except using the cameras in-built web interface in a browser.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Browser based&lt;br /&gt;
* 10/100mbit LAN&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.gadgetvictims.com/2009/07/foscam-ip-camera-part-two.html Foscam IP Camera (Part Two)]&lt;br /&gt;
* [http://forum.linuxmce.org/index.php?topic=9969.0 Forum discussion]&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Foscam_FI8908W&amp;diff=25900</id>
		<title>Foscam FI8908W</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Foscam_FI8908W&amp;diff=25900"/>
		<updated>2010-10-15T15:35:13Z</updated>

		<summary type="html">&lt;p&gt;B4rney: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware]]&lt;br /&gt;
{{Versioninfo}}&lt;br /&gt;
[[Category: Cameras]]&lt;br /&gt;
[[Category: IP Cameras]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Foscam-FI8908W.jpg|right|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
== Info ==&lt;br /&gt;
Cheap IR wireless IP/Network Pan/tilt Camera&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Provisionally working either as a plug and play IP camera with pan/tilt commands or as a &#039;Generic Motion IP camera&#039; under motion wrapper and used as a sensor as well as recording movement etc.&lt;br /&gt;
&lt;br /&gt;
If using under motion the pan/tilt commands do not work. It can be installed under motion (my preferred option) by adding the mac range of both the wireless and wired adapters into the &#039;Generic Motion IP Camera&#039; template:&lt;br /&gt;
Wireless&lt;br /&gt;
79373008896 to 79389786111 (DHCP).&lt;br /&gt;
Wired&lt;br /&gt;
414170742784 to 414171791359 (DHCP).&lt;br /&gt;
&lt;br /&gt;
After the device has been detected and assigned a room just give it a sensible name and add the following to the path parameter in web admin:&lt;br /&gt;
hxxp://&amp;lt;CAMERA_IP_ADDRESS&amp;gt;/videostream.cgi?user=XXXXX&amp;amp;pwd=XXXXX&lt;br /&gt;
&lt;br /&gt;
Replace the ip address and the XXXXX with your settings&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
Plug and Play (Just give it a sensible name)&lt;br /&gt;
Installed under motion for security monitoring/recording&lt;br /&gt;
Cons:&lt;br /&gt;
Path must be manually set as described above&lt;br /&gt;
No Pan/Tilt other than via its own web interface&lt;br /&gt;
&lt;br /&gt;
This camera is fully plug and play as a stand-alone pan/tilt camera by duplicating the panasonic template and inserting the following scripts.&lt;br /&gt;
&lt;br /&gt;
#84 Get video frame&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
&lt;br /&gt;
fix_path=device_.devdata_[2]+auth_s;&lt;br /&gt;
fix_path=&#039;/&#039;+fix_path if(fix_path[0]!=&#039;/&#039;[0]);&lt;br /&gt;
&lt;br /&gt;
s = &amp;quot;GET &amp;quot;+fix_path+&amp;quot; HTTP/1.0\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;Accept: */*\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(16384, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
if (recv=~ /^HTTP[^\r\n]+200\sOK.+?\r\n\r\n(.+)$/m)&lt;br /&gt;
  fileName=&amp;quot;/tmp/ip_camera_img&amp;quot;+device_.devid_.to_s&lt;br /&gt;
  imageFile=File.new(fileName+&amp;quot;.jpg&amp;quot;,&#039;w&#039;)&lt;br /&gt;
  imageFile.print $1&lt;br /&gt;
  imageFile.close()&lt;br /&gt;
  system(&amp;quot;/usr/bin/convert &amp;quot;+fileName+&amp;quot;.jpg &amp;quot;+fileName+&amp;quot;.png&amp;quot;);&lt;br /&gt;
  size=File.stat(fileName+&amp;quot;.png&amp;quot;).size &lt;br /&gt;
  imageFile=File.new(fileName+&amp;quot;.png&amp;quot;,&#039;r&#039;)&lt;br /&gt;
  img = imageFile.read(size);&lt;br /&gt;
  imageFile.close()&lt;br /&gt;
  data_set(img)&lt;br /&gt;
  format_set(&#039;png&#039;)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#201 Move Down&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=2&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#202 move left&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=4&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#203 Move Right&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=6&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#200 Move Up&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conn_.Reconnect()&lt;br /&gt;
auth_s=&amp;quot;user=&amp;quot;+device_.devdata_[114]+&amp;quot;&amp;amp;pwd=&amp;quot;+device_.devdata_[115];&lt;br /&gt;
#auth_a=Array.new;&lt;br /&gt;
#auth_s.each{|c| auth_a.push(c)}&lt;br /&gt;
s = &amp;quot;GET /decoder_control.cgi?command=0&amp;amp;onestep=1&amp;amp;&amp;quot;+auth_s&lt;br /&gt;
s+= &amp;quot; HTTP/1.0\r\n Accept: */*\r\n&amp;quot;&lt;br /&gt;
#s+= &amp;quot;Authorization: Basic &amp;quot;+auth_a.pack(&amp;quot;m&amp;quot;).chop+&amp;quot;\r\n&amp;quot;&lt;br /&gt;
s+= &amp;quot;\r\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
conn_.Send(s)&lt;br /&gt;
recv=&amp;quot;&amp;quot;&lt;br /&gt;
while(true)&lt;br /&gt;
  buff=conn_.Recv(256, 5000)&lt;br /&gt;
  if(buff.length() == 0)&lt;br /&gt;
     break&lt;br /&gt;
   end&lt;br /&gt;
   recv = recv +  buff&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
Plug and play (Just give it a sensible name)&lt;br /&gt;
Pan and Tilt work from on screen arrows&lt;br /&gt;
Cons:&lt;br /&gt;
No motion capture except using the cameras in-built web interface in a browser.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Browser based&lt;br /&gt;
* 10/100mbit LAN&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.gadgetvictims.com/2009/07/foscam-ip-camera-part-two.html Foscam IP Camera (Part Two)]&lt;br /&gt;
* [http://forum.linuxmce.org/index.php?topic=9969.0 Forum discussion]&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Foscam_FI8908W&amp;diff=25885</id>
		<title>Foscam FI8908W</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Foscam_FI8908W&amp;diff=25885"/>
		<updated>2010-10-12T23:27:02Z</updated>

		<summary type="html">&lt;p&gt;B4rney: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware]]&lt;br /&gt;
{{Versioninfo}}&lt;br /&gt;
[[Category: Cameras]]&lt;br /&gt;
[[Category: IP Cameras]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Foscam-FI8908W.jpg|right|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
== Info ==&lt;br /&gt;
Cheap IR wireless IP/Network Pan/tilt Camera&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
Provisionally working either as a plug and play IP camera with pan/tilt commands or as a &#039;Generic Motion IP camera&#039; under motion wrapper and used as a sensor as well as recording movement etc. If using under motion the pan/tilt commands do not work.&lt;br /&gt;
http://forum.linuxmce.org/index.php?topic=10592.0&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Browser based&lt;br /&gt;
* 10/100mbit LAN&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.gadgetvictims.com/2009/07/foscam-ip-camera-part-two.html Foscam IP Camera (Part Two)]&lt;br /&gt;
* [http://forum.linuxmce.org/index.php?topic=9969.0 Forum discussion]&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=LG_42LB5D&amp;diff=25721</id>
		<title>LG 42LB5D</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=LG_42LB5D&amp;diff=25721"/>
		<updated>2010-10-04T15:36:51Z</updated>

		<summary type="html">&lt;p&gt;B4rney: /* &amp;#039;Add Ruby snippets to commands&amp;#039; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware]]&lt;br /&gt;
{{Versioninfo}}&lt;br /&gt;
[[Category: Video]]&lt;br /&gt;
[[Category: Displays]]&lt;br /&gt;
&lt;br /&gt;
 {| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
==Features==&lt;br /&gt;
===Basics===&lt;br /&gt;
* 42&amp;quot; (diagonal) [[16:9|widescreen]] [[LCD]] television&lt;br /&gt;
* Good build quality on the whole, though some edges on the plastic casing were left &amp;quot;sharp&amp;quot; (I&#039;m OCD about fit and finish)&lt;br /&gt;
* Not that heavy for its size (one person can lift it, in or out of packing carton)&lt;br /&gt;
Special features and nice touches:&lt;br /&gt;
* [[RS232 port]] at the back to allow external control (by LinuxMCE for example)&lt;br /&gt;
* Power LED is red on standby, and switches to green when set is on (thank goodness, blue-LED fever is abating! :-)&lt;br /&gt;
* 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&#039;s what hacking is all about ;-)&lt;br /&gt;
===Picture fidelity===&lt;br /&gt;
* Crisp picture when provided with full quality source (e.g. true HD)&lt;br /&gt;
* 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!&lt;br /&gt;
* 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&#039;t yet have).&lt;br /&gt;
===Usability===&lt;br /&gt;
* 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&#039;s simple, and effective at preventing accidental setting changes by a single inadvertent button press on the remote.&lt;br /&gt;
Resolutions:&lt;br /&gt;
* 1024x768&lt;br /&gt;
* 1280x768&lt;br /&gt;
* 1360x768&lt;br /&gt;
 &lt;br /&gt;
== Adding new template ==&lt;br /&gt;
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:&lt;br /&gt;
LCD TV MODELS 37LB5D / 42LB5D / 47LB5D 52LB5D/ 32LB4D / 37LB4D / 42LB4D&lt;br /&gt;
I have the 42LB5D, so I know that this one works. &lt;br /&gt;
&lt;br /&gt;
=== Specify device data and parameters ===&lt;br /&gt;
&lt;br /&gt;
On the LinuxMCE admin website go to: Advanced &amp;gt; Configuration &amp;gt; Device Templates&lt;br /&gt;
&lt;br /&gt;
Select: Manufacturer &#039;LG&#039;, Device Category &#039;TVs/Plasmas/LCD&#039;s/Projectors&#039; and press &#039;Add device template&#039;&lt;br /&gt;
&lt;br /&gt;
 Description : XXLB4/5D&lt;br /&gt;
 Implements DCE : yes&lt;br /&gt;
 Command line : Generic_Serial_Device&lt;br /&gt;
 Device Category  AV TVs/Plasmas/Projection... #77&lt;br /&gt;
 Manufacturer LG&lt;br /&gt;
&lt;br /&gt;
Also have added following parameters (You need to add them one by one under the header &#039;Device data&#039;):&lt;br /&gt;
&lt;br /&gt;
 Device data&lt;br /&gt;
 Current Data 	                                    Comments 	                    Default Value&lt;br /&gt;
 #37 COM Port on PC(string) 	              The serial port 						&lt;br /&gt;
 #76 COM Port ParityBit/Stop(string) 	      Parity/Stop bits (factory defaults) 	N81 		&lt;br /&gt;
 #78 COM Port BaudRate(string)                Baud rate (factory default) 	        B9600 		&lt;br /&gt;
 #157 Discrete Volume(bool) 	              Indicates if the volume on...             1 &lt;br /&gt;
&lt;br /&gt;
Settings are factory defaults and shouldn&#039;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.&lt;br /&gt;
&lt;br /&gt;
=== &#039;Edit Ruby code&#039; (on template page)  ===&lt;br /&gt;
&lt;br /&gt;
==== &#039;Add/remove commands&#039; ====&lt;br /&gt;
First, I clicked on &#039;Add/remove commands&#039; and clicked on commands that are supported by device...&lt;br /&gt;
&lt;br /&gt;
* Ruby Internal Commands&lt;br /&gt;
* Standard TV&lt;br /&gt;
&lt;br /&gt;
==== &#039;Add Ruby snippets to commands&#039;==== &lt;br /&gt;
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&#039;t understand it and gives lot&#039;s of errors)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#193 Off&lt;br /&gt;
	log(&#039;Sending OFF Command&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;ka 01 00\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#192 On&lt;br /&gt;
	log(&#039;Sending ON Command&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;ka 01 01\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
Inputs&lt;br /&gt;
#419 Antenna&lt;br /&gt;
		&lt;br /&gt;
#316 AV 1&lt;br /&gt;
	log(&#039;Switching Input to AV1&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;kb 01 02\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#317 AV 2&lt;br /&gt;
	log(&#039;Switching Input to AV2&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;kb 01 03\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#712 Component 1&lt;br /&gt;
	log(&#039;Switching Input to Component 1&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;kb 01 04\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#713 Component 2&lt;br /&gt;
	log(&#039;Switching Input to Component 2&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;kb 01 05\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#426 External 3&lt;br /&gt;
	log(&#039;Switching Input to HDMI 3&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;kb 01 09\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#361 HDMI&lt;br /&gt;
	log(&#039;Switching Input to HDMI 1&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;kb 01 07\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#767 HDMI 2&lt;br /&gt;
	log(&#039;Switching Input to HDMI 2&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;kb 01 08\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#376 Input 3&lt;br /&gt;
	log(&#039;Switching Input to HDMI 3&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;kb 01 09\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#154 RGB&lt;br /&gt;
	log(&#039;Switching Input to RGB/PC&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;kb 01 06\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#166 Tuner&lt;br /&gt;
	log(&#039;Switching Input to Analog Tuner&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;kb 01 01\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#873 Tuner - Digital&lt;br /&gt;
	log(&#039;Switching Input to Digital Tuner&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;kb 01 00\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
Aspect Ratios&lt;br /&gt;
#879 16:9&lt;br /&gt;
	log(&#039;Switching Aspect Ratio to 16:9&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;kc 01 02\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#877 4:3&lt;br /&gt;
	log(&#039;Switching Aspect Ratio to 4:3&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;kc 01 01\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
Disk Handle&lt;br /&gt;
#48 Eject Disk&lt;br /&gt;
		&lt;br /&gt;
DSP Modes&lt;br /&gt;
#116 DSP Mode&lt;br /&gt;
	log(&#039;Switching DSP Modes: Toggled Only&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 52\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
General&lt;br /&gt;
#190 Enter/Go&lt;br /&gt;
	log(&#039;Sending Enter/Go Command&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 44\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
Internal&lt;br /&gt;
#373 Private Method Listing&lt;br /&gt;
	def log(line)&lt;br /&gt;
          $log = File.open(&amp;quot;/var/log/pluto/&amp;quot; + device_.devid_.to_s + &amp;quot;_Generic_Serial_Device.log&amp;quot;, &amp;quot;a&amp;quot;)&lt;br /&gt;
          $log.puts &amp;quot;(***):&amp;quot; + line.to_s&lt;br /&gt;
          $log.close&lt;br /&gt;
        end 	&lt;br /&gt;
#351 Process IDLE&lt;br /&gt;
		&lt;br /&gt;
#350 Process Incoming Data&lt;br /&gt;
	buff = &#039;&#039;&lt;br /&gt;
        loop do&lt;br /&gt;
          buff=conn_.Recv(30,200)&lt;br /&gt;
          if buff.empty?&lt;br /&gt;
            log(&#039;Nothing Received&#039;)&lt;br /&gt;
            break&lt;br /&gt;
          end&lt;br /&gt;
          log(&#039;Received: &#039; + Regexp.escape(buff.to_s))&lt;br /&gt;
          if buff.include?(&amp;quot;OK&amp;quot;)&lt;br /&gt;
            log(Regexp.escape(buff.to_s) + &#039;: Command Processed Successfully&#039;)&lt;br /&gt;
          elsif buff.include?(&amp;quot;NG&amp;quot;)&lt;br /&gt;
            log(Regexp.escape(buff.to_s) +&#039;: Command Processed Unsuccessfully&#039;)&lt;br /&gt;
          end&lt;br /&gt;
        end 	&lt;br /&gt;
#355 Process Initialize&lt;br /&gt;
	for iRetry in 0...4&lt;br /&gt;
          print &amp;quot;Initializing unit\n&amp;quot;&lt;br /&gt;
          conn_.Send(&amp;quot;ke 01 01\r&amp;quot;) # Send UnMute Command&lt;br /&gt;
          buf = conn_.Recv(30,200) # Expected Return # ke 01 01\r\ne 00 OK01x\r\n&lt;br /&gt;
          if !buf.nil? &amp;amp;&amp;amp; buf.include?(&amp;quot;OK&amp;quot;)&lt;br /&gt;
            print &amp;quot;Initialized ok\n&amp;quot;&lt;br /&gt;
            print &amp;quot;Setting volume to 30%\n&amp;quot;&lt;br /&gt;
            cmd_313(15)&lt;br /&gt;
            SetDeviceDataInDB( device_.devid_, 158, &amp;quot;15&amp;quot; )&lt;br /&gt;
            # 158 = DEVICEDATA_Volume_Level_CONST&lt;br /&gt;
            return&lt;br /&gt;
          end&lt;br /&gt;
          print &amp;quot;Failed to initialize. Wait 1 secs and try again\n&amp;quot;&lt;br /&gt;
          sleep(1)&lt;br /&gt;
        end&lt;br /&gt;
#DisableDevice( device_.devid_, true )&lt;br /&gt;
#print &amp;quot;The device would not respond. Disabling it.\n&amp;quot; 	&lt;br /&gt;
#384 Process Receive Command For Child&lt;br /&gt;
		&lt;br /&gt;
#356 Process Release&lt;br /&gt;
		&lt;br /&gt;
Misc&lt;br /&gt;
#548 Menu&lt;br /&gt;
	log(&#039;Sending Menu Command&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 43\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#676 Video Mute&lt;br /&gt;
	log(&#039;Sending Video Mute Command&#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;kd 01 00\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
Numbers&lt;br /&gt;
#364 -/--/---&lt;br /&gt;
		&lt;br /&gt;
#204 0&lt;br /&gt;
	log(&#039;Sending 0 &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 10\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#205 1&lt;br /&gt;
	log(&#039;Sending 1 &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 11\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#206 2&lt;br /&gt;
	log(&#039;Sending 2 &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 12\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#207 3&lt;br /&gt;
	log(&#039;Sending 3 &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 13\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#208 4&lt;br /&gt;
	log(&#039;Sending 4 &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 14\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#209 5&lt;br /&gt;
	log(&#039;Sending 5 &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 15\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#210 6&lt;br /&gt;
	log(&#039;Sending 6 &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 16\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#211 7&lt;br /&gt;
	log(&#039;Sending 7 &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 17\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#212 8&lt;br /&gt;
	log(&#039;Sending 8 &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 18\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#213 9&lt;br /&gt;
	log(&#039;Sending 9 &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 19\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#363 Back / Clear Entry&lt;br /&gt;
	log(&#039;Sending Back/Clear Command &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 1A\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
On-Screen Menu Navig&lt;br /&gt;
#240 Back / Prior Menu&lt;br /&gt;
	log(&#039;Sending Exit Command &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 5B\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#225 Display&lt;br /&gt;
		&lt;br /&gt;
#368 Help&lt;br /&gt;
		&lt;br /&gt;
#86 Menu (Show Menu)&lt;br /&gt;
	log(&#039;Sending Menu Command &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 43\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#201 Move Down&lt;br /&gt;
	log(&#039;Sending Move Down Command &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 41\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#202 Move Left&lt;br /&gt;
	log(&#039;Sending Move Left Command &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 07\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#203 Move Right&lt;br /&gt;
	log(&#039;Sending Move RighCommand &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 06\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#200 Move Up&lt;br /&gt;
	log(&#039;Sending Move Up Command &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 40\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
Simple Control&lt;br /&gt;
#92 Pause&lt;br /&gt;
	log(&#039;Sending Pause Command &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 BA\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#139 Play&lt;br /&gt;
	log(&#039;Sending Play Command &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 B0\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#102 Record&lt;br /&gt;
	#log(&#039;Sending Record Command &#039;) &lt;br /&gt;
        #&amp;lt;$&amp;quot;mc 01 BD\r&amp;quot;$&amp;gt; &lt;br /&gt;
#64 Skip Back - Channel/Track Lower&lt;br /&gt;
	log(&#039;Sending Channel Down Command &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 01\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#63 Skip Fwd - Channel/Track Greater&lt;br /&gt;
	log(&#039;Sending Channel Up Command &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 00\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#95 Stop&lt;br /&gt;
	log(&#039;Sending Stop Command &#039;) &lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 B1\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
Sound &amp;amp; Volume&lt;br /&gt;
#97 Mute&lt;br /&gt;
	if @mute&lt;br /&gt;
          &amp;lt;$&amp;quot;ke 01 00\r&amp;quot;$&amp;gt;&lt;br /&gt;
        else&lt;br /&gt;
          &amp;lt;$&amp;quot;ke 01 01\r&amp;quot;$&amp;gt;&lt;br /&gt;
        end&lt;br /&gt;
        @mute=!@mute 	&lt;br /&gt;
#313 Set Volume&lt;br /&gt;
	@volume=level.to_i()&lt;br /&gt;
        ilevel = @volume.to_i&lt;br /&gt;
        log( &#039;setting volume to &#039;+ ilevel.to_s)&lt;br /&gt;
        log(&#039;Sending the Following Command: kf 01 &#039;+ilevel.to_s(16)+&#039;\r&#039;)&lt;br /&gt;
        &amp;lt;$&amp;quot;kf 01 &amp;quot;+ilevel.to_s(16)+&amp;quot;\r&amp;quot;$&amp;gt;&lt;br /&gt;
        SetDeviceDataInDB( device_.devid_, 158, ilevel.to_s)&lt;br /&gt;
        # 158 = DEVICEDATA_Volume_Level_CONST # &amp;quot;volume and corresponding device data set\n&amp;quot; 	&lt;br /&gt;
#90 Vol Down&lt;br /&gt;
	log(&#039;lowering volume from &#039; + @volume.to_s)&lt;br /&gt;
        cmd_313(@volume-1) 	&lt;br /&gt;
#89 Vol Up&lt;br /&gt;
	log(&#039;Increasing volume from &#039; + @volume.to_s)&lt;br /&gt;
        cmd_313(@volume+1) 	&lt;br /&gt;
Speed Ctrl&lt;br /&gt;
#125 Scan Back/Rewind&lt;br /&gt;
	log(&#039;Sending Rewind Command &#039;)&lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 8F\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#93 Scan Fwd/Fast Fwd&lt;br /&gt;
	log(&#039;Sending Fast Fwd Command &#039;)&lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 8E\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
#98 Slow Scan Back&lt;br /&gt;
		&lt;br /&gt;
#99 Slow Scan Forward&lt;br /&gt;
		&lt;br /&gt;
TV&lt;br /&gt;
#136 Previous Channel&lt;br /&gt;
	log(&#039;Sending Previous Channel Command &#039;)&lt;br /&gt;
        &amp;lt;$&amp;quot;mc 01 B2\r&amp;quot;$&amp;gt; 	&lt;br /&gt;
	&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding device ==&lt;br /&gt;
&lt;br /&gt;
This is a simple process that you can now add via the [[LinuxMCE Admin Website]] at &#039;&#039;&#039;Wizard &amp;gt; [[AV Devices|A/V Equipment]]&#039;&#039;&#039;&lt;br /&gt;
=== Add device based on created template ===&lt;br /&gt;
Just search for the device template that you created and select it from the list&lt;br /&gt;
=== Specify COM port for it ===&lt;br /&gt;
Just tell LinuxMCE which com port to use.&lt;br /&gt;
=== Assing it to new room ===&lt;br /&gt;
Tell LinuxMCE which room to assign this device&lt;br /&gt;
=== Specifiy Audio pipe connections to inputs on receiver ===&lt;br /&gt;
Tell LinuxMCE how you have thing attached to the LG TV and how the LG TV is attached to the computer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;I have it attached via RGB port and I have my cable box attached to AV1 and my HDTV connected to Tuner-Digital input.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Making Plug&amp;amp;Play==&lt;br /&gt;
This is not needed to use the TV, but I post as an option.&lt;br /&gt;
Location: /usr/pluto/pnp&lt;br /&gt;
&lt;br /&gt;
    vi /usr/pluto/pnp/20_LGLCD.sh&lt;br /&gt;
add the following and then make the file executable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; #!/bin/bash&lt;br /&gt;
#Play and Play script for LG TV&#039;s Models Numbers:LGXXLB4/5D&lt;br /&gt;
#Set ID needs to be set to 01&lt;br /&gt;
#Serial feedback is very slow so it requires several seconds to get feedback&lt;br /&gt;
#Device Template Number:1905 on my local Machine.&lt;br /&gt;
#Serail Command for Power On ka 01 01 &lt;br /&gt;
#Serial Command for Power OFF ka 01 00&lt;br /&gt;
#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)&lt;br /&gt;
echo &amp;quot;LG TV Detection script queue $2&amp;quot;&lt;br /&gt;
/usr/pluto/bin/TestSerialPort -p $3 -P N81 -b 9600 -t &amp;quot;ka 01 01\r&amp;quot;&lt;br /&gt;
sleep 5s&lt;br /&gt;
/usr/pluto/bin/TestSerialPort -p $3 -P N81 -b 9600 -t &amp;quot;ka 01 01\r&amp;quot; -i 5 -s &amp;quot;OK01x\r&amp;quot;&lt;br /&gt;
if [[ &amp;quot;$?&amp;quot; -ne 0 ]]; then&lt;br /&gt;
echo &amp;quot;It&#039;s not a LG TV&amp;quot;&lt;br /&gt;
/usr/pluto/bin/MessageSend dcerouter -r 0 $1 1 806 224 $2 13 &amp;quot;$4&amp;quot; 44 0&lt;br /&gt;
else&lt;br /&gt;
echo &amp;quot;It is a LG TV&amp;quot;&lt;br /&gt;
/usr/pluto/bin/MessageSend dcerouter -r 0 $1 1 806 224 $2 13 &amp;quot;$4&amp;quot; 44 1905&lt;br /&gt;
fi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
/usr/pluto/bin/MessageSend dcerouter -r 0 $1 806 224 $2 13 &amp;quot;$4&amp;quot; 44 1905(this is the template id for the devicetemplate you created above)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &lt;br /&gt;
&#039;&#039;&#039;== Adapting these instructions for other LG rs232 TVs == ==&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This seems to be a good template for LG TVs with serial ports. Some of the command need to be changed for later models &amp;lt;$xb 01 90\r$&amp;gt; instead of &amp;lt;$kb 01 07\r$&amp;gt; for inputing HDMI 1 for example, but generally a good guide for adapting it to your TV.&lt;br /&gt;
&lt;br /&gt;
The major problem is undocumented above but is critical to making this work: You need to look up the device id number of your LG TV from the Wizard \ Devices \ AV Equipment in the upper left hand corner and replace the number &amp;quot;158&amp;quot; in all the scripts above with this number (for example, in my case 310). This allows the script to process successfully.&lt;br /&gt;
&lt;br /&gt;
Otherwise it will cause a compile error in 7.10 in the &amp;quot;follow log&amp;quot; on the &amp;quot;advanced&amp;quot; link of the A/V device and will not allow your template to run. The compile error will state that it found a &amp;quot;kend&amp;quot; and was expecting &amp;quot;$end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The code that breaks it is:&lt;br /&gt;
&lt;br /&gt;
----------------------------&lt;br /&gt;
#355 Process Initialize&lt;br /&gt;
   for iRetry in 0...4&lt;br /&gt;
          print &amp;quot;Initializing unit\n&amp;quot;&lt;br /&gt;
          conn_.Send(&amp;quot;ke 01 01\r&amp;quot;) # Send UnMute Command&lt;br /&gt;
          buf = conn_.Recv(30,200) # Expected Return # ke 01 01\r\ne 00 OK01x\r\n&lt;br /&gt;
          if !buf.nil? &amp;amp;&amp;amp; buf.include?(&amp;quot;OK&amp;quot;)&lt;br /&gt;
            print &amp;quot;Initialized ok\n&amp;quot;&lt;br /&gt;
            print &amp;quot;Setting volume to 30%\n&amp;quot;&lt;br /&gt;
            cmd_313(15)&lt;br /&gt;
            SetDeviceDataInDB( device_.devid_, 158, &amp;quot;15&amp;quot; )&lt;br /&gt;
            # 158 = DEVICEDATA_Volume_Level_CONST&lt;br /&gt;
            return&lt;br /&gt;
          end&lt;br /&gt;
          print &amp;quot;Failed to initialize. Wait 1 secs and try again\n&amp;quot;&lt;br /&gt;
          sleep(1)&lt;br /&gt;
        end&lt;br /&gt;
 &lt;br /&gt;
-------------------------------&lt;br /&gt;
which is also necessary for the volume set,  volume up and volume down commands the way they are written.&lt;br /&gt;
Carefully replacing &amp;quot;158&amp;quot; with the LG TV device ID number on your setup in the extended editor will make all these commands functional. &lt;br /&gt;
&lt;br /&gt;
Please note that  the description for the plug and play implementation discussed above has not been tested with this fix.&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Buffalo_Terastation&amp;diff=17454</id>
		<title>Buffalo Terastation</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Buffalo_Terastation&amp;diff=17454"/>
		<updated>2009-01-29T14:07:35Z</updated>

		<summary type="html">&lt;p&gt;B4rney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware]]&lt;br /&gt;
[[Category: Network Attached Storage]]&lt;br /&gt;
&lt;br /&gt;
The [[http://www.buffalotech.com/products/network-storage/terastation/ Buffalo TeraStation]] is a 4 hard drive, software RAID 5 Linux computer running SAMBA.  It has versions with 10/100/1000 Gigabit Ethernet port and up to 1.6 Terabytes of storage.  It also has USB ports for attaching more storage and/or sharing and managing a USB printer on the network using a built-in print server.&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
Using the TeraStation&#039;s web-based admin page, configure the TeraStation to accept a DHCP address.  Also create a share.  In the example below, it will be called &amp;quot;share_name&amp;quot;.  You may also want to create an user and give the user a strong password.  In the example below, this will be &amp;quot;user_name&amp;quot; and &amp;quot;password&amp;quot;, respectively.&lt;br /&gt;
&lt;br /&gt;
==LinuxMCE Device Configuration==&lt;br /&gt;
# From the bottom of the Wizard menu, click &amp;quot;Show Devices Tree&amp;quot;.&lt;br /&gt;
# In the Devices Tree, click &amp;quot;Add Top Level Device&amp;quot;.&lt;br /&gt;
# From the main window, click &amp;quot;Pick Device Template&amp;quot;.  A new window will pop open and give you options.&lt;br /&gt;
# In the &amp;quot;Device Category&amp;quot;, scroll down to &amp;quot;Peripherals&amp;quot; and click on &amp;quot;Network Storage #150&amp;quot;.&lt;br /&gt;
# Under models choose &amp;quot;Generic Windows Share&amp;quot; and click &amp;quot;Add device&amp;quot;.  You will be returned back to the main window.&lt;br /&gt;
# In the &amp;quot;Device Info&amp;quot; section, give your TeraStation a description, add the TeraStation&#039;s MAC address in xx:xx:xx:xx:xx:xx format.&lt;br /&gt;
# In the &amp;quot;Device Data&amp;quot; section,  set the following:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Type(string)&lt;br /&gt;
&amp;lt;pre&amp;gt;samba&amp;lt;/pre&amp;gt;&lt;br /&gt;
* TCP Address(string)&lt;br /&gt;
&amp;lt;pre&amp;gt;share_name&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Username(string)&lt;br /&gt;
&amp;lt;pre&amp;gt;user_name&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Password(string)&lt;br /&gt;
&amp;lt;pre&amp;gt;password&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Use LinuxMCE Directory Structure(int)&lt;br /&gt;
&amp;lt;pre&amp;gt;1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;share_name&amp;quot; is the share that you defined when setting up the TeraStation.  At the very least, you can use the &amp;quot;public&amp;quot; username with no password as default by TeraStation.  But it is better to configure the TeraStation with a unique username and strong password and to input that information in the Device Data section as per above.  If you leave &amp;quot;Mount Point(string)&amp;quot; blank, LinuxMCE will mount the share on /mnt/&amp;lt;description_device#&amp;gt; where description is what you input in step 6 above.&lt;br /&gt;
[[Category: Storage]]&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Buffalo_Terastation&amp;diff=17453</id>
		<title>Buffalo Terastation</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Buffalo_Terastation&amp;diff=17453"/>
		<updated>2009-01-29T14:06:34Z</updated>

		<summary type="html">&lt;p&gt;B4rney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Hardware]]&lt;br /&gt;
[[Category: Network Attached Storage]]&lt;br /&gt;
&lt;br /&gt;
The [[http://www.buffalotech.com/products/network-storage/terastation/]] is a 4 hard drive, software RAID 5 Linux computer running SAMBA.  It has versions with 10/100/1000 Gigabit Ethernet port and up to 1.6 Terabytes of storage.  It also has USB ports for attaching more storage and/or sharing and managing a USB printer on the network using a built-in print server.&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
Using the TeraStation&#039;s web-based admin page, configure the TeraStation to accept a DHCP address.  Also create a share.  In the example below, it will be called &amp;quot;share_name&amp;quot;.  You may also want to create an user and give the user a strong password.  In the example below, this will be &amp;quot;user_name&amp;quot; and &amp;quot;password&amp;quot;, respectively.&lt;br /&gt;
&lt;br /&gt;
==LinuxMCE Device Configuration==&lt;br /&gt;
# From the bottom of the Wizard menu, click &amp;quot;Show Devices Tree&amp;quot;.&lt;br /&gt;
# In the Devices Tree, click &amp;quot;Add Top Level Device&amp;quot;.&lt;br /&gt;
# From the main window, click &amp;quot;Pick Device Template&amp;quot;.  A new window will pop open and give you options.&lt;br /&gt;
# In the &amp;quot;Device Category&amp;quot;, scroll down to &amp;quot;Peripherals&amp;quot; and click on &amp;quot;Network Storage #150&amp;quot;.&lt;br /&gt;
# Under models choose &amp;quot;Generic Windows Share&amp;quot; and click &amp;quot;Add device&amp;quot;.  You will be returned back to the main window.&lt;br /&gt;
# In the &amp;quot;Device Info&amp;quot; section, give your TeraStation a description, add the TeraStation&#039;s MAC address in xx:xx:xx:xx:xx:xx format.&lt;br /&gt;
# In the &amp;quot;Device Data&amp;quot; section,  set the following:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Type(string)&lt;br /&gt;
&amp;lt;pre&amp;gt;samba&amp;lt;/pre&amp;gt;&lt;br /&gt;
* TCP Address(string)&lt;br /&gt;
&amp;lt;pre&amp;gt;share_name&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Username(string)&lt;br /&gt;
&amp;lt;pre&amp;gt;user_name&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Password(string)&lt;br /&gt;
&amp;lt;pre&amp;gt;password&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Use LinuxMCE Directory Structure(int)&lt;br /&gt;
&amp;lt;pre&amp;gt;1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;share_name&amp;quot; is the share that you defined when setting up the TeraStation.  At the very least, you can use the &amp;quot;public&amp;quot; username with no password as default by TeraStation.  But it is better to configure the TeraStation with a unique username and strong password and to input that information in the Device Data section as per above.  If you leave &amp;quot;Mount Point(string)&amp;quot; blank, LinuxMCE will mount the share on /mnt/&amp;lt;description_device#&amp;gt; where description is what you input in step 6 above.&lt;br /&gt;
[[Category: Storage]]&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=File:Asus_eee_box_b202.jpg&amp;diff=17253</id>
		<title>File:Asus eee box b202.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=File:Asus_eee_box_b202.jpg&amp;diff=17253"/>
		<updated>2009-01-24T23:52:32Z</updated>

		<summary type="html">&lt;p&gt;B4rney: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Web_Orbiter&amp;diff=17243</id>
		<title>Web Orbiter</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Web_Orbiter&amp;diff=17243"/>
		<updated>2009-01-23T16:40:40Z</updated>

		<summary type="html">&lt;p&gt;B4rney: /* Changing default room */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
[[Category: Orbiters]]&lt;br /&gt;
[[Category: Hardware]]&lt;br /&gt;
[[Category: Tutorials]]&lt;br /&gt;
&lt;br /&gt;
A Web Orbiter is any device (such as a laptop, PC, etc.) that accesses the Orbiter user interface (UI) through a Web browser.  &lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
The procedure to setup a Web Orbiter is simple but the order of steps is important.&lt;br /&gt;
#First of all, add a new Generic Web Device as a Child Device for your Core:&lt;br /&gt;
##Goto the LinuxMCE Admin website--&amp;gt;Show devices tree--&amp;gt;CORE. The CORE&#039;s detail page should appear.&lt;br /&gt;
##Click &#039;Create Child Device&#039;.&lt;br /&gt;
##In the Add child device window, click the button &#039;Pick device template&#039;. The new pop-up window contained device templates will be opened.&lt;br /&gt;
##In the &#039;Device Category&#039; dropdown list, choose &#039;Peripherals&#039;.&lt;br /&gt;
##In the &#039;Device Template&#039; dropdown list, find and select &amp;quot;Generic Web Device&amp;quot;.&lt;br /&gt;
##Click the button &#039;Pick Device Template&#039;. 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.&lt;br /&gt;
##A new Generic Proxy Orbiter will also be created automatically. Watch the Orbiter generation process on the Orbiters page: Wizard--&amp;gt;Devices--&amp;gt;Orbiters.&lt;br /&gt;
#Wait till the Orbiter generation procedure finishes. A message on an active Orbiter or on the Orbiter page will indicate when it has completed.&lt;br /&gt;
#Do a &amp;quot;[[Quick reload router]]&amp;quot;. Otherwise, the Orbiter won&#039;t work properly.&lt;br /&gt;
&lt;br /&gt;
==Access to the Web Orbiter==&lt;br /&gt;
&lt;br /&gt;
===From within your home===&lt;br /&gt;
You can access the Web Orbiter from any web browser (Mozilla Firefox, IE, Safari):&lt;br /&gt;
&lt;br /&gt;
*In the browser address bar, type the URL &#039;&#039;&amp;lt;nowiki&amp;gt;http://&amp;amp;lt;core_ip&amp;amp;gt;/pluto-admin/weborbiter.php&amp;lt;/nowiki&amp;gt;&#039;&#039;.&lt;br /&gt;
:* From within the &amp;quot;internal&amp;quot; LinuxMCE LAN, for example: &lt;br /&gt;
::::&#039;&#039;http://192.168.80.1/pluto-admin/weborbiter.php&#039;&#039;&lt;br /&gt;
:::::(This assumes the IP address range set by default at installation.)&lt;br /&gt;
:*You can also use the network name of the Core in place of the IP address. For example, if the Core was named &amp;quot;dcerouter&amp;quot; during the default installation, you could use:&lt;br /&gt;
::::&#039;&#039;&amp;lt;nowiki&amp;gt;http://dcerouter/pluto-admin/weborbiter.php&amp;lt;/nowiki&amp;gt;&#039;&#039;&lt;br /&gt;
:*From the &amp;quot;external&amp;quot; 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:&lt;br /&gt;
:::: &#039;&#039;&amp;lt;nowiki&amp;gt;http://192.168.0.50/pluto-admin/weborbiter.php&amp;lt;/nowiki&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:::::(Note: To use this method, [[Outside Access]] must be enabled.)&lt;br /&gt;
&lt;br /&gt;
===From the Internet===&lt;br /&gt;
You could use the IP address:port for your home LAN, with port forwarding to the Core&#039;s LAN IP address (enabled by your home LAN router). &lt;br /&gt;
*&#039;&#039;This is an advanced topic and may not be secure in the current version.&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
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 &amp;amp; Privacy Issues]].&lt;br /&gt;
&lt;br /&gt;
===Login page===&lt;br /&gt;
*A simple login page should be displayed. Input an existing user name and password, then click &amp;quot;Login&amp;quot;.&lt;br /&gt;
*From the dropdown list of devices, choose Generic Web Device.&lt;br /&gt;
*A page that looks similar to this should appear: [[Image:Web Orbiter.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
===Connect failed===&lt;br /&gt;
If you try to connect to the Web Orbiter and see this message:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;Connect to proxy orbiter failed, please try again&amp;quot;&amp;lt;/code&amp;gt;, &lt;br /&gt;
this means that Orbiter generation hasn&#039;t finished yet,  or that you forgot to do a [[Quick_reload_router|quick restart of the router]].&lt;br /&gt;
&lt;br /&gt;
=== Size ===&lt;br /&gt;
I was able to change the size of the rendered image in the Wizard--&amp;gt;Orbiters page. Find the Web Orbiter device in the list and resize it. After another orbiter regen, it was the right size for me. (&#039;&#039;Source http://forum.linuxmce.org/index.php?topic=3833.0&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
=== Problems with rapid refresh rate ===&lt;br /&gt;
&lt;br /&gt;
Problem:&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
*Go to [[LinuxMCE Admin Website]]--&amp;gt;Device tree--&amp;gt;CORE--&amp;gt;Generic Web Device--&amp;gt;Device Data &lt;br /&gt;
*Set the Refresh Interval to a higher value (I used 60 seconds for mine).&lt;br /&gt;
&lt;br /&gt;
=== Changing default room ===&lt;br /&gt;
Changing the default room in the Wizard--&amp;gt;Devices--&amp;gt;Orbiters page has no effect.&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
*Go to [[LinuxMCE Admin Website]]--&amp;gt;Device tree--&amp;gt;CORE--&amp;gt;Generic Web Device&lt;br /&gt;
*Check the box for the room to control&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
	<entry>
		<id>http://wiki.linuxmce.org/index.php?title=Web_Orbiter&amp;diff=17242</id>
		<title>Web Orbiter</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxmce.org/index.php?title=Web_Orbiter&amp;diff=17242"/>
		<updated>2009-01-23T16:39:59Z</updated>

		<summary type="html">&lt;p&gt;B4rney: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
  | __TOC__&lt;br /&gt;
  |}&lt;br /&gt;
[[Category: Orbiters]]&lt;br /&gt;
[[Category: Hardware]]&lt;br /&gt;
[[Category: Tutorials]]&lt;br /&gt;
&lt;br /&gt;
A Web Orbiter is any device (such as a laptop, PC, etc.) that accesses the Orbiter user interface (UI) through a Web browser.  &lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
The procedure to setup a Web Orbiter is simple but the order of steps is important.&lt;br /&gt;
#First of all, add a new Generic Web Device as a Child Device for your Core:&lt;br /&gt;
##Goto the LinuxMCE Admin website--&amp;gt;Show devices tree--&amp;gt;CORE. The CORE&#039;s detail page should appear.&lt;br /&gt;
##Click &#039;Create Child Device&#039;.&lt;br /&gt;
##In the Add child device window, click the button &#039;Pick device template&#039;. The new pop-up window contained device templates will be opened.&lt;br /&gt;
##In the &#039;Device Category&#039; dropdown list, choose &#039;Peripherals&#039;.&lt;br /&gt;
##In the &#039;Device Template&#039; dropdown list, find and select &amp;quot;Generic Web Device&amp;quot;.&lt;br /&gt;
##Click the button &#039;Pick Device Template&#039;. 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.&lt;br /&gt;
##A new Generic Proxy Orbiter will also be created automatically. Watch the Orbiter generation process on the Orbiters page: Wizard--&amp;gt;Devices--&amp;gt;Orbiters.&lt;br /&gt;
#Wait till the Orbiter generation procedure finishes. A message on an active Orbiter or on the Orbiter page will indicate when it has completed.&lt;br /&gt;
#Do a &amp;quot;[[Quick reload router]]&amp;quot;. Otherwise, the Orbiter won&#039;t work properly.&lt;br /&gt;
&lt;br /&gt;
==Access to the Web Orbiter==&lt;br /&gt;
&lt;br /&gt;
===From within your home===&lt;br /&gt;
You can access the Web Orbiter from any web browser (Mozilla Firefox, IE, Safari):&lt;br /&gt;
&lt;br /&gt;
*In the browser address bar, type the URL &#039;&#039;&amp;lt;nowiki&amp;gt;http://&amp;amp;lt;core_ip&amp;amp;gt;/pluto-admin/weborbiter.php&amp;lt;/nowiki&amp;gt;&#039;&#039;.&lt;br /&gt;
:* From within the &amp;quot;internal&amp;quot; LinuxMCE LAN, for example: &lt;br /&gt;
::::&#039;&#039;http://192.168.80.1/pluto-admin/weborbiter.php&#039;&#039;&lt;br /&gt;
:::::(This assumes the IP address range set by default at installation.)&lt;br /&gt;
:*You can also use the network name of the Core in place of the IP address. For example, if the Core was named &amp;quot;dcerouter&amp;quot; during the default installation, you could use:&lt;br /&gt;
::::&#039;&#039;&amp;lt;nowiki&amp;gt;http://dcerouter/pluto-admin/weborbiter.php&amp;lt;/nowiki&amp;gt;&#039;&#039;&lt;br /&gt;
:*From the &amp;quot;external&amp;quot; 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:&lt;br /&gt;
:::: &#039;&#039;&amp;lt;nowiki&amp;gt;http://192.168.0.50/pluto-admin/weborbiter.php&amp;lt;/nowiki&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:::::(Note: To use this method, [[Outside Access]] must be enabled.)&lt;br /&gt;
&lt;br /&gt;
===From the Internet===&lt;br /&gt;
You could use the IP address:port for your home LAN, with port forwarding to the Core&#039;s LAN IP address (enabled by your home LAN router). &lt;br /&gt;
*&#039;&#039;This is an advanced topic and may not be secure in the current version.&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
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 &amp;amp; Privacy Issues]].&lt;br /&gt;
&lt;br /&gt;
===Login page===&lt;br /&gt;
*A simple login page should be displayed. Input an existing user name and password, then click &amp;quot;Login&amp;quot;.&lt;br /&gt;
*From the dropdown list of devices, choose Generic Web Device.&lt;br /&gt;
*A page that looks similar to this should appear: [[Image:Web Orbiter.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
===Connect failed===&lt;br /&gt;
If you try to connect to the Web Orbiter and see this message:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;Connect to proxy orbiter failed, please try again&amp;quot;&amp;lt;/code&amp;gt;, &lt;br /&gt;
this means that Orbiter generation hasn&#039;t finished yet,  or that you forgot to do a [[Quick_reload_router|quick restart of the router]].&lt;br /&gt;
&lt;br /&gt;
=== Size ===&lt;br /&gt;
I was able to change the size of the rendered image in the Wizard--&amp;gt;Orbiters page. Find the Web Orbiter device in the list and resize it. After another orbiter regen, it was the right size for me. (&#039;&#039;Source http://forum.linuxmce.org/index.php?topic=3833.0&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
=== Problems with rapid refresh rate ===&lt;br /&gt;
&lt;br /&gt;
Problem:&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
*Go to [[LinuxMCE Admin Website]]--&amp;gt;Device tree--&amp;gt;CORE--&amp;gt;Generic Web Device--&amp;gt;Device Data &lt;br /&gt;
*Set the Refresh Interval to a higher value (I used 60 seconds for mine).&lt;br /&gt;
&lt;br /&gt;
=== Changing default room ===&lt;br /&gt;
Changing the default room in the Wizard--&amp;gt;Devices--&amp;gt;Orbiters page has no effect.&lt;br /&gt;
Solution:&lt;br /&gt;
*Go to [[LinuxMCE Admin Website]]--&amp;gt;Device tree--&amp;gt;CORE--&amp;gt;Generic Web Device&lt;br /&gt;
*Check the box for the room to control&lt;/div&gt;</summary>
		<author><name>B4rney</name></author>
	</entry>
</feed>