Record Mode road map
Now that recording is actually taking place in IP Cam Viewer for Android, here’s what I have planned for future releases regarding Record Mode:
– on/off schedules per camera
record mode icon in status bar
– embed web server for HTML5 playback interface so you can access it from anywhere, just like a networked dvr.
– provide live API for all cameras in record mode, turning app into a simple “universal” translator for all supported cameras into one interface for integration with websites or other systems.
– motion detection option on the record mode device to save space, also allowing for efficient alerting of the phone client (all the work is done on the record device at home, phone just gets alerts, saving power and network bandwidth).
It will take some time as I’m working on 4 different platforms now but it will be done. Thanks for your patience.

Use a foscam (or clone) to control liftmaster garage door
This is how I use the “relay” function to open/close my chamberlain liftmaster garage door (through a foscam FI8908W camera) using my IP Cam Viewer app.
The garage door switch just shorts 2 wires when pressed (this causes the garage door to take action).

The foscam has a relay that shorts 2 wires (pins 1 and 2) when turned on.

Based on this, a simple solution is to:
1. connect pin 1 of foscam to left most pin on liftmaster.
2. connect pin 2 of foscam to 2nd left most pin on listmaster.
Now, when foscam relay is turned on, the garage will go into action. however, you’ll have to remember to turn the relay OFF to allow your garage door switch to work again.
A solution for this problem is to upgrade to the next release of IP Cam Viewer (3.7.9) and enable the “Pulse Relay On” option. With this option on, click on the relay ON button in my app will actually toggle on/off the camera’s relay so you don’t have to remember to turn relay off.
So far so good, everything works, but there is one more problem. The foscam, by default, does something unexpected. When the foscam first gains power, the relay is off (normally open). Within a few seconds (~10s), the camera always turns on the relay, by default!!! This means that when you lose power to the house and then get power back, the garage door will open because of the foscam relay turning on.
It think the reason the foscam does this is because the relay was designed for use with an alarm system. By default (after 10 seconds), the relay is ON to signal all ok to the alarm system. It turns the relay OFF to trigger an alarm to the alarm system. In this case, I’m not using it with an alarm system.
The work around for this solution was a little more work. Just a get a 8 pin microcontroller and program it to delay 30 seconds before copying the camera’s relay to another relay for the garage door. A little more money is to use an Arduino (very easy to program, code given below).
Basicallly, use digital io 2 to read camera relay and use digital io pin 3 to control a separate relay to trigger garage door. Here’s an example circuit for Arduino to control a relay: … orial.html
here’s a cheap relay module on ebay (if you don’t want to wire one up):
Finally, don’t forget to enable the “Pulse relay ON signal” option in my app, found under Edit Camera -> More Options.
Here’s my arduino code:

// constants won't change. They're used here to
// set pin numbers:
const int buttonPin = 2; // ping which is HIGH when camera relay is shorted/closed, LOW when camera relay is open
const int relayPin = 3; // the number of the garage relay pin

// variables will change:
int bInitialized = false;
int buttonState = 0; // variable for reading the pushbutton status

void setup() {
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);

// initialize the relay pin as an output:
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW);
void loop(){
if( bInitialized == false )
// it seems the camera bounces relay during startup so just delay 30 seconds on power up
delay( 30 * 1000 );
bInitialized = true;
// wait until camera relay goes low
while( true )
buttonState = digitalRead(buttonPin);
if( buttonState == LOW )
// wait until user clicks camera relay on
while( true )
buttonState = digitalRead(buttonPin);
if( buttonState == HIGH )
// pulse garage door
digitalWrite(relayPin, HIGH);
delay( 200 );
digitalWrite(relayPin, LOW);

// delay a bit before next action to let things settle down
delay( 250 );

Ports to iPhone, Blackberry, Phone 8, Desktop
I have ports of IP Cam Viewer for Android to other platforms. More features will be added over time.
Look for IP Cam Viewer Lite and IP Cam Viewer Pro in the Apple iTunes app store.
Blackberry QNX OS:
Look for “IP Cam Viewer” in the Blackberry World app store. Note: native code is not allowed for blackberry so some drivers (i.e. h.264 dvrs) will not be available for now.
Windows Phone 7/8:
Under development. Target end of the year completion. Update: aborted because MS decided phone8 will not be backward compatible. Will restart on phone8 when it’s get more popular.
Table/Desktop ports:
I don’t have a desktop Mac/PC version yet. For now, you can use BlueStacks to run Android apps on both Mac and PC. After installing BlueStacks, download and install IP Cam Viewer Lite.

View your USB camera or setup old phone as webcam
If you have an USB camera, then you need install a program on your computer to stream the USB webcam.
You can try or for Windows.  For Apple Mac, try or SecuritySpy (audio supported). In the IP Cam Viewer app for Android, select the “WebcamXP” or “Yawcam” or “EvoCam” camera type.
For iOS devices, try the “ipCam – Mobile IP Camera” app (the driver for this app is listed under the “iOS” brand).
For Android devices, try the “IP Webcam” app by Pas (the driver for this app is listed under the “Android” brand).

Setting up your IP camera
Many people have asked how they can view their IP Camera(s), away from home, using IP Cam Viewer.
The simple answer is to setup with a free dynamic dns service like or (see steps below).
Another common question is why they can view from wifi but not on 3g. Like the question above, the user is probably using an internal IP address like 192.x.x.x. Addresses starting with 192 and 10 are not route-able over the internet (just about every house/business uses those addresses). See steps below to setup with a free dynamic dns service.
1. Make sure you can view your IP Camera from inside your house using a web browser. For example, “”. If your camera is using DHCP then you’ll have to check your router for which IP address it is using (or use the manufacturer’s tool to find the camera).
2. If your camera is using DHCP, then setup your router so that it always gives the same static IP address for the camera based on it’s MAC address (will be visible from the router). Alternatively, you can just set the camera to a 192.x.x.x IP that is outside the range of the DHCP range.
3. Now that your camera has a static IP address visible from inside your house, you need to make it visible from outside the house. Setup your router to allow port forwarding from a high port like 10123 on it’s external interface to the camera’s IP address and port 80. See for more details. Once this step is done, you can now access your camera from outside using the external ip and port 10123. Use this tool to verify:
4. Most internet service providers now give out dynamic IP addresses to your router so next, you need to use a dynamic dns service so people outside can locate your router (and camera). I use but there are many others that are free also (i.e. Basically, I configure the router to report it’s external IP address to the any time it’s IP address changes. associates an address like “” to my router’s IP address.
5. Finally, make sure you can now view the camera using a browser from the outside (try a friend’s house). For example, “”
6. Great, now configure IP Cam Viewer to see your camera(s) once and your cameras will come up when the app is launched.
hope that helps…
More detailed instructions are available at:
ps. Some cameras come with a built-in “dynamic dns” hostname but that is often a cheap http redirect and NOT a true dynamic dns. You can tell my putting the url to access the camera into a browser and if it changes to a numeric IP address, then it just did a cheap http redirect. The app supports some proprietary camera http redirect services but it’s best to use a real dynamic dns.