Wow what a great day for low cost processors. The conversion to 64 bit is on and that means much simpler software development. We are moving away from the strange hybrid architecture of the original Raspberry Pi (ARMv6 with hardware floating point) to 64-bit and fast GPUs. Also the busses are getting better so some of these boards have real SATA getting around the reliability problems of SDs and also fast gigabit ethernet that doesn't share bandwidth with the USB. So here are requirements for building a dockerized gigapixel camera.
We have come a long way in the last four years with the latest ARM machines 10x faster than the original Raspberry Pi.
- Wide support so I'm not in the woods but need a stack with modern docker-able system like debian jessie or Android.
- 5MP camera. Ideally accelerated on bus. Note I can't find any USB cameras with this specification. Ideally 8MP or more (4K implies 8MP)
- 1080p video minimum. Although 4K video would be better in some ways this is very stressful to the processor.
- Gigabit ethernet. As getting photos off the camera are not easy and with 4K/8MP forget about it.
- eMMC or SATA since SDs are not super reliable for writes.
- 64-bit for performance and easier software
- 1GB ram. But 2GB would be better
- Less than $100 for per board so getting to a gigapixel isn't ridiculous (5MP x 200 = 1GPixel or 8MP x 125)
- GPU acceleration of traditional software like gstreamer.
Finally the folks hypriot are making it easier than ever to develop for this with their baked in docker images. And with Kubernetes and other systems there is a way to control taking photos and videos.
And as yet another dark horse, as the prices for Intel based processor fall, it is always tempting just to use a low cost Intel board given the ease of software development and availability of precompiled binaries.
Here are some great choices now as explained by cmx-software here are the differences for ARM. The move to Arm v8 64-bit is a big deal because these processors are 20-30% faster than similarly clocked Arm v7 32-bit ones.
- Raspberry Pi 3 goes to 64 bits but only 32 bit images for now. They have the same camera system and thus raspistill will work. They have stuck with Mali saying that it has open source drivers. The big negatives are that they do not have gigabit ethernet and the fast ethernet is still stuck on the USB bridge. Although they do have onboard Wifi and BLE (so better for remote applications). Also it only have 1GB of ram (wait did I just say just?). Also no Android support.
- Odroid-XU4. This is 32 bit but it has all the other features including Hypriot support a 5Mp camera that runs on USB 3.0 plus an Octacore and eMMC support. So we really need an XU4 ($75) with the C2 ($40) core. Or perhaps use this until that happens.
- Odroid-C2. It has real gigabit ethernet, is 64 bit with Android and Debian. However, it does not have a camera on it. So it is best for compute intensive tasks or for media output. It also runs at 2GHz and not 1GHz like the Pi. It also does 4K with HDMI 2.0 so a nice display machine. It also uses eMMC which should be more reliable than SD but not as fast as SSDs. It has an active development community
- Pine A64+. This has not yet shipped but uses a 1.2GHz quad core and has up to 2GB of memory. It does have a camera interface and gigabit ethernet, but no SSD or eMMC. And it also has a wifi/bluetooth module available. All told except for lack of reliable storage, it has pretty good specs for a high performance camera. It does run Android, but not clear if it can run gstreamer or how it handles OpenGL/opencl processing.
- Congatec qa4. This is the most interesting new board. it is supposed to be much lower cost using Intel Braswell. It is full 64-bit quad core and can support up to 8GB memory and SATA drives plus it has a CSI camera interface supporting up to 2 cameras! And it is Intel so cross compilation problems are smaller and it might even accelerate in the Intel graphics. Main problem is how to get it and I'm sure it has a tiny development community.
Then there are some other choices that seem to have less support but interesting options
- Banana BP-M2+. It also uses the Allwin quad-core with 1GB ram and 8GB eMMC and has gigabit ethernet. And a CSI camera interface so the specs are attractive but the development community is small. However except for the memory, it's a very attractive board particularly if armbian can support the camera although it is not 64-bit.
Finally, with Intel pushing down with Atom and Celeron, another option is to just stay all Intel. Linuxium keeps track. All of these will be USB cameras to work however and they are around $150-200 per machine. So that's an expensive megapixel machine because webcams are about $50 and are 2MP typically in real resolution so you'd need 500 of these things!
- Winter Pro CX-W8. At the other end of the spectrum, Intel has kind of come down to the right price, so you could also stay all Intel. It is 64-bit and runs Android or Windows with 32GB eMMC but only 100Mbps Ethernet. For a camera, you'd have to add a USB web cam, but you have a good shot at running full gstreamer.
- Onda M2. If you go all the way up, a true Pentium with 4GB ram 128MB SSD is now just $189.