RSSAmplifier

Blog

Guy Rutenberg

Keeping track of what I do

guyrutenberg.comRSS feed ↗10 posts

Latest posts

Reverse Engineering the Concept2 Utility to Update PM5 Firmware on Linux

Concept2’s PM5 monitor firmware can be updated via USB, but the official tool — Concept2 Utility — only runs on Windows. No Linux support, no documented protocol. I wanted to update my PM5 from my Debian machine, so I reverse engineered the Windows binary to figure out exactly what it does. I used the script to update my PM5 from v217.037 to v217.067. The Reverse Engineering Setup I used Ghidra as…

Web HR Monitor: Heart Rate and HRV in the Browser

I’ve been reading about HRV (Heart Rate Variability) for a while and wanted a way to record it on my computer and actually understand the underlying calculations, rather than just consume a number from a proprietary app. I also wanted an excuse to finally play with the Web Bluetooth API , which lets a browser connect directly to Bluetooth LE devices with no native app or server involved. The…

The Cost of Currency Hedging in TASE Index Funds

The cumulative hedging cost over time shows a consistent downward drift across all instruments:

USB Keyboard Not Working in Dracut When Connected via Thunderbolt Dock

My USB keyboard stopped working during the Dracut initramfs phase (e.g., at the LUKS password prompt) when connected through a Thunderbolt dock. It worked fine in GRUB, in GNOME, and when plugged directly into the laptop. It had also worked through the dock before. Why It Broke GRUB is probably using UEFI/BIOS USB legacy emulation and doesn’t need the Thunderbolt controller at all. Dracut uses the…

Auto-switch power-profiles-daemon with udev

On GNOME with power-profiles-daemon , I wanted the power profile to switch between power-saver and performance based on AC power or battery. The solution is to let udev react to POWER_SUPPLY_ONLINE changes and call powerprofilesctl directly. Configuration Put the following rules in /etc/udev/rules.d/99-power-profile-switch.rules : $ sudo tee /etc/udev/rules.d/99-power-profile-switch.rules…

Stop Slack from Spamming systemd Journal Logs

Slack has been spamming my systemd journal logs with useless info-level debug logs. I ve tried starting Slack with --silent and setting the log level to fatal using --logLevel , but the log spamming hasn t stopped. The solution is to filter these messages using rsyslog. Create the following configuration under /etc/rsyslog.d/20-slack.conf : # Drop info log messages from Slack if $rawmsg contains…

Expanding Encrypted Swap and Adding ZRAM to Fix Memory Pressure Stalls

Despite having 32GB of RAM on my Debian Unstable system, I was experiencing random stalls and freezes triggered by memory pressure alerts from psi-notify. Sometimes the system would recover after a few seconds, but often it required a hard reboot. The solution was to expand my existing 4GB encrypted swapfile to 16GB and add ZRAM for compressed swap in RAM. This builds on my previous guide for…

captive-firefox: Solving Captive Portal Headaches with DNS over TLS

If you re running systemd-resolved with DNS over TLS (like I detailed in my split DNS post ), you ve probably run into the same annoying problem I have: captive portals just don t work properly. The issue is straightforward but frustrating. Your system is configured to use secure DNS servers like Cloudflare (1.1.1.1) with DNS over TLS, which is great for security and privacy. But when you connect…

Configuring LDAC Quality in PipeWire

You can set the LDAC quality to High, Standard, or Mobile, corresponding to 990/660/330 kbps. You can do it either statically or dynamically. Static Configuration Place the following configuration in ~/.config/wireplumber/wireplumber.conf.d/10-bluez.conf : monitor.bluez.rules = [ { matches = [ { ## This matches all Bluetooth devices. device.name = "~bluez_card.*" } ] actions = { update-props = {…

Tiered vs. Fixed Commissions in IBKR

This post compares the tiered and fixed commission models offered by Interactive Brokers for trading U.S.-denominated ETFs on the London Stock Exchange (LSE). Fixed commissions are set at 0.05% of the trade value, with a minimum charge of $4. In contrast, tiered commissions begin with a lower minimum of $1.70, but they incur additional exchange fees of 0.0045% of the trade value (with a minimum of…