Skip to main content


Running new programs on old linuxes with incompatible glibc. Or putting lipstick on a pig

 I'm back trying to run new programs on ancient linuxes, but this time I'm not going through the recompiling hassles I described here: Since I'm getting an error while compiling python3 as described above: # make gcc -pthread -Wl,-rpath /usr/local/lib    -Xlinker -export-dynamic -o python Programs/python.o -L. -lpython3.9 -lcrypt -lpthread -ldl  -lutil -lrt -lm   -lm Programs/python.o(.text+0x1): In function `main': ./Programs/python.c:15: undefined reference to `Py_BytesMain' collect2: ld returned 1 exit status make: *** [python] Error 1 ... I'm trying to move the compiled code directly on this RHEL4 machine. Without success, sadly: # /opt/python3/bin/python3 /opt/python3/bin/python3: /lib64/tls/ version `GLIBC_2.7' not found (required by /opt/python3/lib/ /opt/python3/bin/python3: /lib64/tls/ version `GLIBC_2.6' not found (requir
Recent posts

Installing borg backup on an old Fedora Core 8 server

 If you're coming from the Wild West of servers, you may have the occasional old/unmaintained/13 year uptime server living fine and well in your management. You know you desperately need to wipe the server and reinstall a modern OS, but alas, there is no time for that and you need to add new software on top of old servers. Well, strap in, it's going to be a long journey. So - the goal is to install on a server that is so old that it doesn't even know how to connect to https sites anymore, because its openssl uses TLS 1.0. The server comes with perl-5.8.8, openssl 0.9.8b, python 2.5.1 and we need to install a python3 program that requires openssl 1.1.  $ wget  --11:52:45--            => `borg-linux64' Resolving Connecting to||:443... connected. O

Quick launcher with firefox tabs: rofi + brotab

 I've been using quick launchers like kupfer or ulauncher for a while, but I needed to switch to something else because kupfer tends to crash from time to time (Ubuntu 20.04) and ulauncher is a memory hog with lots of plugins ( ). I've looked around and rofi looks like a great little launcher - with the added bonus that it runs only when you launch it (it's not resident in memory). For best features it should be installed from git, not apt (instructions here: ). First prepare the build environment. You'll need to enable deb-src in your /etc/apt/sources.list for this to work. Make sure you have the correct distribution (in case you did a do-release-upgrade you may have wrong deb-src entries commented out): sudo apt-get build-dep rofi git clone

SmokePing + InfluxDB export + docker + slaves + Grafana = fun

I've been working for a while on this project - with the purpose of getting SmokePing measurements from different hosts (slaves) into InfluxDB so that we can better graph them with Grafana. The slaves run multiple Smokeping instances inside Docker so that they have separate networking (measure through different uplinks, independently). This will not be a comprehensive configuration guide, but a quick "how to" to handle setup and basic troubleshooting. It assumes you already know how to set up and operate a regular Smokeping install with or without slaves and that you are fluent in Smokeping configuration syntax, know your way around Docker and aren't a stranger from InfluxDB and Grafana (sorry, there's a lot of information to take in). 1. Getting Smokeping with InfluxDB support - you can get it either from the official page (most changes have been merged) - (PR discussion here:

Home Assistant + Android TV = fun

Here's a quick setup guide for controlling your Android TV from within Home Assistant. I've used it to control a genuine Android TV (Philips 7304) and an Odroid N2 running Android TV. For this to work you need ADB access. It can usually be enabled from within Developer Settings. The great part is - you don't need root access! The most important things are described in the androidtv component for Home Assistant: Make sure you go through the adb setup. My configuration is simple (inside configuration.yaml): media_player:   - platform: androidtv     name: TV Bedroom ATV     host:     device_class: androidtv Once Home Assistant restarts, your TV might require you to accept the connection (adb authentication). This happens only once (or until you reset your ATV to factory settings). Once running the integration will show you the current ATV state (on or off) and allows you to turn it on or off.

LG7304 "The One" Android Smart TV - tracking down the software update server

TL;DR: LG7304 Android Smart TV gets its software update server from somewhere in the Amazon cloud. The server name is not disclosed via regular DNS and most likely gets learned via some previous HTTPs connection. I have a LG7304 Android Smart TV that I want to prevent from getting updates (in the hopes it will become rootable in the future). I've been getting an annoying update message for weeks now (even though automatic updates are disabled in the menu), so I tried to suppress it via DNS. I set up port mirroring for the TV's ethernet port and captured boot traffic for analysis. It seems the TV communicates with several hosts located in Amazon AWS cloud, but without making DNS requests that return those IPs. So, it must either have them hardcoded in its firmware or must be getting them through an encrypted channel. You can get a list of IP addresses that your TV communicates with by using Wireshark -> Statistics -> Conversations -> IPv4. You can use whois (whoi

List of posted Odroid Magazine articles

Avid readers of my blog (ha!) will complain that there's hardly anything to read. Well, that's because I've published most of my work in Odroid Magazine , since it was related to SBCs. Here is a list of published articles (quite a few, it seems), for your (and my) enjoyment: Multi Screen Desktop Using VNC - Part 2: An Improved And Simplified Version Running Linux under Android Multiscreen Desktops using VNC Manage your kid's computer time with mqttNanny Lutris: Gaming on the ODROID-H2 ODROID Crossgrading: From armhf to arm64 Upgrading Ubuntu to 18.04 KeePass: Password Manager  Home Assistant: A DIY Smart Light Project Home Assistant: Tracking People With Wi-Fi Using Kismet Home Assistant: Using Infrared, Motors, and Relays Home Assistant: Scripts for Customization Home Assistant: Designing A Fancy Dashboard Setting Up Your ODROID: ODROID-XU4 As A General Purpose NAS Mycroft: Open Source Artificial Intelligence Home Automation