For a few months now, my inbox has been pretty quiet. I thought that the war on spam is finally over, but then I noticed that my regular cron job emails weren't being received either.

I checked and disabled all my email filters, nothing strange there.

I disabled all my spam checks. Nope nothing there too.

Without many other options, I contacted my web host and they said it seemed fine. I sent various test emails and replied back saying it wasn't working for me on all email addresses on their servers.

Something seemed fishy, but I decided to bypass my usual IMAP method of use and went straight to webmail. Wasn't showing up there either.

The problem

Clicking around on all the options on Roundcube, by chance I stumbled upon an option to select folder subscriptions and noticed a bunch of folders which matched the names of my test emails!

It turns out somewhere along the line, in a "recent" update cPanel decided to redirect all plus-addressed emails to a subfolder matching the name of the sub-address. This was a ridiculously stupid decision as IMAP clients generally don't refresh the subfolder listings until you tell them to. With plus-addressing being a useful tool to determine where spam emails come from, it's a chore to keep refreshing the folders whenever I sign up to a new website.

Thunderbird and Roundcube both don't automatically subscribe to new folders when accessing your email via IMAP.

What makes it worse is there is no option to disable this default behaviour. They've just proudly written down in the docs as a note under "Email subaddresses" in case you happen to stumble upon it.

The solution

In the docs there are notes about tweaking EXIM (which sounds like it could cause more trouble), but thankfully I managed to find a help page by Ngage Hosting UK which provided a fix for this. I'd take a guess it was a response to customers frequently complaining about not receiving emails...

So my friend's computer has had issues with getting updates since day 1. I didn't really know why, but at the time a lot of the responses online was to leave it running overnight and hope for the best.

Eventually, my computers became victim to the same issue. For months, Windows Update would get stuck on the "Checking for updates..." or hang when trying to download the updates.

It also pegs a CPU core to almost 100% usage (or 25% in quad cores and 50% in dual cores) under the process "svchost.exe" while it searches aimlessly, wasting valuable battery life and compute cycles on something that should be sitting quietly in the background.

Note: svchost.exe is used to host many services, but in my case after stopping the "Windows Update" service, the CPU spike stopped. If this isn't the case for you, then you have another problem.

I stumbled upon some information by chance which described the issues. Apparently there were some changes to Windows Updates which fixes these issues, but only made available through optional rollup patches.

Great logic there Microsoft. You've fix your updater but made it optional, so anyone who uses it has to go on a wild goose chase in order to get it working.

These rollup patches come in a form of rollup updates, which basically mean they're a monthly service pack.

Before you continue... Service Pack 1 is required!

Make sure you're on Windows 7 SP1!

Right click on "My Computer" and select Properties. That'll give you the service pack information under "Windows edition".

And depending on how long your updater has been broken for, you'll also need the April 2015 service servicing stack update. For most people this shouldn't be a problem. Only download and install it the fix process complains.

This was an annoying issue plaguing me for the past year or so. I don't know exactly when it started happening or why, but there are numerous posts and issue trackers for it scattered around the internet without a solid fix.

The problem

The official YouTube app suddenly decides to stop working about 2 days after rebooting the phone. There's no real information available (as a user) to figure out what's wrong.

All it says is "There was an error while playing. Touch to Retry".

Oh but not to worry, you're still able to watch YouTube ads before the actual video itself.

For those more technically inclined, here's what the stack trace looks like when YouTube freaks the hell out:

Fixes that I've tried

Over the year, nothing I tried works aside from restarting the phone. That was the only thing that kept YouTube working, other than just watching it via the browser which bypasses the app altogether.

In case you've stumbled upon this guide while running into an entirely different issue, here are a few things that may get YouTube working again:

Clearing cache and data for YouTube

didn't work

Uninstalling and reinstalling YouTube

didn't work

Downgrading to an older version of YouTube

didn't work - I went all the way back from v11 to v6

Removing current WiFi details and adding it back

didn't work - some people believe this works

As mentioned above, restarting the phone

works for about 2 days. You'll find it frustrating after putting up with an ad and it doesn't work again

Using a web browser to play the video

Works consistently, but it's not as good as the app

The Solution!

Only until last week did I manage to find a new suggestion on XDA forums. I tried it out, gave it a few days and surprisingly it still works!

Unfortunately, it requires you to have root access to your Android device. I guess there's only so much you can do before you have to dig deeper to fix these sort of issues.

What you need to do is rename a few system files and restart the phone.

Open up a file explorer capable of browsing system folders. If your phone doesn't have one, I recommend FX File Explorer as it comes with root explorer mode.

Navigate your way to /system/etc/firmware/

Rename the following files to add ".bak":

tzwidevine.b00

tzwidevine.b00.bak

tzwidevine.b01

tzwidevine.b01.bak

tzwidevine.b02

tzwidevine.b02.bak

tzwidevine.b03

tzwidevine.b03.bak

tzwidevine.mdt

tzwidevine.mdt.bak

Restart your phone.

Make YouTube great again! You shouldn't have any more issues with watching silly videos again after doing this.

I've spent too long on Android without root access and it really bothers me. I need it!

Feeling imprisoned by my own Android OS... I did not sign up for iOS!

Overview

In order to back up the TA partition (where the DRM keys are stored) we need temporary root access via the iovyroot exploit, which is only available on a Lollipop build. This part is optional if you don't care about that functionality

Once that's done, you can unlock the bootloader. Doing so wipes the TA partition.

Upgrade to Marshmallow

We then trick the kernel into thinking it's still locked, giving us both root access and access to DRM-locked features.

Optionally, for completion we can also partially restore DRM keys from the TA backup.

Having your TA backed up correctly prevents any issues if you want to keep your DRM features such as camera optimisations.

Before starting, make sure you have:

enabled USB debugging via Developer mode

backed everything up. It's going to get wiped!

Before starting

We have to make sure that this process is actually possible with your device.

Open the dialler and enter *#*#7378423#*#* to access the service menu.

Go to Service info > Configuration > Rooting Status

If "Bootloader unlock allowed" says Yes, then you can continue with this tutorial.

If it says No or if the status is missing, then your device cannot be unlocked. Good luck.

Note: If it says "allowed" it means you CAN unlock your device. It does NOT mean your device IS unlocked.

While we're here, make a note of your IMEI number. You'll need it later.

Downgrade to Lollipop

If you're already on Marshmallow, then I'm afraid you need to downgrade back to Lollipop (and in the process wipe everything). Make a backup using the Sony PC Companion before doing so.

Download Flashtool and install it

Download firmware (It's Aussie firmware, but we only need it for a short amount of time so it'll do) and put it into %USERPROFILE%\.flashTool\firmwares

Start Flashtool

Click on the lightning bolt icon

Select "Flashmode"

Select the Lollipop firmware (32.0.A.6.200) and select the wipe options APPS_LOG, DIAG and USERDATA. Otherwise things will crash a lot and you won't get into the phone properly. Trust me, I've tried.

Turn off the phone.

Wait for Flashtool to finish preparing the files.

When prompted, hold "volume DOWN" button while plugging in the USB.

Wait for it to finish. Don't trust the progress bar! Make sure it's finished by reading the text. It will tell you when to disconnect and restart.

Backing up the TA partitions

(Optional if you didn't bother downgrading to Lollipop)

Now that you're on Lollipop, you can use iovyroot. With this we can gain temporary root access and dump the TA partition to a file. This file is what we use to restore the DRM keys to your device after it's been wiped by unlocking the bootloader.

Extract iovyroot_v0.4.zip and run "tabackup.bat"

Once it's done, you should have a TA-####.img file which sorta looks like "TA-16042016.img" and is approximately 2mb in size. That's your TA backup done and dusted!

Keep it safe somewhere.

Unlocking your bootloader

Go to Settings > Developer options

Tick "Enable OEM unlock"

Open up a browser on your computer and follow the instructions at Sony's developer website. You'll need to provide your email in order to continue. Mine got caught in junk mail so be sure to check that.

After receiving your email, entering your IMEI number and accepting some user conditions will provide you with an unlock code.

This is the point where I remind you again...

BACK UP WHAT YOU NEED NOW. There's no turning back after this!

Turn off your phone.

In Flashtool, click on "BLU"

Hold "volume DOWN" on your phone and plug it into the computer.

When prompted, release volume down and unplug.

Hold volume UP and plug it back in.

You should now get a dialog which lets you enter an unlock code.

Paste in the unlock code and click "Unlock".

Wait for the phone to finish doing it's thing and restart.

Your phone is now wiped clean so you'll need to go through an initial setup again.

Checking the service status again should now say "Bootloader unlocked: Yes".

Upgrading to Marshmallow

(optional if you're already on Marshmallow)

At this point you can either download the firmware I provided (if you're Australian) or download the right one for your region.

If you're not an awesome Australian, then you'll need to download your own firmware.

It will take some time to repackage the firmware files into an FTF file. This is what we use to re-flash your phone with stock firmware. It also contains the kernel file you need for the next part of the tutorial.

Now turn off your phone.

In Flashtool > Lightning bolt icon > Flashmode

Select the Marshmallow upgrade (32.1.A.1.185)

Wait for it to prepare the files.

When prompted, hold volume DOWN on phone, plug it in.

Wait until it's done. Restart and ensure the phone is working.

Rooting your Z5 Compact

Now for the main course. This is why you're here.

Open your Marshmallow FTF file using Winrar or 7-zip and extract out "kernel.sin".

In FlashTool > Tools > Sin Editor, open up "kernel.sin" and click "Extract"

This will give you "kernel.elf"

Extract the files from "rootkernel_v4.22_Windows_Linux.zip" into a folder without spaces (ie. not your desktop or program files)

Copy "UPDATE-SuperSU-v2.65-####.zip" into the rootkernel folder and rename so it becomes "SuperSU-v2.65-####.zip"

Open a command prompt to the rootkernel folder and type in "rootkernel kernel.elf kernel_patched.elf". This process deactivates SONY-RIC, removes DM-VERITY, adds TWRP bootloader as well as the DRM FIX.

Ensure that the SuperSU service was added by scanning the output for "Adding service entry for SuperSU".

If you come across this error, it means you did it on a Lollipop kernel.

- Found SuperSU-v2.65-20151226141550.zip Adding service entry for SuperSU source type fsck does not exist Could not add rule for perm: dac_override source type fsck does not exist Could not add rule for perm: write source type fsck does not exist Could not add rule for perm: create

I don't know how to fix it, but I'm pretty sure the author of rootkernel isn't bothered to fix it either.

Now that you have your patched kernel, it's time to flash it using Flashtool!

Turn off your phone.

Flashtool > Lightning bolt icon > Fastboot

Now we've got a lot of options! Click "Select kernel to Flash"

Hold the volume UP button and plug in your phone.

When the Kernel Chooser dialog appears, click on the "*.sin" dropdown to change it to "*.elf", then select "kernel_patched.elf".

It should finish pretty quickly with something like "Please check the log before rebooting into system".

When certain files in a project change, the project needs to be rebuilt/restarted/recompiled. Using the following git hook, you can keep an eye out for changes in certain files then display a reminder message to perform an update or just make it run the command automatically.

It's just a simple bash script that's executed by git after a successful merge.

Use check_run() to run the script automatically, or check_warn() if you want it to only be noisy about it.

Testing default setup

Generating Encryption Certificate

For this process I'm just going to self-sign a certificate to get your server up and running. The browser will complain about it for the first time, but after you add the exception and test that it's all working you can get it signed properly elsewhere.