From my experiences the Foscam FI8918W does seem like a very solid, capable remote PTZ IP camera. The issues with it arose once it was linked in to a ZoneMinder system. It seemed for every frame that ZoneMinder received / analysed from the Foscam camera, it would produce an error message in the system log, quickly giving me thousands of entries all repeating the same exact warning.
zmc_m1: WAR [Corrupt JPEG data: 1 extraneous bytes before marker 0xd9]
After a quick search online I have found that it is a commonly occuring issue with many users online, all with ZoneMinder and the Foscam cameras. It seems that 'libjpeg' that is utilized for processing by ZoneMinder believes that the frames received are errorness / the structure is wrong and warns about it. It is only a warning and should not affect the actual workings of ZoneMinder. A thread about it on the Foscam forum can be found for information:
It seems the way most people have dealth with the issue is to totally block ZoneMinder logs, or to custom script to remove the mountainous error messages. Dennis Matveyev suggested a different method, where by modifying libjpeg to stop creating the warning messages in the source code and recompiling, effectively stopping the warning from ever being produced. His information is linked below, but is not ZoneMinder specific.
I thought I would give this method a go, as I did not simply want to block ZoneMinder from generating log messages, as this would be detrimental for debugging at later times. Stopping this warning message should be fine, as this computer is only used for ZoneMinder and as it states, its only a warning, it should not stop any functions. I first removed the associated libjpeg installations through apt-get, as a warning this will also remove ZoneMinder as it is dependent. This will delete all your monitors and settings! A work around would be to just force the removal of the one package. The following command should remove the package although depending on the revision it may have a different name:
sudo apt-get remove libjpeg8
It is then time to download the source for libjpeg, which can be found below:
Extract the files after the download. Before configuring or making the installation, the line which is creating the errornous warning needs to be commented out (or removed if you are a person who likes to live of the edge). The file for modification is jdmarker.c which needs the following line commented out:
WARNMS2(cinfo, JWRN_EXTRANEOUS_DATA, cinfo->marker->discarded_bytes, c);
Once that line is commented out, the usual ./configure / make / make install can be processed to install the library again. The next obvious step would be to install ZoneMinder again, unfortunately I found when the command apt-get install Zoneminder is processed, it wants to install libjpeg again, even though we just installed it, I still don't know many things about linux so I am not sure why. Luckily there is an easy way around this, forcing apt-get to download Zoneminder and then force the installation without worrying about the dependency with the following two commands:
apt-get download zoneminder
dpkg --force-all -i /var/cache/apt/archives/zoneminder_1.25.0-1_i386.deb (Depending on where apt-get downloads the file).
If all has gone to plan, you should now have a warning free ZoneMinder log when using Foscam cameras. It seems to have been working hassel free for a while now for myself.