Sniffing GameBoy serial traffic with an STM32F4

In these series of blog posts I will write about the GameBoy serial communication protocol and how to interact with it by using an embedded development board. The code for the development board will be written in C, and the code running on the computer will be writen in Rust. The first part will consist on understanding the GameBoy serial communication protocol, becoming familiar with embedded development using the libopencm3 free/libre library and finally building a serial communication sniffer to capture the transmission of data on the Game Link Cable.

Enabling LUKS on the PocketCHIP

Introduction I’ve recently acquired a handheld ARM computer with screen and keyboard called the PocketCHIP. The main board on the device is called the CHIP, which is a tiny ARM computer capable of running Linux that is sold for $9. After flashing it with the CHIP 4.4 GUI OS, a flavor of Debian released by Next Thing Co (the company that made the PocketCHIP) I noticed I wasn’t able to mount LUKS-encrypted partitions due to missing kernel modules.

Alpine Linux: Upgrading on Raspberry Pi

This post describes the upgrade procedure I follow to upgrade my Raspberry Pi Alpine Linux installation. Alpine Linux on the Raspberry Pi runs from ramfs and thus the upgrading is not straightforward. Most of the details are taken from the Alpine Linux Wiki. I’m not sure if Alpine Linux does any verification on the new downloaded release, so I’m doing that manually on another computer. Upgrading First of all, replace the repository confiration to point to the new version:

rdiff-backup-1.2.8 in Alpine

Introduction A few days ago I wanted to start doing incremental backups from my laptop to my Raspberry Pi 2 running Alpine Linux. I’ve had used rdiff-backup for some years now and I’m really happy with it. rdiff-backup is similar to rsync, in the sense that lets you synchronize folders over the network, but it has two added nice features: when synchronizing, only the differences between the files that have changed are sent; and after every synchronization, the differences between the old version of the files and the new ones is kept.

Raspberry Pi: git server (cgit with lighttpd)

Introduction In this post I will explain what’s required to set up a git server. We’ll use cgit to provide a web interface and also allow cloning/pulling through HTTP. ssh will also be available for cloning/pulling and pushing. We’ll setup two groups of repositories: a public and a private one. Cgit First of all, we’ll create a git user and move it’s home to the encrypted partition. For convenience we’ll also link that home directory to /git.

Raspberry Pi: setting up alpine, lighttpd and letsencrypt

Introduction In this post I will explain how to set up Alpine Linux for the RPi, with the necessary configuration for the RPi to power a USB hard drive, how to install lighttpd and configure automatic renewal of TLS certificates with lestencrypt. Alpine Linux Alpine Linux can be installed on te RPi following the wiki guide. After instalation, we add a new user which we will use for logging in:

Raspberry Pi 2 I/O benchmarks

Introduction I’m currently setting up a Raspberry Pi 2 as a home server for various services. I’m gonna write a series of blog posts about how I configured my Raspberry Pi to achieve my goals, which will be mainly setting up a git server and a backup server. Choice of distribution I discovered Alpine Linux while searching lightweight distributions for the Raspberry Pi. This is a lovely small Linux distribution: one of the first things I noticed is how fast it runs on the RPi due to using a ram filesystem by default; this is specially noticeable in the RPi because usualy the operating system resides in the micro-SD card, which usually offers really slow read and write operations.

No more unencrypted emails to gpg contacts

I have been using mutt for about half a year already and I’m very happy with it. The previous email client I used was Thunderbird (with the Enigmail extension to handle GPG). There were two main reasons that made me switch. The first one was that I often would like to check my email while I’m offline, and it seems that Thunderbird is not very good at this. Sometimes not all my email would have been downloaded (just the headers), and I also found it frustrating that after marking more than 50 emails as read while offline, they would be marked as unread again once I went back online.

Reproducible builds on Debian for GSoC 2015, 1st update

This is the second blog post I’m writing about my experiences contributing to Debian for Google Summer of Code 2015 (check my first post) Status update First month It’s been two months and a few days since the GSoC started. During the first month I worked on fixing specific packages, mainly concerning issues with timestamps, which is a very common source of unreproducibility. In many cases, during the build process files are compressed into gzip or zip archives, which store the creation time of files in the metadata.

Reproducible builds on Debian for GSoC 2015

This is the first blog post of a series I will be writing about my experiences contributing to Debian for Google Summer of Code 2015. A bit about myself I’m a Spanish student doing a master’s in Computer Science in Barcelona. I graduated on Electrical Engineering (we call it Telecommunications here). I’ve always been interested in computing and programming and I have worked on several projects on my own using C, python and go.

See all articles