Ubuntu HowTo: bluetooth connection: host is down

Original Source Link

I’m on ubuntu 17.10 and trying to connect my bluetooth headset QCY-Q19.
it’s able to pair but whenever I try to connect I get this error Connection Failed: blueman.bluez.errors.DBusFailedError: Host is down
sometimes it connects for few seconds and then fails with the same error.

I’ve had this exact same issue before. What I ended up doing was unpairing the device, resetting it up, which solved the connection issue. After that, I saved it as a trusted device and so far haven’t had issues since.

You may also see this error if the device you’re trying to connect to is already paired to something else. For example, my headphones will latch onto my phone if it has Bluetooth on, causing my Ubuntu desktop to fail to connect.

I had this issue in 20.04. I unpaired it from my phone and issue resolved.

Tagged : / / /

Ubuntu HowTo: How to keep the audio profile at A2DP while using a mic with Bluetooth headset? (Push-to-talk)

Original Source Link

I have a CEL-TEC F5A headset.
The spec says:

Bluetooth 4.0, profiles: Headset, Hands free, A2DP, AVRCP/HSP/HFP

It plays nicely with High Fidelity Playback (A2DP sink) profile.

When I want to switch audio input to the headset’s microphone, the output profile automatically changes to Headset Head Unit (HFS/HFP) and the quality is terrible – like 8bit sound or something. When I switch it back to A2DP, the input is back to desktop mic.

I’ve read few of other questions and seems A2DP is expected not to support input, right? But the HFP part in HFS/HFP is High Fidelity Playback I guess? That sounds like it could work as a headset and still not sound like 1950’s phone.

How could I simplify switching between the profiles so that it is HFS/HFP when I talk and A2DP when I listen? E.g. as a push-to-talk.

Ubuntu 17.10, no sound customization IIRC, everything latest.

My output:

$ pactl list cards
Card #0
        Name: alsa_card.pci-0000_00_03.0

Card #4
        Name: bluez_card.00_19_5D_25_6F_6C
        Driver: module-bluez5-device.c
        Owner Module: 30
                device.description = "F5A"
                device.string = "00:19:5D:25:6F:6C"
                device.api = "bluez"
                device.class = "sound"
                device.bus = "bluetooth"
                device.form_factor = "headset"
                bluez.path = "/org/bluez/hci0/dev_00_19_5D_25_6F_6C"
                bluez.class = "0x240404"
                bluez.alias = "F5A"
                device.icon_name = "audio-headset-bluetooth"
                device.intended_roles = "phone"
                a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 10, available: yes)
                headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 20, available: yes)
                off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
        Active Profile: a2dp_sink
                headset-output: Headset (priority: 0, latency offset: 0 usec, available)
                        Part of profile(s): a2dp_sink, headset_head_unit
                headset-input: Headset (priority: 0, latency offset: 0 usec)
                        Part of profile(s): headset_head_unit

The problem here is not that the microphone does not work, but rather that the audio quality worsens when it is activated.

I was about to return the headset and wait for Bluetooth 5.0 headset, but then realized, that’s the best functionality I can get with my BT 4.0 laptop. So I kept them.

Still, listening to a French guy over 16 bit 8000 Hz audio wasn’t really the right way to have a meeting. For few days, I was switching between the two modes using Ubuntu’s sound settings dialog, but that’s really, really annoying as you can imagine.

So I wrote this script leveraging pacmd which toggles between the 2 modes:

  • Crappy audio, microphone on
  • Near-CD quality audio, microphone off

It is not polished, has some dead code, and I use my own phones ID’s, but it may be an inspiration for your own script. Latest version here.


####  Restart Bluetooth
if [ "$1" == "resetBT" ] ; then
  sudo rfkill block bluetooth && sleep 0.1 && sudo rfkill unblock bluetooth;

#### Toggle listen/speak
if [ "$1" == "" -o "$1" == "toggle" ] ; then
  LINE=`pacmd list-sinks  | grep '(name:|alias)' | grep -B1 F5A  | head -1`
  if [ "$LINE" == "" ] ; then echo "F5A headset not found"; exit; fi

  if $(echo "$LINE" | grep $SINK_NAME &> /dev/null) ; then
    echo "Detected quality sound output, that means we can't speak; switch that."
    $0 speak;
    echo "Quality sound not found, switch to the good sound."
    $0 listen;

#### Change the output to F5A
if [ "$1" == "listen" ] ; then
  LINE=`pacmd list-sinks  | grep '(name:|alias)' | grep -B1 F5A  | head -1`
  if [ "$LINE" == "" ] ; then echo "F5A phones not found"; exit; fi
  #        name: <bluez_sink.00_19_5D_25_6F_6C.headset_head_unit>

  ## Get what's between <...>
  SINK_NAME=`echo "$LINE" | tr '>' '<' | cut -d'<' -f2`;

  ## The above gives an ID according to the active profile.
  ## To set manually:

  ## Switch the output to that.
  echo "Switching audio output to $SINK_NAME";
  pacmd set-default-sink "$SINK_NAME"

  #### Change profile to quality output + no mic. From `pacmd list-cards`:
  echo "Switching audio profile to $PROFILE";
  pacmd set-card-profile $CARD $PROFILE

#### Input
if [ "$1" == "speak" ] ; then
  ## Change profile to crappy output + mic. From `pacmd list-cards`:
  pacmd set-card-profile $CARD headset_head_unit

  LINE=`pacmd list-sources | grep '(name:|alias)' | grep -B1 F5A  | head -1`
  if [ "$LINE" == "" ] ; then echo "F5A mic not found"; exit; fi
  SOURCE_NAME=`echo "$LINE" | tr '>' '<' | cut -d'<' -f2`;
  echo "Switching audio input to $SOURCE_NAME";
  pacmd set-default-source "$SOURCE_NAME" || echo 'Try `pacmd list-sources`.';

####  Resources:

##  Why this is needed
# https://jimshaver.net/2015/03/31/going-a2dp-only-on-linux/

##  My original question
# https://askubuntu.com/questions/1004712/audio-profile-changes-automatically-to-hsp-bad-quality-when-i-change-input-to/1009156#1009156

##  Script to monitor plugged earphones and switch when unplugged (Ubuntu does that, but nice script):
# https://github.com/freundTech/linux-helper-scripts/blob/master/padevswitch/padevswitch

Hope this helps someone 🙂

Based on this article I fear that Bluetooth won’t give me the pleasure of hearing a quality sound and speak over the headset at the same time. :/

Not accepting this answer though, I am still hoping someone will come up with some way to do so.

Ondra, there is a very long pulse audio merge request discussion that contains most of the information.

tl;dr; to get things working pulse audio, bluez and kernel need to be updated (not trivially). As well a separate daemon hsphfpd is necessary.

Kernel updates are not progressing and user input to maintainers would be helpful in pushing things forward. Think about providing such. See here.

Without the kernel patches, using headphones’ mic leads to terrible audio quality (HSP/HFP mode of operation).

But there is chance that only Pulse patches (and support from your headphones) can enable A2DP bi-directional audio which should be alright for most purposes.

And that patch is progressing well at the moment. More feedback on it shouldn’t hurt.

Tagged : / / / /

Ubuntu HowTo: Building Ardour 5

Original Source Link

I am trying to build ardour 5 on Ubuntu 17.10. When I try to configure it, it displays pkg -config => No How do I get pkg -config to work. I have searched all over but no answers because its not a common problem.

I built Ardour. You will need all the prerequisites (explained later). Python 2.6 should already be on your PC. Build it with:

    ./waf configure
    ./waf install

It will ask for some dependencies, so install those 1 by 1. LIST:
sudo apt install libboost-all-dev gcc g++ pkg-config libasound2-dev libgtk2.0-dev glibmm-2.4-dev libsndfile1-dev libcurl4-nss-dev libarchive-dev liblo-dev libtag1-dev vamp-plugin-sdk librubberband-dev libfftw3-dev libaubio-dev libxml2-dev libjack-dev liblrdf-dev libsamplerate-dev lv2-dev libserd-dev libsord-dev libsratom-dev liblilv-dev libgtkmm-2.4-dev (ONE LINE)

Update: Building Ardour 6 on Ubuntu 20.04

By trial and error, this might include some not needed packages:

This is from the previous answer, but with packages that errored removed:

sudo apt install -y libboost-all-dev gcc g++ pkg-config libasound2-dev libgtk2.0-dev  libsndfile1-dev libcurl4-nss-dev libarchive-dev liblo-dev libtag1-dev vamp-plugin-sdk librubberband-dev libfftw3-dev libaubio-dev libxml2-dev lv2-dev libserd-dev libsord-dev libsratom-dev liblilv-dev libgtkmm-2.4-dev

And this is all the packages installed in by terminal history (there might be some overlap):

sudo apt-get install -y 
libglibmm-2.4-dev libsndfile1-dev libarchive-dev liblo-dev libtag1-dev 
librubberband-dev libfftw3-dev libaubio-dev libxml2-dev liblrdf0-dev 
libusb-1.0-0-dev libcunit1-dev libwebsocketpp-dev 
libpangomm-1.4-dev libsamplerate0-dev lv2-dev libcunit1-dev libcppunit-dev 
libudev-dev libserd-0-0 libcwiid-dev libxwiimote-dev libserd-0-0 
libserd-dev libwebsocketpp-dev libwebsockets-dev libsord-dev libsratom-0-0 
libsratom-0-0 libsratom-dev liblilv-dev liblrdf0 liblrdf0-dev

Then do the normal:

./waf configure
./waf install

Tagged : / /

Ubuntu HowTo: How do I install Ubuntu without a USB or a CD?

Original Source Link

I want to install Ubuntu Desktop 17.10 on my Windows 10 computer. Problem is, I tried to use Unetbootin and when I selected it on the OS menu, it displayed an error message saying to insert a Windows 10 disk (even though I have already got Windows 10 installed) and showed me the file I “was missing”. So I tried to find the software called Wubi which apparently is on the download page for Ubuntu, but I couldn’t find it. I don’t think it’s even on the ISO. Can you please help? I don’t want to use a VM.

Update: I have finally gotten a USB.

My first advice is to use Rufus to install your Ubuntu image on a USB stick. You can find it here https://rufus.akeo.ie/
It’s like Unetbootin but more efficient (in my opinion). When i use it, it doesn’t ask to insert a windows 10 disk. (And i don’t understand why Unetbootin ask this)

Otherwise, you can install Ubuntu over network with the Netboot install. you can find some help on the official Ubuntu website here -> https://help.ubuntu.com/community/Installation/Netboot

But be aware that is not easy like the USB installation.

Tagged : / / / /

Ubuntu HowTo: What does NetworkManager-wait-online.service do?

Original Source Link

NetworkManager-wait-online.service fails at boot and it delays my startup

Some code runs off the network

In some multi-user environments part of the boot-up process can come from the network. For this case systemd defaults to waiting for the network to come on-line before certain steps are taken.

Majority of Desktop Users

Unlike some multi-user environments most Ubuntu desktop users have the Operating System and drivers on their hard disks, SSDs or Live Boot USBs.

There is a glitch where some users wait an extremely long time for network to come up during boot. In this case the recommendations is to set the maximum wait time to 30 seconds. A better way is to simply disable the service at boot time.

For many users 10 to 15 seconds can be sliced off the parallel boot time by using:

sudo systemctl disable NetworkManager-wait-online.service

After you sign on you will likely get a message bubble stating you’ve now been connected to the network (WiFi or Ethernet access to Internet).

From the man page:


       systemd-networkd-wait-online.service, systemd-networkd-wait-online -
       Wait for network to come online

It appears that this service simply waits, doing absolutely nothing, until the network is connected, and when this happens, it changes its state so that other services that depend on the network can be launched to start doing their thing.

So, it appears that this service is absolutely benign, it does not waste any time during boot, and it actually constitutes an optimization, so you are only going to make things worse if you disable it.

(Services that need the network will start before the network is up, at a time when many other services are also starting up and contention is high, and these services will be unable to do anything useful, so they will just keep retrying to connect to the network, until the network finally comes up.)

Tagged : /

Ubuntu HowTo: Disable “Mouse battery low” spam notification

Original Source Link

Countless times over the past few weeks I have been notified about the low battery in my wireless mouse. Every time it wakes up from sleeping mode and reconnects over Bluetooth I get a notification. I have gotten hundreds of notifications. I do not want them and I do not need them. Yes, battery is low, but at 0% (as reported) it will go on for another week at least. The notification has no timer and will stay visible until I close it.

How do I disable this torture?


Realizing I might sound like a grumpy old man I am not going to replace my batteries that are good for another month as a workaround. I am running Ubuntu 17.10 with GNOME Shell. I have no clue what is causing this. Pointers and suggestions will be greatly appreciated!

UPDATE: It turns out the mouse ran for another ten days or so after the initial notification. With the OS constantly reminding me that it will soon stop working. Wasting fine batteries is not a very good design. People should care about that and have an option to turn the notifications off.

UPDATE 2018-10-22: I asked some time ago. The marked correct answer might not apply anymore. It appears to be a bug in the gnome-settings-daemon. See the report for updates revolving this issue.

OK, I hit the same issue. Reasons are similar; my Logitech M570 is fed on “dead” batteries as it lasts MONTHS on a very low voltage alkaline. So I use batteries in other things and keep the dead ones for my M570.

The best answer I’ve found was to lower the Power Plugins critical level warning. This way you can customise when it nags.

You need dconf for command line or dconf-editor for the GUI version (for GUI you’ll need to do sudo apt-get install dconf-tools, although that package may not be available for newer versions, so just get dconf-editor and its dependencies).

Setting is generically for batteries though, so if you’re on a laptop or a UPS then you will be altering the warning levels for those, which may be non ideal.

For Ubuntu 17.10 (Artful Aardvark) go to org → gnome → settings-daemon → plugins → power. Alter the “percentage-low” setting to what you want. I changed from 10% to 4%.

It is not a perfect answer if you have a laptop, but it is fine for a desktop computer and better than filling landfill with batteries or being nagged.

You could use a script that closes the message as soon as it opens (with the delay of 0.5 seconds, it takes time for the message window to open).
This is not perfect, because it closes the last notification window in the window stack. Therefore there is a small chance to close the wrong notification if it appears at almost the same time as the one with the message summary “Mouse battery low”.


sudo apt install python-dbus wmctrl -y

This one is for xfce. You’ll have to tweak it for gnome, if that is what you use.
For xfce next command closes the last notification window:

wmctrl -i -c $(wmctrl -lx | awk '/xfce4-notifyd.Xfce4-notifyd/{print $1}' | tail -n 1)

awk filters the window(s) with the window class xfce4-notifyd.

For mate-desktop window class is mate-notification-daemon, I’m not sure for Gnome.

Change that line for your DE in the script.

Save next script, make it executable and set it to run on startup.

#!/usr/bin/env python
import glib
import dbus
import os
import time
from dbus.mainloop.glib import DBusGMainLoop

def close_notification(bus, message):
  keys = ["app_name", "replaces_id", "app_icon", "summary",
          "body", "actions", "hints", "expire_timeout"]
  args = message.get_args_list()
  if len(args) == 8:
    notification = dict([(keys[i], args[i]) for i in range(8)])
    if notification["summary"] == "Mouse battery low":
       # Adapt next command for your DE
       os.system("wmctrl -i -c $(wmctrl -lx | awk '/xfce4-notifyd.Xfce4-notifyd/{print $1}' | tail -n 1)")

loop = DBusGMainLoop(set_as_default=True)
session_bus = dbus.SessionBus()

Ubuntu 18.04 on a desktop computer here, so I’m not having issues that laptop could potentially have with that solution.

  1. You can test whether what you made is working by restarting upower service:

    sudo systemctl restart upower
  2. I managed to solve it by altering upower’s config file:

    sudo nano /etc/dbus-1/system.d/org.freedesktop.UPower.conf

I simply commented out whole config, leaving empty
<busconfig></busconfig> tag.

for Ubuntu 20:
settings -> notifications -> power and then toggle off the notifiction-button .

Tagged : / / / /

Ubuntu HowTo: Unable to locate package vsftpd Ubuntu 17.10

Original Source Link

I am using below command to install ftp but its showing error message

sudo apt-get install vsftpd

Building dependency tree
Reading state information… Done
E: Unable to locate package vsftpd

Have you tried to resynchronize the package index files from their sources before installing the package?

sudo apt-get update && sudo apt-get install vsftpd

I removed my Singapore droplet mirror and changed mirror from Singapore to Newyork and now it’s working.

You can download the .deb archive for amd64 and/or i386 from these links. Go to the directory that you downloaded the .deb archive to, and install the package manually by:

sudo dpkg -i "packageName.deb" #replace the text in quotes with the name of the package you downloaded
sudo apt-get install -f  # to fix any dependencies that might be broken.

Tagged : / / /

Ubuntu HowTo: Cannot install python-minimal on Ubuntu 17.10

Original Source Link

I have been trying to install python-minimal on Ubuntu 17.10 but getting this error.

sudo apt-get install python-minimal
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libpython-stdlib python python2.7 python2.7-minimal
Suggested packages:
  python-doc python-tk python2.7-doc
The following NEW packages will be installed:
  libpython-stdlib python python-minimal python2.7 python2.7-minimal
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/1,695 kB of archives.
After this operation, 4,951 kB of additional disk space will be used.
Do you want to continue? [Y/n]
Selecting previously unselected package python2.7-minimal.
(Reading database ... 303638 files and directories currently installed.)
Preparing to unpack .../python2.7-minimal_2.7.14-2ubuntu2_amd64.deb ...
Unpacking python2.7-minimal (2.7.14-2ubuntu2) ...
Selecting previously unselected package python-minimal.
Preparing to unpack .../python-minimal_2.7.14-2ubuntu1_amd64.deb ...
Unpacking python-minimal (2.7.14-2ubuntu1) ...
Selecting previously unselected package python2.7.
Preparing to unpack .../python2.7_2.7.14-2ubuntu2_amd64.deb ...
Unpacking python2.7 (2.7.14-2ubuntu2) ...
Selecting previously unselected package libpython-stdlib:amd64.
Preparing to unpack .../libpython-stdlib_2.7.14-2ubuntu1_amd64.deb ...
Unpacking libpython-stdlib:amd64 (2.7.14-2ubuntu1) ...
Setting up python2.7-minimal (2.7.14-2ubuntu2) ...
Linking and byte-compiling packages for runtime python2.7...
Setting up python-minimal (2.7.14-2ubuntu1) ...
dpkg: error processing package python-minimal (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
E: Sub-process /usr/bin/dpkg returned an error code (1)

I have tried install using .deb file but still no luck.

Kindly help me out.

Update 1

Output of sudo apt -f install

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
Use 'sudo apt autoremove' to remove it.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
3 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Processing triggers for mime-support (3.60ubuntu1) ...
Processing triggers for desktop-file-utils (0.23-1ubuntu3) ...
Setting up python2.7 (2.7.14-2ubuntu2) ...
Setting up python-minimal (2.7.14-2ubuntu1) ...
dpkg: error processing package python-minimal (--configure):
 subprocess installed post-installation script returned error exit status 1
Processing triggers for bamfdaemon (0.5.3+17.10.20170810-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Setting up libpython-stdlib:amd64 (2.7.14-2ubuntu1) ...
Processing triggers for man-db ( ...
Processing triggers for gnome-menus (3.13.3-6ubuntu5) ...
Errors were encountered while processing:
E: Sub-process /usr/bin/dpkg returned an error code (1)

Update 2

sudo apt install --reinstall python-minimal

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
Use 'sudo apt autoremove' to remove it.
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
E: Internal Error, No file name for python-minimal:amd64

Okay, please run the following commands to hopefully fix the issue and please post any errors, thanks:

sudo apt update
mkdir PYTHON; cd PYTHON 
apt-get download python-minimal
sudo dpkg -i python*deb

Tagged : /

Ubuntu HowTo: Why do I have two docks in Ubuntu 17.10 desktop?

Original Source Link

What’s going on here? I’ve installed the Dash to Dock extension on Ubuntu 17.10. Everything was cool, and as I was trying to hone and tweak the look of my desktop, at some point the shortcuts bar (dock?) on the left is duplicated. The default, which normally disappears with Dash to Dock, is there underneath the one that usually shows up when I install Dash to Dock. Why?

(Click image to enlarge)

I’ve tried to go through the options for Dash to Dock, the GNOME Tweak Tool, and the regular Ubuntu settings, but I can’t figure it out.

Running Dash to Dock along with the default Ubuntu Dock is not a good idea. As Ubuntu Dock is a fork of Dash to Dock (and hence they share many same schemas), issue like this is not really surprising.

Disable one of the two extensions (Ubuntu Dock and Dash to Dock) using Tweaks or in some way (refer to this if you want to disable Ubuntu Dock).

I did the following steps:

  • Open Dash to Dock settings
  • Got to the ‘Poistion and size’ tab
  • Check the option ‘Show on all monitors’

This fixed the problem for me. Hopefully it works for you too. Also make sure Ubuntu dock is disabled.

I have been playing with similar issues: Gnome favorites bar was showing in activities view and dock was showing on lockscreen; as pomsky says, all of this issues are associated with the combination of Ubuntu Dock and Dash to Dock.

I found this workaround for customize the dock with almost all the options that Dash to Dock offers:

  1. Install Dash to Dock.
  2. Make all your customization.
  3. Remove Dash to Dock (from https://extensions.gnome.org/local/).
  4. Logout and login.

Although Dash to Dock was removed, the customization (position, size, behavior, appearance) persist on Ubuntu Dock and the issues (docks overlapped, dock shows on lockscreen and favorites shows on activities view) are not present any more.

Notes: with this method, the only thing that you lost from Dash to Dock is the “Dash to Dock settings” menu from the applications icon, and of course, the Dash to Dock settings entry in Gnome Tweak Tool. I haven’t tried yet, but I think that if you make a change from Dock entry in Ubuntu settings, may be some customization realized with Dash to Dock settings will be lost.

The following is working for me:

  1. Install and configure the “dash to dock” extension
  2. Edit the following file:

    sudo vi /usr/share/gnome-shell/extensions/[email protected]/extension.js
  3. In the following code block, change the let to_enable = true; to let to_enable = false:

    function conditionallyenabledock() {
        let to_enable = false;
        runningExtensions = ExtensionSystem.extensionOrder;
        for (let i = 0; i < runningExtensions.length; i++) {
            if (runningExtensions[i] === "[email protected]") {
                to_enable = false;
        // enable or disable dock depending on dock status and to_enable state
        if (to_enable && !dockManager) {
            dockManager = new Docking.DockManager();
        } else if (!to_enable && dockManager) {
            dockManager = null;
  4. Restart your session or do Alt + F2 and type restart

That’s it.

I was facing the same problem, then I found this nxadm cluadio. It really did the trick.

  1. Remove Dash to Dock extension in case that you have installed.
  2. Use dconf as explained in the link. The text in this step was copied from the same link.

    To prevent Ubuntu Dock to take all the vertical space (i.e. most of it is just an empty bar):

    dconf write /org/gnome/shell/extensions/dash-to-dock/extend-height false

    A neat Dock trick: when hovering over a icon on the dock, cycle through windows of the application while scrolling (or using two fingers). Way faster than click + select:

    dconf write /org/gnome/shell/extensions/dash-to-dock/scroll-action "'cycle-windows'"

    I set the dock to autohide in the regular “Settings” application. An extension is needed to do the same for the Top Bar (you need to log out, and the enable it through the “Tweaks” application):

    sudo apt install gnome-shell-extension-autohidetopbar

    Just to be safe (e.g. in case you broke something), you can reset all the GNOME settings with:

    dconf reset -f /

Optional: You can install dconf-editor and explore other settings.

Tagged : / / / /

Ubuntu HowTo: Can’t Read System Fonts After Upgrade to Ubuntu 17.10

Original Source Link

See the screenshot for an example of how all of my system fonts work. Fortunately, I can still read web pages and what I’m typing here.

Screenshot of desktop and open windows:

enter image description here

First install the indispensable (GNOME) Tweaks if not installed already by running

sudo apt install gnome-tweak-tool

Then launch Tweaks and go to Fonts section (most probably fourth from the top in the sidebar) and change all the fonts to working ones. See the screenshot below for reference:
enter image description here
This should fix the font rendering issue in window title, interface etc.

But you might still see the issue present in top bar, calendar and notification tray, system menu etc. In order to fix this you may change the shell theme in the Appearance section of Tweaks to one with supported font(s).
enter image description here

Important note: You won’t be able to select any shell theme installed in your home directory by default. For that you’ll have install and activate User Themes shell extension first.

I did all steps recommended by @pomsky and it fixed the all font issues except the system menus.
According to this article, the font of GNOME Shell’s Top Bar is set in the /usr/share/themes/<your-theme>/gnome-shell/gnome-shell.cssin stage->font-family section. In my case, it was font-family: Futura Bk bt, Cantarell, Sans-Serif; and these fonts were missing in my system. I installed the missing fonts, restarted Ubuntu and Voilà, everything works fine!

Tagged : / / / /