Airlink101 SkyIPCam 747W - Working
Airlink101 SkyIPCam 747W - Working
Hi Folks,
I picked a Airlink101 SkyIPCam 747W over the weekend (on sale at Frys for $129) and already have it working with ZM to a limited extent.
The device requires authentication, so you need to provide the Remote Host Name parameter with <username>:<password>@mycamip
Remote Host Path can be either /cgi/jpg/image.cgi for JPEG stills, or /cgi/mjpg/mjpeg.cgi for MJPEG (I haven't gotten MJPEG working yet).
Image resolution set for 640x480, but this appears to be adjustable.
I haven't had a crack at the PTZ control stuff, or other camera features (motion detection, events, audio I/O, GPIO control) yet, but so far I am impressed.
I picked a Airlink101 SkyIPCam 747W over the weekend (on sale at Frys for $129) and already have it working with ZM to a limited extent.
The device requires authentication, so you need to provide the Remote Host Name parameter with <username>:<password>@mycamip
Remote Host Path can be either /cgi/jpg/image.cgi for JPEG stills, or /cgi/mjpg/mjpeg.cgi for MJPEG (I haven't gotten MJPEG working yet).
Image resolution set for 640x480, but this appears to be adjustable.
I haven't had a crack at the PTZ control stuff, or other camera features (motion detection, events, audio I/O, GPIO control) yet, but so far I am impressed.
Just started deciphering the control commands:
Up
http://mycamip/admin/ptctl.cgi?move=up
Down
http://mycamip/admin/ptctl.cgi?move=down
Left
http://mycamip/admin/ptctl.cgi?move=left
Right
http://mycamip/admin/ptctl.cgi?move=right
Home
http://mycamip/admin/ptctl.cgi?move=h
Pan-Scan (Hidden feature!)
http://mycamip/admin/ptctl.cgi?move=pscan
Patrol
http://mycamip/admin/ptctl.cgi?move=patrol
Stop
http://mycamip/admin/ptctl.cgi?move=stop
Preset 0 (1)
http://mycamip/admin/ptctl.cgi?move=p0
Preset 1 (2)
http://mycamip/admin/ptctl.cgi?move=p1
Preset 2 (3)
http://mycamip/admin/ptctl.cgi?move=p2
Preset 3 (4)
http://mycamip/admin/ptctl.cgi?move=p3
Preset 4 (5)
http://mycamip/admin/ptctl.cgi?move=p4
Preset 5 (6)
http://mycamip/admin/ptctl.cgi?move=p5
Preset 6 (7)
http://mycamip/admin/ptctl.cgi?move=p6
Preset 7 (8)
http://mycamip/admin/ptctl.cgi?move=p7
Additional commands (discovered 9/11/2008)
Reset/Calibrate PTZ
http://mycamip/admin/ptctl.cgi?move=reset
Pan Step in degrees (1-20, default 1)
http://mycamip/admin/pantilt.cgi?p_step=<value>
Tilt Step in degrees (1-20, default 1)
http://mycamip/admin/pantilt.cgi?t_step=<value>
Auto Patrol Stay time in seconds (1-999, default 1)
http://mycamip/admin/pantilt.cgi?staytime=<value>
Pan Speed: 0=Slow, 1=Medium, 2=Fast (default 0, Hidden feature!)
http://mycamip/admin/pantilt.cgi?p_speed=<value>
Tilt Speed: 0=Slow, 1=Medium, 2=Fast (default 0, Hidden feature!)
http://mycamip/admin/pantilt.cgi?t_speed=<value>
Pan-Scan Speed Speed: 0=Slow, 1=Medium, 2=Fast (default 0, Hidden feature!)
http://mycamip/admin/pantilt.cgi?p_scan_speed=<value>
PTZ control by degrees (used for mapped movement):
Directions (up,down,left,right)
Mapped movement on a 640x480 image
Up/Down max = 8 degrees
Left/Right max = 30 degrees
Example: Move right by 18 degrees
http://mycamip/cgi/admin/ptctrl.cgi?act ... &Degree=18
Example: Move down by 2 degrees
http://mycamip/cgi/admin/ptctrl.cgi?act ... n&Degree=2
Misc commands:
Trigger GPIO output (1=enable, 0=disable, default -1 (no change))
http://mycamip/admin/trigger.cgi?alarm=<value>
Night mode (1=enable, 0=disable, default -1 (no change))
http://mycamip/admin/trigger.cgi?night=<value>
Audio input/output in PCM format (Note: Input is HTTP GET, output is HTTP POST)
http://mycamip/cgi/audio/audio.cgi?type=PCM
Additional commands (discovered 9/13/2008)
Set preset
<preset number> = 0-7
<preset name> = [a-zA-Z0-9]string
http://mycamip/admin/ptctl.cgi?position=<preset number>&positionname=<preset name>
List parameters
example: List PanTilt parameters
http://mycamip/cgi/admin/param.cgi?acti ... up=PanTilt
Returns
example: List PanTilt Enable state
http://mycamip/cgi/admin/param.cgi?acti ... ame=Enable
example : List GPIO states
http://mycamip/cgi/admin/param.cgi?acti ... group=GPIO
returns
Up
http://mycamip/admin/ptctl.cgi?move=up
Down
http://mycamip/admin/ptctl.cgi?move=down
Left
http://mycamip/admin/ptctl.cgi?move=left
Right
http://mycamip/admin/ptctl.cgi?move=right
Home
http://mycamip/admin/ptctl.cgi?move=h
Pan-Scan (Hidden feature!)
http://mycamip/admin/ptctl.cgi?move=pscan
Patrol
http://mycamip/admin/ptctl.cgi?move=patrol
Stop
http://mycamip/admin/ptctl.cgi?move=stop
Preset 0 (1)
http://mycamip/admin/ptctl.cgi?move=p0
Preset 1 (2)
http://mycamip/admin/ptctl.cgi?move=p1
Preset 2 (3)
http://mycamip/admin/ptctl.cgi?move=p2
Preset 3 (4)
http://mycamip/admin/ptctl.cgi?move=p3
Preset 4 (5)
http://mycamip/admin/ptctl.cgi?move=p4
Preset 5 (6)
http://mycamip/admin/ptctl.cgi?move=p5
Preset 6 (7)
http://mycamip/admin/ptctl.cgi?move=p6
Preset 7 (8)
http://mycamip/admin/ptctl.cgi?move=p7
Additional commands (discovered 9/11/2008)
Reset/Calibrate PTZ
http://mycamip/admin/ptctl.cgi?move=reset
Pan Step in degrees (1-20, default 1)
http://mycamip/admin/pantilt.cgi?p_step=<value>
Tilt Step in degrees (1-20, default 1)
http://mycamip/admin/pantilt.cgi?t_step=<value>
Auto Patrol Stay time in seconds (1-999, default 1)
http://mycamip/admin/pantilt.cgi?staytime=<value>
Pan Speed: 0=Slow, 1=Medium, 2=Fast (default 0, Hidden feature!)
http://mycamip/admin/pantilt.cgi?p_speed=<value>
Tilt Speed: 0=Slow, 1=Medium, 2=Fast (default 0, Hidden feature!)
http://mycamip/admin/pantilt.cgi?t_speed=<value>
Pan-Scan Speed Speed: 0=Slow, 1=Medium, 2=Fast (default 0, Hidden feature!)
http://mycamip/admin/pantilt.cgi?p_scan_speed=<value>
PTZ control by degrees (used for mapped movement):
Directions (up,down,left,right)
Mapped movement on a 640x480 image
Up/Down max = 8 degrees
Left/Right max = 30 degrees
Example: Move right by 18 degrees
http://mycamip/cgi/admin/ptctrl.cgi?act ... &Degree=18
Example: Move down by 2 degrees
http://mycamip/cgi/admin/ptctrl.cgi?act ... n&Degree=2
Misc commands:
Trigger GPIO output (1=enable, 0=disable, default -1 (no change))
http://mycamip/admin/trigger.cgi?alarm=<value>
Night mode (1=enable, 0=disable, default -1 (no change))
http://mycamip/admin/trigger.cgi?night=<value>
Audio input/output in PCM format (Note: Input is HTTP GET, output is HTTP POST)
http://mycamip/cgi/audio/audio.cgi?type=PCM
Additional commands (discovered 9/13/2008)
Set preset
<preset number> = 0-7
<preset name> = [a-zA-Z0-9]string
http://mycamip/admin/ptctl.cgi?position=<preset number>&positionname=<preset name>
List parameters
example: List PanTilt parameters
http://mycamip/cgi/admin/param.cgi?acti ... up=PanTilt
Returns
Code: Select all
[PanTilt]
Enable=yes
PanSpeed=fast
TiltSpeed=fast
PanScanSpeed=slow
PanStep=1
TiltStep=1
PatrolStayTime=1
Position1=dining
Position2=kitchn
Position3=bedrm
Position4=zm4
Position5=
Position6=
Position7=
Position8=
http://mycamip/cgi/admin/param.cgi?acti ... ame=Enable
Code: Select all
Enable=yes
http://mycamip/cgi/admin/param.cgi?acti ... group=GPIO
returns
Code: Select all
[GPIO]
TriggerInStatus0=on
TriggerOutStatus0=low
Last edited by Setarcos on Tue Sep 16, 2008 1:06 am, edited 6 times in total.
These certainly look similar, although the Trendnet TV-IP422 looks a bit closer to the SkyIPCam 777W (USB port, supports MPEG4/MJPEG, etc..)timcraig wrote:FYI,
The Airlink101 SkyIPCam 747(W) cameras (W is for wireless, no W means wired only) look identical to the Trendnet TV-IP422(W). These might Setarcos' tips might work on the Trendet cameras as well.
Hmm, these cameras all appear to be Linux-based. Trendnet has posted the GPL required code, but it looks like Airlink101 hasn't yet followed suite.
Yes, you are correct. I didn't notice the usb port and the mpeg4 support. Looks like the AirLink 777 and the Trendnet V-IP422 are more feature rich cameras than the AirLink 747.
I looked at the manuals of the airlink and the trendnet cams (available for download them from their websites). They use the same configuration software and their web UIs are excatly the same. The only difference in the web UI's with between the Trendnet V-IP422(W)'s and the AirLinks 747(W)'s is the UI style and the lack of USB and Mpeg4 options. Everything else in the UI (layout, wording, etc) is the same.
It looks very likely that the V-IP422(W), 747(W), 777(W) cameras are based on the same hardware and firmware design.
I looked at the manuals of the airlink and the trendnet cams (available for download them from their websites). They use the same configuration software and their web UIs are excatly the same. The only difference in the web UI's with between the Trendnet V-IP422(W)'s and the AirLinks 747(W)'s is the UI style and the lack of USB and Mpeg4 options. Everything else in the UI (layout, wording, etc) is the same.
It looks very likely that the V-IP422(W), 747(W), 777(W) cameras are based on the same hardware and firmware design.
Yep, they definitely share much of the same code. I posted some additional commands that I discovered today based on a few Wireshark traces, and a look through the TrendNet TV-IP422W GPL package.timcraig wrote:Yes, you are correct. I didn't notice the usb port and the mpeg4 support. Looks like the AirLink 777 and the Trendnet V-IP422 are more feature rich cameras than the AirLink 747.
I looked at the manuals of the airlink and the trendnet cams (available for download them from their websites). They use the same configuration software and their web UIs are excatly the same. The only difference in the web UI's with between the Trendnet V-IP422(W)'s and the AirLinks 747(W)'s is the UI style and the lack of USB and Mpeg4 options. Everything else in the UI (layout, wording, etc) is the same.
It looks very likely that the V-IP422(W), 747(W), 777(W) cameras are based on the same hardware and firmware design.
I also sent a request/reminder to Airlink101 for the SkyIPCam 747W GPL sources. These cameras include BusyBox, who's developers are tenacious about GPL compliance. For their sake, I hope it gets posted...
I have just started hacking the audio I/O stuff, and it looks like it should be possible to figure it all out.
The audio stream is MIME encoded, but doesn't have strict MIME compliance. Here is what you get when you start a stream:
HTTP/1.1 200 OK
Content-Type: multipart/mixed;boundary=myboundary
--myboundary
Content-Length: 3868
<data>
--myboundary
Content-Length: 3868
<more data..>
I hacked together a Perl script to extract the payload from the stream, and it after playing with the sample in Audacity, the audio appears to be Mono, 8kHz, Signed 16 bit PCM. The sample seems to have some periodic 'beat' noise (this is probably my script) but is definitely intelligible.
Update: My test Perl app can be dowloaded here.
The audio stream is MIME encoded, but doesn't have strict MIME compliance. Here is what you get when you start a stream:
HTTP/1.1 200 OK
Content-Type: multipart/mixed;boundary=myboundary
--myboundary
Content-Length: 3868
<data>
--myboundary
Content-Length: 3868
<more data..>
I hacked together a Perl script to extract the payload from the stream, and it after playing with the sample in Audacity, the audio appears to be Mono, 8kHz, Signed 16 bit PCM. The sample seems to have some periodic 'beat' noise (this is probably my script) but is definitely intelligible.
Update: My test Perl app can be dowloaded here.
I spent some more time with Wireshark and realized that there is a 28 byte 'header' at the beginning of every audio data frame which was causing the 'beat' noise mentioned in my last post. The first 4 bytes of this appear to be a frame counter (32 bit), but I haven't deciphered the rest yet.
The good news is I was able to get clean (at least as good as with the windows OCX) audio out of the camera after stripping out the header. I also made a few other updates to my script while I was at it.
The audio dump script is here.
I have also been working on the audio out functionality, but haven't had a breakthrough yet...
The good news is I was able to get clean (at least as good as with the windows OCX) audio out of the camera after stripping out the header. I also made a few other updates to my script while I was at it.
The audio dump script is here.
I have also been working on the audio out functionality, but haven't had a breakthrough yet...
Thanks for the support guys!
More good news:
I had a eureka moment last night while playing with some of my audio out code, and was able to get the camera to emit a brief burst of sound from the attached speakers!
Things started working when I stitched a header like the following to the beginning of every data frame:
I have been struggling to get LWP's implementation of HTTP Post to wrap the encoded audio stream the same way the OCX does. The biggest problems come from the fact that the formatting isn't really MIME compliant. From what I have been able to determine thus far, the formatting appears to be:
I'm probably going to ditch LWP and whip up something with a raw TCP session instead...
More good news:
I had a eureka moment last night while playing with some of my audio out code, and was able to get the camera to emit a brief burst of sound from the attached speakers!
Things started working when I stitched a header like the following to the beginning of every data frame:
Code: Select all
Frame 0: 00000000a00f000041000000000000000000000012d2070000000000
Frame 1: 01000000a00f000041000000000000000000000012d2070000000000
...
Code: Select all
POST /cgi/audio/audio.cgi?type=PCM HTTP/1.1\r\n
Authorization: Basic <encoded username:password>\r\n
Content-Type: multipart/mixed;boundary=myboundary\r\n
\r\n
--FITIVISION_MEDIACGI\r\n
Content-Length: 4028\r\n
\r\n
<4 byte frame counter starting from 0><24 byte undeciphered header><4000 bytes of encoded audio>
--FITIVISION_MEDIACGI\r\n
Content-Length: 4028\r\n
\r\n
<4 byte (32 bit) frame counter starting from 0><24 byte undeciphered header><4000 bytes of encoded audio>
...
I finally have a working version of the audio push script (downloadable here). Things went far smoother after I dumped LWP and did things with IO::Socket. It also ends up that the frame counter is a rolling 8 bit number, rolling back to 0 after reaching 255, and not the 32 bit number I had assumed.
The resultant audio does have a subtle 'beat' noise similar to what was happening with the audio dump script before adding the code that removes the header. It looks like I have a little more work to do to sort this out, but it is usable as-is.
The resultant audio does have a subtle 'beat' noise similar to what was happening with the audio dump script before adding the code that removes the header. It looks like I have a little more work to do to sort this out, but it is usable as-is.
Trendnet tv-ip422
I think I have the settings correct to pull images from the camera into ZoneMinder, but it doesn't work. In the general tab, I have the Source Type set to Remote and the attached screen shot shows the Source tab. I have the resolution set to 1/4 the full resolution because the other usb webcams I have will only display up to 1/4 their full resolutions; I have tried several resolutions. Motion commands do not reach the camera, either, but if I get the images working, that may follow suit.
I have a different port number for the external internet forwarded to the camera and I can see the standard camera GUI from an internal or external network computer. I assume ZM will want the internal network IP and port.
I have tried both /cgi/jpg/image.cgi and /cgi/mjpg/mjpeg.cgi. Is it true that this camera is using a proprietary format for mjpeg?
I am relatively new to Linux, but ZM is running on an Ubuntu machine at home. The screen shot was taken from my work PC.
Thanks
I have a different port number for the external internet forwarded to the camera and I can see the standard camera GUI from an internal or external network computer. I assume ZM will want the internal network IP and port.
I have tried both /cgi/jpg/image.cgi and /cgi/mjpg/mjpeg.cgi. Is it true that this camera is using a proprietary format for mjpeg?
I am relatively new to Linux, but ZM is running on an Ubuntu machine at home. The screen shot was taken from my work PC.
Thanks
-
- Posts: 5111
- Joined: Wed Jun 08, 2005 8:07 pm
- Location: Midlands UK
we cant see the screenshot mate. If you wanna mail it me ill host it for you.
James
James
James Wilson
Disclaimer: The above is pure theory and may work on a good day with the wind behind it. etc etc.
http://www.securitywarehouse.co.uk
Disclaimer: The above is pure theory and may work on a good day with the wind behind it. etc etc.
http://www.securitywarehouse.co.uk
Re: Trendnet tv-ip422
The OEMed Fitivision cameras (like the Trendnet tv-ip422 and AirLink 747) seem output the wrong MIME type for their MJPEG streams, so any application expecting otherwise (such as ZM) won't work. This will need to be resolved by Fitivision.killbilly wrote:I have tried both /cgi/jpg/image.cgi and /cgi/mjpg/mjpeg.cgi. Is it true that this camera is using a proprietary format for mjpeg?
Can you view the JPEG still image from your cam from your ZM machine with a web browser at http://<username>:<password>@192.168.1. ... /image.cgi ?
Just replace <username> and <password> with a vaild username/password. (e.g. admin/admin)
This assumes that the cameras IP of 192.168.1.150 is reachable by the ZM host, and the port the camera is using is 80.
Re: Trendnet tv-ip422
I can see the jpeg image in a web browser. But ZM will either show a black image or fail to load any image.Setarcos wrote:Can you view the JPEG still image from your cam from your ZM machine with a web browser at http://<username>:<password>@192.168.1. ... /image.cgi ?
What is the performance difference in zoneminder between jpeg and mjpeg? Will ZM still detect motion when using JPEGs? This is the only IP camera on the network.