Status of Online Conference Software on FreeBSD

This project marks the introduction to my internship in FreeBSD Foundation.

Conferencing and online video meeting software has become increasing popular choice for remote working and video calling, especially since the epidemic at the beginning of 2020. There are a number of famous platforms floating around, such as Google Hangout and Skype. However there are not many resources online telling how well different platforms work on FreeBSD desktop environments.

For FreeBSD desktop users, it is also important that we have a variety of choices always on our hand when it comes to online meeting. This ensures productivity even when developers are remote from the working site.

I decided to spent about some days testing how well the web-based online conferencing applications are working. For non web-based online conferencing, I currently leave it alone as browsers are supposed to be widely available to different users.


Support matrix

The tests were done by trying different platforms on Firefox and Chromium.

Under Firefox (89.0+):

Software Chat Audio Camera Screencasting
Google Meet Works Works Works Works
Google Hangouts Works Works Works Works
Microsoft Teams Works Works See note 1 No No
Zoom Works Works Works Works
Jitsi Works Works Works Works
Slack Works Works See note 1 Receiving does not work N/A
Skype Works See note 1 Works See note 1 No No
Cisco Webex Works Works See note 2 No No

Under Chromium:

Software Chat Audio Camera Screencasting
Google Meet Works Works Works Works
Google Hangouts Works Works Works Works
Microsoft Teams Works Works Works Works
Zoom Works Works Works Works
Jitsi Works Works Works Works
Slack Works Works See note 3 Works See note 3 N/A
Skype Works Works Works Works
Cisco Webex Works Works Works Works

Remarks

For those web-based online conferencing software, many are actually working out-of-box. For products which do not work out-of-box I will try to follow up with simple solutions. For browser detection, I always try user-agent spoofing to see if it is just artificial limit or fundemental limits due to how WebRTC and related APIs work on different browsers. In most case, the reason of clients enforcing browser detection is mainly due to the WebRTC support difference between different browsers rather than artificial limits.

Microsoft Teams on Firefox (89.0):

When using Microsoft Teams on Firefox, the following dialog was shown:

Use the app or a supported browser
To start a meeting in a channel, download the desktop app or use a supported browser like Google Chrome or Microsoft Edge. Learn more

Then I tried to set my user-agent to the following string: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 or Mozilla/5.0 (X11; FreeBSD amd64; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36, to spoof the browser as if it was Chrome.

Audio was working fine after spoofing, however camera streaming and screencasting did not work. Despite the UI of Teams changes when camera or screencasting were enabled, no content appeared on the UI.

Skype on Firefox (89.0):

The situation is the same as trying out Microsoft Teams on Firefox.

Slack on Firefox (79.0+):

Without user-agent string spoofing, a notification like the following will be shown:

Unfortunately, Slack calls aren't available in this browser. We recommend downloading the Slack desktop app, or you can switch to Chrome.

After setting user-agent string of the browser to Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 or Mozilla/5.0 (X11; FreeBSD amd64; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36, I could initiate and join a call. However, only audio recording is running so far. Besides that, when the prompt asking for recording permission popped out, you had to tick "Remember this decision", otherwise when the prompt popped out again asking for a recording permission it would be likely that your playback would be muted.

Camera streaming is fine, however receiving camera video stream fails with a static image showing "Your client does not support hardware acceleration."

Webex:

Without user-agent string spoofing, a notification like the following will be shown:

Your browser, browser version, or operating system is currently unsupported.
 
For details, check the system requirements.

After setting user-agent string of the browser to Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0 or Mozilla/5.0 (X11; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0, which corresponded to Windows and Linux's Firefox user-agent string, audio call worked. However nothing was shown on the other side when camera streaming or screencasting was enabled.

Slack on Chromium (87.0+):

Webcam has to be presented in order to run Chromium. Webcamd was used to drive USB webcams on my side when testing Slack on Chromium. Without multimedia/webcamd, the client interface stucks at connection attempts.


Conclusion

Many of the common choices are working out-of-box without any hackings or workarounds. This is a good signal to we the FreeBSD users that we do not need to rely on user space ABI emulations or virtualizations to get ourselves connect to the remote working site. For those that doesn't work out-of-box, the main issue so far is mostly related to the compatibility of implementations of WebRTC on different browsers. Some of the issues found when running video meeting software on Chromium are due to bugs introduced recently on Chromium, which fails to detect the connection availability on FreeBSD. By figuring out the issues we have so far, we hope to provide some diagnostic reports on the issues to help communication with the development community of different browsers.


Notes

[1] Setting user-agent to Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 or Mozilla/5.0 (X11; FreeBSD amd64; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 works.
[2] Setting user-agent's OS string to Windows/Linux works.
[3] Requires the precense of V4L2 webcam. Use multimedia/webcamd for V4L2 webcam.

Select a repo