IP Cam Viewer Lite pulled from Android Market

August 24th, 2011

Argh… No specific reason given but my free version of IP Cam Viewer got pulled today from the Android Market by Google, after 1.3 million plus downloads and a 4+ start rating. I supported it day and night to get 9000+ reviews. All gone.

For existing and new users, the free version is available for download from here. Until Google replies with a reason, I can’t release another free version on the market.  It will always be available directly from me so this method is better anyway.

This version also let’s you upgrade through paypal (no market dependencies). Just send $3.99 to “robertchou@gmail.com” using paypal and I’ll send you an unlock code (the pulled free version used Google’s in-app purchase for upgrade).

Google, please email developers with an explanation prior to pulling apps. Good developers will fix whatever the issue may be. Your rules come from Dilbert land and are evil:

1) wait for developer to spend tons of time building apps for your market and answering user questions regarding the crappy market bugs/issues.

2) reject, up to 3 years later, without giving any explanation.

3) count as developer *guesses* wrong with new releases, and on count of 3, wipe out entire account removing ALL other apps.

Brilliant.  Brilliantly evil!

On a personal note, I’m sadden to see the lose of this app. I launched it back in late 2008, when the market first opened (since day one). Lots of users have helped me build it to this point and I cared for it almost like a child.

Rob 8^(

ps. Still no response from Google. They talk good, but with a bad track record, I now see them as a heartless/sole-less data-mining machine. Oh well, there’s other markets and other opportunities to explore.

ps.ps. I’m guessing they pulled it because of the app description where I list the brands of devices that are supported. I worked hard over 3 years to build that support and it’s what people are searching for. For a search company, this is really a stupid reason.

iOS Launch URLs

July 26th, 2011

IP Camera Viewer for iOS version 1.3.5 or newer will support the following launch URLs for integration by other applications:

launch app in default matrix view:

launch app in default matrix view for group name (v2.1.8 or newer)
ipcamviewer://launch?groupName=[url encoded group name]

launch app in detail view for camera id
ipcamviewer://launch?id=[index of camera, 0..n]

launch app in detail view for camera name
ipcamviewer://launch?name=[url encoded name for camera]

See this post for similar launch methods for android.

IP Cam Viewer icons and TV

July 20th, 2011


The next version, 4.0.3, will use icons for all the custom buttons that vary based on camera model.  They will also toast their function when you press them.

More importantly, just before I was to start a 2 week road trip, I got a cool little device to test IP Cam Viewer on my TV.  Got it running in a few minutes but it’ll need some tweaking to work quicker without the mouse/touch gestures.

I plan to spend some time after I get back to play with it.  Pretty awesome to see the matrix mode on a large 40 inch TV.


ps. audio on iOS is progressing well. About 1/3 of the audio drivers have been ported. Will be porting Axis audio next…

Updated Online Help for IP Cam Viewer Android

June 9th, 2011

Just finished updating the online help to match version “3.9.7″.


Make a Honeycomb Tablet stand using Makerbot

June 9th, 2011

I made a tablet stand for my Acer Honeycomb tablet using a Makerbot, and make the design available under the Creative Commons license at http://www.thingiverse.com/thing:9163


Record Mode road map

May 30th, 2011


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

May 30th, 2011


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:
http://www.ecs.umass.edu/ece/m5/tutoria … 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

May 30th, 2011


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

May 30th, 2011


If you have an USB camera, then you need install a program on your computer to stream the USB webcam.
You can try http://www.webcamxp.com or http://www.yawcam.com for Windows.  For Apple Mac, try http://www.evological.com/evocam.html 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

May 30th, 2011


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 afraid.org or duckdns.org (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 http://portforward.com 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: http://canyouseeme.org

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 http://freedns.afraid.org but there are many others that are free also (i.e. http://duckdns.org). Basically, I configure the router to report it’s external IP address to the afraid.org any time it’s IP address changes. Afraid.org associates an address like “mycam.dyndns.org” 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, “http://mycam.dyndns.org:10123″

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: portforward.com

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.