Writing

2023

Git pull request fetching & searching

Working with GitHub and GitLab pull/merge requests can be improved greatly by adding an alias for fetching all requests. Fetched PRs can then easily be searched or checked out. Read full post

2022

Configuring Linux VLANs

Setting up a VLAN for a network interface in Linux is a little bit convoluted. Let's write a Bash/ZSH function for simplifying the process. Read full post

2021

Git Alias function syntax

Git aliases are an easy way to customize commands, however it is tempting to be more expressive and use shell script functions. This is supported, but the syntax and escaping can be hard to overcome. Read full post

Applying mailing list patches with 'git b4'

b4 helps improve the workflow for mailing list based Linux kernel development, but doesn't offer direct git integration. Let's whip up a 'git b4' alias. Read full post

Upstream camera support for Qualcomm platforms

The CAMSS driver for Qualcomm Image Signal Processors (ISPs) isn't new, but now has support for the next generation of ISP architecture. Read full post

2020

Speed up `git log --graph` 18x times

For large repositories 'git log --graph' can be slow, but for git v2.20+ it can be sped up. Read full post

2019

Running Android and Wayland on Embedded Devices

Let's get Android running next to Wayland on an i.MX6 based Nitrogen6_MAX board. Read full post

Running Android next to Wayland

It's now possible to run Android applications in the same graphical environment as regular Wayland Linux applications with full 3D acceleration. Read full post

An Overview of the Panfrost driver

During the past few months significant progress has been made on the Open Source Arm Mali GPU driver front, culminating in the Panfrost driver targeting Mali T and G-series of GPUs being available now. Read full post

2018

Running Docker privileged inside of LXC / LXD

Being able to run Docker containers inside of LXC containers comes in quite handy due to them solving slightly different issues. Read full post

git reset upstream

Working with a git based project that has a defacto upstream repository means that you perioducally want to fetch the canonical master branch. This can be simplified with a .gitconfig alias. Read full post

kms_swrast: A hardware-backed graphics driver

kms_swrast is a software driver, built upon the Mesa gallium driver framework, which uses kernel kms drm nodes for memory allocation. Read full post

Configuring QNAP LXC containers for VPNs using TUN

Setting up a QNAP NAS as a VPN client is easy, but setting its containers up for VPNs is harder. Read full post

Twistyplexing: A Charlieplexing variety

Twistyplexing is a neat variety of Charlieplexing, with 2 small benefits. Read full post

APA102 1515 LEDs

For upcoming projects I've been looking for low current programmable RGB LEDs, and a new the new APA102 1515 seems like an improvement over the 2020. Read full post

Upstream Linux support for the new NXP i.MX 8M

A quick look into the 2018Q1 status of the i.MX 6 & 8 platforms. Read full post

APA102 LED Current Usage

During a recent project I've been surprised to learn about idle current usage of the APA102 LEDs. Read full post

Virtualizing GPU Access

Virtualized GPU access is becoming common in the containerized and virtualized application space. Let's have a look at why and how. Read full post

2017

Building ChromiumOS for Qemu

Getting ChromiumOS building is reasonably easy, but running it under Qemu requires some work. Read full post

Fixing bluetooth on the XPS 15 9550 on Ubuntu

The bluetooth module of the Dell XPS 15 9550 has never been working for me, but copying a firmware blob onto my machine fixed my issues. Read full post

Android: NXP i.MX6 on Etnaviv Update

More progress is being made in the area of i.MX6, etnaviv and Android. Read full post

GALLIUM_HUD: Debug Mesa Graphics Performance

Debugging graphics performance in a simple and high-level manner is possible for all Gallium based Mesa drivers. Read full post

Android: NXP i.MX6 Buffer Modifier Support

GPUs like those of Intel and Vivante support storing the contents of graphical buffers in different formats. Support for describing these formats using modifiers has now been added to Android and Mesa, enabling tiling artifact free running of Android on the iMX6 platform. Read full post

Android: Getting up and running on the iMX6

Getting Android up and running on the iMX6 platform using an open source graphics stack has been impossible up until recently, but now you can. Here's a guide through the steps. Read full post

Android: Changing the bootanimation

For various reasons you might want to change the Android boot animation to something other than the stock one, this is how you do it. Read full post

Audio editing images

There's nothing preventing images from being edited as audio data, however there are a few pitfalls. Which is why I wrote Audio Shop. Read full post

Android: Enabling mainline graphics

Android uses the HWC API to communicate with graphics hardware. This API is not supported on the mainline Linux graphics stack, but by using drm_hwcomposer as a shim it now is. Read full post

Removing the Chromebook Write-Protect screw

Before being able to write firmware data to any production Chromebook device, the Write-Protect screw has to be removed. Read full post

Precompiling APK files during Android AOSP build

By precompiling APK files during AOSP build a few minutes can be shaved off of the development iteration time on most commonly found Android hardware. Read full post

Setting up a ChromiumOS dev environment

Setting up a fully functional ChromiumOS development environment on actual Chromebook hardware Read full post

2016

Running an Android Unit Test

Running specific AOSP unit tests on an Android device is not entirely obvious, so this is what I cobbled together. Read full post

XDC 2016

Highlights from the 2016 X.org Developers conference. Read full post

Building Android for Qemu with Mesa and Virgil3D

Running the Linux mainline graphics stack on Android devices is currently not a reality, but this is a viable development environment for improving the situation. Read full post

Ethernet device stress testing

During kernel upstreaming for chromiumos devices a standalone ethernet subssystem testing script was needed. Read full post

Linux kernel development shell scripts

A part of getting active in kernel development is finding a good workflow. These are the scripts I've used to avoid errors and increase productivity. Read full post

Running Weston on a Raspbian

This is a simple guide for how to build and run Wayland & Weston on a Raspberry Pi. Read full post

Coverpage template

As a precursor to creating a commercial project, having the ability to gauge interest free of charge is a great tool. This is a template for that purpose. Read full post

ESP8266 APA102 Bulb

As an experiment in HW design an alternative to the Philips Hue was built. It's fully programmable over WiFi. Read full post

2015

WS2812 LED Matrix

A 8x8 LED panel conntected to an ESP8266 was constructed to make a kind of portable display module. Read full post

WS2812 Welding Goggles

As a gift I've cobbled together a pair of welding googgles with RGB LEDs and a microcontroller. Read full post

User friendly setup of ESP8266 gadgets

When first configuring any IoT device the lack of options for interaction can be problematic, so I hacked together an access-portal + captive portal application for the NodeMCU firmware. Read full post

Building NodeMCU for the ESP8266

This is a simple hands-on guide to building NodeMCU and flashing it onto a raw ESP8266-01 module. Read full post