/rss20.xml">

Fedora People

Using openpgp-card-tool-git with git

Posted by Kushal Das on 2025-02-11 11:12:40 UTC

One of the power of Unix systems comes from the various small tools and how they work together. One such new tool I am using for some time is for git signing & verification using OpenPGP and my Yubikey for the actual signing operation via openpgp-card-tool-git. I replaced the standard gpg for this usecase with the oct-git command from this project.

Installation & configuration

cargo install openpgp-card-tool-git

Then you will have to configuration your (in my case the global configuration) git configuration.

git config --global gpg.program <path to oct-git>

I am assuming that you already had it configured before for signing, otherwise you have to run the following two commands too.

git config --global commit.gpgsign true
git config --global tag.gpgsign true

Usage

Before you start using it, you want to save the pin in your system keyring.

Use the following command.

oct-git --store-card-pin

That is it, now your git commit will sign the commits using oct-git tool.

In the next blog post I will show how to use the other tools from the author for various different OpenPGP oeprations.

A Fish Script for Creating New Hugo Posts

Posted by Christiano Anderson on 2025-02-11 07:13:07 UTC
I’ve streamlined my blogging process using Hugo by automating tasks with the Fish Shell. I created a simple script that saves me a few minutes each time I write a new post. It automatically starts a new Hugo post and opens it in Helix editor, allowing me to write, save, and publish with ease. File name: new_til.fish function new_til -d "Create a new Today I learned post on Hugo" set blog_path ~/sites/blog set date_str (date +%Y-%m-%d) cd $blog_path hugo new til/$date_str-$argv[1].

New badge: SCaLE 22x Attendee !

Posted by Fedora Badges on 2025-02-10 16:56:29 UTC
SCaLE 22x AttendeeYou dropped by the Fedora booth at SCaLE 22x!

Running PostgreSQL with Podman and volume

Posted by Christiano Anderson on 2025-02-10 11:48:24 UTC
This is a short snippet to run PostgreSQL using Podman with a volume. The snippet has been tested on Fedora 41. Create the Podman volume $ podman volume create psqldevel Run PostgreSQL $ podman run -d -p 5432:5432 -v psqldevel:/var/lib/postgresql/data -e POSTGRES_PASSWORD=xx --name psqldevel postgres:latest

Introducing Today I Learned

Posted by Christiano Anderson on 2025-02-10 11:33:35 UTC
As I continue to explore the world of Data Engineer, Linux, Fedora and other intersting topics, I often find small but interesting topics, that don’t deserve a full blog post, but I don’t want to let these discoveries to go away. In this section, I’ll be documenting and sharing short snippets of knowledge, tips and tricks that I’ve learned along the way. These posts will be bite-sized, easy to digest and hopefully, useful to others who may be on a similar journey.

Next Open NeuroFedora meeting: 10 February 2025 1300 UTC

Posted by Ankur Sinha on 2025-02-10 09:24:05 UTC
Photo by William White on Unsplash

Photo by William White on Unsplash.


Please join us at the next regular Open NeuroFedora team meeting on Monday 10 February 2025 at 1300 UTC. The meeting is a public meeting, and open for everyone to attend. You can join us in the Fedora meeting channel on chat.fedoraproject.org (our Matrix instance). Note that you can also access this channel from other Matrix home severs, so you do not have to create a Fedora account just to attend the meeting.

You can use this link to convert the meeting time to your local time. Or, you can also use this command in the terminal:

$ date -d 'Monday, February 10, 2025 13:00 UTC'

The meeting will be chaired by @ankursinha. The agenda for the meeting is:

We hope to see you there!

The state of the Location permission on Fedora Linux in 2025

Posted by Fedora Magazine on 2025-02-10 08:00:00 UTC

This article will discuss the state of finding your current geographical location in the Fedora Linux environment.

Background

For many mobile devices it is useful to get the current location. This is usually done using a GPS sensor, where the coordinates (latitude and longitude as given by the satellites) allow for step-by-step directions to the desired destination.

However, sometimes using the GPS isn’t desirable. This may be due to the high battery usage, or sometimes the device doesn’t have a GPS sensor at all. Even more interesting, the user might hit a GPS sensor limitation (such as being indoors) meaning there is a need for a secondary way to detect location to either replace or augment the GPS data.

But, what would that secondary source of data be? The alternative source needs to be some public data that is available for everyone, and we do have those! There are Wifi network identifiers, mobile cell towers data, and Bluetooth beacons. All of these are broadcast constantly, or almost constantly.

Using these alternative sources the user accepts the service of a location service provider (for example, Google Location Services provided by Google on Android). The provider has their own database of the specified device identifiers along with their approximate location. When making a location request the Wifi, Bluetooth, and cell identifiers are sent with the request and the location provider sends back coordinates. In addition they provide the precision of the coordinates based on an average of the locations available from the data in the database.

Of course, there is always the third option of combining both approaches in a way that fits the precision needed for the task. As an example, Google calls this combined approach Fused Location which is provided in their proprietary Google Play Services.

Ok, that is how it generally works and how mobile devices do it. But what about Linux?

So, how does it work on Linux?

In Linux, the software responsible for handling the location requests is Geoclue. As the Geoclue project puts it:

Geoclue is a D-Bus service that provides location information. The goal of the Geoclue project is to make creating location-aware applications as simple as possible.

Geoclue is capable of, among other things:

  • Support for location data based on Wifi (via wpa_supplicant integration. This uses Mozilla Location Service (MLS) by default)
  • Support for location data using GPS (if available)
  • Support for location data using mobile modems (via ModemManager integration)
  • GeoIP support (fallback mode)

Previously the Mozilla Location Service (MLS) was the default location service used under Linux. Unfortunately, in March 2024, Mozilla announced the project was being discontinued, making it necessary to switch to an alternative.

Mozilla Location Services and Ichnaea

Mozilla’s no longer available service called “Mozilla Location Services” (MLS) utilized the open source Ichnaea software. The service was capable of both receiving submitted user-data as well as responding with the approximate location based on user requests.

For submitting new data, users could use use a “stumbler” application. This was able to collect cell data, Wifi data and Bluetooth beacons, associate them with their location, and submit them to MLS or another Ichnea-compatible service.

Users would utilize the collected data by having their system (in the case of Linux or some Android ROMs using MLS) send the info about the radio devices in range and receive back info about the approximate location.

MLS alternatives and setup

Although there are many possible MLS alternatives (As long as they maintain Ichnaea compatibiltiy), the main alternative those days is beaconDB.

To set up beaconDB set the URL to

https://api.beacondb.net/v1/geolocate
.

Or as adapted from their website:

$ sudo mkdir /etc/geoclue/conf.d
$ sudo nano /etc/geoclue/conf.d/99-beacondb.conf
[wifi]
enable=true
url=https://api.beacondb.net/v1/geolocate
$ sudo systemctl reload geoclue

After restarting Geoclue you should have access to beaconDB.

A future article will focus on submitting new data, this might require an Android phone.

Notes

  • If there’s not enough data for your region yet, you might not have a very good experience. Consider looking at the beaconDB map before making the switch or submitting data for your region.
  • The Geoclue integration with Wifi networks requires wpa_supplicant, since currently only a wpa_supplicant backend exists. This means iwd users won’t be able to use Geoclue correctly since there is no Geoclue iwd support and no Wifi data will be sent. Instead fall back to beaconDB’s GeoIP implementation will occur.
  • There is a chance beaconDB’s implementation of GeoIP might be potentially worse than Geoclue’s own implementation. This could be explained by geoclue currently relying on Google, although in the future it will switch to using reallyfreegeoip. This will be noticed if city-level locations are not precise, such as showing the location a few cities away from the user actual location.

What hardware, software, and cloud services do we use?

Posted by Vedran Miletić on 2025-02-10 07:27:53 UTC

What hardware, software, and cloud services do we use?


green and black computer motherboard

Photo source: Patrik Kernstock (@pkernstock) | Unsplash


Our everyday scientific and educational work relies heavily on hardware, software, and, in modern times, cloud services. The equipment that we will mention below is specific to our group; common services used by university and/or faculty employees will not be specifically mentioned here.

Publishing (Material for) MkDocs website to GitHub Pages using custom Actions workflow

Posted by Vedran Miletić on 2025-02-10 07:27:53 UTC

Publishing (Material for) MkDocs website to GitHub Pages using custom Actions workflow


blue and black penguin plush toy

Photo source: Roman Synkevych (@synkevych) | Unsplash


As you can probably see, this website is built using the Material theme for MkDocs, which we have been happily using for over one year after using Sphinx for many years prior to that. GitHub Pages offers built-in support for Jekyll, but not for MkDocs and therefore it requires the manual building and deployment of our website. However, it automates many other things, including HTTPS certificate provisioning on our domain via Let's Encrypt.

There are several somewhat related approaches using GitHub Actions for automating the deployment of MkDocs-generated sites, usually with the Material theme, to GitHub Pages. These guides are not only found on blogs written by enthusiasts; the official Getting started section of the Material for MkDocs documentation describes the usage of GitHub Actions for deployment and provides a generic YAML file for that purpose.

Day One - CentOS Connect 2025

Posted by Akashdeep Dhar on 2025-02-09 18:30:00 UTC
Day One - CentOS Connect 2025

The first day of my presence at CentOS Connect 2025 began as early as 0600am Central European Time on 30th January 2025. As the first half of that day mostly consisted of some meetups from Hyperscale SIG, Alternative Images SIG, AlmaLinux Elevate and the OKD team, I decided that I would try to make it to the venue by 1100am Central European Time. I wanted to help with the organizational efforts of CentOS Connect 2025 and represent the Fedora Project community at the event venue. Sumantro Mukherjee and I headed down at around 0730am Central European Time for breakfast where we met with Greg Sutcliffe and Luis Bazan. Amidst all the wisecracking about Greg's pink-coloured water bottle, Justin W. Flory and Bhagyashree Padalkar joined us at the dining place to join Greg on their way to CHAOSScon EU 2025 at Bedford Hotels & Congress Centre.

Day One - CentOS Connect 2025
I found this in the elevator at the Moxy Brussels City Center hotel and it is as if that the selfie taking event was manifested by someone else

After a brief introduction with Bhagyashree before their departure, I realized that Greg had left his pink-coloured water bottle and sprinted outside to catch up with Greg who headed inside at the same time with the same realization. With the handover complete, I discussed the plans to head to the CentOS Connect 2025 event venue with Sumantro and Luis where Luis decided to head away in advance while the both of us decided to delay our departure by at least 0930am Central European Time. The shop that we were planning to visit during the first half of the day named Ichiban was opening at around 1000am Central European Time and was on the way between the event venue at DoubleTree by Hilton Brussels City and our hotel, Moxy Brussels City Center. We soon departed on bus number #71 bound for De Brouckère from a nearby bus stop and got off one stop before the designated point.

Day One - CentOS Connect 2025
What Sumantro and I thought would be a "quiet bus ride" ended up being a "quiet bus ride" to the destination - Sometimes boring is amazing

The rain that morning was a lot worse than the one that Sumantro and I experienced the previous night. While we previously were considering heading to the event venue on foot, we quickly decided to use a bus instead. On our way from the destination stop to the Ichiban store, we also passed through the Hotel Marivaux which we stayed at during my first trip to FOSDEM in 2023. We swiftly made it to the Ichiban store where Sumantro explored some Goku figurines from the Dragon Ball Z (1989) anime and I was finally able to find some Manga books in English. As the selection did not match my expectations, Sumantro and I decided to head out after purchasing a couple of imported merchandise from Japan like quaint-themed Fanta drinks and some Anime themed Sakuma Drops from the popular Naruto (2007) anime and acclaimed Ansatsu Kyoushitsu (2015) anime.

Some more walking through towards the event venue and we soon found ourselves around the DoubleTree by Hilton Brussels City hotel where CentOS Connect 2025 was organized. This was also the place that I was staying in to attend the FOSDEM fringe events in 2024 so I felt this sense of familiarity with the place. What helped with the familiarity more was the sight of Carl W. George and Dorka Volavkova at the CentOS Connect 2025 reception desk at around 1030am Central European Time. For Carl - going as far as hugging me when I was super soaked from rain was "no big deal" and it was indeed great meeting him after a long time. Sumantro and I got ourselves the event badges along with CentOS Project themed tee shirts while we were at the desk. While we were at the desk, I noticed the SyncStar postcards that I worked to design and Dorka helped with printing from Brno.

I was grateful that Dorka managed to get these resources printed when these were turned in late to her because of the delays due to the confusion around the availability of Fedora Project themed USB flash drives for giveaways. SyncStar is a service that I developed by taking inspiration from an existing but unmaintained tool called Fedorator to help with creating bootable media at conference kiosks. Although there was this one thing that I was bummed about and that was the fact the CentOS Project-themed USB flash drives that were being given away were manually flashed with the recently released CentOS Stream 10 when SyncStar could have easily been of help with making the process convenient. After all, SyncStar was nothing but a fancy wrapper around GNU DD with asynchronous process queues written in Python and a responsive web interface written in ReactJS.

Day One - CentOS Connect 2025
SyncStar postcards among USB flash drives with CentOS Stream 10 at the CentOS Connect 2025 event desk for the event attendees

After leaving my coat to dry in the Chestnut Hall, I ran into Brian Exelbierd who also seemed to have arrived around the same time. It was great catching up with him after a long time and after leaving the conversation to Sumantro, I started working on setting up the YAML file to configure the SyncStar utility at the reception desk. Carl and I struggled briefly with the hotel WiFi as I wanted my laptop to execute the service headlessly and Carl's laptop to exhibit the web interface before deciding to use Cloudflare Tunnels for the purpose. The final deployment was configured to be served through the Cloudflare network on the hostname syncstar.gridhead.net which surprised Carl as he thought that the hostname was limited to the local network only. I caught up with Shaun McCance as well following the conversations around their move to GitLab with Fabian Arrotin.

Day One - CentOS Connect 2025
Digital display of schedule for all the presentation events to take place on the second half of the first day of CentOS Connect 2025

Alongside the Fedora Project, the CentOS Project seemed to have also decided to move away from Pagure and hence, the assets on their current deployment of Package Sources and Project Collections had to be reliably exported over to GitLab. I maintained a project named Pagure Exporter for the Fedora Infrastructure team and I volunteered my support to help with the CentOS Project's migration from Pagure to GitLab. While my primary focus then was to introduce the support for Forgejo that the Fedora Council decided for the community to move over to - there was no need to reinvent the wheel with another project when the existing one could be extended. Once done with the exchange, I ran into Sherif Nagy and Neil Hanlon from the Rocky Enterprise Software Foundation and David Cantrell who represented the Fedora Engineering Steering Committee in the Fedora Council.

Purchasing an extra orange-flavoured Fanta soda can among other Japanese imported products at the Ichiban store earlier that morning was a wise thing to do as that ended up coming in handy when David mentioned his struggle with the caffeine intake since the morning. Saving him a trip downstairs for a purchase, I caught up in conversations with him when the both of us ran into Matthew Miller who had just arrived at the venue at around 0100pm Central European Time. After a small chat with him and Amy Marrich at the reception area, they left for a meeting with Shaun and Carl so I decided to help out with the event reception area with Dorka. She provided me with a swift and effective walkthrough of what had to be done and once I relocated my stuff to the cloakroom for event organizers and speakers, I started helping out with the event registrations there.

Dorka mentioned her plans to come to India for DevConf.IN in Pune - which was great because we were also planning on organizing a Fedora Project booth at the event. We were soon joined by Luis whose wisecracking kept things interesting as we were getting folks registered at the reception. Among some folks I helped register, I caught up with the likes of Alexandra Fedorova whom I was meeting after the previous Fedora Council F2F Meeting in 2024 and Fabio Valentini whom I was meeting for the first time. While getting David Fan and Jess Chitas registered, he mentioned liking my Instagram stories about my adventures through various anime stores in Brussels and planning on heading out together whenever after the event. At around 0130pm Central European Time, I decided to grab a Greek Bowl meal with chicken salad that was served for the lunch meal at the event venue.

Day One - CentOS Connect 2025
From left to right - Luis, Dorka and I goofing around at the CentOS Connect 2025 reception desk in the afternoon when we got some breathing room after the slight decrease in the entry footfall

Fabian arrived at CentOS Connect 2025 around the same time and I caught up with him, Frantisek Lachman and Alexandra in conversations who were present around the reception desk. At around 0200pm Central European Time, the presentations at the event began with an opening statement from Shaun - I started attending some talks while working on some recently noticed changes on the SyncStar project. The inexpensive USB flash drives used for the giveaways did not have unique hardware identifiers and hence, it was difficult to discern among multiple USB flash drives of the same type. Sumantro and I worked on brainstorming solutions (read as workarounds) with which we can retain the information about the USB flash drives plugged into the kiosk device, all while tuning into talks delivered by Troy Dawson, Dennis Gilmore and Joel Capitao in the Chestnut Hall.

At around 0500pm Central European Time, after spending some time brainstorming and coming up with solutions that have some kind of compromises, Sumantro and I decided to call it a day and head back to the hotel. On our way out, we met up with Daniel Mellado and Mikel Olasagasti before we took a selfie with Alexandra, Brian and Dennis to close out the first day of CentOS Connect 2025. Coincidentally, we ran into Matthew and David at the dining area of the event venue so after waving David goodbye, the three of us "tailgated" our way out of the rear exit of the DoubleTree by Hilton Brussels City. On our way through the Rogier station to the train that we were supposed to catch for Port De Namur station, Sumantro and I discussed with Matthew about his tentative yet eager plans to visit India for the first time to represent the Fedora Project during DevConf.IN 2025.

Day One - CentOS Connect 2025
From left to right - (Neal Gompa, Richard Brown), Sumantro, myself, Alexandra and Brian in a selfie right before Sumantro and I were heading out of the event

We had a report of belongings being stolen from one of the Fedora Project community members during their travels so we took that as a learning to be extra careful about our surroundings whenever we were travelling in crowded trains like we did that time. After all, the last thing that you would want when you are travelling in a different country is for your important belongings like wallet, passport or smartphone to be stolen - I was worried about whoever was affected. After getting off at the Port De Namur station at around 0530pm Central European Time, we walked back to the Moxy Brussels City Center hotel. I connected with Matthew asynchronously after resting for a while and dropped a bag of Indian snacks in his hotel room about an hour later. As Sumantro was occupied with his work, I decided to head out alone to get a takeaway from the Belchicken outlet for dinner.

Day One - CentOS Connect 2025
You can clearly not have enough selfies with Sumantro, David and Matthew when you are at a community event with as much of a hustle and bustle as CentOS Connect 2025

I heard back from Amita Sharma on the way back to the hotel who was working with Rajan Shah for last minute approval on the Fedora Project booth so I knew that I had to start working on the planning as soon as possible. I had to ensure that I was ready with the statistical budget estimate for travel and accommodation for the representatives from the Fedora Project required for pulling off such an event. Imagine leading the planning of yet another Fedora Project event all while representing the community at the FOSDEM 2025 fringe - Talk about being crazy enough to take this up! As audacious of a plan as it was, I was able to get together an estimated action and projected estimate for the required budget on a document after I was swiftly done with my dinner. All I had to do next was to present this to Justin on the next day before reverting to Rajan and Amita with a confirmation.

Day One - CentOS Connect 2025
While the Rogier station looked empty in this photograph, it was about to get super crowded with people when we took the train number #6 to the Port De Namur station

Looking back at the situation I was dealt with late in the evening at around 0830pm Central European Time when I was almost out of my juice - one half of me wanted to call it a day while the other half of me wanted to push through with the planning. In hindsight - I am glad that the other half took precedence because I like to think that exemplary actions in exigent moments like these end up creating a difference in free and open source software communities. After messaging Justin to reserve some time from his busy schedule and checking with Dorka to see if we could get some assistance from her end, I took inputs on the budget from Samyak Jain who was available until late. At around 1000pm Central European Time, I decided to head to bed and use the next day to make the best use of the stakeholders present in person at the CentOS Connect 2025 event to progress the planning.

Contribute to GNOME Software with DNF5 Test Day

Posted by Fedora Magazine on 2025-02-08 18:36:49 UTC

The DNF5 team is working on ironing out bugs around matching the existing functionality of GNOME Software with PackageKit. The DNF and QA teams have organized a test week from Monday,February 10, 2025 to Monday, February 17, 2025. The wiki page in this article contains links to the test images you’ll need to participate. Please continue reading for details.

How does a test week work?

A test week is an event where anyone can help ensure changes basic functionality of GNOME Software work well in an upcoming release. Fedora community members often participate, and the public is welcome at these events. If you’ve never contributed before, this is a perfect way to get started.

To contribute, you only need to be able to do the following things:

  • Download test materials, which include some large files
  • Read and follow directions step by step

The wiki page for the kernel test week has a lot of good information on what and how to test. After you’ve done some testing, you can log your results in the test week web application.

Happy testing, and we hope to see you on one of the test days.

Bits from early February 2025

Posted by Kevin Fenzi on 2025-02-08 16:58:43 UTC
Scrye into the crystal ball

Lets keep the blogging rolling. This week went by really fast, but a lot of it for me was answering emails and pull requests and meetings. Those are all important, but sometimes it makes it seem like not much was actually accomplished in the week.

riscv secondary koji hub

I got some x86 buildvm's setup. These are to do tasks that don't need to be done on a riscv builder, like createrepo/newrepos or the like. I'm still having a issue with auth on them however, which is related to the auth issue with the web interface. Will need to get that sorted out next week.

f42 branching day

Tuesday was the f42 branching day. It went pretty smoothly this cycle I think, but there's always a small number of things to sort out. It's really the most complex part of the release cycle for releng. So many moving parts and dispirate repos and configs needing changing. This time I tried to stay out of actually doing anything, in favor of just providing info or review for Samyak who was doing all the work. I mostly managed to do that.

Datacenter move

Planning for the datacenter move is moving along. I've been working on internal documents around the stuff that will be shipped after we move, and next week I am hoping to start a detailed plan for the logical migration itself. It's a pretty short timeline, but I am hoping it will all go smoothly in the end. We definitely will be in a better place with better hardware once we are done, so I am looking forward to that.

comments? additions? reactions?

As always, comment on mastodon: https://fosstodon.org/@nirik/113969409712070764

Shopping Spree Before FOSDEM 2025

Posted by Akashdeep Dhar on 2025-02-07 18:30:50 UTC
Shopping Spree Before FOSDEM 2025

The decision of arriving to Brussels a day before the FOSDEM 2025 fringe events began was a smart one as that not only allowed me to catch up on some sleep due to the major timezone shift I faced but also to connect with my fellow community members. While the jet lag did not hurt me as badly as it did the last few times I have been to Europe, I did find myself waking up a little earlier, at around 0500am Central European Time. After getting through some physical exercise in the morning routine, Sumantro Mukherjee got in touch with me to hatch some plans for exploring Brussels and purchasing goodies. We made it to the dining place around the reception area of the Moxy Brussels City Center hotel at around 0830am Central European Time to have our meal, which mostly consisted of Oatmeal Bars, Golden Hashbrowns, Chicken Sausage, Scrambled Eggs and Apple Juice.

Shopping Spree Before FOSDEM 2025
Light breakfast at Moxy Brussels City Center consisting of Oatmeal Bars, Golden Hashbrowns, Chicken Sausage, Scrambled Eggs and Apple Juice

Even though we were through with our breakfast by around 0900am Central European Time, we realized that most locations would not open before 1000am, and therefore, I decided to head back to my hotel room after waiting for Justin W. Flory for a while. I headed back down at around 0945am Central European Time, and with me gifting Justin a small bag of Vakadwadi snacks that he loved and sharing some conversation around the Fedora Mindshare revamp - Sumantro and I headed out on a shopping spree. Our first stop was a Kiko Milano outlet, where he made a couple of purchases for his wife before we crossed the road to make it to the ICI Paris XL outlet. After purchasing a couple of incense from there for my family members, we decided to head to a Primark store to pick up some clothes - only to find that we were probably one of their earliest customers.

Admittedly, we ended up picking up quite a lot of things from there, which made me wonder just how we would be able to carry them all back on our return trip. Sumantro was in constant touch with Saheli Das Mukherjee while I was connected with my uncle and my mother over call to ensure that we made some well-informed decisions on apparel sizes. We joined the queue one after the other once we were through with making our choices, and we decided that it would be for the best if we were to head back to the hotel to drop these things before we continued with further exploration. On our way out, we headed into a nearby video game store where we looked into a bunch of retro consoles, arcade cabinets and action figurines while discussing whether Sumantro should purchase an archaic Nintendo Game Boy Color and searching for some Genshin Impact official merchandise.

At around 1230pm Central European Time, we headed into an optometrist shop as Sumantro wanted to make a purchase of some shades from the acclaimed Versace brand as a gift for his wife. We headed into another video game store located beside the previous store, where we explored some more arcade cabinets, videogame cartridges, anime merchandise and archaic computers. We were sure that we were not going to make a purchase here anyway, so we decided to depart from there after obtaining a couple of energy drinks imported from Japan. In another computer peripheral store, Sumantro and I explored some transistor radios and feature phones that were going out of fashion swiftly before we realized that it was around time for us to head for lunch. Even though we initially planned to visit the Tintin store, we decided against it due to the lack of interest.

We found ourselves heading into a Belchicken joint at around 0200pm Central European Time, and after I made one more purchase of trenchcoat from a UNIQLO store, we decided to get a couple of takeaways. We elected a no-brainer combo of some Chicken Tenders and French Fries with Garlic Sauce and decided to have our food together in my hotel room #610. Sumantro left at around 0300pm Central European Time after we were through with the lunch for his hotel room as he wanted to prepare for his Fedora Mindshare part of the Fedora Council meeting that was going to happen in an hour from then. I decided to catch up on some more of the rest before joining the Fedora Council meeting remotely with other folks from the Red Hat Community Linux Engineering team, represented by Brendan Conoboy and those from the Fedora Council and CentOS Board.

In the evening, Sumantro made some impromptu plans to throw me a birthday party in the evening - which surely came as a welcome surprise to me. Among my thankful declination and his brotherly insistence, I had to give in, and we decided to leave from Moxy Brussels City Center hotel for Delirium Village at around 0600pm Central European Time. On our way out of the hotel, we ran into Matthew Miller and Luis Bazan, who were returning from their rental workspace - with whom we shared some conversations before we were on our way again. The weather was on the drizzlier side, and while we thought that it would get better in some time, we were soon proven wrong as we kept proceeding closer to the Grand Place. The Decathlon Forclaz jacket proved to be useful when the rain took a turn for the worse, and we had to stay moving constantly to ensure that we were not drenched.

After clicking a bunch of photographs around an absurdly vacant Grand Place square, we went through a row of memorabilia souvenir shops and luxury chocolate shops. While I could resist the temptation of making purchases from there as this was not my first time in Brussels, I could not help myself when I came across a conveniently tucked away Manga Cafe store when Sumantro and I were seeking shelter from the rain. The only reason why we could make it out was because of the distinctive Pikachu plushie and some Spy X Family posters visible from outside of the shop. Unlike the couple of shops that we visited earlier that day, this seemed like the place where we could find exactly what we were looking for - with the catch being that most merchandise available here, including the Genshin Impact Official Artbook, was localised to French, which was not helpful to me.

They had the entire manga collection of Horimiya (2021), which I would have purchased immediately had it been in English, but I did understand the reason why they were so. After spending almost an hour exploring the store until closing time of the store - I decided to get myself one unit of Kimetsu No Yaiba themed Sakuma Drops and three Gacha Boxes of metal plates with Spy X Family themed backgrounds. After clumsily dropping the cutter that I borrowed from the store receptionist a couple of times, I was finally able to pull plates with Loid Forger, Anya Forger and Yor Forger from the three boxes that I purchased. I wanted to buy out the entire stock to ensure that I ended up getting one of each kind possible from Spy X Family Code White (2023), but I decided not to go all out because that was most likely what the merchandise makers wanted us to do anyway.

Sumantro purchased a Daruma Doll after I dropped a lore about what they are about and a reference to those from the popular anime Doraemon (1979), and we departed from the store at around 0800pm Central European Time. We ordered a couple of beers when we made it into the hustle and bustle of the Delirium Cafe, and I decided to keep mine non-alcoholic to ensure that I was on top of my hydration game. The vibes within the Delirium Village were amazing, but as it was growing colder, we headed to The Belgian Fries Co. outlet for dinner once we were done with our drinks. We departed from the restaurant around an hour later for the hotel on foot, with me taking care of the navigation this time. We walked swiftly back to the hotel to ensure that we had enough resting time and woke up healthy to participate and assist with the CentOS Connect 2025 event the next day.

Linux Driver for RTL8832CU and RTL8852CU USB WiFi Adapters

Posted by Piju 9M2PJU on 2025-02-07 18:11:28 UTC

The rtl8852cu Linux driver (version 1.19.2.1, updated as of May 10, 2024) supports USB WiFi adapters based on the RTL8832CU and RTL8852CU chipsets. While Realtek continues to develop this out-of-kernel driver, it is important to note that it is not fully compliant with Linux Wireless Standards. This makes it more suitable for specialized use cases, such as embedded systems, rather than general desktop or server environments.

For most users, adapters with in-kernel drivers are recommended due to their stability and ease of use. However, if you’re working with an adapter supported by this driver, here’s everything you need to know.


Key Features of the rtl8852cu Driver

  • WiFi Standards: IEEE 802.11 b/g/n/ac/ax (WiFi 6)
  • Security Protocols:
  • WEP, WPA TKIP, WPA2 AES/Mixed mode (PSK and TLS)
  • WPA3-SAE R2
  • WPS (PIN and PBC methods)
  • Modes Supported:
  • Client mode
  • AP mode (with DFS channel support)
  • P2P-client and P2P-GO
  • IBSS (not tested)
  • Advanced Features:
  • Miracast
  • WiFi-Direct
  • Wake on WLAN
  • VHT and HE control (supports 160 MHz channel width in AP mode)

Note: Monitor mode is not supported. If you require monitor mode, consider adapters based on the mt7610u, mt7612u, or mt7921au chipsets.


Compatible Devices and Chipsets

This driver supports a variety of USB WiFi adapters, including:

  • Edup AX5400 EP-AX1671 (single-state, no onboard Windows driver)
  • Brostrend AX8
  • TP-Link Archer TX50UH V1
  • TP-Link Archer TXE70UH(EU) V1
  • MSI AXE5400

Warning: Multi-state adapters (those with internal Windows drivers) may cause issues on Linux. For better compatibility, opt for single-state and single-function adapters. Avoid multi-function adapters (e.g., those combining WiFi and Bluetooth).


Supported CPU Architectures and Kernels

  • CPU Architectures:
  • x86, i386, i686
  • x86-64, amd64
  • armv6l, armv7l (arm)
  • aarch64 (arm64)
  • Kernel Versions:
  • Officially tested: 5.4 to 6.6 (Realtek)
  • Community-supported: 6.7 to 6.12

Tested Compilers: gcc 12, 13, and 14.


Installation Guide

Prerequisites

Before installing the driver, ensure your system is up-to-date and has the necessary development tools installed. You’ll also need internet access during installation.

  1. Update Your System:
  • For Debian-based distributions (e.g., Ubuntu, Kali):
    bash sudo apt update && sudo apt upgrade
  • For Arch-based distributions (e.g., Manjaro):
    bash sudo pacman -Syu
  • For Fedora:
    bash sudo dnf upgrade
  1. Install Required Packages:
  • Mandatory packages: gcc, make, bc, kernel-headers, build-essential, git
  • Highly recommended: dkms, rfkill, iw, ip
  • For Secure Boot: openssl, sign-file, mokutil Example for Ubuntu:
   sudo apt install -y build-essential dkms git iw
  1. Download and Install the Driver:
   git clone https://github.com/morrownr/rtl8852cu-20240510.git
   cd rtl8852cu-20240510
   sudo ./install-driver.sh
  1. Reboot Your System:
    After installation, reboot to ensure the driver loads correctly:
   sudo reboot

Troubleshooting Tips

  • Conflicting Drivers: Installing multiple out-of-kernel drivers for the same hardware can cause issues. Use sudo dkms status to check for conflicts.
  • Secure Boot: If Secure Boot is enabled, follow the instructions in the FAQ to enroll the signing key.
  • Manual Installation: If DKMS is unavailable, you can manually compile and install the driver using:
  make clean
  make -j$(nproc)
  sudo make install
  sudo reboot

Recommended Router/AP Settings

To optimize your WiFi performance:

  1. Security: Use WPA2-AES or WPA3. Avoid mixed modes like WPA/WPA2.
  2. Channel Width:
  • 2.4 GHz: Set to 20 MHz fixed width.
  • 5 GHz: Use channels 36–48 or 149–165 for compatibility.
  1. Network Names: Avoid naming all bands (2.4 GHz, 5 GHz, 6 GHz) the same.
  2. Router Placement: Position the router centrally, elevated, and away from walls.

Final Notes

While this driver provides robust support for RTL8832CU and RTL8852CU adapters, it is not without limitations. Users should weigh the trade-offs between stability, compatibility, and advanced features when choosing a WiFi adapter. For most desktop and server users, in-kernel drivers remain the best choice.

If you encounter issues or have questions, consult the FAQ or open an issue on the GitHub repository.

Happy networking! 🚀

The post Linux Driver for RTL8832CU and RTL8852CU USB WiFi Adapters appeared first on Hamradio.my - Amateur Radio, Tech Insights and Product Reviews by 9M2PJU.

Infra and RelEng Update – Week 6

Posted by Fedora Community Blog on 2025-02-07 10:00:00 UTC

This is a weekly report from the I&R (Infrastructure & Release Engineering) Team. We provide you both infographic and text version of the weekly report. If you just want to quickly look at what we did, just look at the infographic. If you are interested in more in depth details look below the infographic.

Week: 03 – 07 February 2025

Infrastructure & Release Engineering

The purpose of this team is to take care of day to day business regarding CentOS and Fedora Infrastructure and Fedora release engineering work.
It’s responsible for services running in Fedora and CentOS infrastructure and preparing things for the new Fedora release (mirrors, mass branching, new namespaces etc.).
List of planned/in-progress issues

Fedora Infra

CentOS Infra including CentOS CI

Release Engineering

If you have any questions or feedback, please respond to this report or contact us on #redhat-cpe channel on matrix.

The post Infra and RelEng Update – Week 6 appeared first on Fedora Community Blog.

💎 PHPUnit 12

Posted by Remi Collet on 2025-02-07 07:56:00 UTC

RPMs of PHPUnit version 12 are available in the remi repository for Fedora ≥ 40 and Enterprise Linux (CentOS, RHEL, Alma, Rocky...).

Documentation :

ℹ️ This new major version requires PHP ≥ 8.3 and is not backward compatible with previous versions, so the package is designed to be installed beside versions 8, 9, 10 and 11.

Installation:

dnf --enablerepo=remi install phpunit12

Notice: This tool is an essential component of PHP QA in Fedora. This version should be available soon in the Fedora ≥ 41 official repository (19 new packages).

Introduction to Pipewire

Posted by Fedora Magazine on 2025-02-07 08:00:00 UTC

Pipewire is a multimedia server and framework available as the default sound server in the latest Fedora versions. It is, by design, for low-latency audio and video routing and processing. It is capable of multiplexing multimedia streams to multiple clients – an important feature of modern operating systems.

General considerations

The evolution of the Linux sound subsystem happened in layers. The lowest layer is the hardware layer with various audio devices. To interact with hardware drivers, Linux has a standardized API called Advanced Linux Sound Architecture (ALSA). Another layer above ALSA, a sound server, should handle interactions with userspace applications. Initially, that layer was Pulseaudio and Jack, but it was recently replaced by Pipewire. This is an outsider’s first steps with Pipewire. The current version is 1.2.7 on Fedora 41 Workstation.

Pipewire is a socket-activated systemd user service. Note that the session manager is an alias for wireplumber.service.

rg@f41:~$ systemctl --user list-unit-files "pipewire*"
UNIT FILE STATE PRESET
pipewire.service disabled disabled
pipewire.socket enabled enabled
pipewire-session-manager.service alias -

Permissions and Ownership

The current user owns the process. However, each logged in user has its instance of pipewire.

rg@f41:~$ ps -eo pid,uid,gid,user,comm,label | grep pipewire
2216 1000 1000 rg pipewire unconfined_t

Most multimedia device files to be accessed by this process are located at /dev/snd and /dev/video .

rg@f41:~$ ls -laZ /dev/video* /dev/media* /dev/snd/*
crw-rw----+ root video system_u:object_r:v4l_device_t:s0 /dev/video0
crw-rw----+ root video system_u:object_r:v4l_device_t:s0 /dev/media0
crw-rw----+ root audio system_u:object_r:sound_device_t:s0 hwC0D0
crw-rw----+ root audio system_u:object_r:sound_device_t:s0 pcmC0D0c
...

Permissions are 660 and restricted to owners that are root:video and root:audio. Notice the extra + that indicates ACL permissions. Systemd-logind is the Fedora login manager. This service will, as part of the login process, execute a binary at /usr/lib/systemd/systemd-logind. It will create a session and assign a seat. It will change, at login, the file access control list of multimedia devices to the current user. This is how Pipewire has access to device files otherwise owned by root:audio or root:video. To check the current file ACL:

rg@f41:~$ getfacl /dev/video0
# file: dev/video0
# owner: root
# group: video
user::rw-
user:rg:rw- # current user
group::rw-
mask::rw-
other::---

The command lsof can show all the processes accessing our sound and video devices:

rg@f41:~$ lsof | grep -E '/dev/snd|/dev/video*|/dev/media*'
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
pipewire 53799 rg 44u CHR 116,9 0t0 913 /dev/snd/controlC0
pipewire 53799 rg 83u CHR 81,0 0t0 884 /dev/video0
wireplumb 53801 rg 24u CHR 116,9 0t0 913 /dev/snd/controlC0
...

You should expect to see only Pipewire and its session manager (wireplumber) accessing your multimedia devices. Legacy apps accessing these subsystems directly will show up here as well.

Configuring

Configuration file /usr/share/pipewire/pipewire.conf is owned by root:root and contains system defaults. Be sure to check the comments; you will find, among other things, the list of loaded modules. The service is configurable with homedir drop-in configuration files. The process is lightweight with only 3 threads. The following demonstrates increasing the number of data loops as a small test.

rg@f41:~$ cat <<EOF > ~/.config/pipewire/pipewire.conf.d/loops.conf
context.properties = {
context.num-data-loops = -1
}
EOF

rg@f41:~$ systemctl --user daemon-reload
rg@f41:~$ systemctl --user restart pipewire.service
rg@f41:~$ ps -eLo pid,tid,command,comm,pmem,pcpu | grep pipewire
PID TID COMMAND COMMAND PMEM PCPU
40187 40187 /usr/bin/pipewire pipewire 0.3 0.0
40187 40193 /usr/bin/pipewire module-rt 0.3 0.0
40187 40194 /usr/bin/pipewire data-loop.0 0.3 0.0
40187 40195 /usr/bin/pipewire data-loop.1 0.3 0.0
40187 40196 /usr/bin/pipewire data-loop.2 0.3 0.0
...

With pw-config you can check the new state of our updated configuration:

rg@f41:~$ pw-config
{
"config.path": "/usr/share/pipewire/pipewire.conf",
"override.config.path": "~/.config/pipewire/pipewire.conf.d/loops.conf"
}

Some architectural considerations

Pipewire consists of around 30k lines of code in the C programming language. The architecture resembles an event-driven producer-consumer pattern. The control structures are graph-like structures with producer and consumer nodes. One reason for achieving low latency and low CPU utilization is taking advantage of a concept called zero-copy via memfd_create. Signaling among the loosely coupled components is achieved using eventfd. The code is extensible and modular.

The entire Pipewire state is a graph with the following main elements:

  • Nodes (with input/output ports)
  • Links (edges)
  • Clients (user processes)
  • Modules (shared objects)
  • Factories (module libraries)
  • Metadata (settings)

The graph has nodes and edges/links. Nodes with only input ports are called sinks, and those with only output ports are called sources. Nodes with both are usually called filters.

Modules

Each module provides a specific server functionality. Spend some time screening the module names. There is a module that manages access among graph components, a module managing thread priorities, a module that emulates former Pulseaudio, a module for XDG Portal, a module for profiling, and even a module implementing streaming over the network via RTP.

rg@f41:~$ ls -la /usr/lib64/pipewire-0.3/
-rwxr-xr-x. 1 root root 28296 Nov 26 01:00 libpipewire-module-access.so
-rwxr-xr-x. 1 root root 98808 Nov 26 01:00 libpipewire-module-avb.so
...

Plugins

Plugins handle communication with devices, including the creation of ring buffers, used heavily in multimedia processes. There is a plugin that handles communication with ALSA, a plugin that manages communication with Bluetooth, libcamera, etc.

rg@f41:~$ ls -la /usr/lib64/spa-0.2/
drwxr-xr-x. 1 root root 28 Dec 11 12:13 alsa
drwxr-xr-x. 1 root root 420 Dec 11 12:13 bluez5
...

Plugins extend a generic API called SPA, or Simple Plugin API. These self-contained shared libraries provide factories containing interfaces. Because they are self-contained, some of these plugins are used by the session manager. Utility spa-inspect allows querying the shared objects for factories and interfaces.

Useful Commands

We can see (R)unning nodes with pw-top. In the following example, there are 3 nodes currently running. Any streaming performed via Pipewire will appear in this output table.

rg@f41:~$ pw-top
S ID QUANT RATE WAIT BUSY FORMAT NAME
R 90 512 48000 139.8us 23.0us S16LE 2 48000 bluez_output..
R 99 900 48000 66.7us 37.7us F32LE 2 48000 + Firefox
R 112 4320 48000 105.5us 11.4us S16LE 2 48000 + Videos

Quantum (QUANT) can be thought of as the number of audio samples (buffer size) to be processed each graph cycle. This varies depending on the device type and can be configured or negotiated via configuration files. For example, the Videos application has a buffer size of 4320 samples, while the Bluetooth output node has only 512.

Rate (RATE) is the graph processing frequency. In the above output, the graph operates at 48 kHz, meaning each second the graph can process 48,000 samples.

The ratio between Quantum and Rate is the latency in seconds. In the case of Bluetooth headsets, the latency is 11 ms, while for the Videos app it is 90 ms. The pw-top man page provides links to better explanations. Understanding these indicators can help boost performance.

Another powerful utility is pw-cli . It opens a shell and allows you to operate interactively on the Pipewire graph at runtime. For permanent changes, you need to amend the configuration files.

rg@f41:~$ pw-cli h
Available commands:
help | h Show this help
load-module | lm Load a module.
unload-module | um Unload a module.
connect | con Connect to a remote.
disconnect | dis Disconnect from a remote.
list-remotes | lr List connected remotes.
switch-remote | sr Switch between current remotes.
list-objects | ls List objects or current remote.
info | i Get info about an object.
create-device | cd Create a device from a factory.
create-node | cn Create a node from a factory.
destroy | d Destroy a global object.
create-link | cl Create a link between nodes.
export-node | en Export a local node
enum-params | e Enumerate params of an object
set-param | s Set param of an object
permissions | sp Set permissions for a client
get-permissions | gp Get permissions of a client
send-command | c Send a command <object-id>
quit | q Quit

For example, we can print the above streaming nodes with pw-cli info <id> and inspect all the properties.

Graph visualization

All the derived utilities are processing the same large JSON graph that represents the Pipewire state. With pw-dump we will get this state. But the output is hard to read. Another utility pw-dot will give us a user-friendly graph. Take note of the following 3 steps, as you will need to repeat them during this tutorial. The dot utility used in the following example are available with Graphviz installation.

rg@f41:~$ pw-dot --detail --all
rg@f41:~$ dot -Tpng pw.dot -o pw.png
rg@f41:~$ loupe pw.png

It is a large graph. Take a minute to look at the various nodes, the node types distinguished by different colors, and some meaningful properties like the ports, the media class, and the links. You can find a description of these properties in man 7 pipewire-props. Observe the media.name property that indicates the current song playing in Firefox.

Most of the streams you will see here will be Source/Audio streams.

Fedora 41 Workstation’s new default camera app is Snapshot. Start the app and you will notice it is visible to Pipewire. Let’s keep Snapshot running and open another camera app. Don’t forget to install ffmpeg-free for the following steps.

rg@f41:~$ ffplay -f v4l2 -i /dev/video0
/dev/video0: Device or resource busy

ffplay is trying to access /dev/video0 directly. According to kernel docs, shared data streams should be implemented by a userspace proxy and not by the v4l2 drivers. Pipewire is already using the libcamera api, as you have seen in the plugins list, and offers pw-v4l2 as a compatibility wrapper. Let’s use the same command again.

rg@f41:~$ pw-v4l2 ffplay -f v4l2 -i /dev/video0

This time it worked, and we have 2 apps that share the same camera stream. This is the added value brought by a high-performing multimedia server. We also see both Source/Video streams in the graph. The same is valid for the browser. In your browser configuration you should be able to choose whether to use Pipewire or v4l2 devices.

You can also use Helvum or Qpwgraph. Go ahead and test any of these apps. You will find a simplified graph with only certain node types and drag-and-drop features. You will appreciate the ease of use, but sometimes you will need the full graph and the full set of node properties. In such cases, you will revert to pw-dump, pw-cli, and pw-dot.

Managing nodes

One way to manage temporary graph nodes is to use pw-cli. For example, here we are creating a temporary test node, valid for as long as the session is open. For factory names, check the source code and some useful examples in the conf page comments.

rg@f41:~$ PIPEWIRE_DEBUG=2 pw-cli 
pipewire-0>> create-node spa-node-factory factory.name=support.node.driver node.name=mynewnode

Another way to create nodes, but this time in our permanent configuration, is as described in the configuration comments:

rg@f41:~$ cat <<EOF > ~/.config/pipewire/pipewire.conf.d/mynewnode.conf
context.objects = [{
factory = adapter
args = {
factory.name = api.alsa.pcm.source
node.name = "alsa-testnode"
node.description = "PCM TEST"
media.class = "Audio/Source"
api.alsa.path = "hw:0"
api.alsa.period-size = 1024
audio.format = "S16LE"
audio.channels = 2
audio.position = "FL,FR" }
}]
EOF
rg@f41:~$ systemctl --user daemon-reload
rg@f41:~$ systemctl --user restart pipewire.service

A faster and easier way to create nodes is to use helper utilities pw-record and pw-play to create sinks and sources. We will make a small example in the last paragraph.

Security considerations

The binary is owned by root and can be executed by other users.

rg@f41:~$ ls -la /usr/bin/pipewire
-rwxr-xr-x. 1 root root 20104 Nov 26 01:00 /usr/bin/pipewire

The protocol used for socket communication is called native protocol. Sockets have larger permissions, as do other systemd temporary files. It’s good to remember that /run is a tmpfs in-memory filesystem.

rg@f41:~$ ls -laZ /run/user/1000/pipewire*
srw-rw-rw-. rg rg object_r:user_tmp_t:s0 pipewire-0
-rw-r-----. rg rg object_r:user_tmp_t:s0 pipewire-0.lock
srw-rw-rw-. rg rg object_r:user_tmp_t:s0 pipewire-0-manager
-rw-r-----. rg rg object_r:user_tmp_t:s0 pipewire-0-manager.lock

The systemd sockets create the stream structures; afterwards, the audio nodes will communicate directly via memfd. According to the man page, memfd_create creates an anonymous, in-memory file, vital for performance. Pipewire source code uses these calls with certain flags like MFD_HUGETLB and also flags like MFD_ALLOW_SEALING, MFD_CLOEXEC, etc. to seal and prevent memory leaks to other processes.

Pipewire comes with a module called protocol-pulse. The module has a separate systemd socket-activated user service. This emulates a PulseAudio server for compatibility with a large range of clients still using the PulseAudio libraries.

rg@f41:~$ ls -laZ /run/user/1000/pulse/native
srw-rw-rw-. rg rg user_tmp_t:s0 /run/user/1000/pulse/native

Systemd offers ways to analyze and sandbox services. Some recommendations are available in the following but they do not assure system-level protection.

rg@f41:~$ systemd-analyze --user --no-pager security pipewire.service

Any userspace application can view the graph, access the socket, and create nodes. The node properties carry, in some cases, information that might be private. The media.name property is an example. This does not happen for private Firefox tabs. This property might be useful for certain GUI features, like Gnome tray notifications.

You may have noticed a node called speech-dispatcher randomly connected to your speaker. This accessibility feature may be requested by various programs, including your browser. Try to understand this behavior in your favorite multimedia apps.

Example

As a small example, let’s try to create an audiobook – voice recognition stream with Pipewire source and sink nodes. Let’s create the source node using pw-play. In other scenarios, pw-play can read from stdin (-).

rg@f41:~$ curl https://ia600707.us.archive.org/8/items/alice_in_wonderland_librivox/wonderland_ch_10_64kb.mp3 --output test.mp3

rg@f41:~$ ffmpeg -i test.mp3 -ar 48000 -ac 1 -sample_fmt s16 test.wav

rg@f41:~$ pw-play --target=0 --format=s16 \
--quality=14 --media-type=Audio --channels=1 \
--properties='{node.name=mytestsource}' test.wav

Auto-connection of the process to the speakers did not occur because of the target argument. Let’s create the sink node. For simplicity we will use the pocketsphinx package to test voice recognition.

rg@f41:~$ dnf install pocketsphinx
rg@f41:~$ pw-record --media-type=Audio --target=0 --rate=16000 \
--channels=1 --quality=14 --properties='{node.name=mytestsink}' - \
| pocketsphinx live -

As you can see, we created a sink node. Auto-connection did not occur to any source node, as indicated by the target argument. The other arguments, like the number of channels, are recommendations from Pocketsphinx man pages. We will create the links manually. Use pw-dot to find the source and sink node and port ids. Alternatively, you can use any of the two flatpak apps to create the links by drag-and-drop.

rg@f41:~$ PIPEWIRE_DEBUG=2 pw-cli 
pipewire-0>> create-link <nodeid> <portid> <nodeid> <portid>

We created a stream between a source and a sink and can already see some output in the Pocketsphinx terminal. The processes involved are visible to Pipewire and can take advantage of all its capabilities. In a similar way, you can interface with your favorite Flatpak. Many of these apps exist in a sandbox and interact with the underlying system using the XDG Portal APIs.

Another example

Let’s try to make another example, involving filters. We have previously seen that Pipewire has a module called filter-chain. First of all, we will need to install the desired filter plugins. There is a large variety of LADSPA and LV2 filter plugins in DNF repos. Pipewire also has a few built-in filters made available by the audiomixer plugin.

rg@f41:~$ dnf install ladspa ladspa-rev-plugins
rg@f41:~$ rpm -ql ladspa-rev-plugins
/usr/lib64/ladspa/g2reverb.so

As we can see, the package installed a shared object. For LADSPA plugins we can extract metadata using the analyseplugin utility. Important information is visible in the following output:

rg@f41:~$ analyseplugin /usr/lib64/ladspa/g2reverb.so
Plugin Name: "Stereo reverb"
Plugin Label: "G2reverb"
Ports: ...
"Room size" input, control, 10 to 150
"Reverb time" input, control, 1 to 20
"Input BW" input, control, 0 to 1
"Damping" input, control, 0 to 1
"Dry sound" input, control, -80 to 0
"Reflections" input, control, -80 to 0
"Reverb tail" input, control, -80 to 0

Based on this we can create the filter file. Make sure the plugin name, location, label, and type are correct.

rg@f41:~$ cat <<EOF > ~/.config/pipewire/pipewire.conf.d/myfilter.conf
context.modules = [
{
name = libpipewire-module-filter-chain
args = {
node.description = "My filter"
media.name = "My filter"
filter.graph = {
nodes = [
{
type = ladspa
name = "Stereo reverb"
plugin = "/usr/lib64/ladspa/g2reverb.so"
label = "G2reverb"
control = {
"Reverb time" = 2
}
}
]
}

audio.channels = 2
audio.position = [ FL FR ]

capture.props = {
node.name = "myfilter"
media.class = Audio/Sink
node.target = 0
}

playback.props = {
node.name = "myfilter"
media.class = Audio/Source
node.target = 0
}
}
}
]
EOF

rg@f41:~$ systemctl --user restart pipewire.service

Check the graph, for example with Qpwgraph, to show the filter sink/source pair. Note that the sink node also has monitor ports. These ports allow inspection of the stream before processing. Now create the source node as before:

rg@f41:~$ pw-play --target=0 --format=s16 --media-type=Audio \
--properties='{node.name=mytestsource}' test.mp3

Connect the nodes manually by drag-and-drop to your Audio Controller Speaker. Your setup should appear as below:

Confirm the narrator’s voice has a reverb effect. Now feel free to experiment with your favorite plugins or more nodes in your filter. The filter-chain folder contains other useful examples. Remember to delete the test configurations from the .config folder when you complete you exploration.

Conclusions

Pipewire is an interesting piece of low-level, high-performing software. We have discussed the main commands and configuration options and filesystem interactions. Reading the Pipewire docs is highly recommended. “Linux Sound Programming” by Jan Newmarch will also provide insight into historical aspects. Hopefully you will have enough context to better understand the encountered terms. Thanks to the people maintaining the mentioned packages.

CentOS Connect and FOSDEM 2025

Posted by Peter Czanik on 2025-02-06 09:37:41 UTC

This year, I was back in Brussels. I visited two conferences: CentOS Connect and FOSDEM. As usual, both events were fantastic, with great talks and nice people. And as usual, they were also exhausting and not just for introverts like me. I stayed to Belgium to recover, but that’s another story… :-)

CentOS Connect

Some people still ask me why I visit Red Hat events, especially because I am a proud openSUSE desktop user, while FreeBSD feels the closest to me when it comes to software design and philosophy – not to mention that it is the OS that I have been using the longest (since 1994). The answer is easy: over 70% of syslog-ng users run syslog-ng on RHEL, CentOS or a compatible operating system. This means that regardless of my OS preferences, I have the strongest connections with the Fedora / RHEL / CentOS & Co. communities. And over the past 15 years, many of these professional relationships evolved into friendships.

As expected, the main topic of CentOS Connect was CentOS Stream 10, EPEL 10 and of course, the upcoming RHEL 10 release. To me, the event’s main message was that version 10 is an evolution and not a revolution. In other words, if a piece of software worked on RHEL 9, then there is a very good chance that it will also work on RHEL 10 without any changes. All components were updated to the latest available versions, but there were no groundbreaking changes like the introduction of systemd a decade ago.

Last year, I started experimenting with Alma UBI / RHEL UBI containers for syslog-ng. This year, I plan to keep going and check these containers in a Kubernetes environment. Knowing our users, the obvious choice would be Red Hat OpenShift. Just as testing and developing on CentOS Stream is recommended for those targeting RHEL, OKD is the way to go for those who want to support a new OpenShift version from day one. I plan to start with OKD.

We already test syslog-ng on Fedora Rawhide and CentOS Stream 9 before each commit: https://www.syslog-ng.com/community/b/blog/posts/rolling-rpm-platforms-added-to-the-syslog-ng-package-build-system Creating automatic tests for OKD / OpenShift will be a bit more challenging, but I hope to start testing them at least manually soon.

As an introvert, I easily get people overdose. Luckily, there was a beautiful botanical garden right next to the CentOS Connect venue:

Brussels Botanical Garden

FOSDEM

This year, I presented syslog-ng in the BSD devroom. As I mentioned earlier, I have a special bond with FreeBSD, as I have been using it for the past 31 years. A few months ago, I was at EuroBSDCon, where I was asked if we could add a syslog-ng source for FreeBSD audit logs. I did it as soon as I got back from the conference: https://www.syslog-ng.com/community/b/blog/posts/freebsd-audit-source-for-syslog-ng I presented this effort at FOSDEM and also added some information on how to make it general, that is how to integrate any application output with syslog-ng. After my talk, I had some great discussions with happy users inspired by my syslog-ng talks and one of our contributors. Expect some news about these in the coming months! :-)

FOSDEM: room is full

Of course, many FOSDEM rooms operated at full capacity and there were quite a few talks which I will watch once their recordings are on-line. I do not want to list individual talks here, just some major takeaways:

  • AArch64 packages are available for everything. There was only one project without it, but even they promised to have it utilized in the next few months. Expect some syslog-ng news on this topic… :-)

  • Risc-V is getting popular among developers, but it’s still far from being usable for average users.

  • Documentation is an integral part of a software release. Without it, a piece of software is useless and not worth releasing. Previously, I only heard this opinion from users and documentation people, so it was good to hear it from developers as well!

  • SBOM (Software Bill of Materials) is becoming a hot topic.

  • Both admins and developers are now expected to know Kubernetes. Of course, there were some people who complained about it, but for most, it was normal. For me, this means that it’s time to gather some practical semi-production experience about Kubernetes, instead of just simply learning about it… :-)

To summarize both events as simply as possible: I hope to see you again next year! And maybe I’ll also go to Configuration Management Camp

Arriving At FOSDEM 2025

Posted by Akashdeep Dhar on 2025-02-05 18:30:00 UTC
Arriving At FOSDEM 2025

The onward journey for FOSDEM 2025 started for me on 28th January 2025 as early as 0500am Indian Standard Time. I had to take the Emirates flight EK573 from Kolkata (CCU) to Dubai (DXB) which was going to depart at around 0900am Indian Standard Time from the Netaji Subhash Chandra Bose International Airport (CCU) for the first leg of the journey. As it was a couple of days after Republic Day in India, the security at the airport was tighter than usual, and hence, it was advisable to leave early. I was travelling with Sumantro Mukherjee, and we did not have to worry much about the check-in as we had booked our seats in advance. I reached the airport at around 0545am Indian Standard Time and met up with him once I was done with my check-in process at the airport before we headed into the security checking gates, followed by the immigration processing area.

Arriving At FOSDEM 2025
While the aeroplane looked a lot strange as compared to the other commercial aeroplanes I have seen, Airbus Beluga did have a certain charm that made it stand out

Much to our pleasant surprise, we managed to get through security checking gates without much hassle, and once we were done, we headed for gate number 12 to spend some time before the boarding began. We roughly had a couple of hours to kill before the boarding process began at around 0830am Indian Standard Time, which we used to discuss the rather strange-looking Airbus Beluga that we saw at the runway. Interestingly enough, some names were called for at the boarding gates, including those of the two of us, and while I suspected that there was something wrong - I was pleasantly proven wrong with the flight crew offering us a free upgrade to the business class. It genuinely took us a while to believe the fact, and as the journey was going to be long anyway - it most definitely was a welcome change to the situation, and we were thankful for whatever led that to happen.

While Sumantro and I were previously split apart across two ends of the economy seating on the Emirates flight, we were now sitting one after the other - 9F and 10F respectively. This not only was a great appeal to comfort with which we could travel to Dubai (DXB) but also allowed us to have a chance at deboarding the flight sooner than others as the layover time in Dubai (DXB) was tight. The amazing hospitality provided by the Emirates flight crew and the ample legroom more than compensated for the lack of a window seat and as the flight took off, I got busy watching some movies on the in-flight entertainment system. The first movie I watched was Bad Boys Ride Or Die (2024) while finishing up with the boarding snacks that they provided us with. As the breakfast was served after around 90 minutes, I also watched the critically acclaimed Top Gun Maverick (2022).

Arriving At FOSDEM 2025
Sumantro and Akashdeep kicking back at the boarding gate B25 after the rush of making it through the connection at the Dubai International Airport (DXB)

Soon enough, we found ourselves landing at the Dubai International Airport (DXB), and we used the time to make it from boarding gate B10 to boarding gate B25 as soon as possible, where the next leg of the journey would start. We went through the security checking gates without any problem, and by around 0130pm Persian Gulf Standard Time, the boarding had already begun. The next leg of the journey was to be on Emirates flight EK181, which would take us from Dubai (DXB) to Brussels (BRU), and as we were heading into the boarding queue, I also checked with the other fellow folks travelling to FOSDEM 2025 from the Fedora Project and CentOS Project communities on the Fedora Chat platform. Luckily enough for us on this flight too - which was supposed to be a lot longer than the previous leg of the journey, the seats on the flight were underbooked.

While I was seated at 19K and Sumantro was seated at 20K, we had the liberty to spread our feet as the entire column of seats beside us was unoccupied. This gave me ample opportunity to catch up on some of my favourite anime shows that I have been planning to watch for a while now, including Yubisaki To Renren (2024) and Koi Wa Sekai Seifuku No Ato De (2022). With me catching some shut-eye once I was done with the lunch provided on the Emirates flight, we soon drifted close to Brussels (BRU). The visibility was severely limited outside of the window, and the turbulence was getting tougher due to the poor weather conditions at the arrival city. Once we touched down - safe and sound, we decided that it would be for the better if we prepared ourselves with some warm clothes before we deboarded from the flight and joined in on the immigration processing queue.

Arriving At FOSDEM 2025
Some tasty bites provided to us as the lunch meal on the Emirates flight EK181 traveling from Dubai (DXB) to Brussels (BRU)

At around 0645pm Central European Time, we joined the rather long queue to the immigration queue, and I informed my family members about my safe arrival at the destination in the meantime. The immigration processing took quite a while once we emerged from the other end - we realized that the luggage belt delivering the checked-in luggage had stopped moving. Sumantro and I headed to the railway station at the Luchthaven Zaventem Airport (BRU) after we were done with booking a couple of tickets to Brussels Centraal, and we soon had a train on its way to Knokke arrive at Track 2 at around 0730pm Central European Time. I informed Justin W. Flory on the messaging channels used by Fedora Project and CentOS Project community members not to wait for the two of us as it would be a bit longer before we could join them for the welcome dinner.

Getting off at the Brussels Centraal station, we booked an Uber to the Moxy Brussels City Center hotel, and after some troubling confusion around the payment medium at the reception, both Sumantro and I were checked in. I got in touch with Justin briefly on a call to check with him regarding the payment medium when my credit card kept declining due to it not being activated for international transactions - I decided to have it activated using the hotel WiFi connection. It almost felt like I had run out of luck after the streak that I had with the free upgrade to business class on the first leg of the journey and having a vacant flight on the second leg of the journey, but having my wits about in the situation allowed for me get through with less hassle. I headed over to the room that was assigned to me (i.e. #610) and decided to drop our bags off before we departed for the nearest McDonald's.

At around 0845pm Central European Time, we got ourselves some takeaway from the McDonald's outlet, which was around some walkable distance away from the Moxy Brussels City Center hotel. On our way back from the hotel, we ran into Matthew Miller and Justin, who were returning from their dinner at a nearby Indian restaurant. With a bunch of hugging embraces and hands shaken, we caught up briefly on the conversations before deciding to head back to our rooms to catch up on the rest that we were due. I also met up with Luis Bazan, who was visiting FOSDEM for the first time and after a short catchup with him - I made it back to my hotel room before my takeaways went cold. The wide timezone difference posed a challenge when I was heading to bed after I was done with the dinner consumption and quick freshening, but I had to get through it anyhow.

Open source projects don’t exist separately from the outside world

Posted by Ben Cotton on 2025-02-05 12:00:00 UTC

For some people, contributing to an open source project is a diversion from the world around them. It’s a fun way to work on well-defined problems with a community of like-minded people. But it’s important to remember that open source contributors — and their projects — still exist in the real world.

Global projects are going to have interactions with laws that relate to global relations. For example, the Linux Foundation recently issued guidance on complying with the U.S. Office of Foreign Assets Control sanctions. Projects that host services have had to pay attention to Europe’s General Data Protection Regulation (GDPR). And everyone is trying to figure out what Europe’s Cyber Resilience Act (CRA) will mean for open source projects.

Laws aren’t the only effect of the outside world on projects. When the COVID-19 pandemic was in the most acute phase in the spring of 2020, I was filled with worry and uncertainty, as were many others. I worried about my family, but I also worried about the Fedora community. As a leader in the community, I felt a sense of responsibility to make sure everyone was doing well. When governments enact laws hostile to the identity of members of the community, I worry for them.

It’s tempting to think of open source as a noble pursuit that’s separate from the noise of daily life. But you do your community a disservice when you take that approach. If people in your community want to use contributing as an escape, let them. But be aware of how people are doing and create a space where they can feel comfortable stepping away to take care of themselves.

This post’s featured photo by Christian Lue on Unsplash.

The post Open source projects don’t exist separately from the outside world appeared first on Duck Alignment Academy.

Koji builds might be affected by mass branching

Posted by Fedora Infrastructure Status on 2025-02-04 14:00:00 UTC

Mass branching happening, new builds in Koji might not happen.

Balkan Computer Congress, Novi Sad, Serbia

Posted by Fedora Community Blog on 2025-02-04 10:00:00 UTC

BalCCon 2k24 – Invisible Path

Fedora had a booth at BalCCon for the 8th time in a row. I’m personally very happy that we kept this streak as the first BalCCon where Fedora had presence is when I first became Ambassador in Serbia 😊. I’m not aware of any other booths that had such a strong presence.

For those unaware of this conference, it is focused on: hacking, information security, privacy, technology & society, making, lock-picking, and electronic arts. For a sharp eye, these are well-rounded topics for Free Software-oriented people and that makes it rather important conference in the region.
In addition to all that, people that organize these events are extremely welcoming and heart-warming people! Working in tandem: founders, volunteers, and speakers – all show teamwork in very challenging times, both now as well as in the past… For an untrained eye it would seem that every BalCCon is a smooth sailing, but the truth is that there is a lot of effort and sacrifice required in realizing it. Every single person behind it, is a devoted, humble, and passionate contributor to the event.

Attendees range from teenagers, students, younger and older adults all interested in learning, sharing and socializing with each others. In other words, the conference is not solely focused on lectures and workshops, but also on bringing similar-minded people together and providing them a safe place to connect.

Fun is also huge part of the event as there is a karaoke evening (don’t miss that one 🎙) and a rakia tasting and sharing night adequately named “Rakija leaks”🥃.

At Fedora booth we try to engage people and encourage questions, to better understand what people like and dislike, to provide them guidance and invite them to join the community. We always keep the positive attitude towards all Free and Open Source Software and never fuel or support distro-wars. We love Fedora, but that doesn’t exclude love towards other distros as well (it just may not be as strong 😁).

This approach had an impact that many non-Fedora users liked to talk to us and stuck around. That relationship grown to constructive discussions about strengths of Fedora and their OSes of choice. Many of them converted over time 😉, or at least found a perfect sweet-spot for Fedora in their everyday life.

Due to the import customs in Serbia, swag has been a hit and miss sometimes, but we try to keep the booth entertaining even in the absence of much-adored stickers.

This year we’ve had a revamp of our booth with new Fedora logo for the roll-up banners and the table cloth. And it was at a perfect time, as Fedora booth was visible in an article of country’s most popular printed IT magazine Svet Kompjutera.

This was all due to the amazing support from jwflory who displayed great amount of innovative and pro-active energy! ❤

Booth appearance has evolved over the years and become more and more inviting to everyone. An organizing volunteer even approached me to say that people’ve been asking if Fedora will have a booth again this year, as they found it very interesting – not only from the Project’s aspect, but also because, since the first year we tried to bring something that would draw people to come and talk to us.

To give some examples:

  • Awesome demo of touchless gaming concept by our dear thunderbirdtr (2015)
  • Fedora on handheld touchscreen devices (2018)
  • AAA Gaming on Fedora out-of-the box (with RPM Fusion only) (2022)
  • Introduction of Fedora cookies (2023)
  • Fedora baby 👶 (2024)

There are plans and ideas for future booths too, such as SyncStar setup, SELinux challenge box, DIY pin machine, other quizes, …

Here is the timeline in photos from 2015 – 2024 (there are missing photos due to, either COVID, or just an unfortunate oversight on my end):

Huge thanks for the support from jwflory, thunderbirdtr, nmilosev, nsukur, bitlord, and especially to my dear wife littlecat that makes the booth incredibly appealing.

If you’ve never been to Serbia, Novi Sad, or BalCCon, you should definitely consider visiting and we’ll do our best to be good hosts and dedicate some of our times just for you! 🤗

The post Balkan Computer Congress, Novi Sad, Serbia appeared first on Fedora Community Blog.

Bits from late jan 2025

Posted by Kevin Fenzi on 2025-02-01 17:49:19 UTC
Scrye into the crystal ball

January has gone by pretty fast. Here's some longer form thoughts about a few things that happened this last week.

Mass updates/reboots

We did a mass update/reboot cycle on (almost) all our instances. The last one was about 2 months ago (before the holidays), so we were due. We do apply security updates weekdayly (ie, monday - friday), but we don't apply bugfix updates except for this scheduled windows. Rebooting everything makes sure everything is on the latest kernel versions and also ensures that if we had to reset something for other reasons it would come back up in the correct/desired/working state. I did explore the idea of having things setup so we could do these sorts of things without an outage window at all, but at the time (a few years ago) the sticking point was database servers. It was very possible to setup replication, but it was all very fragile and required manual intervention to make sure failover/failback worked right. There's been a lot of progress in that area though, so later this year it might be time to revisit that.

We also use these outage windows to do some reinstalls and dist-upgrades. This time I moved a number of things from f40 to f41, and reinstalled the last vmhost we had still on rhel8. That was a tricky one as it had our dhcp/tftp vm and our kickstarts/repos vm. So, I live migrated them to another server, did the reinstall and migrated them back. It all went pretty smoothly.

There was some breakage with secure boot signing after these upgrades, but it turned out to be completely my fault. The _last_ upgrade cycle, opensc changed the name of our token. From: 'OpenSC Card (Fedora Signer)' to 'OpenSC Card'. The logic upstream being "Oh, if you only have one card, you don't need to know the actual token name". Which is bad for a variety of reasons, like if you suddenly add another card, or swap cards. In any case I failed to fix my notes on that and was trying the old name and getting a confusing and bad error message. Once I managed to fix it out everything was working again.

Just for fun, here's our top 5 os versions by number:

  • 237 Fedora 41

  • 108 RHEL 9.5

  • 31 Fedora 40

  • 23 RHEL 8.10

  • 4 RHEL 7.9

The 7.9 ones will go away once fedmsg and github2fedmsg are finally retired. (Hopefully soon).

Datacenter Move

A bunch of planning work on the upcoming datacenter move. I'm hoping next week to work a lot more on a detailed plan. Also, we in infrastructure should kick off some discussions around if there's anything we can change/do while doing this move. Of course adding in too much change could be bad given the short timeline, but there might be some things to consider.

I also powered off 11 of our old arm servers. They had been disabled in the buildsystem for a while to confirm we didn't really need them, so I powered them off and saved us some energy usage.

riscv-koji seconday hub

The riscv-koji seconday hub is actually installed and up now. However, there's still a bunch of things to do:

  • Need to setup authentication so people/I can login to it.

  • Need to install some buildvm-x86 builders to do newrepos, etc

  • Need to install a composer to build images and such on

  • Next week's riscv sig meeting hopefully we can discuss steps after that. Probibly we would just setup tags/targets/etc and import a minimal set of rpms for a buildroot

  • Need to figure out auth for builders and add some.

Overall progress finally. Sorry I have been a bottleneck on it, but soon I think lots of other folks can start in on working on it.

power9 lockups

We have been having anoying lockups of our power9 hypervisors. I filed https://bugzilla.redhat.com/show_bug.cgi?id=2343283 on that. In the mean time I have been moving them back to the 6.11.x kernels which don't seem to have the problem. I did briefly try a 6.13.0 kernel, but the network wasn't working there. I still need to file a bug on that when I can take one down and gather debugging info. It was the i40e module not being able to load due to some kind of memory error. ;(

Chat and work items

One thing that was bugging me last year is that I get a lot of notifications on chat platforms (in particular slack and matrix) where someone asks me something or wants me to do something. Thats perfectly fine, I'm happy to help. However, when I sit down in the morning, I usually want to look at whats going on and prioritze things, not get sidetracked into replying/working on something thats not the most important issue. This resulted in me trying to remember which things where needed responses and sometimes missing going back to them or getting distracted by them.

So, a few weeks ago I started actually noting things like that down as I came to them, then after higher pri things were taken care of, I had a nice list to go back through and hopefully not miss anything.

It's reduced my stress, and I'd recommend it for anyone with similar workflows.

comments? additions? reactions?

As always, comment on mastodon: https://fosstodon.org/@nirik/113930147248831003

Why imwheel Is Still Relevant for Linux Users in 2025

Posted by Piju 9M2PJU on 2025-02-01 07:47:02 UTC

When it comes to the Linux desktop experience, one thing remains constant: the occasional frustration with mouse scrolling. Whether you’re navigating through web pages, sifting through documents, or coding in your favorite editor, smooth and predictable scrolling is essential. Unfortunately, not all Linux desktop environments handle mouse scroll events gracefully. This is where imwheel steps in to save the day.

The Scrolling Conundrum on Linux

Despite the significant strides in Linux desktop environments like GNOME, KDE Plasma, and Xfce, inconsistencies in mouse scroll behavior persist. Users frequently encounter issues such as:

  • Slow or Unresponsive Scrolling: Certain applications, particularly web browsers and terminal emulators, often exhibit sluggish scroll speeds that can make navigation a chore.
  • Inconsistent Behavior Across Applications: Some programs adhere to the system-wide scroll settings, while others stubbornly ignore them, leading to an uneven user experience.
  • Lack of Customization: The default settings provided by many desktop environments rarely offer the granular control needed to fine-tune scrolling to individual preferences.
  • Hardware Compatibility Issues: High-DPI mice and those with tilt-scroll functions sometimes don’t play well with the underlying system, resulting in erratic or hyper-sensitive scrolling.

These issues can be a significant hindrance, especially for users who demand precision and efficiency in their workflow.

Enter imwheel

imwheel is a lightweight utility that intercepts and modifies mouse wheel input on the fly, giving users the power to adjust the scroll behavior at a granular level. Here’s why it remains an indispensable tool:

Customization at Your Fingertips

With imwheel, you can tailor your mouse scroll settings to perfectly suit your needs. Whether you need to ramp up the speed for faster navigation or dial it down for precision work, imwheel allows you to modify scroll sensitivity with ease. You can even set up custom scrolling profiles for different applications, ensuring that every piece of software behaves just the way you want it to.

Bridging the Gap

While modern desktop environments offer various settings to adjust scroll behavior, they often fall short of providing the detailed control that imwheel offers. Many of these environments have default configurations that may work well for most users but leave little room for customization when things go awry. imwheel bridges this gap by giving you a simple yet powerful way to tweak scroll acceleration and sensitivity, enhancing compatibility across a wide range of applications and hardware.

Wide-Ranging Compatibility

Even as Linux transitions toward newer display protocols like Wayland, a significant number of users still rely on X11. imwheel continues to be a vital tool for X11 users, ensuring that even on legacy systems, you can achieve consistent and smooth scrolling. Its ability to work across various distributions and desktop environments further cements its relevance.

Installing and Configuring imwheel

Getting started with imwheel is straightforward. Here’s a quick guide to installation and configuration on some popular Linux distributions:

Installation

  • Debian/Ubuntu-based distros: sudo apt install imwheel
  • Fedora: sudo dnf install imwheel
  • Arch Linux: sudo pacman -S imwheel

Configuration

Once installed, you can customize imwheel by editing the ~/.imwheelrc file. Here’s an example configuration that increases vertical scroll speed:

".*"
None, Up, Button4, 4
None, Down, Button5, 4

In this configuration, the number 4 specifies the scroll acceleration. Adjusting this value allows you to fine-tune the scrolling speed to your liking. After updating the configuration, apply the changes by restarting imwheel:

imwheel -kill

For convenience, you can add the imwheel -kill command to your startup applications to ensure that imwheel is automatically launched when you log in.

Conclusion

In the ever-evolving landscape of Linux desktop environments, the need for precise control over hardware behavior remains paramount. imwheel continues to be a relevant and invaluable tool for those who find themselves frustrated by inconsistent mouse scroll behavior. By offering detailed customization options and bridging the gap left by default system settings, imwheel ensures that your scrolling experience is as smooth and responsive as it should be.

If you’ve ever found yourself fighting with your mouse scroll settings on Linux, give imwheel a try. It might just be the fix you need to enhance your workflow and reclaim the fluidity of your desktop experience.

The post Why imwheel Is Still Relevant for Linux Users in 2025 appeared first on Hamradio.my - Amateur Radio, Tech Insights and Product Reviews by 9M2PJU.