Illustration

Nix Trigonometric Math Library from Ground Zero

(Title image sourced from: Wikipedia - Trigonometry)WhyI wanted to calculate the network latency between all my VPS nodes, and add the latency into the configuration file of Bird BGP daemon, so the network packets are forwarded through the lowest latency route. However, I have 17 nodes as of today, and I didn't want to manually run a ping command between each pair.So I came up with a solution: I can mark the latitudes and longitudes of the physical locations of my nodes, calculate the physical distance, and divide that by half the light speed to get the approximate latencies. I randomly sampled a few node pairs, and found that the Internet routing between them are mostly straightforward, with no significant detours. In this case,...
Illustration

Preventing Pipewire from being SIGKILLed

ProblemI frequently encounter the situation that the Pipewire audio server is suddenly stopped:The problem usually appears when I connect/disconnect my laptop from the power adapter. My computer usually lags for a short time while switching between performance profiles.systemctl --user status pipewire.service only shows that the Pipewire process was terminated by a SIGKILL signal, without any other useful log information.Neither coredumpctl nor dmesg shows the existence of a core dump event.CauseThe Pipewire process runs with realtime priority, with which its scheduling needs are satisfied first, so it can process audio data in time to prevent stuttering. To increase its process priority,...
Illustration

How to Kill the DN42 Network (Updated 2023-05-12)

DN42 is an experimental network, where everyone helps everyone. Nobody is going to blame you if you screwed up. You may seek help at DN42's IRC channel, mailing list or the unofficial Telegram group.Since DN42 is a network for experimentation, a lot of relatively inexperienced users also participate in it. Therefore, occasionally an inexperienced user may misconfigure his/her system and impact the whole DN42 network or even shut it down.As a more experienced user, here I will teach new users about some operations that can kill the network and about defense against such misconfigurations that everyone can set up against peers.WARNING: You should not actually perform these operations in DN42. You should focus more on protecting yourself against them....

NVIDIA GPU Passthrough on an Optimus MUXed Laptop (Updated 2023-05)

A year ago, to simultaneously browse webpages and write codes on my Arch Linux installation and use Windows to run tasks infeasible on Linux (such as gaming), I tried GPU passthrough on my Lenovo R720 gaming laptop. But since that laptop has an Optimus MUXless architecture (as mentioned in that post), its dedicated GPU doesn't have output ports, and the integrated GPU is in charge of all the displays. Therefore, severe limitations exist for that setup, and I eventually gave up on it.But now, I've purchased a new laptop. The HDMI output port on this laptop is directly connected to its NVIDIA dedicated graphics card, or in other words, it has an Optimus MUXed architecture. Since there is a way to make the virtual machine aware of a "monitor on the dedicated GPU",...

Fix China Telecom 4G Roaming on AOSP ROM by Changing APN

Since the support life of my OnePlus 8T's official ROM is about to end, I flashed Nameless OS, a Lineage OS based third party Android ROM, onto my phone. But after flashing the ROM, I found that my China Telecom SIM card cannot roam on the 4G network of local mobile service providers, only 2G or 3G work. Since the local providers are recently shutting down 2G and 3G networks, the roaming cellular signal strength is really bad. I experience a high latency on receiving or sending messages, nor can I use VoLTE to make calls normally.I tested other Lineage OS based third party ROMS, and experienced the same problem.After numerous attempts, I found that the problem seems to be with the phone's APN settings. I use the term seems to be because while changing APN settings fixed my problem,...

Notes on Setting Up NAS+Router on Old HP Workstation

I purchased an old HP workstation to use as a NAS and router at my home. This post is a short note of my process of setting it up.Hardware ChoiceFor a NAS, you usually have these hardware choices:Ready-to-use NAS (e.g. Synology)Pros: ready to use out of the box.Cons:Expensive, to the extent of "free hardware for software purchase".Harder to customize, when comparing the stock operating system with various Linux distributions.Second-hand serversPros:Cheap. Most servers are thrown away by datacenters once their warranty ends, and are obtained at minimum cost, refurbished and then resold.Stable. These servers are built to last, and are used in a datacenter with controlled temperature, humidity and no dust.Cons:Noise. In order to lower the fan speed, you need to modify system settings,...
Illustration

NixOS Series 4: "Stateless" Operating System

List of NixOS Series Posts:NixOS Series 1: Why I fell in loveNixOS Series 2: Basic Config, Nix Flake & Batch DeployRecommended: NixOS & Nix Flakes - A Guide for Beginners by Ryan YinNixOS Series 3: Software Packaging 101NixOS Series 4: "Stateless" Operating SystemChangelog:2023-02-18: Fix config not applied to the root user, in the "Move Temp Directory of Nix Daemon" section.One of the most famous features of NixOS is that most software configurations on the system are generated and managed exclusively by a Nix-language config file. Even if such software modifies its config file while running, the config file will still be overwritten on the next Nix config switch or the next reboot.For example, if you run ls -alh /etc on a computer running NixOS,...
Illustration

NixOS Series 3: Software Packaging 101

List of NixOS Series Posts:NixOS Series 1: Why I fell in loveNixOS Series 2: Basic Config, Nix Flake & Batch DeployRecommended: NixOS & Nix Flakes - A Guide for Beginners by Ryan YinNixOS Series 3: Software Packaging 101NixOS Series 4: "Stateless" Operating SystemOne characteristic of NixOS is that all binary applications and libraries are stored in /nix/store directory and managed by Nix package manager. This means that NixOS doesn't conform to the FHS standard of Linux, and there's not even a dynamic library loader like ld-linux-x86-64.so.2 in /lib or /lib64, let alone other shared libraries like libc.so. Therefore, unless the program is statically linked, binaries compiled for other Linux distros will not run on NixOS at all.Therefore,...

Reverse Engineered Linux Driver for HP OMEN Macro Keys

I got a new laptop some time ago, an HP OMEN 17t-ck000. While it's a nice laptop with excellent build quality and performance, it has one problem: it's drivers under Linux are far from complete.No support for fan speed control. You can see the fan speed but that's it. In addition, HP's default fan control strategy is very agressive, in the sense that even with fan spin down enabled in BIOS, the fan keeps running with the CPU being around 40 degrees celsius and GPU being idle.Actually, NBFC can be used to control the fan speed by directly writing to EC registers, but in an unfortunate accident I lost my configuration file.I was trying NixOS on my new laptop when I set up NBFC. When the accident happened, I had removed NixOS from the laptop,...

Low-cost GeoDNS with NS1 and UptimeRobot/Freshping

Some parts of the content come from https://hostedtalk.net/t/connecting-uptime-robot-with-ns1-dns-api/3883。GoalI have quite a few VPSes around the world, but my website had been served by a single VPS in Los Angeles for a long time. Because I purchase VPSes from small providers for their specific routing configuration or low price, the network of this VPS can be unstable from time to time. Although it's rare, I had to manually point the DNS to another VPS in case of an outage and switch back after it's back up. Therefore, I want to serve my website with all my VPSes, and automatically reroute traffic to other VPSes if one VPS is down.Synchronizing website data is of no difficulty since I use Hexo, a static site generator....