Fedora, Linux

Better Bluetooth sound quality on Linux

Over a year ago I got my first serious Bluetooth headphones. They worked with Fedora well, they paired, connected, sound was directed to them. Just the sound quality was not overwhelming. I learnt that because of limited bandwidth of Bluetooth a codec with audio compression has to be used. There are quite a few of them to pick from: AAC (very widely supported because it’s the only one iPhone supports, partly freely available), AptX (also very widely supported, but proprietary), AptX-HD (enhanced AptX with a higher bitrate, also proprietary), LDAC (probably the best codec available, highest bitrate, available in Android, supported mostly by Sony devices), MP3 (also possible, but supported by virtually no devices). And also SBC which is a native Bluetooth, first generation compression codec with rather bad sound quality.

My headphones supported SBC, AAC, AptX, AptX-HD, LDAC, so all the advanced codecs. Sadly on Linux it fallbacked to the basic SBC because no other was available for Bluetooth, and headphones for €200 produced rather underwhelming sound. I mostly listen to music on Spotify. Listening to it on my headphones meant transcoding OGG 320 kbps to SBC and losing a lot of sound quality.

Then I recalled that Sony released LDAC as open source in the Android Open Source Project. And they really did because you can find libldac released under Apache 2.0 License there. So it could possibly be made available on Linux, too. Bluez was also able to negotiate LDAC with the end device. What was missing was a plugin for PulseAudio that would utilize the codec and encode the stream into LDAC before sending it over Bluetooth to the headphones.

Today I learnt that such a plugin had been finally created.  And besides LDAC it also supports AAC, AptX, and AptX-HD. Those are patent-protected codecs and the plugin relies on ffmpeg to support them, so it’s not likely they will be available in Fedora any time soon. But libldac is already in Fedora package review and is waiting for the final legal approval. The plugin currently depends on ffmpeg, but if it were made optional, we could at least ship LDAC support by default in Fedora Workstation.

I thought we could also support AAC because its decoder/encoder is already available in Fedora, but I learnt that it only supported the original AAC format while what devices support these days is HE-AAC which is still protected by patents.

Anyway, someone already built packages of both the plugin and libldac and I installed them to test it. And it worked on Fedora 29 Workstation, LDAC was used for Bluetooth stream encoding:


I don’t have bat ears, but I could recognize a difference in sound quality immediately.

If I’m not mistaken it makes Linux the first desktop system to support LDAC. And with support for other codecs it will make it the OS with the best Bluetooth sound quality support because all other systems support only a subset of the list, hence fewer headphones/speakers at their best sound quality.


F29 release parties in Brno and Prague

I’ve been organizing Fedora release parties in Brno since Fedora 15 (2011) and with the great release of Fedora 29 I couldn’t make an exception. With help of Květa Mrštíková, Lenka Čvančarová, and all speakers I organized F29 release parties in Brno (Nov 26) and in Prague (Dec 4).

The Brno one was hosted in Red Hat offices in Brno and all speakers were redhatters. I kicked off the event with a talk on news in F29 Workstation. Then Michal Konečný continued with his experience using Silverblue (OSTree-based Workstation). František Zatloukal talked on his passion – gaming on Fedora. After the recent release of Proton by Valve, there was a lot to talk about. The last talk was delivered by Lukáš Růžička and it was about maybe the biggest feature in Fedora 29 – modularity.

Michal Konečný talking on Silverblue.

The party was attended by 50+ visitors both from Red Hat and local community (mainly students). Besides food for their minds (talks) there was also refreshment and all kinds of Fedora swag.

A break between talks.

Fedora parties in Prague are usually smaller simply because Red Hat doesn’t have a large office there and visitors come from local community. A smaller number of people and a very cozy venue provided by Etnetera creates very informal atmosphere that generates interesting discussions. I must say I enjoyed this release party perhaps the most from all I’ve ever organized.

Christmasy atmosphere for the F29 party in Prague.

I started with a talk on Workstation and since there was no talk on Silverblue I also talked on my experience with it. My talk blended with interesting discussions about related topics and it took over an hour. But I really enjoyed it because it didn’t feel like talking to a silent crowd and some attendees contributed by interesting points and pushed me to clarify some things I talked about. We also had a talk on modularity, this time by Adam Šamalik and František Zatloukal came with me from Brno to talk on gaming on Fedora. I was really looking forward to the talk by Ondřej Koch from the National Library of Technology where they deployed Fedora Workstation on ~200 PCs. Unfortunately he didn’t show up. Then one of the attendees stepped up and gave a talk on how he created a backup solution based on ZFS for a really small municipality in his birth village.

Adam talking on modularity.
And people listening.
Fedora swag in Prague.

The number of attendees was around 25 and again besides talks we also prepared some food refreshment (courtesy of Red Hat) and a small keg of beer (courtesy of Etnetera). Lenka also surprised everyone by a cake for the 15-year anniversary of Fedora Project.

Lenka cutting the cake.

I’d like to thank everyone who helped with the events and Red Hat and Etnetera for providing venues and refreshment.


Fedora Handbook 2018 Released

I finally finished the 2018 edition of Fedora Handbook (aka Fedora Workstation Beginner’s Guide). Just a recap what the handbook is about: it’s a printed handbook that should give enough information to get a user from “knowing nothing about Fedora” to first steps in the system. It’s used as a giveaway at conferences and other events.

The original handbook was written in Czech in 2015 and the English version released last year introduced only cosmetic changes, so even though the handbook has pretty generic info and is not specific to any Fedora release there were quite a lot of changes needed.

I’d especially like to thank Petr Bokoč who suggested a lot of improvements, implemented some of them, and did the proofreading.

The 2017 edition was only translated into Czech and Spanish. I’d like to see more translations this time. If you’d like to translate it into your language, just go ahead, fork the repo, create a directory named after your language code in the “2018” branch, copy the English origin content into it, and start translating. Once you’re done, do a PR. Please stay in the stable 2018 branch and don’t translate the master. Master is a subject of change and shouldn’t be translated.

We provide a script to automatically generate Docbook, HTML, and PDF files. But ideally the outcome should be a quality PDF that is then printed. But that’s not an automatic process. I’m taking care of the English and Czech versions, but other languages would need volunteers to do the typesetting.

We also have a new cover created by Tereza Hlaváčková under supervision of Mairin Duffy.

Snímek z 2018-12-18 16-52-38

Fedora, GNOME, Linux

Fedora at LinuxDays 2018 in Prague

LinuxDays, the biggest Linux event in the Czech Republic, took place at the Faculty of Information Technology of Czech Technical University in Prague. The number of registered attendees was a bit lower this year, it could be caused by municipality and senate elections happening on Fri and Sat, but the number got almost to the 1300 mark anyway.

Besides a busy schedule of talks and workshops the conference also has a pretty large booth area and as every year I organized the Fedora one. I drove by car to Prague with Carlos Soriano and Felipe Borges from the Red Hat desktop team on Saturday morning and we were joined by František Zatloukal (Fedora QA) at the booth.

František and me at the booth.

Our focus for this year was Silverblue and modularity. I prepared one laptop with an external monitor to showcase Silverblue, the atomic version of Fedora Workstation. I must say that the interest of people in Silverblue surprised me. There were even some coming next day saying: “It sounded so cool yesterday and I couldn’t resist and install it when I got home and played with it in the night…” With Silverblue comes distribution of applications in Flatpak and there was a lot of user interest in this direction as well.

Reasons to use Fedora.

I was hoping for more interest in modularity, but people don’t seem to be so aware of it. It doesn’t have the same reach outside the Fedora Project as Flatpak does, it’s not so easy to explain its benefits and use cases. We as a project have to do a better job selling it.

The highlight of Saturday was when one of the sysadmins at National Library of Technology, which is on the same campus, took us to the library to show us public computers where they run Fedora Workstation. It’s 120 computers with over 1000 users (in the last 90 days). Those computers serve a very diverse group of users, from elderly people to computer science students. And they have received very few complaints since they switched from Windows to Fedora. Also they’ve hit almost no problems as sysadmins. They only mentioned one corner case bug in GDM which we promised to look into.

Carlos and Felipe checking out Fedora in the library.

It was also interesting to see the setup. They authenticate users against AD using the SSSD client, mount /home from a remote server using NFS. They enable several GNOME Shell extensions by default: AlternateTab (because of Windows users), Places (to show the Places menu next to Activities)… They also created one custom extension that replaces the “Power Off” button with “Log Out” button in the user menu because users are not supposed to power the computers off. They also create very useful stats of application usage based on “recently-used” XML files that GNOME creates to generate the menu of frequently used applications. All computers are administrated using Ansible scripts.

Default wallpaper with instructions.

The only talk I attended on Saturday was “Why and How I Switched to Flatpak for App Distribution and Development in Sandbox” by Jiří Janoušek who develops Nuvola apps. It was an interesting talk and due to his experience developing and distributing apps on Linux Jiří was able to name and describe all the problems with app distribution on Linux and why Flatpak helps here.

On Sunday, we organized a workshop to teach to build flatpaks. It was the only disappointment of the weekend. Only 3 ppl showed up and none of them didn’t really need to learn to build flatpaks. We’ll have the same workshop at OpenAlt in Brno and if the attendance is also low, we’ll know that workshop primarily for app developers is not a good fit for such conferences.
But it was not a complete waste of time, we discussed some questions around Flatpak and worked on flatpaking applications. The result is GNOME Recorder already available in Flathub and Datovka in the review process.

The event is also a great opportunity to talk to many people from the Czech community and other global FLOSS projects. SUSE has traditionally a lot of people there, there was Xfce, FFMPEG, FreeBSD, Vim, LibreOffice…


Fedora, GNOME, Linux

Story of GNOME Shell Extensions

A long time ago (exactly 10 years ago) it was decided that the the shell for GNOME would be written in JavaScript. GNOME 3 was still looking for its new face, a lot of UI experimentation was taking place, and JavaScript looked like the best candidate for it. Moreover it was a popular language on the web, so barriers to entry for new contributors would be significantly lowered.

When you have the shell written in JavaScript you can very easily patch it and alter its look and behaviour. And that’s what people started doing. Upstream was not very keen to officially support extensions due to their nature: they’re just hot patching the GNOME Shell code. They have virtually unlimited possibilities in changing look and behaviour, but also in introducing instability.

But tweaking the shell became really popular. Why wouldn’t it? You can tweak your desktop by simply clicking buttons in your browser. No recompilations, no restarts. So extensions.gnome.org was introduced.

The number of available extensions grew to hundreds and instability some of them occasionally introduced seemed like a fair price for the unlimited tweakability. In the end when the Shell crashed it was just a blink. Xorg held up the session with opened clients, the Shell/Mutter was restarted and the show could go on.

In 2016 GNOME switches to Wayland by default. No Xorg and also nothing to hold up the session with opened clients when the Shell crashes. There is only Mutter as a Wayland compositor, but unfortunately it runs in the same process as GNOME Shell (a decision also made 10 years ago when it also looked like a good idea). If the Shell goes down, so does Mutter. Suddenly harmless blinks became desktop crashes with losing all unsaved data in opened applications.

I read user feedback and problems users are having with Fedora Workstation (and Linux desktop in general) a lot on the Internet. And desktop crashes caused by GS extensions are by far the most frequent problem I’ve seen recently. I read stories like “I upgraded my Fedora to 28 and suddenly my desktop crashes 5 times a day. I can’t take it any more and I’m out of ideas” on daily basis. If someone doesn’t step in and say: “Hey, do you have any GS extensions installed? If so, disable them and see if it keeps crashing. The extensions are not harmless, any error in them or incompatibility between them and the current version of GS can take the whole desktop down”, users usually leave with the experience of unstable Linux desktop. It hurts our reputation really badly.

Are there any ways to fix or at least improve the situation? Certainly:

  1. Extensions used to be disabled when the Shell crashed hard (couldn’t be restarted). Since on Wayland it’s the result of every crash, we should do that after every GS crash. And when the user goes back to GNOME Tweak Tool to enable the extensions again, she/he should be told that it was mostly likely one of the 3rd party extensions that made the desktop crash, and she/he should be careful when enabling them.
  2. Decoupling GNOME Shell and Mutter or/and other steps that would bring back the same behaviour like on Xorg: GS crash would not take everything down. This would require major changes in the architecture and a lot of work and GNOME Shell and Mutter developer community has already a lot on their plates.
  3. Discontinuing the unlimited extensions, introducing a limited API they can use instead of hot patching the GS code itself. This would be a very unpopular step because it’d mean that many of the existing extensions would be impossible to implement again. But it may become inevitable in the future.
Fedora, Red Hat

Fedora at Bratislava OpenCamp 2018

A few months ago I was invited to represent Red Hat and Fedora at a new conference in Bratislava – OpenCamp. All the Open Source/Linux conferences in Slovakia I’ve been to were rather small compared to Czech ones. But OpenCamp was promising a new fresh start. So I registered a Red Hat/Fedora booth and also submitted a talk on the present and future of Linux desktop.

I convinced Jaroslav “Rezza” Řezník to run the booth with me, so we could recall the good old days when we regularly staffed Fedora booths at conferences. Last Saturday early in the morning we loaded my car with Fedora and Red Hat swag, computers, and banners, and headed to Bratislava. Fortunately Brno and Bratislava are connected by highways, so the journey takes a bit over an hour.

Me and Jaroslav at the booth.

EDIT: The original photo had Pepe the Frog and other references to the alt-right movement on the wall behind us. The wall was created by university students and because we’re not anyhow associated with the movement and don’t want the photo to send any unintented messages I just GIMPed it out.

The conference was located in the new building of FIIT of Slovak Technical University. I really liked the large hallway that had enough space for booths and hallway discussions. That’s something we miss for conferences at FIT BUT. In the morning we found out that our booth was located in an area where there was no power plug. So we had to be moved and it was a lucky move because we ended up in front of the main room and got a lot of visibility.

Snímek z 2018-04-23 15-28-46
Author: OpenCamp organizers, more pictures in the gallery.

The booth was mostly about showcasing Fedora Workstation. We had a HiDPI laptop connected to a standard DPI display to show people HiDPI support in Fedora. We also prepared 10 features that are the best in Fedora or even unique to Fedora. We picked those which are concrete and easy to show, and tried to avoid something like “Fedora brings new versions of software in a stable form” because it’s too vague and subjective.

Two days before the conference I found components for Fedorator in our office and under the impression that it only takes to assemble it and load a ready-to-use ISO on an SD card I asked Jaroslav if he could get it ready. Jaroslav spent two days and the whole conference day on it, but in the last hour of the conference he was able to create a Fedora installation USB drive with it 🙂

We got surprisingly a lot of attention, e.g. from Ubuntu users who feel the attention to the desktop is not the same any more there and look for alternatives. We were also quite new to people because although we had attended various conferences in Slovakia we never had a booth there. I made several new contacts for mojefedora.cz.

My talk was right in the morning and didn’t start very well. First we couldn’t get the projector up. When it was finally projecting something I couldn’t get any output to it (through USB-C->HDMI adapter). In the end I had to use a Windows 7 computer that was part of the room equipment. And even that didn’t work very well because the HDMI connector was aparently loose and the projector lost signal every time I touch the computer. Otherwise the talk went well and I got a fairly big audience in the room. Because we started 10 minutes late I didn’t have any time for questions and had to tell people to come to our booth if they want to ask me anything.

The only dark spot on otherwise a really good day was that someone scratched my car with another car. I still quite can’t imagine how he/she could manage it because the parking lot was almost empty.

Fedora, GNOME, Linux

Why I use Flatpak for 3rd party apps


There are more reasons why to run applications as flatpaks. Someone wants to have the latest versions as soon as possible. For me as a user of Fedora which provides up-to-date versions of apps this is not a big motivation. Someone wants to run apps more securely. Again I usually trust software provided by Fedora and Flatpak sandbox is still not as strictly enforced as it should ideally be.

But where I really prefer using Flatpak to RPM packages are 3rd party applications. I’m usually running development versions of Fedora. Pre-releases on my work machine and Rawhide on my home laptop. They have been pretty stable for me, including applications in Fedora repositories. Unfortunately it’s not the case for 3rd party applications. Their authors usually don’t follow distro development closely and although many of them bundle as much as possible to avoid problems with changing dependencies, things break.

I used to use the Spotify client as a package from Negativo17 repos. But when I upgraded to F27, something broke and it stopped working. I’m pretty sure it was fixed later on after people started reporting it, but I didn’t want to stop using Spotify for the time being and didn’t have time to debug and report the issue. So I switched to Spotify flatpak and it has worked for me ever since.

The problem I had with very early stages of pre-released Fedora and Rawhide is that dependecies of GStreamer plugins in RPMFusion were usually broken. So I ended up without system multimedia codecs. It was often the case for VLC from the same repository, too. Then I switched to VLC and GNOME MPV flatpaks. Problem solved.

The last example is Telegram. Until recently I was using the official version. It’s not even provided as an RPM package. You have to download an archive, unpack its content to your home, run the binary which creates a desktop file… not very elegant in 2018, but once you do it, it just works. Well… until it doesn’t. I upgraded to F28 and Telegram suddenly took a lot of time to start up. It hung on some font config error until it timeouted and finally started. It easily took 1 minute. So I switched to Telegram flatpak as well. Works like a charm.

So what I really appreciate about Flatpak is that the apps don’t rely on the underlying system, so if the system changes e.g. due to upgrade to a newer major version apps don’t break. As I said it’s not such a major issue for distro-provided apps, but it’s certainly an issue for 3rd apps and Flatpak solved it for me.