Attempting to fix my ASUS Transformer TF101’s blank screen

Been a while but finally I’ve got a moment to update my journal, lol. Saturday night, Andera (my TF101-B1) slid off the mattress and ended up with a blank screen, and briefly some green garbles. The backlight was still working and my tablets survived the same and worse landings unscratched so, plus I know what kind of guts these things are made out of, so I knew it couldn’t possibly be hardware failure. The photo’s I took are all captioned and in an Album here.

Determined, on Sunday I went out in search of a torx screwdriver. As it happens, Fry’s didn’t have any T5’s left, just T6’s and the threads over at xda-developers said T5. So I spent the worst $10 of my life, on one of these. It’s a real piece of shit beyond the driver bits. Turns out though that some joker decided to stuff a Phillips PH000 in place of a Torx T5, and not include the T5 anywhere o/. Fucking bastards! But on the upside that was the right size for the Phillips screws I had to work with.

So I ended up undoing the torxex on the bottom (by the docking port) with a T6, and left one of them stripped by the time I was done. After that it was time to pry off the bezel, which I did a dandy number on; when putting it back on resulted in a barely working power button,I pryed it  up and used gravity to fix the power button before snapping it back in. What I found was that it’s a lot easier to pry off from the back end, YouTubest be damned.

There are three screws on top and bottom, and two on each side. I kinda missed the top three taking off the back plate so it might be good that it’s just cheap plastic.

Getting the base plate on/off was easy. Also under the metal plate that goes over the battery, is an empty space that looks like it is where you would install the 3G modem on a TF101-G.

Most of the connectors are the ugly ribbon goes into stupid pin slot with flip holder kind of Flexible Flat Cable thingy. I hate those and don’t know why they are so popular, but alas, I didn’t build the darn thing or design it. So next up I had to figure out which one is the one I needed, I tried all of them that were readily accessible just to be safe (bad idea).

In my poking around xda-developer’s I found a link to somewhere that sells replacement screens, that told me where to find it. There is even a YouTube video on the whole procedure (I’ll edit in a link from my browser history later). I personally found it easier to remove the power connector so I could access the video FFC better:

To be sure I was right or would more likely figure out what it does (in case of gross ID10T error on my part), I pulled it and reseated it very firmly.

Fired it up and voila! The touch screen was working. So I studied how much I fractured my bezel and put it back together, note carefully that the holes nearest the docking port are for the TORX screws that go in LAST!

On boot up, everything went perfectly well until I noticed that back and home didn’t work. A little bit of testing showed that entire portion of the touch screen is not getting any touch events :'(. I’m not sure if it’s another ribbon out of place or just that I missed a couple screws on the back plate (d’oh). But since I  have the dock, I’m pretty much able to use it. The one torx is now too stripped to drive, so until I figure out a solution to that, Andera is missing touch input on the left most (view able) inch of the screen.

I don’t have a drill or I would just hit the hardware store for a drill bit to get the sucker out, and trust me,  my trusty awl doesn’t seem to one to carve a slot in it. Don’t have any rubber bands good enough to try, so I’m thinking about grabbing a tube of epoxy on the way home from work and see what happens….if I can fix it, I’m gonna fucking fix it! In the mean time, I’ve ordered a Transformer Prime / TF201-B1, because the best I can get here is a TF101-A1; and I’m already using over 10GB on my TF101-B1, so $400+whatever memory card Best Buy has, is not worth it. Like wise, if I’m getting stuck spending so much money, may as well buy the prime instead of a later version of TF101-B1 (mines a B50 with no Q/C issues). I’m very partial to my mid-generation TF101….

Oh, btw don’t forget to put the screws in the back plate if you try this at home.

Dropbox 2.0 for Android: fixing your folder

I don’t get why so many people are pissed at this. The old folder location was at ${sdcard}/dropbox. This is really good for an app like Dropbox and I wish they would have kept it, but to be honest, it does technically belong in the new location of ${sdcard}/Android/data/com.dropbox.android/files/scratch. Although I would’ve used dropbox or cache instead of scratch but whatever.

Don’t like it? Well guess what, fix it yourself. Open a terminal emulator [0] [1] and do the following:



example# ln -s /mnt/sdcard/Android/data/com.dropbox.android/files/scratch /mnt/sdcard/dropbox

If you get an error about no ln command being found, you should install busybox and add it to your $PATH.

If you’ve got a real MicroSD card, you may get an error about the operation being unsupported (etc). In which case you either need root or you need to use a file system that supports symlinks. Which means probably reformatting your memory card as NTFS, or EXT4, or YAFFS2. Whatever your shit can read, because FAT32 is probably not going to support symlinks.


If you’ve got a device like my Transformer, that has an internal memory on /mnt/sdcard (${sdcard}), odds are the actual data is somewhere behind a FUSE shim, and is really stored at something like /data/media on an ext4fs partition. Easy symlinkage!

If none of the above makes any sense, you only no one tenth the power of Android and should have learned more about unix and Android, or maybe have bought an iPhone.

Thoughts on Android Game architecture

Games for Android are a little different than writing for PC or console, really seems to be less of the dull grundge as well. But at the price, for more advanced efforts there are less resources sitting right there on Fresh Meat or Source Forge for the hunting up. Me being me, of course, I aways have an interest in cross platform portability (as well as a general disdain for Oracle Java).

One thought that occured to me, is why not do it the same as I would on a PC?

What is the activity to a game? What the user sees. All it really needs to know is processing input, rendering output, and talking to the big cheese. That’s it. Hell, before we talk communication methods, step back and think there: an Android activiy and a Windows executable could both function as clients, talk to the same server, and have a cross platform multiplayer game. Or even a screen like detach/reattach feature where you could begin playing on your mobile phone, then switch to a PC with way better graphics. Threating the user side of the app as a “Client”, it would be possible to have a low-end client for basic phones and a high definition client for sexy tablets.

To make it work, we need a service program to communicate with. On a PC, I would probably use shared memory for offline play and sockets for network play. In favour of shared memory, would be the ease at which C++ code would likely be tweakable to use a shared memory allocator to store command objects, rather than having to do as much extra leg work to serialize the information within across a process boundry. Android land makes most issues a moot point. Network wise, I’d probably just use JSON.

Something that interests me, is how much of the core game design be implemented in such a way, that it could be used off Android by reusing the same library. C code, whatever C++ code the NDK can compile, or Java code should all work, as long as long as one watchs what non-portable bits are stuffed in there.

Putting this much thought into it, can probably be blamed on poking around the FreeBSD and Q3A source trees over the years, and finding the possibilities fascinating lol.

Thoughts on Android development *ON* Android

I’m crazy enough for it, after all BTEP+{bash,vim,coreutils,etc} on the TF101 is about as pleasant as on a netbook. The difference between BTEP and XTerm, makes something like Screen or TMUX a necessity IMHO and I favour the latter. Also copying and pasting from vim to Android apps is different. Without vim’s X support, a temp file is the best solution until BTEP gains real support for text selections.

My point being, if you can use a netbook and a command line environment, doing it on Android is no different. Hell you could even SSH into a phone from a PC if you lack a Transformer or a tablet+Bluetooth keyboard setup. Only people that _require_ something like Eclipse or Visual Studio are seriously impacted, and emacs and vim are good tools when combined with GNU tools (BusyBox a bit less so).  I have the equal of Debian without X.Org running on my transformer, a decent terminal emulator, and a real keyboard. So I am well equipped.

Now, the sticky part is actually being able to compile and run Android Java programs. You can write the code on a napkin if you want but that doesn’t work with your devices CPU quite so easily.

Android developers should already know the compilation model:



        *.java -> *.class -> *.dex -> classes.dex

A compiler is used to convert the source code into Java bytecode. This technically means that any language that you can get running on a JVM, and interface with Java code, you can probably use for Android development; in practice I’m sure there are more devils in the finer details.

After we get the Java bytecode, we have to convert it into a format for the Davlik VM to run. That’s where the dx program comes in. It translates Java to Davlik.

Because applications are rarely composed of pure source code, especially Android ones, things get slightly more complicated to create a .apk file you can install. The packaging tool aapt, apkbuilder, and aidl programs join javac and dx in creating the .apk file, the end goal of our the toolchain. In practice: .apk is pretty much .jar, which is pretty much .zip. Only classes.dex is used instead of a .class file per class in your code, and something I wonder why Sun never thought of!

Now, the issue is obviously how to run all this shit on an Android device, like my Transformer.

Google only publishes SDKs for Windows, Linux, and OS X systems on x86, Linux+ARM isn’t supported, sadly. Installing an x86 emulator and a mini distro with Java  and ssh is over kill, even for my Debian chroot loving self! BUT most of the SDK is in Java or BASH!

Java runs on Debian/ARM, so we can install a JDK and JRE, and thus get access to the Java side. Bash is already available for Android, let along Debian/ARM. So! The point of concern becomes x86 binaries. That seems to amount to most programs in platform-tools/ and tools, but what do we /actually/ need? Well guess what Jack, if we’re doing development on device, we don’t need the emulator! AFAIK the tools we do need are:  apkbuilder, dx, javac, probably jarsigner. The aapt and android programs being good to have, ditto for ant I’m sure.

aapt is a binary, so at best it would have to be natively or cross compiled, and much like make in C country, we can probably do it another way. The source is probably in the Android Open Source Project (AOSP) somewhere, which would make this easier.

android, apkbuilder, and dx are bash scripts.

android sets up an invocation of the Java VM (java) with tools/lib/sdkmanager.jar and a suitable SWT JAR and runs the program. I don’t know if SWT needs to be in the classpath when running it in command line mode, but hell, Debian/ARM = SWT deb somewhere.

dx is similar but uses platform-tools/lib/dx.jar.

ditto for apkbuilder, but using tools/lib/sdklib.jar

In looking at the manifests, a suitable Java execution environment is all that is needed for the serious leg work. That surely can be done using the JRE and/or JDK debs. Hoorah! And obviously the point of the “platforms/android-*” stuff is for javac and the emulator to work, android.jar in particular is our interest.

One downside, dealing with Renderscript or NDK stuff is another delema as obviously those rely on binary stuffs that are not Java, and AFAIK the toolchain for Renderscript depends on an LLVM frontend, so idk how to deal with that yet, but I’m not worried about it — most applications shouldn’t be using renderscript, unless maybe you’re making Modern Warfare 4 on Android >_<.

So I think, I is in business.

PostScript: I am aware of the Terminal IDE app but prefer to be closer to the official SDK and I would rather stick closer to my Debian chroot, especially because BTEP+tmux is a better place for using VIM with a real keyboard.

I can’t hep but think, that my brain is trying to tell me something, when I find myself fumbling with mail.google.com.

In the gmail app on Andera, viewing a message displays the message list off to the side as a fragment. None of that &lt; or &gt; buttons for Android. I’m so used to it now, that in Chrome, I was almost thinking, “WTF where did my message list go?” when I saw the usual “Labels” side bar. Oi vey, I need to stop using PC’s so much!!!!

Reflections on the ICS / TF Prime craze

In the time frame of like July/August I was rather interested in Android 4.0: Ice Cream Sandwich, as well as the ASUS Transformer TF101 that I’m writing this on :-). During the time since though, I am kind of sick of hearing about ICS. However I will admit that I am glad to be proven wrong by some froathy mouthed visitors to xda-developers, that the TF101 ASUS did decide the TF101 will get ICS. 

In the lead up to the ASUS Transformer Prime being announced, the forum section for the TF101 has to many people geared up to swap their TF101’s out for TFP’s, that you can’t help but remember: it is a techno-geeks paradise! That being said, if I have to hear much more about the Prime, I will frakking smack someone lol. 

When I got my TF101, I had the option of waiting a little while for the Prime or getting the current TF101, and obviously chose the original Transformer. Why? It’s got good enough hardware (arguably better than what I need), and it is better debugged. The platform is established along with at least 4 ROMs: Stock, Prime (what I use), Revolver, and Android Revolution HD. Another has recently began as well. 

Now, my concern is what comes after the Transformer Prime, and whether or not it will be worth the upgrade from my TF101. Hehehe. I really hope that ASUS continues with the Transformer product line for a good while and keeps developing it. Either that, or when I retire Andrea, I will probably have to evaluate between a laptop or a tablet with accessors.

Last night I was playing around with custom launchers on my phone. I have an Android 2.2 based Optimus T, so the onky real thing to gripe about is how the “LG Home” apps draw divides into “Applications” for stuff that came with the phone and “Downloaded” for stuff installed by the user. I hit up Google to learn about the basics and what major players exist; I’ve heard of a few but tried none. The launcher is basically an app that provides your application draw and “Home screens”. Go Launcher Ex, ADW Launcher, and Zeam Launcher are the ones I opted to try. In the end, I settled on Zeam.

Zeam has the feature I wanted most: a sane applications drawer. I don’t need the more fancy features of the other two launchers app drawers, and care little about theming. I’m more interested in performance and productivity versus my phones almost-stock launcher. What really makes for a sweet combo’ is Zeam’s dock. I can place shortcuts in the dock and scroll to the side. I’ve been doing the same thing with my home screens. It’s also convienant to e.g. have Opera Mobile where the Dialer/Phone app usually is: I rarly make voice calls.

Zeam doesn’t have many features and the settings are few and self explanitory: it can be configured inside of ten minutes. So far it is simple, stable, and does precicely what I desire and little more. That’s all anyone can ask for, oh and it’s free :-).

Google Music for Android force closing on playback

I had transferred my music files over to Andrea (TF101) from Alice (netbook), and after getting my invite, I transferred them over the work group to my gaming system, so I could add stuff via the PC media player. So I decided to clear my /mnt/sdcard/Music directory and reclaim some disk space, since I rarely listen to it all and I have other copies of the data.

Pretty much, I ended up with a Google Music app still reporting the local data and force closing on playback, even after stopping the service and clearing the apps data. After a little Google fu to see if it ought to work, I rebooted into recovery and hosed the dalvik cache; one perk of being root.

Now it works perfectly, and I doubt I really need a gig of files laying around so Google Music is an idea I like. Even more so because I tend to listen to radio streams more than I buy music, hehe.

A few thoughts on Polaris Office

Although it’s not a feature I was particularlly interested in, so much as the whole dock+battery life thing, I must admit, the Polaris Office suite that ASUS bundled with the Transformers does add value. Most phones come pre loaded with a lot of crapware, and rarely do I actually use any of the crap pre-loaded on my phone, or Andrea. Generally, I don’t need office suites. I used to use word processors excessively so I focus on those tasks. For years now: my word processing tasks get done in Vi IMproved and converted into a format for publishing; such as HTML for web or PDF for general reading. If I wanted someone else to edit the stuff, I would not send an MSWord file either. Read only data should not be sent as a writable .doc[x] file. I don’t do Power PoinT presentations. What stuff most people do with a spreadsheet, I generally do with Python or Perl; a more natural interface for my brain. In fact, there are only about two times that I really use office suites. If I need to share editing tasks with a bunch of people that are probably technically illiterate or just have better things to do than pick up a suitable format; I use Google Docs. For work, I use LibreOffice. That covers both reading whatever files might pop in from other departments but in eningeering we all pretty much rely on plain or marked up text; it’s really mutt/lynx friendly you could say. Something that caught my eye was a comparason of Android office suites over at XDA, Polaris was clearly a solid product. In my own tests, all I can say is that most Android apps for dealing with rich text formats seriously suck. Examples include Google Docs, Blogger, and Evernote; the last is probably the best unless you feel comfortable dealing in HTML for more stuff. Polaris Office is a really is the only Android app that I’ve seen, that really feels like a “Word processor” and so on. Today however, I noticed that the spreadsheet activity may be useful to me. At work, we have time sheets in Excel template format; I have both an Excel (.xls) and Open Document (.ods) files to use as a template; normally I fill it out using LibreOffice and the .ods version, and print it off my work station. I tried opening both files with Polaris Office today, and noticed while it doesn’t understand Open Document formats, viewind and editing the Excel file works perfectly. Rather than screw with Android+Linux+Cloud Print, I just did stuff off my workstation. Why this surprised me is that Google Docs rather fails at doing the same, for both formats. So the question I would have to ask, is how well does Polaris Office do in generating files that work with other office suites (E.g. Microsoft’s), and ditto for interfacing with Google Docs in both directions. Either way, it looks like the ASUS Transformer is as fully functional as my work station and home PC, but sans binary compatbility (x86, x86_64 != ARMv7) and Direct3D. Someday I can’t help but wonder if we will have Android PC’s powerful enough to run Windows in a Virtual Machine for legacy applications.