Article: Device review: Axis 2120 Network Camera
Mar 9, 2001 — by Rick Lehrbaum — from the LinuxDevices Archive — 118 viewsIn this article, John Lombardo reviews the Axis 2120 Network Camera, an intelligent network-ready camera with a built-in 100 MHz RISC microprocessor running an embedded Linux operating system. A brief overview of the features of the Axis 2120 is available here.
A package arrives
The doorbell rings, I answer it, the postman hands me a brown 14 x 12 x 9 inch box with “Axis Communications” written on the side.
I bring it to my workshop (ok, my garage), pull out the knife (the only one I can find is a putty knife), and open the top of the box. Inside, under the bright pink packing peanuts, is an 8.5 x 11.5 x 5 inch shrink-wrapped box containing the Axis 2120 Network Camera and a folder containing the reviewer's guide and some other literature.
Blasting past the reviewer's guide, I slice open the shrink-wrap and open up the box containing the camera itself. Inside the box are the following five items . . .
- A stand — the unit comes with a 4 inch stand using a standard 0.25 inch nut.
- A null modem cable — the Axis Network Camera comes ready to connect to the Internet using a serial modem; the cable connecting the camera to the modem comes with the unit.
- A transformer — the unit I received was for US consumption; input: 120 V, output: 12VAC. (Yes, that's 12 volts AC, not DC; make sure you don't lose the power supply!)
- The Setup Guide — setting up the Axis 2120 is quite simple using the five page setup guide. The guide itself is pretty cool — it's one piece of heavy paper measuring 18 x 38 inches, and is printed in four languages; English, French, Spanish, and German. You choose your language by folding the paper properly. The Setup Guide also contains a CD chock full of information, including a more complete installation manual.
- The camera itself — weighing in at only (approximately) two pounds, it's hard to believe that Linux lives in there. The front of the unit has an impressive looking lens.
Years ago, we all thought of Linux as just a desktop operating system (OS) — competing directly with Microsoft Windows. Then we realized that Linux would be great as a server OS — processing web pages, business transactions, and crunching scientific data at a blistering rate. Now we've come to realize that Linux works equally well as an embedded OS — equal to, and in many cases surpassing, other OSes in this category with far more years and engineering dollars behind them.
Initial setup
Axis provides several ways to install the camera, but the easiest is the “arp -s” trick they show on the first page of the installation guide. You can use either a Microsoft Windows or Linux box to issue the arp command, which sets up an IP address to MAC address translation in your local ARP cache on your machine.
Next, you ping the IP address of your camera, and then you connect power to the camera. The camera sees your ping's request of its MAC address, and grabs the IP address from that packet.
It's now set up. This took all of about five minutes.
Once the camera has an IP address, the next step is to point your browser to it. I used Windows Explorer, and the first thing it asked me to do was install an ActiveX component for the live video feed.
I said Yes, and a couple of seconds later I was watching a live video feed of myself.
After the obligatory hand waving, to see if the camera really did work, I started thinking of the possibilities . . .
- Nanny Cam
- Neighborhood Watch Cam
- The possibilities are endless!
Web based configuration
On the main browser screen is a link to the installation wizard. Pressing it starts a new browser session. The first screen is a welcome page, warning you not to expose the camera to direct sun or halogen light.
The next screen allows you to change the root password of the camera's server, and to create new users. There are three different permissions: Admin, Dial-in, and View. The root user can do any of these. I created a user named “view” with a password of “view” who could only view the output of the camera.
Pressing the Next button displays the Date and Time screen. Here, you can set the date, and either manually set the time or sync the time with a specified computer or NTP server.
The next installation wizard screen lets you adjust the image size, compression, and color balance of the camera. It also allows you to stamp a heading and the current time on the video stream.
The next screen lets you enable the Focus Assistant.
The next screen lets you choose how the camera will be connected, either to an Ethernet Network or via a modem. I chose an Ethernet network, so the Ethernet screen was shown. Along with the usual IP networking questions, it also wanted to know what maximum bandwidth the camera could use — a nice touch, given the large quantity of data the camera could pump through a cable modem.
Pressing Next brings you to the final screen of the installation wizard. Here, you can either exit the configuration task or continue to a new task — uploading images to another computer.
Using the Network Camera
You can get output from the Axis camera in lots of ways. For instance you can . . .
- Put a full-motion video box on your web site using either an Active X component or a Java applet.
- Using a different URL, you can download a still image from the camera.
- You can instruct the camera to upload the current to another site using FTP. The image can be uploaded at certain times of day, or when a certain event happens, like when a door opens for instance.
To produce a video stream, the camera outputs data in a format that Axis calls “Motion JPEG” or “MJPG.”
MJPG differs from the more traditional mpeg format because each MJPG frame is a complete jpeg image that can stand on it's own. In contrast, an mpeg video stream achieves higher compression by only generating complete images (called “key frames”) when absolutely necessary — intermediate frames are built by making small updates to the key frame, followed by updates to the updates. Since each update is smaller than an entire image, the resulting video stream (with mpeg) is smaller, but of lower quality.
Consequently, the Axis MJPG produces a sequence of images in which every image frame is high quality. This is especially valuable for applications like surveillance. A typical mpeg would provide a high quality frames corresponding to the still elements in a video stream, but the moving parts would be of lower quality. This is how maximum compression is produced, but is the exact opposite of what is generally desired for surveillance.
The Axis Camera thus sacrifices compression for high fidelity using this technique.
Hacking the camera
Axis has done a pretty good job of making sure the camera is secure. nmap produces the following . . .
Interesting ports on (192.168.0.72):
(The 1521 ports scanned but not shown below are in state: closed)
Port State Service
21/tcp open ftp
80/tcp open http
TCP Sequence Prediction: Class=truly random
Difficulty=9999999 (Good luck!)
Remote operating system guess: Linux 2.0.35-38
Unfortunately, this means we can't telnet into the camera. I suspect most embedded Linux systems will be closed like this. Actually, there probably isn't much you could do even if you could manage to get a shell prompt.
The serial port is also pretty useless when trying to hack into the Axis Camera. I played around with different baud rates, and found that I could get a little output from it if I connected at 115200 kbps, no parity, 8 data bits and one stop bit. Unfortunately, this didn't buy me much. After the camera boots, it says “AT&F1r”, and that's it. Since you're supposed to connect the serial port to a modem, this is obviously a modem reset command (although the r is probably a bug). I tried typing OK and everything else I could think of, but to no avail.
Developing new applications for the camera
Axis provides a lot of information about developing applications using the Network Camera. However, it's all geared toward developing applications from outside the box. For example, there are several example Visual Basic applications for displaying images in VB forms, and several example web pages, again for displaying stills and video on a web page.
On the other hand, there's no information on how to change the software that actually runs inside the camera in any way. Even though Axis touts the benefits of the camera's use of Linux, they don't actually provide a means for a Linux developer to run any software within the camera, or to alter its internal operation in any way.
Their reasoning is fairly obvious: giving users the ability to change the internal software of the camera would greatly increase the likelihood of Axis ending up with a bunch of cameras coming back to them with their Flash memory all messed up. One false move in reprogramming its internal software, and the camera won't boot!
Nonetheless, it's more than a little disappointing to not be able to get to a shell prompt when you know there's Linux within!
A few final observations
- The good points . . .
- Axis is committed to developers who want to use the camera in their applications. The camera's CD has lots of information for developers to use, and the Axis web site has even more.
- A comprehensive and easy-to-use setup wizard.
- The ability to choose the amount of bandwidth the camera will use.
The nits . . .
- It would be nice if the wire for the lens actuator didn't run around the whole camera body — it looks pretty delicate.
- It would be nice if Axis supplied an Ethernet cable in addition to the null modem cable supplied with the unit.
- The GPL'd source code is not available on the CD, even though only 60 megs of space on the CD is filled. On the other hand, Axis does have a great developer site that offsets this minor negative.
- My Win2000 machine's disk quickly became filled when I left the camera on for a few hours. As soon as I disconnected my system from the camera, there was disk space again. That looks like a cacheing error. It may not be Axis' fault, but that could make using the camera a little difficult in some situations.
Author's bio: John Lombardo has been working with Linux since the “0.9” days. However, he does remember downloading a very early version and thinking: “Yeah, right — how is this Linux thing going to compete with Coherent” (an early 1990's Unix clone from The Mark Williams Company). Lately, John has been working on several embedded Linux projects, including easy-to-use IPSEC routers, ARM7-based NAT routers, and a book entitled “Embedded Linux” soon to be published by New Rider's Publishing. You can reach John at [email protected].
This article was originally published on LinuxDevices.com and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.