Posts in Linux (20 found)
Kev Quirk Yesterday

Linux in the Air

Sal talks about how Linux is going through somewhat of a revival at the moment, as well as some of his own thoughts on the whole Mac vs Windows vs Linux debacle. Read Post → I think a lot of this Linux revival is thanks to a perfect storm going on in the OS space, namely: I’ve been back on Linux (specifically Ubuntu) since I bought my Framework 13 , and I’ve been very happy. The only issues I’ve really had are with some apps being blurry under Wayland, but I’ve been able to easily work around these issues. Sal has had some similar problems with Wayland, but has also managed to work around them. My son also runs Linux on his iMac , and I’m about to replace Windows 10 on my wife’s X1 Carbon with Ubuntu too. So we’re going to be a Linux household very soon. And you know what? It’s fine. My son doesn’t know (or care) that he’s running Linux. My wife will be in the same boat - as long as she can check her emails, browse the web, and manage our finances in a spreadsheet, she’s good. Linux based operating systems are great, and I’m thrilled they’re going through this revival. If you’re thinking about switching, I’d implore you to do so - remember you can always try before you “buy” with a live USB. So there’s no commitment required. If you do switch, please remember to donate to your distro of choice. ❤ Thanks for reading this post via RSS. RSS is great, and you're great for using it. ❤️ You can reply to this post by email , or leave a comment . Microsoft forcing many users to buy new hardware because of arbitrary hardware requirements, as well as forcing users to have an online accounts. Apple completely screwing up MacOS Tahoe with their Liquid Glass update.

0 views
neilzone 2 days ago

Enabling a user's processes to continue after the user disconnects their ssh session, using loginctl enable-linger

I set up Immich over the weekend , using rootless podman. An annoyance was that, when I disconnected from ssh, podman stopped running too. On an interim basis, I fudged it by opening a new session, and running podman within that. The “correct” solution, as far as I can tell, is to use for that user : Having done this, I can now disconnect from ssh, and the podman containers continue to run.

0 views

Can I finally start using Wayland in 2026?

Wayland is the successor to the X server (X11, Xorg) to implement the graphics stack on Linux. The Wayland project was actually started in 2008, a year before I created the i3 tiling window manager for X11 in 2009 — but for the last 18 years (!), Wayland was never usable on my computers. I don’t want to be stuck on deprecated software, so I try to start using Wayland each year, and this articles outlines what keeps me from migrating to Wayland in 2026. For the first few years, Wayland rarely even started on my machines. When I was lucky enough for something to show up, I could start some toy demo apps in the demo compositor Weston. Around 2014, GNOME started supporting Wayland. KDE followed a few years later. Major applications (like Firefox, Chrome or Emacs) have been slower to adopt Wayland and needed users to opt into experimental implementations via custom flags or environment variables, until very recently, or — in some cases, like — still as of today. Unfortunately, the driver support situation remained poor for many years. With nVidia graphics cards, which are the only cards that support my 8K monitor , Wayland would either not work at all or exhibit heavy graphics glitches and crashes. In the 2020s, more and more distributions announced looking to switch to Wayland by default or even drop their X11 sessions , and RHEL is winding down their contributions to the X server . Modern Linux distributions like Asahi Linux (for Macs, with their own GPU driver!) clearly consider Wayland their primary desktop stack, and only support X11 on a best-effort basis. So the pressure to switch to Wayland is mounting! Is it ready now? What’s missing? I’m testing with my lab PC, which is a slightly upgraded version of my 2022 high-end Linux PC . I describe my setup in more details in stapelberg uses this: my 2020 desk setup . Most importantly for this article, I use a Dell 8K 32" monitor (resolution: 7680x4320!), which, in my experience, is only compatible with nVidia graphics cards (I try other cards sometimes). Hence, both the lab PC and my main PC contain an nVidia GPU: (In case you’re wondering why I use the older card in my PC: I had a crash once where I suspected the GPU, so I switched back from the 4070 to my older 3060.) For many years, nVidia drivers were entirely unsupported under Wayland. Apparently, nVidia refused to support the API that Wayland was using, insisting that their EGLStreams approach was superior. Luckily, with nVidia driver 495 (late 2021), they added support for GBM (Generic Buffer Manager). But, even with GBM support, while you could now start many Wayland sessions, the session wouldn’t run smoothly: You would see severe graphics glitches and artifacts, preventing you from getting any work done. The solution for the glitches was explicit sync support: because the nVidia driver does not support implicit sync (like AMD or Intel), Wayland (and wlroots, and sway) needed to get explicit sync support . Sway 1.11 (June 2025) and wlroots 0.19.0 are the first version with explicit sync support. With the nVidia driver now working per se with Wayland, unfortunately that’s still not good enough to use Wayland in my setup: my Dell UP3218K monitor requires two DisplayPort 1.4 connections with MST (Multi Stream Transport) and support. This combination worked just fine under X11 for the last 8+ years. While GNOME successfully configures the monitor with its native resolution of 7680x4320@60, the monitor incorrectly shows up as two separate monitors in sway. The reason behind this behavior is that wlroots does not support the property (issue #1580 from 2019) . Luckily, in 2023, contributor sent draft merge request !4154 , which adds support for the property. But, even with the patch, my monitor would not work correctly: The right half of the monitor would just stay black. The full picture is visible when taking a screenshot with , so it seems like an output issue. I had a few exchanges about this with starting in August 2025 (thanks for taking a look!), but we couldn’t figure out the issue. A quarter later, I had made good experiences regarding debugging complex issues with the coding assistant Claude Code (Opus 4.5 at the time of writing), so I decided to give it another try. Over two days, I ran a number of tests to narrow down the issue, letting Claude analyze source code (of sway, wlroots, Xorg, mesa, …) and produce test programs that I could run manually. Ultimately, I ended up with a minimal reproducer program (independent of Wayland) that shows how the DRM property does not work on nVidia (but does work on Intel, for example!): I posted a bug report with a video in the nVidia forum and hope an nVidia engineer will take a look! Crucially, with the bug now identified, I had Claude implement a workaround: copy the right half of the screen (at ) to another buffer, and then display that buffer , but with . With that patch applied, for the first time, I can use Sway on my 8K monitor! 🥳 By the way, when I mentioned that GNOME successfully configures the native resolution, that doesn’t mean the monitor is usable with GNOME! While GNOME supports tiled displays, the updates of individual tiles are not synchronized, so you see heavy tearing in the middle of the screen, much worse than anything I have ever observed under X11. GNOME/mutter merge request !4822 should hopefully address this. During 2025, I switched all my computers to NixOS . Its declarative approach is really nice for doing such tests, because you can reliably restore your system to an earlier version. To make a Wayland/sway session available on my NixOS 25.11 installation, I added the following lines to my NixOS configuration file ( ): I also added the following Wayland-specific programs to : Note that activating this configuration kills your running X11 session, if any. Just to be sure, I rebooted the entire machine after changing the configuration. With this setup, I spent about one full work day in a Wayland session. Trying to actually get some work done uncovers issues that might not show in casual testing. Most of the day was spent trying to fix Wayland issues 😅. The following sections explain what I have learned/observed. Many years ago, when Wayland became more popular, people asked on the i3 issue tracker if i3 would be ported to Wayland. I said no: How could I port a program to an environment that doesn’t even run on any of my computers? But also, I knew that with working a full-time job, I wouldn’t have time to be an early adopter and shape Wayland development. This attitude resulted in Drew DeVault starting the Sway project around 2016, which aims to be a Wayland version of i3. I don’t see Sway as competition. Rather, I thought it was amazing that people liked the i3 project so much that they would go through the trouble of creating a similar program for other environments! What a nice compliment! 😊 Sway aims to be compatible with i3 configuration files, and it mostly is. If you’re curious, here is what I changed from the Sway defaults, mostly moving key bindings around for the NEO keyboard layout I use, and configuring / blocks that I formerly configured in my file : I encountered the following issues with Sway: I don’t know how I can configure the same libinput settings that I had before. See for what I have on X11. Sway’s available settings do not seem to match what I used before. The mouse cursor / pointer seems laggy, somehow?! It seems to take longer to react when I move the trackball, and it also seems to move less smoothly across the screen. Simon Ser suspects that this might be because hardware cursor support might not work with the nVidia drivers currently. No Xwayland scaling: programs started via Xwayland are blurry (by default) or double-scaled (when setting ). This is a Sway-specific limitation: KDE fixed this in 2022 . From Sway issue #2966 , I can tell that Sway developers do not seem to like this approach for some reason, but that’s very unfortunate for my migration: The backwards compatibility option of running older programs through Xwayland is effectively unavailable to me. Sometimes, keyboard shortcuts seem to be executed twice! Like, when I focused the first of five Chrome windows in a stack and moved that window to another workspace, two windows would be moved instead of one. I also see messages like this one (not exactly correlated with the double-shortcut problem, though): …and that seems wrong to me. My high-end Linux PC certainly isn’t slow by any measure. When I first started GTK programs like GIMP or Emacs, I noticed all fonts were way too large! Apparently, I still had some scaling-related settings that I needed to reset like so: Debugging tip: Display GNOME settings using (stored in ). Some programs like apparently need an explicit environment variable, otherwise they run in Xwayland. Weird. I also noticed that font rendering is different between X11 and Wayland! The difference is visible in Chrome browser tab titles and the URL bar, for example: At first I thought that maybe Wayland defaults to different font-antialiasing and font-hinting settings, but I tried experimenting with the following settings (which default to and ), but couldn’t get things to render like they did before: Update : Thanks to Hugo for pointing out that under Wayland, GTK3 ignores the configuration file and uses dconf exclusively! Setting the following dconf setting makes the font rendering match: The obvious replacement for is . I quickly ran into a difference in architecture between the two programs: i3lock shows a screen locker window. When you kill i3lock, the screen is unlocked. When you kill swaylock, you end up in a Red Screen Of Death . To get out of this state, you need to restart swaylock and unlock. You can unlock from the command line by sending to the process. This was very surprising to me, but is by (Wayland) design! See Sway issue #7046 for details, and this quote from the Wayland protocol : “The compositor must stop rendering and provide input to normal clients. Instead the compositor must blank all outputs with an opaque color such that their normal content is fully hidden.” OK, so when you start via SSH for testing, remember to always unlock instead of just cancelling with Ctrl+C. And hope it never crashes. I used to start via a wrapper script, which turns off the monitor (input wakes it up): With Wayland, the DPMS behavior has to be implemented differently, with : The i3 window manager can be extended via its IPC interface (interprocess communication) . I use a few small tools that use this interface. I noticed the following issues when using these tools with Sway: Tools using the Go package need a special socket path hook currently . We should probably include transparent handling in the package to ease the transition. Tools started with from the Sway config unexpectedly keep running even when you exit Sway ( ) and log into a new session! My workspace-populate-for-i3 did not work: My wsmgr-for-i3 worked partially: On X11, I use the rxvt-unicode (URxvt) terminal emulator. It has a couple of quality-of-life features that I don’t want to lose, aside from being fast and coming with a minimal look: In earlier experiments, I tried Alacritty or Kitty, but wasn’t happy with either. Thanks to anarcat’s blog post “Wayland: i3 to Sway migration” , I discovered the terminal emulator , which looks like a really nice option! I started a config file to match my URxvt config, but later I noticed that at least some colors don’t seem to match (some text lines with green/red background looked different). I’m not sure why and have not yet looked into it any further. I noticed the following issues using : Pressing Ctrl+Enter (which I seem to do by mistake quite a bit) results in escape sequences, whereas URxvt just treats Ctrl+Enter like Enter. This can be worked around in your shell (Zsh, in my case), see foot issue #628 for details. Double-clicking on part of a URL with the mouse selects the URL (as expected), but without the scheme prefix! Annoying when you do want to use the mouse. I can hold Ctrl to work around this, which will make select everything under the pointer up to, and until, the next space characters. Starting in results in not having color support for programs running inside the session. Probably a terminfo-related problem somehow…? I can also reproduce this issue with GNOME terminal. But with URxvt or xterm , it works. Selecting text highlights the text within the line, but not the entire line. This is different from other terminal emulators I am used to, but I don’t see an option to change it. Here’s a screenshot showing after triple-clicking on the right of “kthreadd”: But triple-clicking on an echo output line highlights only the contents, not the whole line: I find Emacs’s Wayland support rather disappointing. The standard version of Emacs only supports X11, so on Sway, it starts in Xwayland. Because Sway does not support scaling with Xwayland, Emacs shows up blurry (top/background window): Native Wayland support (bottom/foreground window) is only available in the Emacs version ( on NixOS). used to be a separate branch, but was merged in Emacs 29 (July 2023). There seem to be issues with on X11 (you get a warning when starting Emacs-pgtk on X11), so there have to be two separate versions for now… Unfortunately, the text rendering looks different than native X11 text rendering! The line height and letter spacing seems different: I’m not sure why it’s different! Does anybody know how to make it match the old behavior? Aside from the different text rendering, the other major issue for me is input latency: Emacs-pgtk feels significantly slower (less responsive) than Emacs. This was reported on Reddit multiple times ( thread 1 , thread 2 ) and Emacs bug #71591 , but there doesn’t seem to be any solution. I’ll also need a solution for running Emacs remotely. Thus far, I use X11 forwarding over SSH (which works fine and with low latency over fiber connections). I should probably check out waypipe, but have not yet had a chance. When starting Chrome and checking the debug page, things look good: But rather quickly, after moving and resizing browser windows, the GPU process dies with messages like the following and, for example, WebGL is no longer hardware accelerated: Of course, using a browser without hardware acceleration is very frustrating, especially at high resolutions. Starting Chrome with seems to work around the GPU process exiting, but Chrome still does not feel as smooth as on X11. Another big issue for me is that Sway does not open Chrome windows on the workspace on which I closed them. Support for tracking and restoring the EWMH atom was added to i3 in January 2016 and to Chrome in May 2016 and Firefox in March 2020 . I typically have 5+ workspaces and even more Chrome windows at any given point, so having to sort through 10+ Chrome windows every day (when I boot my work computer) is very annoying . Simon Ser said that this would be addressed with a new Wayland protocol ( , merge request !18 ). I work remotely a lot, so screen sharing is a table-stakes feature for me. I use screen sharing in my browser almost every day, in different scenarios and with different requirements. In X11, I am used to the following experience with Chrome. I click the “Window” tab and see previews of my windows. When I select the window and confirm, its contents get shared: To get screen sharing to work in Wayland/sway, you need to install and (the latter is specific to wlroots, which sway uses). With these packages set up, this is the behavior I see: This is a limitation of (and others) , which should be addressed with the upcoming Sway 1.12 release. I changed my NixOS configuration to use sway and wlroots from git to try it out. When I click on the “Window” tab, I see a chooser in which I need to select a window: After selecting the window, I see only that window’s contents previewed in Chrome: After confirming, I get another chooser and need to select the window again. Notably, there is no connection between the previewed window and the chosen window in this second step — if I chose a different window, that’s what will be shared: Now that window is screenshared (so the feature now works; nice!), but unfortunately in low resolution, meaning the text is blurry for my co-workers. I reported this as xdg-desktop-portal-wlr issue #364 and it seems like the issue is that the wrong scale factor is applied. The patch provided in the issue works for me. But, on a high level, the whole flow seems wrong: I shouldn’t see a chooser when clicking on Chrome’s “Window” tab. I should see previews of all windows. I should be able to select the window in Chrome, not with a separate chooser. I also noticed a very annoying glitch when output scaling is enabled: the contents of (some!) windows would “jump around” as I was switching between windows (in a tabbed or stacked container) or between workspaces. I first noticed this in the terminal emulator, where the behavior is as follows: I captured the following frame with my iPhone just as the content was moving a few pixels, shortly after switching focus to this window: Later, I also noticed that Chrome windows briefly show up blurry after switching . My guess is that because Sway sets the scale factor to 1 for invisible windows, when switching focus you see a scale-1 content buffer until the application provided its scale-3 content buffer. dunst supports Wayland natively. I tried dunst 1.13 and did not notice any issues. rofi works on Wayland since v2.0.0 (2025-09-01). I use rofi with rofimoji as my Emoji picker. For text input, instead of , seems to work. I didn’t notice any issues. Instead of my usual choice , I tried , but unfortunately ’s flag to select the window to capture is rather cumbersome to use (and captures in 1x scale). Does anyone have any suggestions for a good alternative? Finally I made some progress on getting a Wayland session to work in my environment! Before giving my verdict on this Wayland/sway experiment, let me explain that my experience on X11/i3 is really good. I don’t see any tearing or other artifacts or glitches in my day-to-day computer usage. I don’t use a compositor, so my input latency is really good: I once measured it to approximately 763 μs in Emacs on X11 with my custom-built keyboard (plus output latency), see kinX: latency measurement (2018) . So from my perspective, switching from this existing, flawlessly working stack (for me) to Sway only brings downsides. I observe new graphical glitches that I didn’t have before. The programs I spend most time in (Chrome and Emacs) run noticeably worse. Because of the different implementations, or because I need to switch programs entirely, I encounter a ton of new bugs. For the first time, an on-par Wayland experience seems within reach, but realistically it will require weeks or even months of work still. In my experience, debugging sessions quickly take hours as I need to switch graphics cards and rewire monitors to narrow down bugs. I don’t have the time to contribute much to fixing these numerous issues unfortunately, so I’ll keep using X11/i3 for now. For me, a Wayland/Sway session will be ready as my daily driver when: The lab PC contains a nVidia GeForce RTX 4070 Ti. The main PC contains a nVidia GeForce RTX 3060 Ti. I don’t know how I can configure the same libinput settings that I had before. See for what I have on X11. Sway’s available settings do not seem to match what I used before. The mouse cursor / pointer seems laggy, somehow?! It seems to take longer to react when I move the trackball, and it also seems to move less smoothly across the screen. Simon Ser suspects that this might be because hardware cursor support might not work with the nVidia drivers currently. No Xwayland scaling: programs started via Xwayland are blurry (by default) or double-scaled (when setting ). This is a Sway-specific limitation: KDE fixed this in 2022 . From Sway issue #2966 , I can tell that Sway developers do not seem to like this approach for some reason, but that’s very unfortunate for my migration: The backwards compatibility option of running older programs through Xwayland is effectively unavailable to me. Sometimes, keyboard shortcuts seem to be executed twice! Like, when I focused the first of five Chrome windows in a stack and moved that window to another workspace, two windows would be moved instead of one. I also see messages like this one (not exactly correlated with the double-shortcut problem, though): …and that seems wrong to me. My high-end Linux PC certainly isn’t slow by any measure. i3lock shows a screen locker window. When you kill i3lock, the screen is unlocked. When you kill swaylock, you end up in a Red Screen Of Death . To get out of this state, you need to restart swaylock and unlock. You can unlock from the command line by sending to the process. Tools using the Go package need a special socket path hook currently . We should probably include transparent handling in the package to ease the transition. Tools started with from the Sway config unexpectedly keep running even when you exit Sway ( ) and log into a new session! My workspace-populate-for-i3 did not work: Sway does not implement i3’s layout saving/restoring because Drew decided in 2017 that the feature is “too complicated and hacky for too little benefit” . Too bad. I have a couple of layouts I liked that I’ll need to replicate differently. Sway does not match workspace nodes with criteria. There’s pull request #8980 (posted independently, five days ago) to fix that. My wsmgr-for-i3 worked partially: Restoring workspaces ( ) worked. Sway’s command implementation does not seem to pick up workspace numbers from the target name. Backwards search through your scrollback (= command output) Opening URLs in your scrollback using keyboard shortcuts Opening a new terminal window in the same working directory Updating the terminal title from your shell Pressing Ctrl+Enter (which I seem to do by mistake quite a bit) results in escape sequences, whereas URxvt just treats Ctrl+Enter like Enter. This can be worked around in your shell (Zsh, in my case), see foot issue #628 for details. Double-clicking on part of a URL with the mouse selects the URL (as expected), but without the scheme prefix! Annoying when you do want to use the mouse. I can hold Ctrl to work around this, which will make select everything under the pointer up to, and until, the next space characters. Starting in results in not having color support for programs running inside the session. Probably a terminfo-related problem somehow…? I can also reproduce this issue with GNOME terminal. But with URxvt or xterm , it works. Selecting text highlights the text within the line, but not the entire line. This is different from other terminal emulators I am used to, but I don’t see an option to change it. Here’s a screenshot showing after triple-clicking on the right of “kthreadd”: But triple-clicking on an echo output line highlights only the contents, not the whole line: I can share a Chrome tab. I can share the entire monitor. I cannot share a specific window (the entire monitor shows up as a single window). Switch focus to another terminal by changing workspaces, or by switching focus within a stacked or tabbed container. The new terminal shows up with its text contents slightly offset. Within a few milliseconds, ’s text jumps to the correct position. Sway no longer triggers some key bindings twice some times (“ghost key presses”) I no longer see glitches when switching between windows or workspaces in Sway. Chrome is continuously hardware-accelerated. Chrome windows are restored to their previous workspace when starting. Emacs either: Runs via Xwayland and Sway makes scaling work. Or if its variant fixes its input latency issues and can be made to render text the same as before somehow.

0 views
Xe Iaso 1 weeks ago

2026 will be my year of the Linux desktop

TL;DR: 2026 is going to be The Year of The Linux Desktop for me. I haven't booted into Windows in over 3 months on my tower and I'm starting to realize that it's not worth wasting the space for. I plan to unify my three SSDs and turn them all into btrfs drives on Fedora. I've been merely tolerating Windows 11 for a while but recently it's gotten to the point where it's just absolutely intolerable. Somehow Linux on the desktop has gotten so much better by not even doing anything differently. Microsoft has managed to actively sabotage the desktop experience through years of active disregard and spite against their users. They've managed to take some of their most revolutionary technological innovations (the NT kernel's hybrid design allowing it to restart drivers, NTFS, ReFS, WSL, Hyper-V, etc.) then just shat all over them with start menus made with React Native, control-alt-delete menus that are actually just webviews, and forcing Copilot down everyone's throats to the point that I've accidentally gotten stuck in Copilot in a handheld gaming PC and had to hard reboot the device to get out of it. It's as if the internal teams at Microsoft have had decades of lead time in shooting each other in the head with predictable results. To be honest, I've had enough. I'm going to go with Fedora on my tower and Bazzite (or SteamOS) on my handhelds. I think that Linux on the desktop is ready for the masses now, not because it's advanced in a huge leap/bound. It's ready for the masses to use because Windows has gotten so much actively worse that continuing to use it is an active detriment to user experience and stability. Not to mention with the price of ram lately, you need every gigabyte you can get and desktop Linux lets you waste less of it on superfluous bullshit that very few people actually want. Oh, and if I want a large language model integrated into my tower, I'm going to write the integration myself with the model running on hardware I can look at . At the very least, when something goes wrong on Linux you have log messages that can let you know what went wrong so you can search for it.

0 views

Using the Brother DS-640 Scanner on NixOS

The DS-640 is a compact USB scanner from Brother . It was surprisingly hard to get it working on NixOS, so I wrote up my solution so others don’t have this problem. The bad news is you need Brother’s proprietary drivers to make this work. You need this configuration: After applying this you have to log out and in, or reboot, for the usergroup changes to apply. Note also : if you use (as I did initially), the scanner will kind of work, but it only scans the first third or so of every page. And if you want a GUI: Now, make sure the scanner is there: If you get , you either have the wrong driver or (as I did, surprisingly) a faulty USB port. In which case move the scanner to another port. should recognize the model number. The most basic test that should work: put a page in the scanner until it locks and run: This will produce a (probably not very good) scan in . Now, we can improve things using the device-specific options, which you can check with this command: Try this for a better scan: Note that some of the flags are in format and others , and if you mess it up you get a cryptic error message.

0 views
alavi.me 1 months ago

Using E-Ink tablet as monitor for Linux

Yesterday, I was writing and doing research about software licenses. I read through heaps and walls of legal text and different licenses, taking notes and making sense of them. After about fourteen hours of this, I felt like my eyes were ready to quit. I thought it would be really nice if I could use my old Android E-ink tablet as a display for reading and writing text, with much less strain on the eyes. I got it to work and I'm going to document it here so both the future me remembers, and maybe you find it useful and your eyes thank you. Here is what I am working with: The latency with VNC is very little. The main bottleneck is the low refresh rate and the lag of my old E-ink tablet . This can be a much better experience with a newer tablet with higher refresh rate . I still like this though; It is good for just writing with minimal distractions, and less eye strain, but it is amazing for reading . I think this will be best used in a dual monitor setup (minus the e-ink). One is just a mirror to the e-ink, which sometimes helps, taking glances at it for some things that need color. The second monitor will be used for other things besides reading and writing. Deskreen is great, and has its use cases, specially that it's so simple to use even a hamster can use it. But the issue was that you should view your screen inside a browser. That has two problems for our use case: So Deskreen failed for me. Setting up a VNC servers seemed a bit daunting at first (that's why I'm writing this) but I got it working in ~20 minutes. We will use TigerVNC as our server, and AVNC for our Android client (E-ink tablet) As always, the Arch wiki is a great resource, regardless of your distro. See TigerVNC arch wiki . Here, I will provide a quick-start. install the tiger vnc package. For arch: Then, according to the Arch wiki, NOTE : Notice the . 1400x1050 is roughly the resolution of my E-ink display , that my computer display also supports, while tells the coordinates of the screen (xrandr things). So this means that "Share a 1400x1050 view of my screen, starting from position 0, 0 (top left corner)". This makes the screen fit perfectly within the tablet's display with no borders and use as much screen as possible. You could just go with your original resolution and get more borders. NOTE : the file is used for . we will be using which needs these options passed to it directly (more on that later). NOTE : you must change the resolution of your computer screen to 1400x1050, or whatever you set in . Now to quickly test. NOTE : We are passing all the configurations we want directly to because it doesn't read from . NOTE : The only mandatory option is . The rest are optional, see what suits you: . Of course, both devices need to be reachable within their network connections. There are a couple of ways to do this, listed in the Arch wiki . I will just use a simple script to go into my "e-ink mode", so I can quickly run it from my script runner. You can probably find the script here It looks something like this: If you feel like you have to encrypt your VNC connection, see arch wiki . I don't think it is needed for me since I am using this at home or work, there aren't many threats. Use a light theme for Neovim and other things when using with E-ink. The theme that is installed by default is pretty sweet: or just try on different themes! But it's best the theme is high contrast and has true white background (not gray or something). OS: Linux (Arch, btw. but doesn't matter) E-ink tablet: Onyx BOOX Air 2 (It being Android matters, if not, you must find a VNC client for your tablet) I just want to mirror one of my screens to the tablet, I don't care about extending the screen . The streaming quality is not amazing. For reading text, you need crisp letters and high quality The input lag is way too much. My rusty BOOX Air2 already has considerable input and rendering lag. I can't afford anymore. Create a password using which will store the hashed password in . Ensure the file's permission is set to 0600 . If creating vncserver access for another user, you must be logged in as that user before running vncpasswd. Edit to define user mappings. Each user defined in this file will have a corresponding port on which its session will run . The number in the file corresponds to a TCP port. By default, :1 is TCP port 5901 (5900+1) . If another parallel server is needed, a second instance can then run on the next highest, free port, i.e. 5902 (5900+2). Create $XDG_CONFIG_HOME/tigervnc/config and at a minimum, define the type of session desired with a line like session=foo where foo corresponds to whichever desktop environment is to run. One can see which desktop environments are available on the system by seeing their corresponding .desktop files within /usr/share/xsessions/. For example: Running the above command will also output on which port it is listening on (default is 5900).\ Open the port in your firewall if needed.\ Now connect from the client (Android E-ink table) with AVNC(or any VNC client) to the IP and port (e.g. 192.168.0.50:5900). If you feel like you have to encrypt your VNC connection, see arch wiki . I don't think it is needed for me since I am using this at home or work, there aren't many threats. Use a light theme for Neovim and other things when using with E-ink. The theme that is installed by default is pretty sweet: or just try on different themes! But it's best the theme is high contrast and has true white background (not gray or something).

2 views
neilzone 1 months ago

Using gpioset and gpioget to control the gpio pins on a Raspberry Pi with a relay board under Debian Trixie

A couple of years ago, I bodged a web-controlled garage door opener with a Raspberry Pi . It worked fine, until I upgraded the Raspberry Pi in question to Debian Trixie. I noted that the relevant files in were no longer present, and some further research showed that this was an intentional change: In the upstream kernel, /sys/class/gpio (the sysfs interface) has been deprecated in favor of a device interface, /dev/gpiochipN. The old interface is gone from the kernel in the nightly Debian builds (bookworm/sid) for Raspberry Pi. So, unsurprisingly, my old way of doing things was not working. The documentation for the relay board has not been updated. Fortunately, after a bit of experimentation, I could get it working again using and . I could not find a way of stopping after a fixed period of time (I was expecting to do it, but it did not), so I ended up wrapping it in , which is also a bodge. Anyway, this is now what I am using:

0 views
./techtipsy 1 months ago

Oops, I accidentally built a Steam Machine

I like the Steam Deck. It’s what convinced me that gaming on Linux is actually viable now. But after playing through games like God of War Ragnarök 1 , I felt like I needed an upgrade. I love playing with the Steam Deck, but what I love more is playing without having to worry about playing around with graphics settings a lot. Great story and gameplay can only hide the fact that you’re running at 720p 30Hz on a big screen for a little bit. I also get to play relatively rarely, so I might as well make it a better, more enjoyable experience. Quality vs quantity. I went on a look-out for a used PC with roughly these requirements: The AMD GPU being a hard requirement turned out to be an interesting challenge. I wasn’t looking into putting together a custom build, but was rather going for a setup that works and that I can customize according to my specific needs. Turns out that most of the PC-s out there on the market are all based around NVIDIA GPU-s, and AMD builds of this range are relatively rare, with a guesstimate of the ratio being roughly 10 NVIDIA-based machines to 1 AMD-based machine. The good side of this is that the selection process was made way simpler as I got to choose between 3-4 options in the end. During my search I also saw some machines that I would call absolute overkill, and I almost got one in a bidding war, but eventually I found a more sensible option. It also included a monitor, keyboard, mouse and three SSD-s that I didn’t really need, but the PC itself was decent. Here’s what I landed on: All-in-all, it cost me 365 EUR in Estonia in October 2025, and so far I’ve made about 25 EUR back from the SSD sales alone, with some items still up for sale. It’s not as portable as a Steam Deck, but it’s cheaper even if we account for the cost of the game controller and cables/accessories/adapters that you usually need. Regarding the operating system choice, I tried both SteamOS from the Steam Deck recovery image, and Bazzite . Both work fine and in the default couch gaming mode you won’t notice a difference, but I ended up defaulting to SteamOS because I had my setup and configuration changes tuned around that. The SteamOS recovery image approach does assume that you have an NVMe drive available, so if you lack one, you’re better off trying Bazzite as that can be installed on any drive. I replaced the NVMe SSD with a cheap 128GB one and utilized the bigger drive in the LattePanda IOTA setup that now serves as my home server. As a game library drive, I took a 1TB Samsung SSD that I had around, which roughly matches the storage that I had available on my Steam Deck that I ended up modding with a 1TB M.2 2230 SSD. With games like God of War Ragnarök taking up around 176GB , it’s not going to be the most luxurious arrangement, but for now it’s okay. The Fractal case that it came up with was one that is fully metal, with sound dampening material present on the side panels. It’s a bit banged up, but still a pretty nice experience if you have the room for storing one in your setup. The case had one flaw that I stumbled upon: the power button on the Fractal case liked to get stuck, which seems to be a common issue with that model. I fixed that with a random power button that I sourced from a local electronic parts supplier for a few euros and that works really well now, with the additional bonus of it being slightly more cat-proof. The default fan curves on the motherboard were a bit too aggressive, so I had to slightly tune them down, and now the machine is quiet while doing a great job with keeping the internals cool. You can hear a subtle whirring when you’re in the same room with it, but during gaming it stays at reasonable volumes and is not noticeable. Certainly quieter than a Steam Deck would be. The AMD GPU is a low/midrange model, but it gets the job done in 1080p gaming, and with a lot of titles it can do 4K with ease. In God of War Ragnarök I stuck with 1080p and cranked the settings, but with games like Need for Speed Hot Pursuit Remastered, I pushed the resolution to 4K with high/ultra settings, and it runs smoothly at 60Hz. This setup also taught me that Linux supports HDR now , which was news to me! My tech setup usually lags behind the state of the art, mostly because I don’t really see a need to upgrade to the latest and greatest thing out there if the current one works well enough, but this was a really nice surprise. My TV has a crappy HDR implementation, so I don’t get the full HDR experience, but it’s nice to see the TV show that HDR logo when I start up the machine. Regarding the gaming experience, I’ve only noticed a few sore spots. For whatever reason, the Need for Speed (2015) just does not start up on anything but an actual Steam Deck. It just doesn’t work here. I can’t be arsed to investigate this yet, the wonky physics in this game are perhaps not worth that effort. It’s also clear that the choice of an Intel CPU is generally fine, but in God of War Ragnarök it was running too well, so the CPU kept dropping down to lower clock speeds, which then made the game performance inconsistent. Finding that this was the issue was actually quite straightforward: when I first loaded the game, the shader compilation was taking place in the background and even though the CPU was at a constant 100% usage, the game ran quite smoothly. It only started stuttering after that was done, and the integrated setup helped confirm the issue as its most detailed preset shows the frame time and CPU clock speed graphs really well. Since this is just a Linux box, then you can of course run a few commands to fix it. 3 Here’s how I fixed it. Create a desktop entry at with the contents: Create a file with the contents: Don’t forget to mark the script as executable with . Note that the script above does require that you have set up passwordless on the SteamOS installation. This can be configured in , just make sure that the line starting with looks like this: With all that set up, in desktop mode, right-click on the desktop shortcut, “Add to Steam”, and now you can run this script any time in Steam gaming mode, even while a game is running! All-in-all, I’m very satisfied with the experience that a cheap gaming PC box provides with SteamOS. The installation is painless, my wireless controllers just work, and aside from a few rare exceptions, my games run really well. It’s also way easier on my eyes and with the 4K resolution I can actually see oncoming cars better in games like Need for Speed Hot Pursuit Remastered. 4 Less than three weeks after buying that gaming PC, the Steam Machine was officially announced. The rumored specs suggesting a 6 core/12 thread CPU, 16GB DDR5 RAM, and a custom 8GB VRAM AMD GPU that seems to be roughly comparable to an AMD RX 6600XT-ish level of performance. It seems that I have accidentally built a Steam Machine. Oops. Of course, the specs and final performance are not public at the time of writing, and the Steam Machine has many benefits (better SteamOS compatibility, good WiFi, smaller size, likely more efficient and quiet), but it’s still interesting how close I got with my setup and selection criteria. I was slightly disappointed that I got this machine right before that announcement, but then I reminded myself of the fact that I can enjoy games on the big screen right now, and the Steam Machine is scheduled for a release in Q1 2026, which can be as late as 31st of March 2026. And hey, when the Steam Machine does come out and I decide to get one, the current gaming desktop will make for a very good home server candidate with all the room that it has available, and all the six SATA ports on the motherboard sure look tempting. I’m pretty sure that the Fractal case also allows something crazy like 17+ hard drives installed in it. This approach of building my own Steam Machine of sorts did lead to me selling my Steam Deck. Better to have someone else enjoy it than having it sit in a box until its battery dies. That also serves as a major sign of confidence for this big box that makes my sparse downtime sessions more fun. If you have a machine with a modern AMD GPU, then give SteamOS a try, you might be surprised at how well it works. Even a laptop with an AMD APU can do it, as long as you temper your expectations regarding the image quality. it’s a banger, try it if you’re into the story, or you just want to indiscriminately smash and kill.  ↩︎ this is called foreshadowing   ↩︎ some might see it as “ugh, Linux moment” type of thing, but I see it as freedom to fix issues that you would otherwise be unable to even diagnose and address. Power to the players!  ↩︎ you can probably tell that I had a blast replaying that game for the 5th time recently. It’s not even the best NFS game, and yet I love playing it over and over again.  ↩︎ any modern 6-core CPU or better includes both Intel and AMD as the CPU does not matter much here 2 an AMD GPU that can do 1080p/4K gaming, depending on the game NVIDIA was out of the question due to lack of support on SteamOS Intel GPUs are a risk that I was not willing to take right now has to support an NVMe drive using the SteamOS recovery image method is dependent on this acceptable case, PSU and cooling setup if it does not burn the house down and makes the machine cool and quiet, then I’m fine with anything Intel i5-10500 6 cores 12 threads at a reasonable speed (4.2 GHz in real-life use) adequate Cooler Master CPU cooler that does a lot of RGB if needed 16 GB DDR4 RAM @ 2666 MT/s I soon upgraded this to 32 GB because my brother had some leftover modules from his own memory upgrade I forced the modules to run at 3200 MT/s. It’s memtest-stable so good enough for me. AMD RX 6600XT with 8GB VRAM some might scoff at the VRAM amount, but coming from a Steam Deck where 16GB was shared between CPU and GPU, this is plenty! 512GB NVMe SSD three 256GB SATA SSD-s previous owner put them in as RAID0, which is clever and works well as a game library some Gigabyte motherboard that works it really doesn’t matter here some Fractal Design case, possibly a Define-series one all I know is that it’s huuuuuuuuuge it’s a banger, try it if you’re into the story, or you just want to indiscriminately smash and kill.  ↩︎ this is called foreshadowing   ↩︎ some might see it as “ugh, Linux moment” type of thing, but I see it as freedom to fix issues that you would otherwise be unable to even diagnose and address. Power to the players!  ↩︎ you can probably tell that I had a blast replaying that game for the 5th time recently. It’s not even the best NFS game, and yet I love playing it over and over again.  ↩︎

2 views
Kev Quirk 1 months ago

How I Replaced My Son’s PC With an £88 iMac

I recently replaced my son's broken PC with a 2015 iMac from eBay. Here's how it went... A year or so ago, my wife and I gave our oldest son a spare computer we had lying around. This was mainly for homework, but also for some light gaming, like Minecraft and Super Tux Cart. The machine was actually the little home server I built a few years ago. At 6 years old the motherboard decided to give up the ghost and blew. After talking to him about it, we decided to look for something a bit smaller and cool looking. Originally I was going to go with one of those Raspberry Pi keyboards , but they’re £200 and would likely struggle playing Minecraft. Then I read about someone loading Linux onto an old Mac with great success (I can’t remember who it was, so can’t provide a link I’m afraid). Anyway, I’ve always loved the look of the old iMacs, so decided to have a peek on eBay for one. I ended up finding a late-2015 21.5” iMac with 8GB RAM, a 1TB HDD, and a 4th Gen Core i5 processor for £88, delivered! For that price I wasn’t expecting much. But it looked clean in the pictures, so I decided to take a punt. While waiting for it to arrive, I ordered CPU paste, adhesive strips for resealing the screen, and a RAM upgrade before realising the RAM is soldered on these models, so that was a bust. I also replace the tired old HDD with the 512GB SSD from my son’s previous machine. I opened it up, replaced the paste, installed the SSD, and sealed it back up. The SSD already had Ubuntu Mate 22.04 on it with all his files and Minecraft maps, so I booted it and let the drivers sort themselves out. A quick later and everything worked perfectly. I also bumped it to 24.04 while I was there. Here’s how the new machine looks on his little desk in his bedroom: Pretty cool, I think you’ll agree. Oh lordy, this thing is quick ! It boots up in a few seconds, every single app opens pretty much instantly, and he gets a stable 60+ FPS on Minecraft. He’s thrilled with it, and so are we. So much so that we will probably do the same thing again next year when we look to get a machine for our youngest. If you’re on the hunt for a new device, I’d seriously consider looking at an Intel Mac with Linux. They’re blazing fast, they look great, and are amazing value. The only downside is that this window is closing. Apple’s move to the M-series chips means Linux support will be tougher over time. Projects like Asahi Linux exist, but support varies and the long-term outlook is unclear. For now though, our oldest son has a solid machine that should last him for a few years. If it dies again, I’ll probably look at a Framework 12 , but hopefully it won’t come to that. What do you think about running Linux on older hardware? Would you try something like this? Leave a comment or drop me an email and let me know. Thanks for reading this post via RSS. RSS is great, and you're great for using it. ❤️ Reply to this post by email

0 views
Corrode 1 months ago

Canonical

What does it take to rewrite the foundational components of one of the world’s most popular Linux distributions? Ubuntu serves over 12 million daily desktop users alone, and the systems that power it, from sudo to core utilities, have been running for decades with what Jon Seager, VP of Engineering for Ubuntu at Canonical, calls “shaky underpinnings.” In this episode, we talk to Jon about the bold decision to “oxidize” Ubuntu’s foundation. We explore why they’re rewriting critical components like sudo in Rust, how they’re managing the immense risk of changing software that millions depend on daily, and what it means to modernize a 20-year-old operating system without breaking the internet. CodeCrafters helps you become proficient in Rust by building real-world, production-grade projects. Learn hands-on by creating your own shell, HTTP server, Redis, Kafka, Git, SQLite, or DNS service from scratch. Start for free today and enjoy 40% off any paid plan by using this link . Canonical is the company behind Ubuntu, one of the most widely-used Linux distributions in the world. From personal desktops to cloud infrastructure, Ubuntu powers millions of systems globally. Canonical’s mission is to make open source software available to people everywhere, and they’re now pioneering the adoption of Rust in foundational system components to improve security and reliability for the next generation of computing. Jon Seager is VP Engineering for Ubuntu at Canonical, where he oversees the Ubuntu Desktop, Server, and Foundations teams. Appointed to this role in January 2025, Jon is driving Ubuntu’s modernization strategy with a focus on Communication, Automation, Process, and Modernisation. His vision includes adopting memory-safe languages like Rust for critical infrastructure components. Before this role, Jon spent three years as VP Engineering building Juju and Canonical’s catalog of charms. He’s passionate about making Ubuntu ready for the next 20 years of computing. Juju - Jon’s previous focus, a cloud orchestration tool GNU coretuils - The widest used implementation of commands like ls, rm, cp, and more uutils coreutils - coreutils implementation in Rust sudo-rs - For your Rust based sandwiches needs LTS - Long Term Support, a release model popularized by Ubuntu coreutils-from-uutils - List of symbolic links used for coreutils on Ubuntu, some still point to the GNU implementation man: sudo -E - Example of a feature that sudo-rs does not support SIMD - Single instruction, multiple data rust-coreutils - The Ubuntu package with all it’s supported CPU platforms listed fastcat - Matthias’ blogpost about his faster version of systemd-run0 - Alternative approach to sudo from the systemd project AppArmor - The Linux Security Module used in Ubuntu PAM - The Pluggable Authentication Modules, which handles all system authentication in Linux SSSD - Enables LDAP user profiles on Linux machines ntpd-rs - Timesynchronization daemon written in Rust which may land in Ubuntu 26.04 Trifecta Tech Foundation - Foundation supporting sudo-rs development Sequioa PGP - OpenPGP tools written in Rust Mir - Canonicals wayland compositor library, uses some Rust Anbox Cloud - Canonical’s Android streaming platform, includes Rust components Simon Fels - Original creator of Anbox and Anbox Cloud team lead at Canonical LXD - Container and VM hypervisor dqlite - SQLite with a replication layer for distributed use cases, potentially being rewritten in Rust Rust for Linux - Project to add Rust support to the Linux kernel Nova GPU Driver - New Linux OSS driver for NVIDIA GPUs written in Rust Ubuntu Asahi - Community project for Ubuntu on Apple Silicon debian-devel: Hard Rust requirements from May onward - Parts of apt are being rewritten in Rust (announced a month after the recording of this episode) Go Standard Library - Providing things like network protocols, cryptographic algorithms, and even tools to handle image formats Python Standard Library - The origin of “batteries included” The Rust Standard Library - Basic types, collections, filesystem access, threads, processes, synchronisation, and not much more clap - Superstar library for CLI option parsing serde - Famous high-level serilization and deserialization interface crate Jon Seager’s Website Jon’s Blog: Engineering Ubuntu For The Next 20 Years Canonical Blog Ubuntu Blog Canonical Careers: Engineering - Apply your Rust skills in the Linux ecosystem

0 views
Lalit Maganti 1 months ago

TIL: Number in man page titles (e.g. sleep(3))

If you do Linux systems programming, you will have likely pored over pages, either on the command line or, my personal preference, using the excellent man7.org or linux.die.net . I’ve always seen the numbers in and and idly wondered what they meant, but never actually bothered to look them up. That is, until a review comment on a pull request: reviewer: nit: it’s not a syscall, so “man 2” is incorrect So I looked it up. The answer was in the page (also accessible via the delightful command): The table below shows the section numbers of the manual followed by the types of pages they contain. So my colleague was right and the code should have read as is a libc library call.

0 views
Fernando Borretti 2 months ago

Linux on the Fujitsu Lifebook U729

This post describes my experience using Linux on the Fujitsu Lifebook U729 . The tl;dr is that it’s a delightful laptop, and Linux runs flawlessly, and all the hardware things I’ve needed run OOTB. The only difficulty I had was in disabling Secure Boot, but I figured out how to do it, which I explain below. From early 2024 my daily driver was an M2 MacBook Air, until earlier this year I broke the screen, and the repair was quoted at almost 1000 AUD. Since I used it as a desktop most of the time, this didn’t affect me much. After some flip-flopping I decided to get an M4 Mac mini. Partly for the faster CPU and more RAM, but partly because I liked the idea of LARPing like it’s the 2000s, when computers, and by extension the Internet, where fixed in physical space, rather than following everyone around. Of course this was a terrible idea. I had three working computers—a Linux+Windows desktop, a Mac Mini, and a MacBook Air that I could use as a desktop—and none of them were portable. When I went to RustForge 2025 I just brought my phone. If I wanted to travel, even within Sydney, to a demo night or math club or some such, I didn’t have a laptop to bring with me. So I needed a new laptop. And the Tahoe release of macOS was so ugly (see e.g. 1 , 2 , 3 ) it made me boot up the old Linux desktop, and start playing around with NixOS again. And I fell in love with Linux again: with the tinkering and the experimentation and the freedom it affords you. So, I wanted a Linux laptop. I had a ThinkPad X1 some years ago and it was terribly: flimsy plastic build and hardware that vastly underperformed its price. I looked around for old, refursbished workstation laptops, and, randomly, I ran into an eBay seller offering a refurbished Fujitsu laptop. The specs/price ratio was pretty good: 16 GiB of RAM and 512GiB of SSD, all for 250 AUD. And it was 12in and 1.1kg, which I like: laptops should be small and lightweight. But the thing that got me, in all honesty, was the brand. “Fujitsu laptop” sounds like colour in a William Gibson novel: “crawling into the avionics bay, Case took out a battered Fujitsu refurb, and stuck a JTAG port in the flight computer—”. I already use NixOS and a trackball and a mechanical keyboard , so a laptop that’s even more obscure than a ThinkPad is perfect for me. And it was only 250 AUD. So I got it. The only problem I had was disabling Secure Boot in order to install Linux. Otherwise: I love it. It’s small and lightweight, feels solid, the keyboard is good, all the hardware works out of the box with NixOS, and the battery life is pretty good. This section describes the problems I encountered. I tried to install Linux the usual way, when I was greeted by this: Going into the BIOS, the option to disable Secure Boot was greyed out. I tried a bunch of random bullshit: wiping the TPM, disabling the TPM. That didn’t work. What did work was this: First, install Windows 11. This came with the laptop. And the installation makes installing Linux feel easy: I had to do so many weird tricks to avoid having to create an account with Microsoft during the installation. Once Windows is installed, go into Windows Update. Under “Advanced Options > Optional Updates”, there should be an option to install Fujitsu-specific drivers. Install those. And for good measure, do a general Windows update. There should be a program called DeskUpdate on the Desktop. This is the Fujitsu BIOS update tool. Run this and go through the instructions: this should update the BIOS (the ordering seems to be important: first update the Fujitsu firmware through Windows Update, then the BIOS through DeskUpdate). Reboot and go into the BIOS (F2). You should have a new BIOS version. In my case, I went from BIOS 2.17 to 2.31 which was released on 2025-03-28: You now have the option to disable Secure Boot: After this, I was able to install NixOS from a live USB: The laptop comes with this corporate spyware thing called Absolute Persistence . It’s some anti-theft tracking device. Since the Lifebook is typically an enterprise laptop, it makes sense that it comes with this type of thing. I only noticed this because I was searching the BIOS thoroughly for a way to disable Secure Boot. The good news is disabling it is pretty straightforward: you just disable it in the BIOS. As I understand it, Absolute Persistence requires an agent running in the OS, so the BIOS support, by itself, doesn’t do anything once disabled. The following work flawlessly OOTB: Things I have not tested: To enter the BIOS: smash until you hear the beep. No need to hold down the key. To enter the boot menu: as above but with . Troubleshooting Secure Boot Non-Problems Sound (using PipeWire ) Display brightness control (using brightnessctl ) Touchscreen (I didn’t realize the screen was actually a touchscreen until I touched it by accident and saw the mouse move) Webcam (not winning any awards on quality, but it works) Fingerprint sensor Fujitsu product page ( archive.org ) Data sheet (PDF)

0 views
Jeff Geerling 2 months ago

Using AMD GPUs on Raspberry Pi without recompiling Linux

I'm working on a more in-depth test of some newer AMD GPUs on the Raspberry Pi, now that the 15 line kernel patch is (IMO) nearly ready for upstreaming. But this blog post shows how to quickly get almost any modern AMD GPU running on a Raspberry Pi 5, CM5, or Pi 500+, thanks to this patch on the Pi Linux fork .

0 views
neilzone 2 months ago

Downgrading Debian from testing to stable (trixie)

I have some machines running Debian testing. However, it looks questionable whether I would get through Cyber Essentials running testing (or sid/unstable) rather than stable. So I can either try to downgrade the machines, or else reinstall the OS. The official guidance is not to downgrade: No, it isn’t supported Instead, to wipe and reinstall. I am fully prepared to wipe and reinstall if needed - in other words, I’ve taken and tested backups - so I didn’t really have much to lose by trying a downgrade. The worst case scenario is that I end up wiping and reinstalling anyway. I took, and tested, backups first. I reverted my sources.list entry: I then pinned the stable repos: And then I did the downgrade, which took a few minutes: I actually ran it twice. And… it mostly worked. On one machine, I had to fix a few bits by hand: On another machine, it finished cleanly. I also had to set up my accounts in Thunderbird again, because of a change in profile syntax. Overall, this went a lot more smoothly than I had expected. (Obviously, perhaps, YMMV…)

0 views
Uros Popovic 2 months ago

How to reverse engineer USB HID on Linux

Discover how Linux exposes raw USB device data, even without a driver. This article details how to use /dev/hidraw and the HID report descriptor to reverse-engineer and read real-time data from a UPS.

0 views
neilzone 2 months ago

Stopping a kernel module from loading on boot in Debian Trixie using /etc/modules-load.d/

I am going through, upgrading my Debian machines from bookworm to trixie. On the whole, so far anyway, it has been pretty painless. But here’s something which needed some manual intervention. I have a couple of virtual machines still using VirtualBox. Yes, I know, but now was not the time to solve that part of the problem. They ran fine on a hypervisor running bookworm. After I had upgraded the hypervisor to trixie and started the virtual machine, I got an error: Sure enough, when I ran , the kernel module was loaded: Temporarily unloading it with did the trick. But that does not survive a reboot. Previously, I would have done something like . But says: It seems that the new (I don’t know how new) way to do things is to put a simple config file in : (It is a shame that the command uses “blacklist” in 2025.) And then I rebuilt the initramfs: . On rebooting the machine, that kernel module no longer loads automatically, and I can start my virtual machine.

0 views
Uros Popovic 2 months ago

How KVM and QEMU run VMs in Linux

Learn the distinct roles of QEMU and KVM in Linux virtualization. This article explains how they complement each other to run virtual machines at near-native speed.

0 views
Lalit Maganti 2 months ago

Perfetto: Swiss Army Knife for Linux Client Tracing

Discussed on lobste.rs and Hacker News . I gave a talk at the 2025 Tracing Summit last month titled “ Perfetto: The Swiss Army Knife of Linux Client/Embedded Tracing ”. My goal in this talk was to show how Linux kernel, systems and embedded developers can use Perfetto when debugging and root-causing performance issues in their respective domains. Even though the Perfetto UI is primarily built for viewing Android or Chrome traces , it is a flexible tool and can be used in many other ways! The talk was recorded and is available on YouTube . Taking inspiration from Simon Willison , this post is an annotated presentation containing my slides and detailed notes on them. The talk also has a lot of UI demos: for these, I’ll have a screenshot but also a link to the relevant part of the video (videos are unbeatable for UI!). First, what is Perfetto? Perfetto is fundamentally a suite of tools: it’s not just one thing but a bunch of different tools working together to help you debug and root-cause problems. This diagram shows how everything fits together, with the core parts of the Perfetto project in the center. The recording tools for Perfetto consist of 1) an SDK for C++ apps 2) a daemon that can collect data from ftrace, /proc, /sys, and various kernel interfaces 3) another daemon that amalgamates trace data from multiple processes into a single trace file. These tools all speak the Perfetto protobuf format , a high-performance trace format designed to be very efficient to write but not to analyze or consume directly. That’s where the trace processor comes in. It’s a C++ library that parses the protobuf format, but also a bunch of other widely used trace formats. It exposes this data via an SQL query interface to any embedding program including Perfetto UI (which is what most of this talk is about) and also to the Python API if you want to do ad-hoc scripting or analysis in Python. There are also very common tracing/profiling formats used by the Linux community: perf.data, ftrace text format, Firefox profiler format, and many others. Perfetto supports quite a few of those directly. There’s also the Chrome JSON format (AKA the Trace Event Format ) which is a simpler interchange format. It’s not the most efficient to read or write, but it does the job for a lot of use cases. Often people write converters . They have their own tracing format, maybe proprietary, maybe open source but something we don’t know about, and it’s very common that people convert to one of the formats we understand, most commonly our protobuf or Chrome JSON formats. The Perfetto UI is fundamentally a web-based trace visualizer, combining timeline visualization, user-driven selection/aggregation, and SQL queries all in one interface. Because it has the trace processor as a backend, it works with a bunch of different trace formats. It’s very important to note that even though the Perfetto UI is web-based, everything happens inside your browser and trace data never leaves your system. You can even build it and host it yourself on any static server: we’ve made it extremely easy to do so! At the start of 2025, we actually moved our whole development to GitHub. In the past, we used to develop on Android and GitHub was just a mirror. That’s no longer the case, GitHub is actually where we develop and take pull requests. Most of this talk, I’m going to spend actually showing you how you can use the Perfetto UI to debug performance issues on Linux. I don’t want to show you an Android trace which needs a lot of context about how the Android system works and so you think, “oh, that was cool, but I didn’t really understand what was happening.” So to make this talk more approachable, I wrote a straightforward demo program you can look at yourself! So it’s obviously not a production system but I’ve tried to make it as representative of the sort of issues we use Perfetto for every day. It’s a Rust program which generates a Julia set and visualizes it over time. The technologies I used: Vulkan , GPU rendering and also multi-threaded CPU computation. So how it works is that computation of various parameters is happening on background threads, and then that’s being passed to the main thread for rendering. And then, for demonstration purposes, there is a performance bug; rendering should run at 60 FPS, but every so often, the frame rate drops dramatically. Here’s what that looks like: The code is on GitHub and if you’re interested in following along. The traces are there as well - you don’t have to collect the traces yourself, but you can if you want. All the instructions and information is in the README. So the first suspicion we may have is that maybe it’s some CPU problem. A lot of engineers I know would reach for perf immediately whenever they see a problem like this. The main reason is that if perf can capture the problem, they can go straight to the line of code without needing to spend time debugging using more complex approaches.

0 views
neilzone 2 months ago

What goes on at a meeting of the Silicon Corridor Linux User Group in 2025

What goes on at a meeting of the Silicon Corridor Linux User Group in 2025 I found this post in my drafts, half completed. I am not really sure why I started it, but I did start it, some point earlier this year, so now I will finish it. I am a long time member of our local Linux user group, the curiously named Silicon Corridor Linux User Group (SCLUG) . (Its website looks much how you might expect the website of a Linux user group to look.) Given that we’ve only met in Reading for as long as I can remember, I guess that it is really the Reading And Thereabouts Linux User Group. RATLUG. I first went to a SCLUG meeting in around 2005, when I was back in the area after university. The group had an active email list, which was the primary means of communication. We met at the seating area in the front of a Wetherspoons (urgh). I think because the food was cheap. It certainly wasn’t because it was good. Or a pleasant place conducive to a good chat, given how loud and crowded it was. But it was fun , and it was enjoyable to chat with people developing, supporting, and using Linux (and BSD etc.). Meetings were well attended, and we often struggled for space. I stopped going for a quite a few years, both because I really wasn’t a fan of Wetherspoons, and also life got in the way. I started to go again just before the first Covid lockdown. It was still in Wetherspoons, but oh well. I think that I managed one meeting before everything was shut down. We moved online during the covid lockdowns, using jitsi as a platform for chatting. I rather enjoyed it. I particularly liked the convenience, of being able to join from home, rather than travel all the way to Reading for a couple of hours. But it was not a success from a numbers point of view, and while I liked the idea of people proposing mini-talks (as I like the idea of using the LUG as a place to learn things), that did not catch on. So now we are in 2025, and SCLUG keeps going. Times have changed, though. The mailing list is almost silent; we have a Signal group instead, but there is relatively little chat between meetings. We still meet in person, once a month, of a Wednesday evening. We have, finally, moved from Wetherspoons to another pub, thank goodness. The fact that meetings were in Wetherspoons were a significant factor in me not bothering to go, so I was keen to encourage a move to somewhere… better. At the moment, we meet in the covered garden area of The Nag’s Head and in the warmer and lighter months, it is quite pleasant. We’ve acknowledged that this is not going to be viable for much longer because of the weather, and the pub itself is small and noisy, so I suspect that we are back to looking for another venue. It is not a big group. I reckon that, on average, there are probably six or seven of us at most meetings. Visitors / drop-ins are very welcome; the Signal group is a good way of finding us, else look for the penguin on the table if I remember to bring it. “Meetings” sounds a bit formal, since it is just us sitting and chatting. There is no formality to it at all, really; turn up, have a chat, and leave whenever. I tend to be there a bit earlier than the times on the website, and leave not too late in the evening. The conversation tends to be of a technical bent, although not just Linux by any means. Self-hosting comes up a fair amount, as do people’s experiments with new devices and technologies, and chats about tech and society and politics etc. While I doubt that anyone who didn’t have an interest in such things would enjoy it, there’s certainly no expectation of knowledge/experience/expertise, nor any elitism or snobbery. I can’t say that I learn a huge amount - for me, it is definitely more social than educational. Even with a small number of people, I have to have enough social spoons left to persuade myself to go into Reading of a Wednesday evening for a chat. We have not done anything like PGP key signing, or helping people install Linux, or anything similar, for as long as I can remember. Yes, I think so. There are, of course, so many online places where one can go to chat about Linux, and to seek support, that an in-person group is not needed for this. To me, SCLUG is really now a social thing. A pleasant and laid back evening, once a month, to chat with people with complementary interests. It strikes me as of those things that will continue for as long as there are people willing and able to turn up and chat. Perhaps that will wane at some point…

0 views
neilzone 2 months ago

Is now the best time ever for Linux laptops?

As I’ve said, ad nauseum probably, I like my secondhand ThinkPads. But I’m not immune to the charms of other machines and, as far as I can tell, now is an amazing time for Linux laptops. By which I mean, companies selling laptops with Linux pre-installed or no OS preinstalled, or aimed at Linux users. Yes, it’s a bit subjective. There seems to be quite a range of machines, at quite a range of prices, with quite a range of Linux and other non-Windows/macOS operating systems available. This isn’t meant to be a comprehensive list, but just some thoughts on a few of them that have crossed my timeline recently. All have points that I really like but, right now at least, if my current ThinkPad died, I’d probably just buy another eBay ThinkPad… Update 2025-10-25: This is a list, not recommendations, but personally I won’t be buying a Framework machine: “Framework flame war erupts over support of politically polarizing Linux projects” I love the idea of the Framework laptops , which a user can repair and upgrade with ease. Moving away from “disposable” IT, into well-built systems which can be updated in line with user needs, and readily repaired, is fantastic. Plus, they have physical switches to disconnect microphone and camera, which I like. I’ve seen more people posting about Framework machines than I have about pretty much all of the others here put together, so my guess is that these are some of the more popular Linux-first machines at the moment. I know a few people who have, or had, one of these. Most seem quite happy. One… not so much. But the fact that multiple people I know have them means, perhaps, sooner rather than later, I’ll get my hands on one temporarily, to see what it is like. I only heard about Malibal while seeing if there was anything obvious that I’d missed from this post. Their machines appear to start at $4197, based on what they displayed when I clicked on the link to Linux machines, which felt noteworthy. And some of the stuff on their website seems surprising. Update 2025-10-25: The link about their reasons for not shipping to Colorado no longer works, nor is it available via archive.org (“This URL has been excluded from the Wayback Machine.”). Again, this is a list, not recommendations, but this thread on Reddit does not make for good reading. I’m slipping this in because I have soft spot for Leah’s Minifree range of machines even though, strictly, they are not “Linux-first” laptops, but rather Libreboot machines, which can come with a Linux installation. I massively admire what Leah is doing here, both in terms of funding their software development work, and also helping reduce electronic waste through revitalising used equipment. Of all the machines and companies in this blog post, Minifree’s are, I think, the ones which tempt me the most. I think the MNT Pocket Reform is a beautiful device, in a sort-of-quirky kind of way. In my head, these are hand-crafted, artisan laptops. Could I see myself using it every day? Honestly, no. The keyboard would concern me, and I am not sure I see the attraction of a trackball. (I’d happily try one though!) But I love the idea of a 7" laptop, and this, for me, is one of its key selling points. If I saw one in person, could I be tempted? Perhaps… The Pinebook Pro is a cheap ARM laptop. I had one of these, and it has gone to someone who could make better use of it than I could. Even its low price - I paid about £150 for it, I think, because it was sold as “broken” (which it was not) - could not really make up for the fact that I found it underpowered for my needs. This is probably a “me” thing, and perhaps my expectations were simply misaligned. The Pine64 store certainly hints in this direction: Please do not order the Pinebook Pro if you’re seeking a substitute for your X86 laptop, or are just curious Purism makes a laptop, a tablet, and a mini desktop PC . I love their hardware kill switches for camera and microphone. A camera cover is all well and good, but I’d really like to have a way of physically disconnecting the microphone on my machines. Again, I don’t think I know anyone who has one. Were it not for a friend of mine, I wouldn’t even be aware of Slimbook. Matija, who wrote up his experiences setting up a Slimbook Pro X 14 , is the only person I’ve seem mention them. But there they are, with a range of Linux-centric laptops , at a range of prices. I could be tempted by a Linux-first tablet, and StarLabs’ StarLite looks much the best of the bunch… But, at £540 + VAT, or thereabouts, with a keyboard, it is far from cheap for something that I don’t think would replace my actual laptop. I’m aware of System 76 , but I’m not sure I know anyone who has one of their machines. As with System 76, I’m aware of Tuxedo , which certainly appears to have an impressive range of machines. But I don’t think I’ve heard or seen of anyone using one.

0 views