owned this note
owned this note
Published
Linked with GitHub
---
breaks: false
---
Status of Online Conference Software on FreeBSD
===============================================
<style>
.Ok {
color: green;
}
.PartialOk {
color: darkorange;
}
.NotOk {
color: red;
}
</style>
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 | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> |
| Google Hangouts | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> |
| Microsoft Teams | <span class="Ok">Works</span> | <span class="Ok">Works [See note 1](#Notes)</span> | <span class="NotOk">No</span> | <span class="NotOk">No</span> |
| Zoom | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> |
| Jitsi | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> |
| Slack | <span class="Ok">Works</span> | <span class="Ok">Works [See note 1](#Notes)</span> | <span class="PartialOk">Receiving does not work</span> | N/A |
| Skype | <span class="Ok">Works [See note 1](#Notes)</span> | <span class="Ok">Works [See note 1](#Notes)</span> | <span class="NotOk">No</span> | <span class="NotOk">No</span> |
| Cisco Webex | <span class="Ok">Works</span> | <span class="Ok">Works [See note 2](#Notes)</span> | <span class="NotOk">No</span> | <span class="NotOk">No</span> |
Under Chromium:
| Software | Chat | Audio | Camera | Screencasting |
| --------------- | ----------------------------- | -------------------------------------------------- | -------------------------------------------------- | ----------------------------- |
| Google Meet | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> |
| Google Hangouts | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> |
| Microsoft Teams | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> |
| Zoom | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> |
| Jitsi | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> |
| Slack | <span class="Ok">Works</span> | <span class="Ok">Works [See note 3](#Notes)</span> | <span class="Ok">Works [See note 3](#Notes)</span> | N/A |
| Skype | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> |
| Cisco Webex | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> | <span class="Ok">Works</span> |
---
# 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.