Flashing Android custom rom

Why bother? Because your stock Android phone probably comes with a sh1tload of applications you don’t need and is infested with Google spy tools. Many custom roms build on top of AOSP (Android Open Source Project) and tailor it for your phone’s hardware. My favorite project is LineageOS, the successor of the now defunct CyanogenMod. But to be honest, I haven’t tried much else.

AOSP roms come without any Google applications (short: GApps) to begin with. But since life without Play Store and Play Services is going to be difficult, you’re going to want to have a minimum set of GApps. To get those, right after flashing your custom rom*, flash a GApp package. There are different packages out there, NikGapps, MindTheGapp, OpenGapps. I highly recommend going with OpenGapps because it allows you to restore your Google Backup! Also note that.

* If you accidentally reboot into system after flashing the custom rom, do a factory reset (only resets the new OS), then go directly back into TWRP and flash your GApps package.

Phone Stupid

How to brick your Android phone


  1. Make sure your phone is encrypted
  2. Unlock the bootloader (OEM unlocking)
  3. Erase user-data partition

Not enough! Your device seems bricked, but since you can enter recovery mode it can be saved by reformatting the filesystem (ext2 -> ext4, repair system).

To actually brick your device:

  1. Boot your phone into fastboot mode
  2. Make sure the bootloader is unlocked
  3. With the fastboot command flash a new boot.img to the boot partition
  4. Done

Interesting facts about Android:

  • When unlocking the bootloader all your data gets wiped
  • Does not let you downgrade to older firmware versions

Also don’t ever rely on the Google backup function:

  • Google backups can only be restored on initial system setup
  • Google backups don’t contain any app data (so what’s the point of this backup?)
  • Google will sync your phone contacts into your Google account, the contacts you backed up can not be restored otherwise
  • System settings are all lost even if you backed them up

Instead, backup your data using OEM tools (OnePlus Clone, Samsung whatever ..).


How to unbrick your Android phone

If you’ve completely bricked your Android phone and the screen stays black, don’t give up just yet! There’s still a chance. Because all Android phones use a Qualcomm processor it is possible to directly communicate with the chip the „EDL“ (emergency something…) mode. Then you will need a special tool and a decrypted firmware file to flash. If you’re lucky, you can find all of this in the interwebs for your phone model.

So what’s needed?

  • Windows… with signature verfication turned off („Test Mode“)
  • Qualcomm Driver
  • Decrypted Firmware (.osp)
  • MSMDownloadTool to flash the firmware

To put your phone into the EDL mode the simplest way I found is this: Turn off phone, hold both Volume Buttons while plugging in the USB cord.

Once that’s done you will have a phone that’s gone through a true factory reset. Now you have a stock phone with the firmware it originally came with. Next surprise: once your device back up running you won’t be offered any system upgrades, at all. Why? Because the update servers deliver incremental updates, and they no longer host updates for your outdated phone. It gets better: If you manually try to upgrade to the latest OS and the version difference is too high, the upgrade will fail.

The solution is that you do incremental updates to latest version manually starting from your current version (the way your system usually is updated), e.g. Android 8 -> 9 -> 11. You can find the OTA (over-the-air) update files online. At least for OxygenOS you can also use the „Oxygen Updater“ App, it downloads the OTA’s in the correct order for you.



MQTT is a communication protocol for IoT devices. It is super cool, but setting it up can be confusing. It consists of a MQTT broker, a central node that all clients connect to and which is responsible for handling and passing on messages, and the the MQTT clients. Since Arduino comes with a MQTT you can build a MQTT client into all sorts of things.

If you use OpenHab you will have to set up the following „Things“:

  • MQTT broker bridge: connects to broker
  • MQTT thing: connects to bridge

433 hacking

How do you control RC switches without a remote? The answer is by using a 433 mHz transmitter in combination with a microcontroller or RPi. Many switches have already been decoded and are part of the rc-switch library. If not, like in my case, you have to record the analog signals and decode them yourself. But the process is straight-forward, thanks to this guide: https://github.com/sui77/rc-switch/wiki/Add_New_Remote_Part_1


Homebrew: 2. Läutern

For the „Läutern“ (or „Abläutern“) step a „Läuterbottich“, a tub / bucket with a sieve inlay and outlet tap, is commonly used. The wort („Würze“) is transferred into the Läuterbottich and left for a defined resting time, the „Läuterruhe“. During this time the draff („Treber“) sets down onto the sieve and acts as an additional, finer natural sieve.

The wort is then cleared in two steps: 1. „Hauptguss“ (main pour) 2. „Nachgüsse“ (post pours).

  1. In the Hauptguss the first wort („Vorderwürze“) is progressively tapped off poured over the draff cake. This is repeated until the wort is clear and free of any trub, where the wort is ultimately transferred back into the brewing kettle.
  2. In the Nachguss additional water, matching the temperature of the wort, is progressively poured over the draff cake to extract the remainder of wort. The amount of water needed for the Nachguss is determined by the type of malt and target original extract of the wort („Stammwürze“). Once the draff is dry the newly won wort joins the brewing kettle.

In my first brew I wasn’t equipped with a Läuterbottich and had to rely on different containers for filtration. This has a huge downside: because the draff is exposed to air it quickly cools down – now, when the Nachguss is poured over the draff the water temperature could drop sharply, which in order would lead to a incomplete / uneven extraction.


Homebrew: 1. Maischen

The first step consists of extracting the wort out of the malt. This is done under controlled temperature setpoints and defined resting times.

To control the temperature I have bought an inexpensive PID controller + solid state array and hooked it up to a hotplate (bridging the internal knob).

Four temperatures are important to hold for a certain period of time for the conversion process:

  1. 47-53°C: „Eiweißrast“ – protein gets broken up by special enzymes. Today, this step is not always necessary since in processed malts very little protein is left to begin with. And a little amount of protein is needed for good foam on the final beer!
  2. 62-65°C: „Maltoserast“ – beta-amylase enzymes get re-activated at this temperature and begin converting starch to maltose (sugar). Later on, the yeast converts this sugar to ethanol.
  3. 70-73°C: „Verzuckerungsrast“ – alpha-amylase enzymes get re-activated at this temperature and being converting starch to dextrin. The yeast can only marginally process dextrin. Dextrin leads to a sweet and full-bodied taste in the final beer.
  4. 76-78°C: „Abmaischen“ – force remaining alpha-amylase to get re-activated to convert the remainder of the starch to dextrin. Having any starch left in the wort is highly undesired since this will lead to a fatty and unpleasant taste in the final beer.

A longer Maltoserast means more maltose and therefore ethanol gets produced, leading to a stronger beer. On the other hand, a shorter Maltoserast means more starch is left for dextrin production which leads to a fuller taste. In conclusion, temperature control and timing is crucial for achieving the correct balance between maltose and dextrin, which determine the final strength and taste of the beer.


Homebrew: An introduction to beer brewing

I got into beer brewing after receiving my first starter kit. Beer has a long tradition in Germany and hence the brewing process is very well understood both empirically and technically. In this post I’m going to give you a general introduction to the ingredients and process of brewing your own beer.

For brewing beer four ingredients are required:

  1. Malt: grains that have been germinated and temperature treated (germination produces enzymes which at the end get deactivated by hot temperature)
  2. Water: quality and mineral composition of the brewing water has impact on the taste (since beer consists mainly of water)
  3. Hops: plant belonging to the Cannabaceae family (the other member being Cannabis), brings the unique and bitter flavor to the beer
  4. Yeast: microorganism belonging to the Fungus kingdom, responsible for the fermentation process that converts carbohydrates / sugar to ethanol

And just like that, the brewing process can be divided into four main steps:

  1. „Maischen“: Add malt to water under a controlled temperature curve with defined resting times
  2. „Läutern“: Filter out residual malt particles, the so called draff („Treber“), from the raw yield and so called wort („Würze“)
  3. „Würzekochen“: Boil the wort and add the hop
  4. „Anstellen“: Add yeast to the wort to start the fermentation process

(Some intermediate and finish steps have been omitted, but will be explained later).