FreeBSD Desktop – Part 27 – Configuration – Netflix Signal Telegram

In this article you will learn how to use Netflix (also other streaming services that require Widevine DRM) and Signal/Telegram on FreeBSD desktop.

You may want to check other articles in the FreeBSD Desktop series on the FreeBSD Desktop – Global Page where you will find links to all episodes of the series along with table of contents for each episode’s contents.

The Table of Contents for the article:

Netflix

logo-netflix

While Netflix serves their content using FreeBSD servers the Netflix streaming service itself is not available on the FreeBSD platform because Widevine DRM does not support browsers on FreeBSD system.

logo-widevine

We will use one of the more known FreeBSD features – the Linux Compatibility Layer. When FreeBSD 13.0-RELEASE was introduced the LINUX_COMPAT support was greatly improved. To the point where you can swap the default CentOS 7 based layer into the newer and more suited for desktop – the Ubuntu based layer.

Thank to author of NomadBSD system – mrclksr – we can now install needed Chrome/Brave/Vivaldi browser with automatic install and setup of that Ubuntu layer under /compat/ubuntu path. Its available on the GitHub https://github.com/mrclksr/linux-browser-installer page. First we will clone this repository with git(1) command.

# pkg install git-lite

# exit

% git clone git@github.com:mrclksr/linux-browser-installer.git
Cloning into 'linux-browser-installer'...
remote: Enumerating objects: 158, done.
remote: Counting objects: 100% (158/158), done.
remote: Compressing objects: 100% (95/95), done.
remote: Total 158 (delta 91), reused 114 (delta 54), pack-reused 0
Receiving objects: 100% (158/158), 25.59 KiB | 323.00 KiB/s, done.
Resolving deltas: 100% (91/91), done.

Some notes before starting it. You need to choose which LINUX_COMPAT are you using on FreeBSD. You can not use both the default CentOS based layer under /compat/linux and another one with Ubuntu based layer under /compat/ubuntu for example. To use the Ubuntu based layer the script will set the compat.linux.emul_path variable to /compat/ubuntu dir. Also under the /etc/rc.conf variable linux_enable=YES will be replaced by ubuntu_enable=YES one.

logo-ubuntu

Lets run it then.

From available browsers I have chosen to install and run Chrome.

It will take about 10-15 minutes to download and setup all needed packages.

EDIT: You will need small patch to make it work currently – patch fetch and apply added in this color below – check Fix linux-browser-installer(8) on FreeBSD for details.

% cd linux-browser-installer

% ls -l
total 24K
drwxr-xr-x 2 vermaden vermaden    5 2021-08-06 22:06 bin/
drwxr-xr-x 3 vermaden vermaden    3 2021-08-06 22:06 chroot/
drwxr-xr-x 2 vermaden vermaden    3 2021-08-06 22:06 rc.d/
-rw-r--r-- 1 vermaden vermaden  350 2021-08-06 22:06 linux-brave.desktop
-rwxr-xr-x 1 vermaden vermaden 9363 2021-08-06 22:06 linux-browser-installer
-rw-r--r-- 1 vermaden vermaden  362 2021-08-06 22:06 linux-chrome.desktop
-rw-r--r-- 1 vermaden vermaden  348 2021-08-06 22:06 linux-vivaldi.desktop
-rw-r--r-- 1 vermaden vermaden 3200 2021-08-06 22:06 README.md

% fetch https://raw.githubusercontent.com/vermaden/scripts/master/linux-browser-installer.PATCH

% patch < linux-browser-installer.PATCH

% ./linux-browser-installer install chrome

Now reboot(8) please. After you started your system you should be able to start Linux version of Chrome.

This command below is started from the host system – not from within the Ubuntu compat layer at the /compat/ubuntu path.

% /usr/local/bin/linux-chrome

app-linux-chrome

Sometimes applications in that Ubuntu compat layer yield about no knowing you hostname. I usually add that hostname as 127.0.0.1 alias as shown below.

% doas chroot /compat/ubuntu bash

root@w520:/# cat /etc/hosts
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

root@w520:/# vi /etc/hosts

root@w520:/# cat /etc/hosts
127.0.0.1       localhost w520.local
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

Now Netflix will just work. Just go to the Netflix page, login and start some movie.

app-linux-chrome-netflix

Signal

logo-signal

Signal – the trusted and encrypted communicator – provides a dedicated Debian/Ubuntu repository for installation … but not for FreeBSD systems.

As the Signal packages are dedicated for Ubuntu systems we will use out just created Ubuntu compat layer from the previous step and will use it to install and setup Signal on FreeBSD.

On the https://www.signal.org/download/linux/ page you will find official Signal install instructions.

I will paste them here so you will not have to go to another page just to copy them.

wget -O- https://updates.signal.org/desktop/apt/keys.asc \
  | gpg --dearmor > signal-desktop-keyring.gpg

cat signal-desktop-keyring.gpg \
  | sudo tee -a /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null

echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' \
  | sudo tee -a /etc/apt/sources.list.d/signal-xenial.list

sudo apt update \
  && sudo apt install signal-desktop

The installation of that signal-desktop package will take quite some space – more then 820 MB – but with ZFS compression enabled it should be only half of that πŸ™‚

You may encounter this problem just after the signal-desktop installation.

(...)
Errors were encountered while processing:
 libfprint-2-2:amd64
 fprintd
 libpam-fprintd:amd64
(...)

The solution is quite simple – remove these packages shown below.

root@w520:/# apt remove libpam-fprintd:amd64 libfprint-2-2:amd64

root@w520:/# apt autoremove

root@w520:/# apt install signal-desktop

On the contrary to the Chrome the Signal is located within the Ubuntu compat layer /compat/ubuntu path.

To make it work it needs to be started with the --no-sandbox argument – like that.

% /compat/ubuntu/opt/Signal/signal-desktop --no-sandbox

To make it work you still need to have Signal installed and configured on your phone and also add that Signal Desktop application as Linked Device to make it work. I was able to set it up without any problems. Below you will find configured and working Signal Desktop on FreeBSD.

app-signal-desktop

Telegram

Telegram – the other secure messenger – is available in the FreeBSD Ports tree and packages.

logo-telegram

This means you do not have to make any additional steps and you can just install and run it.

# pkg install telegram-desktop
# exit
% telegram-desktop

Here is Telegram Desktop working flawlessly under FreeBSD.

app-telegram-desktop

Summary

This section summarized this article – hope that it will help some of you to expand you FreeBSD system possibilities.

UPDATE 1 – Broken 13.2-RELEASE

It seams that the FreeBSD 13.2-RELEASE is the most problematic as either DRM content does not work at all now or there are sound issues.

From the good news – the upcoming FreeBSD 14.0-RELEASE does not have these issues.

EOF

22 thoughts on “FreeBSD Desktop – Part 27 – Configuration – Netflix Signal Telegram

    1. lbartoletti

      Hi,

      For information, there is a native FreeBSD signal port: net-im/signal-desktop
      So, you don’t need linuxulator for this software.

      Regards,

      LoΓ―c

      Like

      Reply
  1. Kostya

    Thank you :))))
    Perhaps worth trying. Though I’ve given up on linux-compat since I’ve got Win 10Pro + bhyve up and running…
    Oh, BTW, have you tried Zoom this way?

    Like

    Reply
  2. Pingback: Valuable News – 2021/09/06 | πšŸπšŽπš›πš–πšŠπšπšŽπš—

  3. Pingback: ● NEWS ● #Vermaden #Netflix #DRM ☞ #FreeBSD Desktop – Part 27 – Con… | Dr. Roy Schestowitz (η½—δΌŠ)

  4. Pingback: Links 7/9/2021: Firefox 93 Beta and Tails 4.22 | Techrights

    1. vermaden Post author

      Thanks mate πŸ™‚

      I also hate this PulseAudio and generally sound fuckup was one of the reasons I started to use FreeBSD over Linux but with FreeBSD’s superior OSSv4 sound the PulseAudio package can not do any harm is it will get its own channel for audio.

      I even have it installed as some dependency and everything sound related works – I do not even know if something uses PulseAudio or runs natively on FreeBSD – its not difference at all.

      % pkg info | grep pulse
      pulseaudio-14.2_1              Sound server for UNIX
      

      Hope that helps.

      Regards.

      Like

      Reply
  5. Pingback: FreeBSD Desktop (27) – configuration | 0ddn1x: tricks with *nix

  6. Nick Coleman

    Re can’t install Chrome extension: β€œFAILED_TO_COPY_EXTENSION_FILE_TO_TEMP_DIRECTORY”. Is the /tmp directory big enough to hold the unzipped extension file? Mine was set to a tempfs of 50M, I changed it to 100M in /etc/fstab and the error went away.

    Like

    Reply
    1. vermaden Post author

      Mine /tmp is just ‘the rest’ of the zroot pool – the FreeBSD default.

      # df -h /tmp  
      Filesystem    Size    Used   Avail Capacity  Mounted on
      zroot/tmp      84G    984K     84G     0%    /tmp
      
      # zfs list zroot/tmp 
      NAME        USED  AVAIL     REFER  MOUNTPOINT
      zroot/tmp   984K  83.5G      984K  /tmp
      

      Regards.

      Like

      Reply
  7. N Grundmann

    Hi… I have a question about signal – I do not have sound here on FreeBSD 13. I do not know how integrate pulseaudio – should it be the BSD port or a linux/ubuntu package? And if so, does it work with signal messenger? Thanks, Norbert

    Like

    Reply
    1. vermaden Post author

      Hi.

      Sorry to disappoint you but for the Linux Compat I just have working sound for apps installed in the /compat/ubuntu path.

      I did not do any additional configuration.

      Regards.

      Like

      Reply
  8. bacanuclaudiu

    On this matter, my goal is to hall all FreeBSDnative, without ubuntu-compat and any other..mix. So, is there any solution to have DRM native on Firefox? So far Firefox looks like remain a fair-browser, comparing with google browsers family.

    Like

    Reply

Leave a comment