Profile cover photo
Profile photo
Communities and Collections

Post is pinned.Post has attachment
Add a comment...

Post has attachment
Library injection, function hooking, and CF.lumen performance driver sources

I've released the sources for CF.lumen's performance driver, as example code for library injection and function hooking on Android.

The injection and hooking code supports arm32, arm64, x86, and x86-64, and has been used on Android versions 4.0 through 9.0.
Add a comment...

Post has attachment
libRootJava released

I have finally gotten around to releasing libRootJava, a library that lets you run your Java/Kotlin code as root, straight from your APK, with optional easy Binder-based IPC.
Add a comment...

Post has attachment

Post has attachment
500 Firepaper v3.00 - 500px to /r/EarthPorn

As you have probably already heard, 500px is shutting down their API mid-June. 500 Firepaper was built around the 500px API, and this would thus spell the end for the app.

I had warned I would probably not have time to update 500 Firepaper before the API shutdown, but I found some spare hours and did it anyway. It is something I run on my daily driver phone so it had a little bit of priority :)

Instead of using images from 500px, the app now uses images posted to Reddit's /r/EarthPorn sub. It's the best I could do with my limited time. While undoubtedly some users used different image categories, the 500 Firepaper default with 500px was Natures and Landscapes, and I think most users just continued using that default, so this should be somewhat similar. (The category selection option itself is now removed)

During the development and life of this app my positive opinion of 500px has generally turned to a negative one, but one thing they did have was a community of talented photographers producing high quality imagery. While I do not mean to say anything negative about /r/EarthPorn, it is not a portfolio site, so the images are noticeably different in quality.

Everything seems to work for me, but I only did a quick walkthrough of the app's functionalities, so it's not inconceivable you will run into issues. At least this should provide a little bit of continuity for 500 Firepaper users, rather than the app instantly self-destructing come June 15th.

Note: I built this release with Eclipse, take that DroidCon UK '17 keynote speakers.
Add a comment...

EOL-ing all my root-related things

In practice this has already been the case for some time, but today I'm making it official: all my root-related things are now end-of-life.

About half a year ago I decided I needed a break from everything Android, and reflect on how I wanted to proceed with it, if at all. Right now, it does not seem likely I will pick up development of any of my root-related packages or apps again.

For some of these I had big plans, and while it leaves me somewhat sad to not implement them, I am also unwilling to commit the time and energy right now to make those plans a reality - or even keep the packages updated. You can't have it both ways, so it's all getting shelved, probably indefinitely.

I'm going to start doing some spring cleaning on my apps, sites and threads over the next few weeks. Some will disappear, others will start with having a notice about them no longer being updated (yes I know for some of them it's about time too!) for now.

There are some non-root apps that I do plan to update again, but some will be shelved as well.

I am currently working on a (non-Android-related) project that is taking up most of my time, so those that I do want to update will have to wait a bit longer still.

In case you have missed the news, 500 Firepaper will also stop functioning on June 15, as 500px is shutting down their API. It is unlikely I will have the time to implement a different image serving back-end to the app before that happens.

There have been a bunch of requests to open source specific apps, and indeed it is (and has been for a while) on my todo-list to look into just that - I'm not promising anything, though.

Again I would like to thank everyone who has supported me and my developments over the years! I've met great people and made good friends, some of which I'm now actively working with on other projects, even.

But at the moment I'm not using root on my main Android devices for anything other than development, which turns it into a circular reference for me. As for regular Android, I have not been particularly enamoured with the direction it has been going in either.

But just because I'm not enthusiastic about working on these things now doesn't mean a new idea or project can't come along to change that at any time.
Add a comment...

Post has shared content
Some more pictures (panoramas were posted earlier) of my trip to Patagonia and Easter Island in 2015.
Add a comment...

Post has attachment
Retirement from SuperSU

A little over two years ago I announced SuperSU's impending transfer to CCMT and my eventual leaving the project. Now, at the 10 year anniversary of my first mobile app release (see for a recap of those 10 years), just after SuperSU both turned 5-and-a-half and hit 100 million users on Google Play, the time has come for me to officially announce that retirement.

Formally my contract with CCMT runs until February 24, but from now on I will serve in an advisory capacity only, a few hours here and there. I might still wrap-up the release of a couple of features I have been working on and are close to finished, but I'm not making any promises.

Though it has spanned multiple platforms, I've done a lot of the same type of work these past 10 years, probably too much. Letting go of this will free up the time (and mental resources) to allow me to pursue some other interests again; learn some new skills, gain some new knowledge, find some new projects that excite again.

Future of SuperSU

CCMT will continue SuperSU's development, and I am confident that will turn out just fine; the people I have worked with over there have all had their hearts in the right place. I feel the two year transitional period (including full code review by yours truly) we have provided has been ample for the naysayers to find other solutions.

What's next?

This does not immediately affect any of my other apps, though as several are root-related in time it obviously might.

While I do intend to shift my focus, this does not necessarily mean I will be leaving mobile app development. Who knows what projects will come my way, I have no shortage of app, feature and service ideas (some good and some undoubtedly bad), and there's always the quest for knowledge and experience. Just like was mostly a useful excuse for me to play around with Python, both Kotlin and Swift have been on my play-time wishlist for some time, and both are known to be used for app development.

Unfortunately I've had to pass up on a number of interesting projects over the past two years. Now my contract with CCMT is ending, this again allows me to take up other contract work, join new ventures, or even take a job somewhere. If you have a project I might find interesting on a technical level (does not have to be mobile related) or has a positive impact on the world (or smaller areas) don't hesitate to get in touch ( ).


Thanks again to everyone who has supported me (and SuperSU) over the years, it has meant a lot to me.
Add a comment...

10 year anniversary

Hard to believe it has been that long, but today marks the 10 year anniversary of my very first app release: KaiserTweak. An app that let you tweak 50-ish Windows Mobile settings, written specifically for the HTC TyTN II (aka HTC Kaiser) and later ported to a few other popular devices. I had released other tweaks before, but this was the first release that ran as an actual app. If I recall correctly it was written in C# with the .NET Compact Framework 2.0 - an endless source of headaches.

Time for a trip through memory lane, a chance to reminisce... this is going to be a long story.

Windows Mobile

I came from database information systems and web development background (oh the excitement!) originally, though I spent my spare time creating game-related tools such as Project Entropia Assistant (a sort of Steam Overlay before those existed) and [AAE]PBSS (an cheater-catching/monitoring tool for FPS server admins). Around KaiserTweak's time, smartphones were new and exciting, I was quickly hooked, and soon decided to switch all of my spare attention there.

It wasn't long before the first version of WMWifiRouter was released, which (quite unexpectedly) became a massive success, won several prizes, and ultimately became one of the best selling apps on the entire Windows Mobile platform. While this is something nearly every phone can do today, back then it was the very first utility to turn a mobile phone into a Wi-Fi hotspot and share the cellular data connection that way.

There were dozens of other Windows Mobile apps and tweaks. Patched 3D drivers (with NuShrike) to expose HTC's alternative facts about the Kaiser, FPU hacks (again with NuShrike), data connection management tools, battery saving utilities, ROM porting and customization utilities, cleanup utilities, various graphics-related utilities, and even a device unlock tool. The latter was banned from the Marketplace, but only after it became clear that it (hilariously) was not actually against Microsoft's policies and those policies would need to be adjusted.

While some of those were commercial in nature and helped pay the bills, a lot of them were free, and certainly the most fun to develop were the hacks and patches. Windows Mobile didn't come with sources, so many days were spent in IDA Pro trying to figure out what code did what exactly, and coming up with how to manipulate that code. Since we couldn't recompile things (and I was generally against modifying system files) most of these tools employed in-memory patching of specific processes and sometimes system-wide call rerouting. A similar technique was also used to (with mere hours of work) create a proof-of-concept Marketplace copy protection bypass. I had previously warned their design was flawed, but... :)

Those days the apps that were commercial were managed by a company me and a friend had set up. We had some employees and also did various contract work in desktop, mobile, and web development. I closed that shop shortly after I personally switched to Android, but we certainly had some great times there.


While I imported the HTC Dream (the first Android phone) as soon as it was released and played around with it a lot, I didn't fully move over personally until Microsoft announced they were killing off Windows Mobile and re-doing Windows Phone from scratch with nigh zero portability of existing code. Nobody really understood why Microsoft believed existing Windows Mobile developers (whose incomes had now vaporized) would follow them for another round of punishment rather than jump ship to iPhone or Android, both of which were now well established platforms. And surprise surprise, pretty much nobody did.

In those days XDA was a Windows Mobile only site and I (and several others) lobbied relentlessly for them to start adding Android forums. We were repeatedly told Android wasn't going anywhere, we should go away and start our own forums instead, and continued commentary would be earning us bans. Luckily eventually they came around, imagine what XDA would look like today if there were no Android forums :)

A lot of my early time in Android was spent porting CWM to various Samsung devices/firmwares, with built-in Superuser (together called CF-Root), and releasing root-using tools. Chainfire3D for example manipulated graphics drivers, provided the first evening/nightmode (CF.lumen) implementation available for stock+rooted Android, and through plugins allowed games built exclusively for one model of GPU to be played on other phones. This earned me interest from (and some trips to HQs of) some big corps in the tech world. Didn't take any offers, though.

There were apps like live logcat and live dmesg (both reincarnated as LiveBoot for 4.3+), Triangle Away, Mobile ODIN (reincarnated as FlashFire for 4.2+), StickMount, Recently, and quite a few that never really made it beyond the 2.x days; Android was a very different beast in those days from what it is today. The look and feel, device capabilities, APIs, it's almost a different platform altogether.

DSLR Controller came along, which was the first app for any mobile phone that could remote control a DSLR. This one also became much more popular than I expected, and is still one of my personal favorites. Over the years I've done a lot of contract work alongside my public releases, but some of the most interesting ones were based around custom builds of this app. One example is a cell-growth monitoring system for medical use; another is the camera-controlling software for the SVII, which was used to capture the breathtaking imagery used in Google's Underwater Street View.

Somewhere along the line I wrote SuperSU as a work-around for some of the issues I kept running into with the existing Superuser. I could never have predicted just how big that would get. Just this past month Google reported it passed 100 million unique users! While several other apps I've made have had more than a million unique users over their lifetimes, this is something else entirely - I can still hardly believe that number.

Another one of my personal favorites is 500 Firepaper. Some features it debuted were quickly copied in other wallpaper apps, validating them as good ideas. Too bad that over the years it lost the support of 500px, and as a result I've had to dramatically reduce it's bandwidth usage and thus the amount of imagery it displays, but at least it's still around and prettying up my homescreen!

This should cover the bigger and better known apps, but there are still a bunch more. There's even a couple of apps I wrote but never got around to releasing...


There was a short excursion into mobile VR as well. Development never went beyond prototypes, but when they worked right the image quality was amazing, and buttery smooth. We also had some interesting display manipulation code that let you run any app in the headset; lots of hours spent with GTA :) This never went anywhere (or hasn't yet?), but it was a fun project to work on, and it gave me the chance to visit several of the Silicon Valley giants' HQs.


It's hard to recap 10 years in a single post. There has been so much code. There have been so many apps, tweaks, and hacks. I've had the opportunity to go to a lot of great conferences and meet a lot of even greater people. I've had the luck to be able to work on fun and interesting projects with skilled people and great companies from all over the world. I've had the amazing good fortune of a large group of followers who have always supported me and the things I made. And of course I've also had some amazing luck in timing the right apps at the right time.

This has certainly been a good decade!

PS. While writing this I did Google a few things, and I was surprised to find that some of the older things are pretty much gone. Almost like they never existed, though I know they did. I guess not everything lives forever on the internet after all!
Add a comment...

SuperSU v2.82-SR5 and suhide v1.09 released

Two very minor bugfix releases.

A new TWRP was released for the Google Pixel series, now with proper Oreo support. Unfortunately, flashing both TWRP and SuperSU broke TWRP (booting TWRP and flashing SuperSU was fine). This has been corrected with this update.

Aside from that, Oreo devices using file-based encryption refuse to boot with an unencrypted data partition. This update adds a work-around for this. The Pixel is the only device I currently have with this requirement (though it will become the new normal in time), so I've only properly tested it on that. This will allow you to flash back unencrypted backups to previously encrypted devices on stock+rooted firmwares.

The update to suhide hides a few more left-overs than before, including those created by the above feature to bypass the FBE encryption requirement.

The downloads at have already been updated with the new versions.


SuperSU v2.82-SR5 flashable ZIP:

suhide v1.09 flashable ZIP:


- suinit: Fix (flashed) TWRP 3.1.1 compatibility on Pixel (XL)
- FBE: allow FBE devices to boot unencrypted (unless KEEPFORCEENCRYPT is set)

- Remove ODM and OEM mounts
- Setpropex: set multiple properties
- Cleanup: remove /boot

Add a comment...
Wait while more posts are being loaded