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 gitsigning & 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.
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].
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
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.
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:
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.
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.
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.
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.
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.
The morning downpour somehow managed to be a whole lot worse than the one that we faced during our outing in the previous evening
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.
This is definitely something that I could call a "treasure trove" for folks like myself who are invested too much in the anime and manga culture
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.
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.
Digital display of schedule for all the presentation events to take place on the second half of the first day of CentOS Connect 2025
Some glimpses from the SyncStar dashboard exhibiting a collection of GNU/Linux distributions available for the creation of USB bootable media
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.
CentOS Connect 2025 had almost every swag that you could ask for from the world of Enterprise Linux and then some more
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.
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.
Shaun kicking off the CentOS Connect 2025 event with his opening remarks and a reflection of the CentOS Project's code of conduct
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.
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.
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.
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.
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.
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.
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.
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.
Some anime themed apparel explored at the Primark store in Brussels
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.
Some anime themed action figurines explored at various stores from various franchises like Boku No Hero Academia (2016), Kimetsu No Yaiba (2019) and Jujutsu Kaisen (2020)
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.
Some goods imported from Japan including imperial Japanese themed Red Bull, Doraemon (1979) themed snacks and Dragon Ball Z (1989) action figurine
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.
Some glimpses from when the rain was quite alright on our way from Moxy Brussels City Center to Grand Place
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.
Some glimpses from when the rain had become worse on our way from Moxy Brussels City Center to Grand Place
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.
Some glimpses of the goodies I could not purchase from Genshin Impact and of the goodies I could from Spy X Family and Kimetsu No Yaiba
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.
It is surprising just how absurdly empty Grand Place had become due to the worsening weather that night
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.
Some glimpses of us sharing some drinks and snacks at the Delirium Cafe outlet and The Belgian Fries Co. outlet before heading back to the hotel
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.
For Secure Boot: openssl, sign-file, mokutil Example for Ubuntu:
sudo apt install -y build-essential dkms git iw
Download and Install the Driver:
git clone https://github.com/morrownr/rtl8852cu-20240510.git
cd rtl8852cu-20240510
sudo ./install-driver.sh
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:
Security: Use WPA2-AES or WPA3. Avoid mixed modes like WPA/WPA2.
Channel Width:
2.4 GHz: Set to 20 MHz fixed width.
5 GHz: Use channels 36–48 or 149–165 for compatibility.
Network Names: Avoid naming all bands (2.4 GHz, 5 GHz, 6 GHz) the same.
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.
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
ℹ️ 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).
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.
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:
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.
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. Withpw-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.
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.
ffplayis 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.
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.
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.
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 (-).
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.
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.
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.
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 } } ] }
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:
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.
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.
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…
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.
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.
It would be an understatement if I were to say that we were literally pampered with the amazing hospitality and ample legroom made available in the business class
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).
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.
Some glimpses from Dubai International Airport (DXB) that were captured by me when I realized that we managed to make it to the connection in time
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.
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.
Some glimpses taken from the train travel from Luchthaven Zaventem Airport station to Brussels Centraal station
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.
Some glimpses from the hotel room #610 after I was done with the travel across timezones that lasted for more than twenty hours
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.
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.
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)
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):
2015201620172019202220232024
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!
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.
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:
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.
comments? additions? reactions?
As always, comment on mastodon: https://fosstodon.org/@nirik/113969409712070764