Below are the entries for the Tablet Z Development Contest (in random order). The subsequent posts in this thread have more details of each project including the developer's most recent information on the project. Before casting your vote, read through each of the projects in full - you can't change your vote after you've made it!
lilstevie - Open Source LK (LittleKernel) Bootloader + Recovery
What is LittleKernel?
LittleKernel is an opensource bootloader for qualcomm devices available from codeaurora.
LK allows running separate boot and recovery that are fully independant of eachother.
Sony use a special method of booting into recovery for their updates, this is not available when you are unlocked, and there is no button combination to enter this mode. As a result the common method to get recovery on Xperia devices has been to use an initrd that has a script to load either normal boot or recovery boot based on a button press. This is a far from ideal solution as when you update your kernel it also updates your recovery. If something goes wrong you are stuck needing a computer to reflash the kernel partition.
With the recent addition of TWRP support for the latest devices there have been advances made in this technique making recovery updatable it still requires the flashed boot image to support that method. This is less than ideal still as it reduces choice in what you want on your device, giving the decision to the dev of the rom you have flashed. This also leaves you in the position of needing your computer if a kernel update fails for any reason.
LK solves these problems by separating out boot and recovery to their own kernels with their own ramdisks like every other device, if you flash the boot kernel, recovery isn't touched and will be there for you as a failsafe in case anything goes wrong. This removes the need to have a computer near by in case of breakage occuring.
What progress has been made?
LK is operational, small bugs still need work and driver porting for lcd and notification led are underway.
Apache14 - Open Source Infrared Receiver & Transmitter Library
I have been working on the open source library for allowing the use of the IR transmitter and receiver on the Tablet Z, At the beginning of this project I believe there was no other project looking into IR functionality in community driven roms (so this project was started from scratch).
As this project was started from almost no information about the IR device / protocol ect. there have been many stages of the development, this was split into 3 very distinct stages, please see below a lost of these stages and the progress made.
Stage 1 (Analysing communications)
This stage was mainly finding how the information was sent to the IR device and in what form. It was found that the IR device was connected to a tty serial port on the qcom main processor (ttyHSL2 in user space), from this I was able to "sniff" out the data sent and received by the application on the sony stock rom. This data was analysed and all possible commands where extracted (Get raw data, Send raw data, send specific key, get version).
Stage 2 (Create native library)
After the commands where known a library was created (in C) to enable the use of the IR blaster chip, this was a lot of trial and error as it was very timing specific (sleeps / poll ftw :P). This part was surprisingly easy and i was able to get a working library that enabled learn and send command within a few days
Stage 3 (Create a application for everyone to use)
Once the library was completed to a point where it was usable, an application was created making use of the library as a JNI library. As I have little android java experience this is probably the weakest aspect of the project to date. This app went through a number of revisions and started off as 2/3 buttons for testing (this is illustrated below in the picture / video section. The xda member isimobile took one of the revisions and made improvements to the UI as well as using an SQL database to store the keys.
One aspect of the original plan that has not been explored is the robotics aspect, however this is mainly due to the amount of work required being much more than i first planned on.
Please find the links to source code (for library and app) as well as some videos and pictures to illustrate the projects timeline.
As it stands below is the current placement with the three parts of the project:
Standard LoA - I have completed testing of all current images and everything works as it should, when running stock you must make the system partition r/w but this has all be added to my thread. In fact, this is the best device so far in terms of smoothness and actually usability over VNC.
However I have also made good progress with getting rid of VNC and using the Android frame buffer for graphics out put, so it takes more to switch between Android and Linux BUT you get a much better linux experience. I hope to release this in the coming few days once a few graphics glitch with Unity have been fixed.
LoA ROM - I have also started work on the ROM, getting my read around the ROM git structure has been the first port of call and actually getting my mods integrated into a repo so others could build is what I am working on at the moment. As it stands I have pretty much finished integrating the required code to launch and boot the images within the ROM so no need for a stand along app, just pull down the status bar and hit boot linux. Also added the settings for it all into the ROMs settings menu to make it all feel nice and one. I have plans then to integrate Linux and Android more, with the final result being a free version of everything Ubuntu edge can do but on hardware that you can actually buy
Native Linux - Only just started on this now as personal I prefer the other two parts of the project as I like to still have android at my finger tips when needed
So in all while I may have not completed as much as other projects I do think my project has a lot more to do and is certainly not something I will be stopping any time soon. Users already have access the standard LoA and I have started to see more Tablet Z popping up as installing the app, we also hope to push a 'alpha' of the ROM to the tablet Z very soon once the git is all sorted so people could integrate LoA into other base ROMs if they so please.
sailnw - App for Sailors and Cruisers Using Waterproof Tablet
As I mentioned in the contest entry, the app I am working on is for active sailors and cruisers which would utilize Xperia Z's waterproof features and excellent form factor for use in salt water environments under way. At this stage I am collecting input from active sailors and cruisers regarding features and design of the app. Planning to have app flow and some screen designs in September. Also actively looking for project participants on the development side.
Goal: Create a multiboot solution for the Tablet Z.
The goal consists of two parts:
1) Ability to dynamically boot images without flashing them
2) A solution for picking the boot image to run.
Step 1 was completed within the first week after receiving the tablet,
and sources are available on my github. Step 2 was much more complex. I first evaluated the solutions
currently available, primarily kexecboot(.org), MultiRom (TWRP-based
for N7) and petitboot. Common to all those solutions is that they are
overcomplicated. Some automatically scan for things that looks like
roms and some requires special made update.zip's. On top of that most
solutions are less than good looking.
With that in mind, I set out to create something extremely simplistic - the result is Hydra.
There are some minor features missing before it's ready for release, but the GUI and boot setup works. Features:
* Auto-aligning grid of large, good looking icons for selecting image - currently a maximum of 10 images.
* Flashy buttons automatically created based on a target-specific image
* Optimized graphics display to ensure smooth rendering
* Automatically append required commandline arguments
* Read boot configuration from a simple boot.ini format - supports boot.img's and raw kernel + ramdisk + cmdline setup.
* Auto-boot a default image after a configurable timeout
* Per-boot.img runtime settings - planned but that's for version 2.0
* Scrollable grid - allowing for more than 10 images.
* Automatically locate boot.ini's in a boot subdir on all storage units that are mountable. This means autodetecting available images on microsd or usb harddisk.
What I've accomplished:
- added a History page
- added better bookmark layout (fixed bug in full-screen mode)
- better full screen URL handling
- added some more animations
- incognito mode (does not record URLs visited or searched, and runs without cookies for extra protection)
- notify user of SSL certificate errors
- popup tabs now work
- fixed bug where certain sites wouldn't display until touched
- better full-screen video (flash is still partially broken… it’s Adobe's problem)
- memory management
- HTTP authentication
- multiple search engines
- ability to change download location
- text re-flow
- ability to import bookmarks from either the stock browser or Chrome if you are signed in
- text size
I haven't had much feedback in the Tablet Z forum, so I've mostly been working off the feedback I've been receiving in my main thread in the application forum. It's a lot more lively there.
Thanks! I've had wonderful time developing with the Xperia Tablet Z.
I am mamenyaka from XDA. My project is about porting Ubuntu Touch to the Tablet Z.
My thread is located here, and you can also check out the Ubuntu wiki page of the device.
Ubuntu Touch is running in a separated container on top of an Android kernel, so it is made out of two images: the device image and the ubuntu image.
The ubuntu image is provided by ubuntu in the form of a .zip file.
The device image is built by me, and it is based on CM.
To install Ubuntu Touch, you just need to flash the two .zips in recovery.
The first step was to build the device image and remove unnecessary Android components. Some hacks were needed, because some components relied on external parts of CM that were excluded from Ubuntu Touch and some proprietary blobs were missing too. And there were some modifications needed by Ubuntu Touch, documented in their porting guide.
After successfully building the image, it turned out that WiFi and the Camera didn't work.
The WiFi needed some extra binaries and the kernel module itself needed to be loaded manually at init (insmod). But the WiFi is now working, and that is the most important part. Without it no development can be done with the Ubuntu SDK, because it downloads and installs a lot of packages on the device that are necessary to deploy your QT/QML apps.
The camera was fixed partially by acquiring the right blobs, but the Camera app itself is buggy, I think. Maybe it will be fixed in future releases.
All my work can be found and reproduced by using my github repos (the ones for Sony) and by following the porting guide.
As Ubuntu Touch is making the switch from being "just another Android shell":
Instead of booting into android and firing up the Ubuntu system after
android has booted, the new images now boot into Ubuntu and initialize
android inside an LXC container during boot.
the development will continue. Sadly, from 07-12 until now there has been no new porting guide, so the ports do not work with the new image (yet) and the development of the old format has stopped. Until then I am releasing updated images and experimenting with dual boot. In the xda thread I wrote a little tutorial on how to do dual booting with Ubuntu Touch and CM based Android ROMs, but it's not the real thing, but it works without the need of a PC (no need to flash boot.img via fastboot).
No response received asking for project update. Information below taken from project thread:
As for the hint, I’m going to start with two of them, as I didn’t add one last week. This project originally began as part of this prescient home and then I decided I could adapt part of it to be more fun than practical.
1. A great place to set down one’s drink.
2. Tabletop gaming.
What I’m calling the proof of concept project was put together while moving. It starts with a secret… I’m a bathroom reader. Okay, so maybe that’s not a huge secret (books and magazines strewn around the bathroom is a bit of a giveaway), but it’s not exactly a polite conversation topic. It was conceived while describing the project to a friend who pointed out that he doesn’t cook, but there was an alternate use he found noteworthy (i.e. reading the royal reports on the porcelain throne). Henceforth this will just be described as the book preparation device (or BPD to save some typing). The materials needed are superglue, a sharp knife (preferably something like an Exacto), an NFC tag, and a magazine that you don’t want to read anymore. Use the superglue to laminate a block of pages together, either the whole magazine or just a section large enough to house the NFC tag. The one I did was about a 3 inch square through the whole magazine, excluding the cover. This also left the edges loose, providing a more authentic magazine look, rather than a big mess of superglue. Once this is set and dried, outline the NFC tag on the block for the pattern to cut. Cut and remove layers until you’ve made a cavity large enough for the tag to fit. Snugness is a personal preference, I left mine so that the tag was removable, but a tight fit and some glue could make this more permanent. Sony’s native Smarttag software works well for this application. Just customize the options so that the tag (blue in this case) triggers the tablet to open Play Books. A nice feature of Sony’s application is that there are ‘end’ actions, so a second contact with the tag causes a second set of actions to occur. I set this option to return to the home screen and read the time aloud (so that I know how late I am to wherever I’m headed). Once this is set up, leave the magazine near your reading chair. Place the tablet on the BPD as you sit down and presto! Your book is opened, as if by magic. When you’re done reading, set the tablet down again, stand, stretch, and poof! Your tablet has closed the book, told you how long you were lost in it, and is ready to travel to the next project.
I’ll add some pictures and a video here before too long. Maybe even a witty/catchy acronym to rename the project.
To utilize NFC and other features of the Tablet Z in order to produce a system which causes the tablet to perform actions in a semi-predictive matter.
I intend to modify items to produce convenient and unobtrusive ways of integrating NFC tags. This will provide the infrastructure for the system. On the device, software will be used to carry out instructions specific to the tag and other variables.
To put my sciencey talk into a more tangible example, take for instance the kitchen. What function would be handy for a tablet to perform by itself? The most obvious answer to me, is for it to open up a recipe. In order to accomplish this, I intend to create a stand with an integrated NFC tag, which would trigger the tablet to open a recipe app. Depending on the software side (which I plan on mostly using existing apps, as I'm not much of a coder), I would ideally have the system cross reference a menu that's been planned out (i.e. that you had planned for meatloaf on Monday night, the tablet would open directly to a meatloaf recipe). As a starting point, it will likely open to a random recipe. For anyone following along at home, the action should be easily modified on the software side. Perhaps some people prefer to catch up with HBO or listen to some Sinatra while cooking. The idea is in the same vein as the whole home-of-the-future concept.
This concept will be extrapolated to several rooms.Other planned functionality would be to automatically turn on the TV in the living room, play music in the den, set alarms in the bedroom, and perhaps a few other tricks along the way.
Before I wrap this post up, I'd like to say thanks to XDA and Sony for holding this competition and giving me the opportunity to create this project. I'd also like to say thanks to everyone who takes the time to follow the projects in this contest and hope that everyone has a bit of fun.
XDA Developers was founded by developers, for developers. It is now a valuable resource for people who want to make the most of their mobile devices, from customizing the look and feel to adding new functionality. Are you a developer?