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
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.
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.
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.
% 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 % ./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
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.
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.
Telegram
Telegram – the other secure messenger – is available in the FreeBSD Ports tree and packages.
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.
Summary
This section summarized this article – hope that it will help some of you to expand you FreeBSD system possibilities.
EOF
Hi!
How do you solve the problem with plugin installation? I am trying to install some plugin but I get the following error (with Chromium I also had the same message):
“FAILED_TO_COPY_EXTENSION_FILE_TO_TEMP_DIRECTORY”.
Thank you very much for the effort you do in documenting all these FreeBSD related issues.
Cheers!
LikeLike
I did not tried Chromium, just Chrome from Google.
And I did not had that problem so I do now know how could I help you with this π¦
Regards.
LikeLike
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
LikeLike
Hi,
yes – I am even using it – I need to do update for the article π
Regards.
LikeLike
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?
LikeLike
The ZOOM (and other online conferencing software) works well on FreeBSD natively without any additional Linux compatibility layer.
Here are the details:
Regards.
LikeLike
Pingback: Valuable News – 2021/09/06 | ππππππππ
Pingback: β NEWS β #Vermaden #Netflix #DRM β #FreeBSD Desktop β Part 27 β Con… | Dr. Roy Schestowitz (η½δΌ)
Pingback: Links 7/9/2021: Firefox 93 Beta and Tails 4.22 | Techrights
Thanks vermaden, great article!
I have just installed Chrome on FreeBSD 13.0 and tried Prime Video. The good thing: it doesn’t complain about DRM anymore and video works. Unfortunately, sound doesn’t work.
Then I found this ticket: https://github.com/mrclksr/linux-browser-installer/issues/2 It requires this pulseaudio crap. So, not for me!
LikeLike
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.
Hope that helps.
Regards.
LikeLike
Pingback: FreeBSD Desktop (27) β configuration | 0ddn1x: tricks with *nix
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.
LikeLike
Mine /tmp is just ‘the rest’ of the zroot pool – the FreeBSD default.
Regards.
LikeLike
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
LikeLike
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.
LikeLike
Hi, thank you for tips. I need Jlink software for debug. How to install?
LikeLike
What is this Jlink software? Link to their website?
LikeLike