{"id":319,"date":"2012-11-24T22:19:49","date_gmt":"2012-11-25T03:19:49","guid":{"rendered":"http:\/\/www.compdigitec.com\/labs\/?p=319"},"modified":"2013-01-09T20:17:06","modified_gmt":"2013-01-10T01:17:06","slug":"rooting-the-ippea","status":"publish","type":"post","link":"http:\/\/www.compdigitec.com\/labs\/2012\/11\/24\/rooting-the-ippea\/","title":{"rendered":"Exploring and rooting the iPPea TV"},"content":{"rendered":"<p><a href=\"#aanchor\">Skip to the rooting process<\/a>, if you wish.<\/p>\n<p>The <a href=\"http:\/\/www.ippea.com\/\">iPPea TV<\/a> is a pretty neat gadget, to say the least. The USB-stick sized device features a full Android 4.0.3 OS, a 1Ghz Ingenic JZ4770 MIPS processor (complete with FPU!), 512 MB of RAM, 2 GB flash storage, and about 800 MB of internal memory. Overall, it is pretty impressive for only $65. Having received it about three weeks ago for use in the development of the MIPS port of VLC Android, I&#8217;ve been meaning to write about this device. Now that I&#8217;ve received this device and have time to write, let&#8217;s take a look at what&#8217;s in it.<\/p>\n<div id=\"attachment_322\" style=\"width: 592px\" class=\"wp-caption aligncenter\"><a href=\"\/labs\/wp-content\/uploads\/2012\/11\/unboxing.jpg\"><img aria-describedby=\"caption-attachment-322\" decoding=\"async\" loading=\"lazy\" class=\" wp-image-322 \" title=\"Unboxing the iPPea\" alt=\"Unboxing the iPPea\" src=\"http:\/\/www.compdigitec.com\/labs\/wp-content\/uploads\/2012\/11\/unboxing.jpg\" width=\"582\" height=\"389\" \/><\/a><p id=\"caption-attachment-322\" class=\"wp-caption-text\">Unboxing the iPPea<\/p><\/div>\n<p>The iPPea comes in its own packaging, in addition to the 3D gyroscopic remote offered by Option B.<\/p>\n<div id=\"attachment_321\" style=\"width: 688px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.compdigitec.com.nyud.net\/labs\/wp-content\/uploads\/2012\/11\/packaging.jpg\"><img aria-describedby=\"caption-attachment-321\" decoding=\"async\" loading=\"lazy\" class=\" wp-image-321 \" title=\"The iPPea's packaging\" alt=\"The iPPea's packaging\" src=\"http:\/\/www.compdigitec.com.nyud.net\/labs\/wp-content\/uploads\/2012\/11\/packaging.jpg\" width=\"678\" height=\"485\" \/><\/a><p id=\"caption-attachment-321\" class=\"wp-caption-text\">The iPPea&#8217;s packaging<\/p><\/div>\n<p>The iPPea comes with some packaging.<\/p>\n<div id=\"attachment_320\" style=\"width: 351px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.compdigitec.com.nyud.net\/labs\/wp-content\/uploads\/2012\/11\/ippea.jpg\"><img aria-describedby=\"caption-attachment-320\" decoding=\"async\" loading=\"lazy\" class=\" wp-image-320 \" title=\"The iPPea after unpacking\" alt=\"The iPPea after unpacking\" src=\"http:\/\/www.compdigitec.com.nyud.net\/labs\/wp-content\/uploads\/2012\/11\/ippea.jpg\" width=\"341\" height=\"254\" \/><\/a><p id=\"caption-attachment-320\" class=\"wp-caption-text\">The iPPea after unpacking<\/p><\/div>\n<p>So, after unpacking, we are ready to play with the iPPea. The iPPea simply &#8220;plugs in&#8221; to any HDMI-enabled TV, just like how a USB stick plugs into a computer. It doesn&#8217;t take too long to boot up, about 15-25 seconds-ish (I did not time this).<\/p>\n<div id=\"attachment_323\" style=\"width: 413px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.compdigitec.com.nyud.net\/labs\/wp-content\/uploads\/2012\/11\/ippea-bootup.jpg\"><img aria-describedby=\"caption-attachment-323\" decoding=\"async\" loading=\"lazy\" class=\" wp-image-323 \" title=\"The iPPea's home screen after booting up\" alt=\"The iPPea's home screen after booting up\" src=\"http:\/\/www.compdigitec.com.nyud.net\/labs\/wp-content\/uploads\/2012\/11\/ippea-bootup.jpg\" width=\"403\" height=\"284\" \/><\/a><p id=\"caption-attachment-323\" class=\"wp-caption-text\">The iPPea&#8217;s home screen after booting up<\/p><\/div>\n<div id=\"attachment_324\" style=\"width: 276px\" class=\"wp-caption aligncenter\"><a href=\"\/labs\/wp-content\/uploads\/2012\/11\/ippea-cpuinfo.jpg\"><img aria-describedby=\"caption-attachment-324\" decoding=\"async\" loading=\"lazy\" class=\" wp-image-324  \" title=\"Output of \/proc\/cpuinfo on the iPPea\" alt=\"Output of \/proc\/cpuinfo on the iPPea\" src=\"\/labs\/wp-content\/uploads\/2012\/11\/ippea-cpuinfo.jpg\" width=\"266\" height=\"396\" \/><\/a><p id=\"caption-attachment-324\" class=\"wp-caption-text\">Output of \/proc\/cpuinfo on the iPPea<\/p><\/div>\n<p>Just a curious note here, the iPPea claims to support full 1080p, but my television reports it to be 720p. I did not notice any lack of quality though, the picture was still very clear and not pixellated.<\/p>\n<p>The iPPea boots into a full Android 4.0.3 installation, as mentioned before, with the twist that it runs a MIPS processor. It also features full wifi, which we will use in some diagnostics. Here are the \/proc\/cpuinfo and <a href=\"http:\/\/code.google.com\/p\/sysinfo-for-android\/\">Android Sysinfo<\/a> dumps for the iPPea TV:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nsystem type\t\t: JZ4770\r\nprocessor\t\t: MIPS-compatible processor JZ4770\r\ncpu model\t\t: Ingenic XBurst\r\nBogoMIPS\t\t: 1001.88\r\nwait instruction\t: yes\r\nmicrosecond timers\t: no\r\ntlb_entries\t\t: 32\r\nextra interrupt vector\t: yes\r\nhardware watchpoint\t: yes, count: 1, address\/irw mask: [0x0fff]\r\nASEs implemented\t: mxu\r\nshadow register sets\t: 1\r\ncore\t\t\t: 0\r\nVCED exceptions\t\t: not available\r\nVCEI exceptions\t\t: not available\r\nFeatures\t\t: fpu mxu\r\nCPU implementer\t\t: Ingenic\r\nCPU architecture\t: MIPS\r\n\r\nHardware\t\t: linden\r\nRevision\t\t: 0005\r\nSerial\t\t\t: 0000000000000000\r\n\r\nEFUSE0\t\t\t: d075370b\r\nEFUSE1\t\t\t: 02c00811\r\nEFUSE2\t\t\t: fc460000\r\nEFUSE3\t\t\t: 8a54c84f\r\nEFUSE4\t\t\t: 00000000\r\nEFUSE5\t\t\t: 00000000\r\nEFUSE6\t\t\t: 00000000\r\nEFUSE7\t\t\t: 00000000\r\n<\/pre>\n<p>&#8230;and <a href=\"\/labs\/wp-content\/uploads\/2012\/11\/sysinfo-1353803016317.txt\">the Sysinfo dump<\/a>:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nID=IML74K\r\nProduct=linden\r\nDevice=linden\r\nBoard=unknown\r\nCPU ABI=mips\r\nCPU ABI 2=mips-r2\r\nManufacturer=ingenic\r\nBrand=Ingenic\r\nModel=iPPea\r\nType=eng\r\nTags=test-keys\r\nFinger Print=Ingenic\/linden\/linden:4.0.3\/IML74K\/eng.spark.20120901.003556:eng\/test-keys\r\nTime=1346431472000\r\nUser=spark\r\nHost=spark\r\nHardware=linden\r\nRadio=unknown\r\nBootloader=unknown\r\nIncremental Version=eng.spark.20120901.003556\r\nRelease Version=4.0.3\r\nSDK Version=15\r\n<\/pre>\n<h2 id=\"aanchor\">Rooting the iPPea TV<\/h2>\n<p>Curiously, the iPPea comes with busybox built-in into the image. This will make working with the iPPea easier, as we don&#8217;t have to compile\/download busybox and deploy it &#8211; full access to all the busybox tools is available by default.<\/p>\n<p>But what makes rooting really easy is the fact that the makers of the iPPea handed the blessing of leaving ro.secure off. This means that a simple adb connection is enough to grant root access &#8211; all that we have to do is install a su binary.<\/p>\n<p>Unfortunately, the busybox su requires too much baggage of the traditional Linux system &#8211; notably \/etc\/passwd, \/etc\/groups and friends to work. Since this is a MIPS system and Superuser.apk is contains an ARM binary, that approach cannot work either. In addition, compiling su-binary from Superuser.apk requires the entire AOSP tree, which is too much work and network bandwidth for us. So, we will use <a href=\"http:\/\/www.compdigitec.com\/labs\/2012\/11\/23\/a-simple-su-implementation-in-c\/\">a portable C implementation<\/a> of su instead.<\/p>\n<p>This step does require you to plug in the iPPea into a computer with ADB, so be prepared to do so. You will also need this <a href=\"\/labs\/files\/mips-su.zip\">prebuilt portable MIPS Android su binary<\/a>. Skip over these steps if you are using the prebuilt binary (these are instructions to compile it yourself with the Android NDK):<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nexport ANDROID_NDK=\/opt\/android-ndk-r8c # set as you need\r\n$ANDROID_NDK\/toolchains\/mipsel-linux-android-4.6\/prebuilt\/linux-x86\/bin\/mipsel-linux-android-gcc --sysroot=$ANDROID_NDK\/platforms\/android-9\/arch-mips -g su.c -o su\r\n<\/pre>\n<p>Now that you have the &#8216;su&#8217; binary handy as well as your iPPea detected in adb (adb devices, you may need to chown it to make it visible), here we go:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nadb push su \/dev\/\r\nadb shell\r\n# now we are on the iPPea\r\nbusybox mount -o remount,rw \/system\r\nbusybox mv \/dev\/su \/system\/bin\/su\r\nbusybox chmod 4755 \/system\/bin\/su\r\nbusybox mount -o remount,ro \/system\r\nexit\r\n# now we are back to our computer\r\nadb reboot # to reboot\r\n<\/pre>\n<p>At this point we can put the iPPea back on the TV. If we open <a href=\"https:\/\/github.com\/jackpal\/Android-Terminal-Emulator\">Term.apk<\/a> and put in &#8220;su&#8221; and press Enter, we should have root:<\/p>\n<div id=\"attachment_327\" style=\"width: 490px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.compdigitec.com\/labs\/wp-content\/uploads\/2012\/11\/ippea-root.jpg\"><img aria-describedby=\"caption-attachment-327\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-327 \" title=\"Victory! Root access on the iPPea\" alt=\"Victory! Root access on the iPPea\" src=\"http:\/\/www.compdigitec.com\/labs\/wp-content\/uploads\/2012\/11\/ippea-root.jpg\" width=\"480\" height=\"207\" \/><\/a><p id=\"caption-attachment-327\" class=\"wp-caption-text\">Victory! Root access on the iPPea<\/p><\/div>\n<p>And of course, once we have root access, the opportunities increase without bound &#8211; chrooted Debian\/Linux, Android apps that require root, reformat and reflash with a custom ROM &#8211; the sky becomes the limit. We do, however, owe many thanks (and this is not meant to be sarcastic) to iPPea for leaving ro.secure at 0, allowing hobbyists to make better use of the hardware (which in itself is very neat).<\/p>","protected":false},"excerpt":{"rendered":"<p>Skip to the rooting process, if you wish. The iPPea TV is a pretty neat gadget, to say the least. The USB-stick sized device features a full Android 4.0.3 OS, a 1Ghz Ingenic JZ4770 MIPS processor (complete with FPU!), 512 MB of RAM, 2 GB flash storage, and about 800 MB of internal memory. Overall, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,759],"tags":[],"_links":{"self":[{"href":"http:\/\/www.compdigitec.com\/labs\/wp-json\/wp\/v2\/posts\/319"}],"collection":[{"href":"http:\/\/www.compdigitec.com\/labs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.compdigitec.com\/labs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.compdigitec.com\/labs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.compdigitec.com\/labs\/wp-json\/wp\/v2\/comments?post=319"}],"version-history":[{"count":0,"href":"http:\/\/www.compdigitec.com\/labs\/wp-json\/wp\/v2\/posts\/319\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.compdigitec.com\/labs\/wp-json\/wp\/v2\/media?parent=319"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.compdigitec.com\/labs\/wp-json\/wp\/v2\/categories?post=319"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.compdigitec.com\/labs\/wp-json\/wp\/v2\/tags?post=319"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}