LED Panel

led matrix showing the current time and weather
The finished LED Panel with Layout
I built this panel as a project during the summer holidays. This is a small writeup so you can build your own. The entire thing ran me about 200.- CHF, but you could probably find some of the parts for cheaper.

The software is available on my Gitlab.


The panel displays the current time/date and temperature, and the current weather as an icon. Different icons are used depending on the time of day. It’s fairly extensible, thanks to the layouts mechanic I built (more below).

Parts List

I followed the Adafruit guide for the hardware side of things.


Below a quick sketch of how I built this. My woodworking skills aren’t the best, so this is built to be easy.
a hand-drawn sketch of the physical assembly of the panel
A hand-drawn sketch of the physical assembly of the panel.


For real-time weather data, aswell as forecasts I used OpenWeatherMap's API.

For the display, I built some helper-classes: You can create DisplayComponents and draw them into pre-defined areas. A component could be responsible for displaying the current time, or a weather icon. They are responsible for rendering themselves onto the pixel matrix.

A layout is made of multiple areas and the display switches between different layouts every minute, to avoid unevenly stressing the LEDs.

a potential layout, using one half area, and two quarter areas
A layout could consist of a half area, and two quarter areas.

Breaking Audible DRM

I wanted to to listen to "Skunk Works" with a free audible trial.
Pleasantly surprised, I notice that you can download the audbiobook. However, I quickly realised that it’s an .aax file. Try to play it using mpv; `Error decoding audio.`. It turns out that AAX is an encrypted audible format.

Authcode / Activation Bytes

Fortunately, someone created audible-activator, a python script which opens audible in a browser and extracts your personal DRM key. This key is unique to you, but you can decrypt all your books using it. To get the code, run the script, log in, and wait a second You’ll get an output like this: $./ Username: Password: [*] Player ID is jrzt34fl3gS34z/p9KLLIw/ugaf= activation_bytes: c0ffeed00d I recommend saving the activation bytes to a file called .authcode in your home directory.


Once you’ve extracted the activation bytes, you can use another tool, AAXtoMP3, to convert the AAX to a useable format, like MP3. $ AAXtoMP3 -s -- audiobook.aax This will create a directory structure based on the metadata in the AAX, containing the audiobook MP3. Passing the -s option makes sure only one file is generated. Otherwise, a file for each chapter will be generated, which you might like better.