Testing Sanity

The core task of software development is sanity testing.

  • warning: Parameter 2 to gmap_gmap() expected to be a reference, value given in /home2/thepalls/public_html/cgpsoftware/includes/module.inc on line 483.
  • strict warning: Non-static method view::load() should not be called statically in /home2/thepalls/public_html/cgpsoftware/sites/all/modules/views/views.module on line 879.

Connecting the RK3188 Android Device to Windows

13 Jan 2014
Posted by cgp

So, I recently bought one of these android devices:

http://www.amazon.com/gp/product/B00AZR1TG2/ref=oh_details_o00_s00_i00?ie=UTF8&psc=1

  • Android 4.2 Jelly Bean, RK3188 Quad-core 1.6GHz CPU Cortex-A9 (28nm), 2G DDR3 RAM / 8G Flash
  • Standard HDMI Female, 3.5mm headset jack (mic embedded), Micro USB, USB and SD card
  • Wi-Fi 802.11b/g/n, Bluetooth, DLNA, Miracast
  • Includes 5V 2A charger

It was $75, not too shabby. (they no longer sell them) They have a website:

http://www.timingpower.com/android-mini-pc-rk3188

I bought it along with a Hannspree (aka, Hanns-G) 10 point touchscreen monitor. It was built for Windows 8, but I figured, hey, I can probably figure out how to get it working with Android, and if not, no big thing, I'll just hook up to Ubuntu or something.Decent monitor.

I of course installed the Android SDK.I didn't use the early access preview. It's useful for verifying different things.

First Impressions

I've never really mucked around with Android much at all. I don't have a smartphone ($80 a month for a capped, no tethered data+phone plan? Forget it) So, keep that in mind when you read this. I am however a developer and have 20 years of experience looking at electronics, so, I'm not a complete buffoon either.

First thing is that it was pretty exciting getting the device to boot. Mine showed the Linux penguins on boot. I didn't expect that, I've never seen that on phones, and it only reinforced something I hadn't realized. Android is very much Linux underneath. I thought it was a very, very thin Linux layer supporting the Java JVM or something, but the world seems a lot simpler now that I see it's pretty much "Linux", and with what appears to be a Linux window manager running Java apps in windows (the widgets). "Rooting" is nothing more than using the root user. I'm still a little confused as to how that user context is invoked and when, but it's becoming more clear. 

Physical Connection and Drivers

During this process, when you are connecting the device, make sure you are connecting to the small USB port (aka, the "OTG" port) on the RK3188 device.

I needed to update to the latest firmware for the device from timing power. First, I installed the ADB driver:

http://adbdriver.com/

If this doesn't work for you, I think the following might:

http://www.cnx-software.com/2013/11/08/simplified-method-to-install-rockchip-usb-drivers-in-windows-xp78/

I'm a little confused by the end result of both of these installers, and since I ran them both I really can't tell which was the "correct one". The end result is a generic looking windows type device driver that indicates that it was written in 2010. It is possible that there are two pieces to the driver, and the rockchip piece which is newer isn't reflected in the device driver listing.

The instructions from Timing power have you run through some Chinese based installer, which was a little confusing and I believe unnecessary. After that, you're going to want to update the ini file which specifies the device ID. This file should have been installed with the ADB driver.

It will be under ~/.android\adb_usb.ini. Add a single line:

0x2207

to the file. If you've installed the device driver correctly, you can find the correct device ID for any device by looking under the Device Manager, under Android Phone, and under the properties for dialog the "Android Composite ADB Interface". In that properties dialog, look under details. select the "Hardware IDs", and you'll see an entry like 

USB\VID_2207&PID_0006&REV_0222

The portion after VID_, is the part that you enter into the ADB ini file with the "0x" prefix. It's not really entered in INI file format, but whatever.

I think I restarted the Android device (replugged it in at this point) I also made sure that USB debugging was turned on in Settings on the RK3188.

In any case, you should be able to run 

adb devices

from the SDK (sdk/platform-tools) and get back:

List of devices attached
V8GCU6JBJL      device

Updating to the Latest Version of Firmware

So, the next thing would be to update to the latest version of the firmware found at:

http://www.timingpower.com/rk3188-support

There's a new one as of Jan. 10th, (Beta). I used the November 2013 version, which was the 1080p version that I really wanted.

Download the batch tool found on the timingpower page. The batch tool listed on the timing power page is a fine tool, if a little crude. When run it will open a window that displays 8 or so boxes at the bottom which represent recognized, connected Android devices. They are usually uncolored/blank. 

To get them to recognize, as described by the documents on timingpower, I needed to click the little black button on the inside of the case. What wasn't precisely clear was that I needed to click the little black button at the same time I was plugging it in. This was fairly tricky given that you're already nervous about holding a sharp (likely metal) pointy thing against an exposed PCB. A couple of times I nearly scraped the back of the board while trying to reset it. But then again, I'm clumsy. I do however suspect that someone simply forgot to carve out the pinhole for the reset button when they were designing the case for the device.

Aaaaanyway. So, when I did that hamfisted power reset, the batch update tool filled in a box as green and ready to update. The update was pretty smooth. By default, the "firmware" update roots the device. I'm not sure why this is considered firmware really. I think it's installed a whole new OS. 400mb is basically replacing everything from what I can tell. But I am new to this.

I ran root anyway. I used the tools described at the following place:

http://howto.cnet.com/8301-11310_39-57608195-285/how-to-easily-root-an-android-device/

Nothing really seems to happen. I think all the rooting magic happens with specific applications that are run as root. For later.

Now we'll dig into the details of how I'm going to try and figure out how to get the HT231HPBU (aka,  23inch touch screen to work -- if at all!)