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
Setting up a Linux userspace graphics dev environment
This is a simple guide for how to build and run Wayland & Weston. 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