An initial look at the system

Similar products

This camera is manufactured by Tend Insights.  They seem to have several other products, some of which look physically similar to this one.

Looking at the kernel header, I found the string “Imogen-X860-I”.  Googling for that found imogenstudio, which also sells cameras, some of which look physically similar to the Stuart Cam.  Here’s a link to the quick start guide for their CAM+ product, which shows a similar “setup” switch on the back with 3 vertically-oriented LEDs.

The imogenstudio CAM+ product uses an app by iSecurity+, which also seems to sell a camera, and references the name “Seedonk camera”.

The Stuart Cam’s firmware has the string “Seedonk” throughout, and firmware updates for the Stuart Cam come from app.isecurityplus.com/seedonk.

I’ve seen references to other brand (including Belkin) in the firmware.  Here’s a user guide for a Belkin Netcam which looks very similar to the Stuart Cam.

So, it’s unclear who really makes the camera/software.  I suspect that anything we find here on the Stuart Cam could apply to others.

Hardware

The SoC is an infoTMIC IMAPX860 which (according to Linux) is a dual-core ARMv7 CPU.  Linux’s “machine” name for this chip is “iMAPx15”.

I did some Googling for this SoC and found that it’s used in cheapo Android tablets.

The system boots from a 32-megabyte SPI flash chip.  There are 256-megabytes of RAM.

I see an empty space/solder pads that looks like an SD card socket could be added.  Maybe one of the other varieties of this camera includes a memory card slot.

Wifi is provided by a Broadcom (now Cypress) BCM43438 chip (datasheet).  This chip supports 2.4GHz 802.11 b/g/n Wifi, Bluetooth 4.1, and an FM receiver (although I see no indication (so far) that this camera has enabled anything other than Wifi)

The camera module is based on the Micron MT9D111 sensor (datasheet).  The datasheet says it’s 1600×1200 pixels (UXGA).

SPI flash memory layout

Here’s the SPI flash partitioning used by Linux:

0x000000000000-0x000000080000 : "boot"
0x000000080000-0x000000090000 : "oem"
0x000000090000-0x0000000a0000 : "config"
0x0000000a0000-0x000000aa0000 : "kernel0"
0x000000aa0000-0x0000014a0000 : "kernel1"
0x0000014a0000-0x000001520000 : "jffs"
0x000001520000-0x000002000000 : "media"

“boot” is the U-Boot boot loader (used on many embedded systems).

“oem” contains information including the MAC address, and names like “StuartCam”, “Minions”.  Assuming all of these various camera brands out there are all using the same hardware, this may be where the firmware gets customized for each OEM.

“config” contains system settings used by the firmware.

“kernel0” and “kernel1” are the two copies of the firmware (each is a standard U-boot uImage file, containing a kernel with an embedded root filesystem).

There are two copies of the firmware to support firmware upgrades – you boot from the “active” kernel, and a firmware install will overwrite the “inactive” kernel – only marking it as “active” after the install is complete.   I’ll describe the kernel images/firmware update process in more detail in a future post.

“jffs” is a “jffs2-formatted” filesystem mounted as “/mnt/config”.  I don’t see anything stored here currently, but it may be used for user settings.

“media” appears to be empty/unused (about 10-megabytes of free space)

 

Leave a Reply

Your email address will not be published. Required fields are marked *