Archives For Howtos

This tutorial shows how to enable hardware video acceleration (VA-API) for Firefox, so it uses the video card to decode/encode video to save power.

Hardware video acceleration is a computer technology to make the graphics card to encode and decode video, thus offloading the CPU to save power. And compared to CPU, GPU are normally more efficient at the job.

UPDATE 2024: VA-API SHOULD BE ENABLED BY DEFAULT (if available) IN RECENT FIREFOX RELESES! SO, JUST GO TO BOTTOM TO VERIFY.

There are a few ways to achieve this on Ubuntu Linux, including:

  • Video Acceleration API (VA-API) – an open source API developed by Intel.
  • Video Decode and Presentation API for Unix (VDPAU) – open source API developed by NVIDIA.
  • NVENC/NVDEC – NVIDIA’s proprietary API.

The VA-API supports Intel, AMD, and NVIDIA (via open-source Nouveau drivers) GPUs. And it is widely supported by software, such as MPV uses va-api hardware acceleration for video playback by default if available.

The VDPAU API supports both AMD and NVIDIA, but has no support in Firefox or Chromium. And while NVENC/NVDEC is used for NVIDIA GPU only, we usually use VA-API for hardware video acceleration.

Firefox pop-up video encoding/decoding via Intel GPU

Verify VA-API:

NOTE: VA-API does not work on NVIDIA via proprietary drivers as mentioned above. If you installed NVIDIA proprietary driver via ‘Additional Drivers’ utility, this will only work when you choose ‘Intel (Power Saving)’ mode in NVIDIA Prime settings.

The VA-API may work out-of-the-box in Ubuntu. You can firstly open terminal from start menu (click ‘Activities’ and search terminal).

Next install vainfo package via command:

sudo apt install vainfo

And run it to check VA-API info:

vainfo

It outputs the driver as well as supported profile. VAEntrypointVLD means decoding support for this format, VAEntrypointEncSlice means encoding support.

If the command outputs an error, you can try to install drivers via command:

  • For NVIDIA nouveau and AMD, run command:
    sudo apt install mesa-va-drivers
  • For Gen 8+ Intel hardware, install via command:
    sudo apt install intel-media-va-driver

    And for old Intel hardware, install i965-va-driver instead via apt install command.

By setting the environment variable, you can choose which driver to use. For example, set “export LIBVA_DRIVER_NAME=i965” to use i965 driver. The value can also set to “nouveau” for NVIDIA, or “radeonsi” for AMDGPU.

Enable VA-API in Firefox:

Firefox added VA-API support since version 80, though it’s not enabled by default. You can enabled it manually by doing following steps one by one.

Firstly, open Firefox and go to about:config in url bar. Click on “Accept the Risk and Continue”. Then search for following keys, enable or disable them one by one:

  • media.ffmpeg.vaapi.enabled set to true
  • media.ffvpx.enabled set to false.
  • media.rdd-vpx.enabled set to false.
  • media.navigator.mediadatadecoder_vpx_enabled set to true.
  • If you experience page crashes, try setting security.sandbox.content.level to 0.

Secondly, set environment variable (for current user only). Open terminal and run command to edit profile file:

gedit ~/.profile

When file opens, add following lines to the end:

  • (Optional) Specify va-api driver as mentioned above (replace iHD accordingly):
    export LIBVA_DRIVER_NAME=iHD

    You can SKIP this if vainfo outputs without error!

  • Diable RDD sandbox:
    export MOZ_DISABLE_RDD_SANDBOX=1
  • For Xorg session, default in Ubuntu 18.04/Ubuntu 20.04:
    export MOZ_X11_EGL=1
  • For Wayland session, default in Ubuntu 21.04 & higher:
    export MOZ_ENABLE_WAYLAND=1

Finally, log out and back in. Open Firefox and play a video and see result!

Check if Hardware Video Acceleration working:

During video playback, you can use top command to see CPU usage before and after enable VA-API. For Intel GPU, there’s intel_gpu_top command that monitor it continuously.

Open terminal and run command to install the tool first:

sudo apt install intel-gpu-tools

Next, run command:

sudo intel_gpu_top

Start playing video in Firefox and you’ll see the video bar is busy (above 0%) if VA-API starts working.

For AMD GPU, there’s another command line tool “radeontop” available to monitor GPU activity.

NOTE for YouTube videos, the video codec may sometimes not supported by your hardware. To workaround, try h264ify or enhanced-h264ify extension to make YouTube stream H.264 videos instead of VP8/VP9.

That’s all. Enjoy!

The official PPA for Shutter screenshot tool is back! So far contains packages for Ubuntu 20.04 and Ubuntu 21.04.

Shutter is one of the most popular screenshot tool for Linux. Other than basic screen capturing feature, it supports plugins, profiles, uploading to Imgur, Dropbox, etc., and has a built-in editor.

Shutter PPA was abandoned

The founder of Shutter has abandoned the project as well as the official PPA for many years. Due to the old Gtk2 dependency libraries, it has finally been removed from Ubuntu and Fedora repositories.

Luckily, a third-party PPA by linuxuprising is maintaining the Shutter package for over two years.

The development is back recently and moved to in Github. It now ported to GTK3. And the official PPA finally revived and maintained by the creator of linuxuprising.

Install Shutter via Official PPA:

For Ubuntu 20.04, Linux Mint 20, and Ubuntu 21.04, open terminal from start menu, and run following commands one by one.

1.) To add the official PPA, paste the command below into terminal and hit Enter:

sudo add-apt-repository ppa:shutter/ppa

Type user password (no visual feedback) when it asks and hit Enter to continue

2.) Next install the tool via command:

sudo apt install shutter

For Linux Mint, you need to run sudo apt update to manually refresh package cache.

Remove Shutter & Its PPA

You can remove Shutter PPA as well as other PPAs via “Software & Updates” utility under “Other Software” tab.

And remove Shutter if you want, by running command in terminal:

sudo apt remove --autoremove shutter

Missing the old Ubuntu Unity style login screen? It’s easy to get it back in Ubuntu 18.04, Ubuntu 20.04 and higher.

LightDM, stands for Light Display Manager, is a free open-source project by Canonical, the company behind Ubuntu. Ubuntu up to version 16.04 LTS uses it as the default display manager. And it’s present in Linux Mint 20 and some Ubuntu flavors.

For those prefer the LightDM style login screen, it’s available in Ubuntu universe repositories:

How to Install LightDM in Ubuntu 20.04 & Higher:

Press Ctrl+Alt+T on keyboard to open a terminal window. When it opens, paste the command below and hit enter:

sudo apt install lightdm unity-greeter

While the installing process, it will prompt to configure the display manager. Just hit Enter on the screen.

At the next screen, use up/down arrow key to choose “lightdm” and hit Enter to apply.

Once installed, restart your computer and you’ll see the new login screen!

Configure LightDM login screen:

Uses are mostly want to remove the white dots and change the login background wallpaper.

To do so, open terminal (Ctrl+Alt+T) and run command to install dconf-editor if you don’t have it:

sudo apt install dconf-editor

Next, run command to grant lightdm user privilege to access control list:

xhost +SI:localuser:lightdm

Finally launch dconf editor via lightdm:

sudo -u lightdm dconf-editor

When it opens, navigate to “com/canonical/unity-greeter“. Then turn off ‘draw-grid’, and change background image as you want.

For more settings, see the Ubuntu Wiki.

How to Restore Gnome Login Screen:

To revert back the original GDM display manager. Firstly, open terminal and run command to disable LightDM:

sudo systemctl disable lightdm.service

Then launch the configure screen by running the command below:

sudo dpkg-reconfigure lightdm

This time choose ‘gdm3’ to handle the login screen and hit Enter.

Finally, remove lightdm as well as its dependency packages via command:

sudo apt remove --autoremove lightdm unity-greeter

That’s all. Enjoy!

This simple tutorial shows how to install and setup Gerbera home media server in all current Ubuntu and Debian releases.

Gerbera is a free and open-source UPnP media server for Linux, BSD, and Mac OS. With it, you can stream audio and/or video files over home network, and play on any device with a media player with UPnP support, e.g., VLC.

How to Gerbera in Ubuntu / Debian via its official repository

Gerbera is available in Ubuntu repositories but always old. It’s however quite easy to install the latest version since it offers an official apt repository. And so far, it supports for Ubuntu 18.04, Ubuntu 20.04, Ubuntu 21.04, Debian Buster & Bullseye.

1.) Firstly open terminal from start menu. Then paste the command below and hit run to install the key:

curl -fsSL https://gerbera.jfrog.io/artifactory/api/gpg/key/public | sudo apt-key add -

Install curl via sudo apt install curl if you don’t have it. Type user password when it asks (no asterisk feedback) and hit Enter.

2.) Next add the apt repository by running command in terminal:

sudo apt-add-repository https://gerbera.jfrog.io/artifactory/debian

3.) Adding repository should automatically update the package information. If not, run it manually via command:

sudo apt update

4.) You can finally install the latest Gerbera package via command:

sudo apt install gerbera

Set up Gerbera Media Server:

The media server is now simple to use since user and permission are well configured during installing process.

1.) Set user and password for Web UI.

You can skip this step, so anyone in home network can access the server configuration page via Web UI without authentication.

Firstly, open terminal and run command to edit the config file:

sudo gedit /etc/gerbera/config.xml

When files opens, go to UI section. Enable account login and set username and password as you prefer.

2.) Run Gerbera service:

Next, run command to start the media server service:

systemctl start gerbera

And check the server status via command:

systemctl status gerbera

If it’s running successfully, it will output the IP address and listening port for the web UI page.

NOTE: to make the service start automatically at login, run systemctl enable gerbera.

3.) Paste the address in web browser, http://192.168.0.108:49152 in my case, and hit Enter. Then login with the user and password you set in step 1.).

You can finally, click “Add some files” to steam your media files, and manage them as well as clients via next two buttons.

OK, you can now enjoy the music or movie in any device with UPnP client, for example VLC on iOS:

Want to get better performance when playing games in Linux? Try GameMode!

GameMode is a free open-source Linux project allows games to request a set of optimizations be temporarily applied to the host and/or game process.

The project was originally designed as a stop-gap solution to problems with Intel and AMD CPU powersave or ondemand governors. But now GameMode supports for optimizations including:

  • CPU governor
  • I/O priority
  • Process niceness
  • Kernel scheduler
  • Screensaver inhibiting
  • GPU performance mode (NVIDIA and AMD), GPU overclocking (NVIDIA)
  • Custom scripts

1. How to Install GameMode in Ubuntu Linux:

The package is available in Ubuntu as well as most other Linux repositories.

Firstly open terminal by either searching from ‘Activities’ overview screen, or pressing Ctrl+Alt+T on keyboard. When terminal opens, run command to install it:

sudo apt install gamemode

For Fedora and CentOS Linux, you can install it via command:

sudo dnf install gamemode

(Optional) Install GameMode indicator:

For choice, you can install an indicator applet that shows the current status of GameMode. It’s an extension for the default Gnome desktop.

a.) Open terminal and run command to make sure chrome-gnome-shell browser integration is installed:

sudo apt install chrome-gnome-shell gnome-shell-extension-prefs

b.) Next go to the extension web page by clicking the button below. And turn on the slider icon to install it.

If you don’t see the toggle icon, click the “click here to install browser extension” link to install browser extension and reload the page.

Finally, search for and open ‘Gnome Extensions App’ from start menu. And click on the gear button to configure the status indicator.

2. How to Run Game in GameMode:

Some games and platforms have integrated GameMode support. Which means you don’t have to do anything to activate it. They are:

  • DiRT 4
  • Rise of the Tomb Raider
  • Shadow of the Tomb Raider
  • Total War Saga: Thrones of Britannia
  • Total War: Three Kingdoms
  • Total War: WARHAMMER II
  • ATLauncher Minecraft launcher
  • Lutris

For other games, you can now run the executable command by adding gamemoderun at the beginning. For example, run SuperTux2 in GameMode via:

gamemoderun supertux2

For steam, you can simply add gamemoderun %command% as launch option.

And without launching game every time from command line, write the rule into app shortcut file. They are .desktop files generally locate in “/usr/share/applications” directory.

For example, edit SuperTux 2 app shortcut via command:

sudo gedit /usr/share/applications/supertux2.desktop

When the file opens, add gamemoderun before executable command in Exec line.

For Hybrid GPU users, the GameMode supports environment variable via GAMEMODERUNEXEC. So you can run GameMode while using dedicated gpu for rendering game which will be displayed using the integrated card. For example:

export GAMEMODERUNEXEC="env DRI_PRIME=1" && gamemoderun supertux2

To set the environment variable globally, add either line into /etc/environment config file for your case.

GAMEMODERUNEXEC=optirun #Bumblebee implementation.

GAMEMODERUNEXEC="env DRI_PRIME=1"

or

GAMEMODERUNEXEC="env __NV_PRIME_RENDER_OFFLOAD=1 env __GLX_VENDOR_LIBRARY_NAME=nvidia env __VK_LAYER_NV_optimus=NVIDIA_only"

Want to enable Guest account in Ubuntu? Without switching to another display manager, you can add Guest in Gnome login screen for people to use your computer while NOT being able to install/remove app, change system wide settings, and access files outside its own directory.

Guest is available by default in Ubuntu 16.04 Unity desktop. After Ubuntu switched to Gnome Desktop, the feature is removed. For those need Guest account, it’s easy to add it back via following steps.

1. Create Guest Account.

Firstly, open system settings either from top-right system menu, or by searching from Activities overview screen.

Next, navigate to Users in left pane (For Ubuntu 24.04, go to “System -> Users” in settings app) and click “Unlock” button and type your user password to unlock the settings page.

Finally, click on “Add User…” to create a new user:

  • select Standard, (for Ubuntu 24.04, leave “Administrator” turned off) so it has no sudo permission, can’t install/remove app, and no access file outside its user home.
  • set username to Guest.
  • And set password for it. REQUIRED though it’s useless. Next step I’ll tell how to enable no password login.

2. Enable No Password Login for Guest

Press Ctrl+Alt+T on keyboard to open terminal, then copy and paste the command below and hit Enter.

sudo gedit /etc/pam.d/gdm-password

This command will open the configuration file. Simply add the following line at the beginning (so it will be the first line) and save it:

auth sufficient pam_succeed_if.so user ingroup guest

OK, in next boot you’ll see the Guest account in GNOME login screen. Simple click to login without typing password, and enjoy!

3.(Optional) Add more Restrictions:

The Guest account can’t install/remove apps, manage PPAs, access files out of its home directory. Any action needs authentication will ask for typing password for Admin Account.

It however has permissions to customize its own desktop appearance, access CD Rom, mount/un-mount USB and other removable devices, use audio/video devices (e.g., webcam, microphone), full and direct access to serial ports.

These permissions are handled via groups. You can check which groups that include Guest account via command:

cat /etc/group |grep guest

And the Debian Wiki tells what do the groups do. By removing Guest from a group will disable the permission. For example, remove it from plugdev group run command:

sudo gpasswd --delete guest plugdev

For even more restrictions, e.g., disable save file, lock down appearance settings, disable printing, etc., go to the Gnome Wiki.

For those prefer Gnome 3 style Activities overview, here’s how to bring back the vertical workspace thumbnails in Ubuntu 21.10 and Ubuntu 22.04.

Since Ubuntu 21.10, the default GNOME desktop brings new design of the Activities overview screen. It now has large and horizontal workspaces locates across the center of screen. Along with thumbnails in the top, you can either click / use keyboard shortcuts or touchpad gestures to switch workspaces.

Personally I like the new design. But for those who are accustomed to the vertical view, here’s an extension to restore the change.

1. Prepare for installing Gnome Shell Extension:

Before getting started, make sure chrome-gnome-shell package is installed for GNOME Shell extensions integration for web browsers.

To do so, open terminal (Ctrl+Alt+T) and paste the command below and hit Enter:

sudo apt install chrome-gnome-shell gnome-shell-extension-prefs

The command also installs the app for managing Gnome Extensions.

2. Install Vertical Overview extension:

Next go to the link page below in your web browser, then turn on the slider icon to install the extension:

Don’t worry if you don’t see the slider icon, click the ‘click here to install browser extension’ link to install browser extension and re-fresh the web page.

NOTE: The preinstalled Firefox in Ubuntu 22.04 does not support installing Gnome Extensions. As a workaround, you may search for & install “Extension Manager” in Ubuntu Software. Then, use the tool to search and install Vertical Overview extension.

Install the extension via Extension Manager tool

3. Configure Overview Appearance:

After installed the extension, you can press Win/Super key and search for and open ‘Gnome Extensions app’ to configure its settings.

Click on the gear button, then you can change the workspace thumbnail size, position, as well as toggle on / off the big central workspace.

That’s all. Enjoy!

For those want to set the CPU TDP limit, a new Intel Controller app is available by Spanish Linux computer company Slimbook.

TDP stands for Thermal Design Power, in watts, and refers to the power consumption under the maximum theoretical load.

Similar to its AMD Controller app, the new app works by setting your CPU TDP value. That is, the amount of power measured in watts allowed for your CPU to either save battery or to improve the overall performance.

To use the app, you need to disable secureboot because it does not allow kernel access to CPU parameters.

As a new project, it so far supports for: i3-10110U, i3-1005G1, i5-8250U, i5-8265U, i5-10210U, i5-1035G1, i7-7500U, i7-8550U, i7-8565U, i7-1065G7, i7-10510U, i7-10750H, i7-1165G7.

You can however test your CPU by adding into the “~/.config/slimbookintelcontroller/slimbookintelcontroller.conf” file.

Search on the web to find out your CPU Specifications, including TDP, TDP-up and TDP-down. Then add your CPU and set the Low, Medium, and High performance in watts as the picture shows. You can then choose between them via either the desktop app or indicator menu.

NOTE: The software is still in early development, they may have bugs. And in higher performance, it drains the battery faster and makes your CPU hotter. USE it at your own risk!

Install Slimbook Intel Controller:

The slimbook PPA maintains the package so far only for Ubuntu 20.04.

1. Add the PPA.

Firstly open terminal either by pressing Ctrl+Alt+T on keyboard, or by searching for and open terminal from system app launcher. When terminal opens, copy and paste the command below and hit Enter:

sudo add-apt-repository ppa:slimbook/slimbook

Type user password, no asterisk feedback, when it asks and hit Enter to continue.

2. Install the controller app.

Next run command to install the Intel Controller:

sudo apt install slimbookintelcontroller

For AMD CPU, you can install another package instead:

sudo apt install slimbookamdcontroller

Once installed, open it from system app launcher. As I mentioned above, it won’t start if your process is not in the configuration file. For the source code, go to Github.

Uninstall:

For any reason, you can copy and paste the command below into terminal and hit Run to remove the software.

sudo apt remove slimbookintelcontroller

As well, do for removing the Slimbook PPA via the command below:

sudo add-apt-repository --remove ppa:slimbook/slimbook

Want to change the position of top-bar items, e.g., Activities button, app menu, date and time, and system tray icons?

A Top Bar Organizer extension now is available for Ubuntu 21.04 Gnome 40. With it, you can drag and drop to re-order top panel items as you prefer. For example, moving the Activities button or date & time clock menu to right corner.

Install Top Bar Organizer:

1.) Firstly open terminal by pressing Ctrl+Alt+T on keyboard. When terminal opens, run command to install Gnome extension integration for web browser, as well as Gnome Extension management tool:

sudo apt install chrome-gnome-shell gnome-shell-extension-prefs

2.) Next go to the extension web page, and turn on the toggle icon to install it:

Don’t see the slider icon? Install browser extension by clicking on ‘Click here to install browser extension’ link and refresh the web page.

3.) Finally search for and open ‘Extensions‘ from system app launcher. And click on the gear icon to open the extension settings.

Next drag and drop to re-order all panel items and enjoy!

Need the most recent HPLIP to get your HP printer or scanner working in Ubuntu? Here’s how to install guide as well as workaround to fix the python-pyqt5 dependency issue.

HPLIP is an open-source Linux drivers for HP’s inkjet and laser printers. The project is initiated and led by HP Inc. While the package in Ubuntu repositories is always old, you can install the official binary to get new devices support.

However, the most recent releases refuse to install in my Ubuntu 20.04 due to python-pyqt5 dependency issue. If you’re facing with the similar issue, then this tutorial may help!

Download & Install HPLIP in Ubuntu 20.04

1.) Firstly, download the latest binary from the link below. It’s ‘hplip-3.21.10.run‘ at the moment.

2.) Next, add executable permission by pressing Ctrl+Alt+T on keyboard to open terminal. Then run command:

chmod u+x ~/Downloads/hplip*.run

And try to install it via command:

~/Downloads/hplip*.run

Follow the terminal output and answer some questions to start installing the driver.

3.) Fix python-pyqt5 dependency issue.

As I said, it refuse to install in Ubuntu 20.04 because it tries to install old Python 2 binding for Qt5 as dependency in my case.

Thanks to Christoph Mueller, I found it has something to do with python symbolic links.

As you may know, python2 and python3 in /usr/bin are symbolic links. While python2 is python2.7, python3 links to python3.8 (or 3.9 depends on Ubuntu edition), python is not exist out-of-the-box. However, it will be created in some cases and links to either python2 or python3.

And the point is when Python links to Python2, HPLIP will mistakenly try to install Python 2 libraries as dependency.

Until HPLIP fixed the issue, the solution is either remove /usr/bin/python if you don’t need it or make it link to Python3.

Make Python to be Python3:

There are two choices to create symlink for python: install python-is-python3 or use update-alternatives command.

Option 1. Open terminal and run command to install ‘python-is-python3’:

sudo apt install python-is-python3

Option 2. Use ‘update-alternatives’ to choose which to link to. Firstly, add both python2 and python3 as alternatives:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 2

You can then choose which to use anytime via command:

sudo update-alternatives --config python

Finally, re-do step 2.) to install the HPLIP-*.run file.

4.) Fix make command failed issue:

This seems to be HPLIP 3.21.6 only issue, that it outputs ‘error: make command failed with status code 2‘.

By re-running ‘make’ command from the source folder (see Uninstall section), it tells that “/usr/bin/ld: cannot find -lavahi-core”.

And it can be fixed by installing libavahi-core-dev package via command:

sudo apt install libavahi-core-dev

How to Remove HPLIP from Ubuntu:

While installing HPLIP via step 2.), it extracts the .run package into the source folder. And you can find it in Downloads folder.

NOTE: HPLIP 3.21.10 somehow does not create source folder. Run ~/Downloads/hplip*.run --target ~/Downloads/hplip to generate it manually if required.

The folder contains an uninstall script allows to remove HPLIP from your computer.

To do so, go to the source folder, right-click on blank area and select ‘Open in Terminal’.

Finally, run the uninstall script in pop-up terminal window:

sudo python3 uninstall.py

That’s all.