The Gizmo 2 is an ultra-small computer that fits in the palm of the hand and is the successor to the earlier Gizmo from GizmoSphere. Unlike a lot of single board computers, this one contains a 64-bit CPU (x86-64 compatible - actually an AMD64 device) and an open source, standards compliant BIOS. There are some advantages to this – you don’t really need to build your own Linux image because there are plenty of distributions that can be instantly downloaded and used. Some versions of Microsoft Windows would be possible too.
Gizmo 2 is supplied with a microSD card that contains Linux, XBMC (media player software), a sample 1080p resolution video to watch (it plays flawlessly) and some other software built-in.
Like desktop PCs, Gizmo 2 has some in-built connectors for HDMI, USB (2.0 and 3.0) and Gigabit Ethernet and so on. However unlike usual desktop PCs, Gizmo 2 has direct low-level interfaces for connecting up custom hardware; it has general-purpose input/output connections (GPIO) and serial interfaces such as I2C and SPI. This is just the tip of the iceberg; it has a huge amount of connectivity options.
It is also very powerful, around 85GFLOPS of performance!
Gizmo 2 uses the AMD GX-210HA G-Series chip (PDF link) which contains dual 1GHz CPU cores, 1MB of shared L2 cache, a 300MHz graphics processor (Radeon HD 8210E) and DDR3 memory (1GB on-board). The graphics processor (GPU) has 48GFLOPS of performance. The GPU supports DirectX 11.1, OpenGL 4.3 and also OpenCL 1.2 which means it can be used for parallel processing applications often without even realizing it, since there are frameworks such as OpenCV which can make use of OpenCL acceleration to allow the creation of image sensing applications for robotics and machine vision.
For a build-your-own custom home entertainment media server or an in-car PC, or robot! this could well be one of the best platforms yet. The diagrams below show what is on the board. The board is very compact; about 100mm square. To put that in perspective, it is about a quarter of the footprint of the Mac Mini and about the same length as a Raspberry Pi with an SD card inserted.
To get the negative stuff out of the way first; there is a fan, however the heatsink was always cold to touch (i.e. less than body temperature) during experimentation. In my opinion (I’d have to check with GizmoSphere) once in an enclosure it may be better to remove that fan and replace with a larger one (which will therefore be quieter) on the enclosure, appropriately ducted to pass air along the heatsink. Another option is to remove the fan entirely and optionally replace the heatsink with a larger one. The only other minor issue is that the supplied adaptor has an extremely short power cable; unless one is within one meter of a mains outlet it will be too short. As a side note, the supplied travel adapter kit is really fantastic; I’ve purchased many different ones each time I’ve forgotten/lost these things, and this set is the nicest I’ve seen, it is very well made.
Everything else is positive. It is hard to fault the Gizmo 2. As can be seen from the diagram earlier, there is connectivity on the edge of the board for low speed and high speed input/output interfaces. There are a total of 100 pins here, and the number of interfaces is immense. It includes I2C, SPI, ADC and DAC pins, another three USB interfaces (brings the total to 8!), DisplayPort or LVDS (for dual display capability!), PCIe (dual capability) and SATA (multiple drive capability). That is an impressive list and there are also some miscellaneous I/O pins too.
Another great thing is that there is a miniPCIe/mSATA connector on the underside too. I used this to connect an mSATA solid state disk (SSD), and decided to use that to house the operating system (OS) and software applications and files. The SSD is optional; the OS can run from a microSD card if desired or from a USB memory stick.
The supplied microSD card already has an OS installed (Linux from Timesys) but there is enough power to run a full desktop OS if desired. I downloaded Centos (an excellent Linux distribution) and it ran from the SSD with no issue and I was able to use Firefox, libreoffice and so on. I connected a 1920x1200 monitor to the HDMI connector and the experience was great. It could very easily double as a regular PC (perhaps a second PC for the home) without complaints. It actually feels like overkill to use this board for a home media player!
Another amazing thing is that this is a PC for which the complete schematics are available. This opens up a whole new world of possibilities. As an example by examining the audio section it can be seen that it is possible to connect external audio devices using a standard S/PDIF interface with a small bit of soldering effort.
Getting Started With Gizmo 2
Fit the supplied watch battery for the real time clock (RTC) on the rear of the board, and then plug in a keyboard, mouse and monitor, a network cable if desired and insert the supplied microSD card, connect up the supplied power supply (12V) and then press the ‘Power’ button on the board. Once booted up, a slightly bizarre user interface is displayed at the top of the screen that is unintuitive enough that the supplied instructions are needed to figure out how to use it (to save time: basically you cannot click on an icon, but rather you have to drag the entire icon bar left or right so that the desired icon is centered on the screen).
See the photo above to see the menu as viewed on a TV. One of the icons allows you to jump straight into XBMC, so if this is what you want then Gizmo 2 doesn’t need any additional configuration.
I know nothing about XBMC but it appeared to run fine:
Another icon allows you to jump into a user interface for the supplied Linux distribution from TimeSys. A copy of Big Buck Bunny is also supplied on the microSD card so you can examine video quality immediately. It ran smoothly as expected – more on video quality later.
Installing a New OS
It was decided to install a full Linux distribution to see how usable Gizmo 2 was. The selected distribution was Centos which is based on the highly regarded Red Hat Enterprise Linux (RHEL) and has ten years support! and (some would say) is far nicer to use than Debian and Ubuntu. At the same time it would be nice to retain some content locally so an mSATA SSD was connected to Gizmo 2 (the SSD plugs onto the underside of Gizmo 2). If you’ve never inserted an mSATA drive before, the trick is to insert it at an angle (no pressure needed) and then gently reduce the angle until it is parallel with the main board, and screw it into place. The bolts, nuts and spacers are not supplied (M2 bolts are needed) so they need to be purchased separately. While you’re at it, you’ll probably want to purchase some additional spacers for use as legs to be able to place Gizmo 2 on a table so the table surface touches neither the mSATA card nor the RTC battery.
The next step was to create a Centos installation USB memory stick. To do this, first download and install Centos on your PC; if you have a Windows PC then Centos can be installed in a virtual machine (VM) using software such as VirtualBox.
Once Centos is installed, follow the steps below as root user:
ls /dev/sd* <Plug in a USB stick into your PC> ls /dev/sdb* <Compare the output; you should now see something like sdb and sdb1 appear> umount /dev/sdb1 syslinux /dev/sdb1 mount /dev/sdb1 /mnt cp "/run/media/myusername/CentOS 7 x86_64/isolinux/vmlinuz" /mnt cp "/run/media/myusername/CentOS 7 x86_64/isolinux/initrd.img" /mnt vi /mnt/syslinux.cfg <Place these three lines in the file:> default vmlinuz append initrd=initrd.img prompt 1 umount /dev/sdb1 <On the following line, the original downloaded Centos ISO image is renamed> mv “CentOS-7.0-1406-x86_64-DVD.iso” linux.iso dd bs=4M if=~/linux.iso of=/dev/sdb
Next the USB memory stick is removed from the PC and plugged into Gizmo 2 (I plugged it into the blue USB 3.0 capable port). When Gizmo 2 is powered up, press F12 a few times on the keyboard to bring up a boot selection menu (1=SSD, 2=USB in my case). I pressed 2, and Centos automatically installed. After installation the USB memory stick was removed.
Centos booted up to the login prompt within 35 seconds, which is quite good for the full workstation version. Even on an i7 laptop it takes around 15 seconds for Centos to have started up, so the performance is not bad at all. It is entirely usable as a PC, with the libreoffice applications starting up within seconds. Video output was extremely smooth while watching movies using mplayer software. The default accelerated video output had some very visible issues while watching video; it is likely to be a bug in a driver. However the workaround for now was to change to other video output modes and it still resulted in smooth output as can be seen in the video below. Note that the banding in the video is a result of the recording from a camera; the actual visible output has no banding and is indistinguishable from the original movie. This was captured from a monitor at higher-than-HD 1920x1200 resolution. There was no jitter and the video was flawless. As mentioned earlier it is possibly overkill to use this board for a media player alone given that it can handle higher resolution than Apple TV and is dual core.
Building a Computer
According to the Dreamboards everyone’s requirements are different. With the huge volume of interfaces available on Gizmo 2, it becomes possible to realize an expandable computer that could find uses at home, in the lab and for mobile use too in the car or perhaps for robotics. The drawing below shows an idea of how it could be implemented.
Gizmo 2’s high speed and low speed connectors are PCI-Express style fingers. This is nice; a similar approach is used by XMOS for their development kits. PCI-Express connectors are extremely low cost (possibly the cheapest way to get high-density connections) and can be used for a backplane design for the computer. The idea is to have a design with either point-to-point connections or serial busses connecting up expansion cards that can be plugged into the backplane.
There are a number of considerations for such a layout. For example, USB is a point-to-point interface and there is no point in sharing the same USB port across multiple slots if only one expansion card can make use of the port. Furthermore there is the risk of reflections off the end of tracks that are not terminated causing poor signal quality. To eliminate this risk, one idea is to route one USB port per expansion card. Since there are three USB ports available on Gizmo 2’s slot connectors, this means that three expansion slots can be provided with USB capability. The PCIe lanes will be routed one per board; there are two lanes and so the two closest slots will have this capability. Another issue is that owing to the density of tracks and high speed interfaces the backplane may need to be 4-layer which raises the cost a bit. Some ESD considerations need to be taken into account too, to reduce the risk of damage.
For low speed connections that could be shared across all boards, some method is needed for co-ordinating which board gets to use which connections. It was decided to keep things simple, and use a board identification method (discussed later) to co-ordinate this (this relies on the expansion cards playing nice).
The connectors were laid out in EAGLE. Gizmo 2 requires a 36-way PCIE x1 connector for the low speed interfaces and a 64-way PCIE x4 connector for high speed interfaces. It was decided to use two 64-way connectors per full-width expansion card. The expansion cards are to be 100x100mm which is the maximum size for low-cost PCBs. With the two 64-way connectors it would be possible to have two half-width expansion cards optionally fitted alongside each other, for even lower-cost 100x50mm PCBs.
The extra connections on the 64-way connector will allow for additional connections between boards; some can be unallocated while others can be used for passing 5V and 12V supplies to the cards and input power connections (as a result in theory it would be feasible to have an optional battery pack extender card). A serial interface can be used to have functionality such as board identification, heartbeats and other health or status information exchange. If feasible, the rear of the backplane will accommodate an optional LCD. If cooling is required then a fan at the side will blow air across the cards. The whole assembly will need a chassis or structure to hold everything together and a mechanism to prevent cards accidentally shaking themselves loose and unplugging (e.g. in a moving vehicle).
The end result will be a very compact, smaller than a compact disk footprint computer with true low-level user expansion facilities built-in.
Stay tuned for part 2!