This is a wrap up post for the Touch Screen Coffee Table 2.0 to explain the last bits of technical details behind what went into finalizing the table.
Touch in the touch screen
As I mentioned in the last post, this table is based on an infrared touch screen frame from PQ Labs. In this post I’ll go a bit more in depth with what this is and where it comes from. The frame itself is an integration kit purchased peauproductions. In fact, Nolan from peau productions has been a great help during my first build and was very helpful when dealing with PQ Labs during this build. The first frame I received, rather quickly I might add (less than 1 week from order to delivery from China) had what is called a ghost touch point. This means you touch the screen in one spot and you get a touch indication the spot you touched and somewhere else. Through some diagnostics, it was determined this frame was defective. With Nolan’s help I was able to get a replacement just as quickly — 1 week turnaround. The new frame works very well — very precises touch sensitivity and quick responsiveness.
Android SOCs – a giant mess
The frame from PQ Labs came with the iStick a200. Don’t let the marketing full you, it’s not the fastest mini computer. In fact it’s barely usable as a tech-demo. Don’t get me wrong, it works fine for light Android use, but anything above web browsing and Angry Birds, it’s overwhelmed. After realizing the issue, and as pointed out in my last post, the Android experience on this table was a key component to doing the build, I started investigating my options. The iStick is base on Rockchip 3066 dual core Arm SOC (System on a Chip). That’s where the bottleneck is. A 1080p screen with a dual core CPU on android is just not enough for 3D, and more in-depth gaming. The other issue with this stick is that it left very little room to install apps (there is a way around that, I’ll get to it later). I had an Odroid-X (a Samsung 4412 quad core SOC) based development board which I had purchased some time ago to do experiments with, and never actually did. So my first choice was to try and see if I could get the Odroid board working with the touch screen frame. After a lot of manipulation that proved to be not possible, so I turned to the next alternative. After some research I found that Rockchip has moved on to new 3188 quad core SOC, so that was my new path to get the touch screen frame to work with a fast quad core Arm A9 part.
Android Kernel — build it and it will work (maybe)
First, for those who don’t know — I’ll link to Wikipedia here Kernel. During my debugging of why the touch screen frame was not working — I determined it was because the kernel module (a driver of sorts) provided by PQ Labs for the Android Linux kernel wasn’t playing nice with the kernel in every quad core device I tried. I figured if I could alter what ever was the issue in the kernel, rebuild it — the frame would work. Then started my hunt to build a kernel which would work.
Cross compiling — oh joy
To build a kernel, or just about anything to run on an Arm CPU, you need what is called a cross compiler, yea more Wikipedia links. Getting pretty technical here. I had to get a build environment (which means configure my Linux machine with newest Arm related build tools). I won’t go too much into the details, ask if you really want to know, but I finally had a build environment and a kernel, along with a module which should have worked, but.
First, I’ll say living on the bleeding edge of technology I often import tech from China, Europe, Korea etc. Sometimes that’s the way to go — contrary to popular opinion not everything can be bought on Amazon, and not every tech gadget worth anything is sold at Best Buy. So with importing — you enter the world of the unknown, and questionable. In this case however, the Android sticks (small android computers which look like little sticks about 1×4 inches and about a half inch thick) were available on Amazon. So I started with best reviewed product and so starts the rabbit hole.
Android Mini PC RK3188 (Timingpower)
This was the first device, and it was, lets say a big disappointment. It didn’t have root, which you need to do any custom manipulation, but that’s really irrelevant since rooting a device such as this is easy. The problem was that the HDMI on this device was very flaky, flickered, maybe a defect, I moved on.
Tronsmart Mk908II Quad Core Rk3188 Cortex-a9 1.6ghz
The problem was that I purchased this device for speed, and the speed wasn’t there. The CPU promising 1.6 GHz performance (it’s in the title right?) was locked at 1.2 GHz. Alas, the problem with Chinese imported products — truth in advertising. This wasn’t an RK3188 — it was an RK3188T — T for Throttled.
I went to an older device, same specs. I expected an older PCB, so an earlier design with the fast CPU. Not the case. I found that Tronsmart was using the throttled CPU in they’re new devices to just go through their stock. Oh, well, here is the problem. This device was also clock locked — 3188T. How is this possible — simple, new board design, designed to use the cheaper SOC.
CX-919 Mini PC Android TV Dongle
This device was real deal, real RK3188 SOC. All the bells and whistles, but the frame would not work. And this is where I ran into a wall. The device driver from PQ Labs did not work. And PQ Labs did not know why, they claimed a possible USB defect in the device. Likely the current required by the frame was more than this device could provide. But that’s just a guess.
This is when PQ Labs offered to sell me, yes sell, a pre-release version of their new 3188 based iStick. And after spending nearly a month trying to get the frame to work with other 3188 based devices I relented. And this device is finally installed, fully configured and working great. The iStick A300 pre-release version has some odd design choices like a small app storage space, which would have been a big deal, but with the help of Link2SD I was able to work around. With a 16GB class 10 microSD card, I have plenty of space to install anything I would ever want onto the Android part of the Coffee Table. The stick did have a rather loud fan in it — which has no temperature control, but appears to be needed to run the SOC. I rewired it to turn on only when the table is on. This keeps the new device cool, and table quiet when not in use.
To get a better idea of the capability of the Android functionality of the table, I benchmarked my different Android devices to get some comparisons. I did not do all encompassing studies, just some basic comparisons. So the results are, the new RK3188 based devices are about 3 times faster than quad core tablets I use for home automation (more on that later — but a good metric). Those tablets are very capable and are Arm Cortext A9 based devices, so the optimizations in the RK3188 SOC are very nice. Moving on the Odroid-X Development board is basically the same speed as the RK3188, or at least within the margin of error. So moving on to comparing the RK3188 to the latest Android hardware. My comparisons are the Galaxy S4, and the Galaxy Note Pro 12.2 Tablet. Both Samsung devices are nearly 3 times faster than the RK3188 — which is technically to be expected since they use the Arm Cortext A15 SOC.
The Arm SOC world moves very fast. So in the next few months Rockchip is releasing the RK3288 based devices, first tablets, then sticks. This SOC is a quad core Cortext A12, by some strange Arm logic, A12 is better than A15. Also Odroid has a Octa-core (yes 8 cores) development board. This uses the Arm Big.mini platform with 4 A15 cores and 4 A7 cores. This is the same SOC design as in the Galaxy Note Pro 12.2, as well as similar to Nvidia Tegra line of devices (4 primary cores, and extra cores for sleep related tasks)