EDIT
This issue may be due to WebRTC being disabled. WebRTC is required for google meet, but also used for fingerprinting.
Recently I tried to join a google meet meeting in my hardened config firefox browser, and google meet didn’t let me in at all. I was confused as hell. I could join only on my phone, but not any of my three computers I tested it on. I then went into a virtual machine with regular firefox(also linux), and the meeting works. The only conclusion I can draw is that google is so desperate for my data that they refuse to service me unless I give them this.
This post intends to inform people that issues with google products may be related to their valid wish for security, and the actions they have taken in pursuit of that. The post also intends to inform people of a solution. The two apps that I recommend are:
- Jitsi Meet: This is self hosted, but you can also make a meeting with jitsi’s own servers. A excellent alternative to google meet, the only reason I didn’t use it is that I had issues the day I needed to meet, and had to fall back to google meet instead.
- Jami: This is a distributed-network chat and video calling app which is open source and a GNU package. It does require an app, but is free and open source and will serve your purpose.****_________
in my hardened config firefox browser
The only conclusion I can draw is that google is so desperate for my data that they refuse to service me unless I give them this.
What is your config? It’s possible you’ve got things configured in an unexpected, but valid, way that causes Google Meet to fail.
How does it fail? Are there errors in the console?
You’re immediately assuming malice, but it may simply be a mistake (Google’s or yours).
I am pretty sure no one at Google tests outside Blink & only gets around to it when there are bug reports
accessibility.typeaheadfind.flashBar 0 app.normandy.api_url app.normandy.enabled false app.normandy.first_run false app.normandy.migrationsApplied 12 app.normandy.user_id [REDACTED] app.shield.optoutstudies.enabled false app.update.auto false app.update.lastUpdateTime.addon-background-update-timer 1729383854 app.update.lastUpdateTime.browser-cleanup-thumbnails 1729405780 app.update.lastUpdateTime.recipe-client-addon-run 1725149805 app.update.lastUpdateTime.region-update-timer 1725149805 app.update.lastUpdateTime.services-settings-poll-changes 1729383854 app.update.lastUpdateTime.telemetry_modules_ping 1725149834 app.update.lastUpdateTime.xpi-signature-verification 1729383854 beacon.enabled false breakpad.reportURL browser.aboutConfig.showWarning false browser.bookmarks.editDialog.confirmationHintShowCount 2 browser.bookmarks.restore_default_bookmarks false browser.cache.disk.enable false browser.contentblocking.category strict browser.contentblocking.report.hide_vpn_banner true browser.contentblocking.report.show_mobile_app false browser.contextual-services.contextId {[REDACTED]} browser.discovery.enabled false browser.discovery.sites browser.download.manager.addToRecentDocs false browser.download.panel.shown true browser.download.viewableInternally.typeWasRegistered.avif true browser.download.viewableInternally.typeWasRegistered.webp true browser.engagement.ctrlTab.has-used true browser.engagement.downloads-button.has-used true browser.firefox-view.feature-tour {"screen":"","complete":true} browser.firefox-view.view-count 1 browser.formfill.enable false browser.helperApps.deleteTempFileOnExit false browser.laterrun.bookkeeping.profileCreationTime 1725149774 browser.laterrun.bookkeeping.sessionCount 51 browser.migration.version 148 browser.newtab.preload false browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons false browser.newtabpage.activity-stream.default.sites browser.newtabpage.activity-stream.discoverystream.rec.impressions {"5721678629791706":1725149797489,"1570241288460906":1725149797490,"1651507772597691":1725149797491} browser.newtabpage.activity-stream.feeds.discoverystreamfeed false browser.newtabpage.activity-stream.feeds.section.topstories false browser.newtabpage.activity-stream.feeds.telemetry false browser.newtabpage.activity-stream.impressionId {[REDACTED]} browser.newtabpage.activity-stream.section.highlights.includePocket false browser.newtabpage.activity-stream.showSponsored false browser.newtabpage.activity-stream.showSponsoredTopSites false browser.newtabpage.activity-stream.telemetry false browser.newtabpage.activity-stream.telemetry.structuredIngestion.endpoint browser.newtabpage.blocked [REDACTED] browser.newtabpage.enabled false browser.newtabpage.storageVersion 1 browser.pageActions.persistedActions {"ids":["bookmark"],"idsInUrlbar":["bookmark"],"idsInUrlbarPreProton":[],"version":1} browser.pagethumbnails.capturing_disabled true browser.pagethumbnails.storage_version 3 browser.ping-centre.telemetry false browser.places.speculativeConnect.enabled false browser.protections_panel.infoMessage.seen true browser.proton.toolbar.version 3 browser.region.network.url browser.region.update.enabled false browser.region.update.updated 1725149776 browser.rights.3.shown true browser.safebrowsing.allowOverride false browser.safebrowsing.blockedURIs.enabled false browser.safebrowsing.downloads.enabled false browser.safebrowsing.downloads.remote.block_potentially_unwanted false browser.safebrowsing.downloads.remote.block_uncommon false browser.safebrowsing.downloads.remote.enabled false browser.safebrowsing.downloads.remote.url browser.safebrowsing.malware.enabled false browser.safebrowsing.phishing.enabled false browser.safebrowsing.provider.google.advisoryName Google Safe Browsing(Disabled) browser.safebrowsing.provider.google.advisoryURL browser.safebrowsing.provider.google.gethashURL browser.safebrowsing.provider.google.reportMalwareMistakeURL browser.safebrowsing.provider.google.reportPhishMistakeURL browser.safebrowsing.provider.google.reportURL browser.safebrowsing.provider.google.updateURL browser.safebrowsing.provider.google4.advisoryName Google Safe Browsing4(Disabled browser.safebrowsing.provider.google4.advisoryURL browser.safebrowsing.provider.google4.dataSharingURL browser.safebrowsing.provider.google4.gethashURL browser.safebrowsing.provider.google4.lastupdatetime 1725149785253 browser.safebrowsing.provider.google4.nextupdatetime 1725151601253 browser.safebrowsing.provider.google4.reportMalwareMistakeURL browser.safebrowsing.provider.google4.reportPhishMistakeURL browser.safebrowsing.provider.google4.reportURL browser.safebrowsing.provider.google4.updateURL browser.safebrowsing.provider.mozilla.lastupdatetime 1729405756174 browser.safebrowsing.provider.mozilla.nextupdatetime 1729427356174 browser.search.region US browser.search.suggest.enabled false browser.sessionstore.privacy_level 2 browser.sessionstore.resume_from_crash false browser.sessionstore.upgradeBackup.latestBuildID 20241008174909 browser.shell.shortcutFavicons false browser.startup.couldRestoreSession.count 2 browser.startup.homepage_override.buildID 20241008174909 browser.startup.homepage_override.mstone 128.3.1 browser.startup.lastColdStartupCheck 1729405749 browser.startup.upgradeDialog.version 106 browser.tabs.crashReporting.sendReport false browser.tabs.firefox-view.ui-state.recently-closed-tabs.open true browser.tabs.firefox-view.ui-state.tab-pickup.open false browser.translations.panelShown true browser.uiCustomization.state {"placements":{"widget-overflow-fixed-list":[],"unified-extensions-area":[],"nav-bar":["back-button","forward-button","stop-reload-button","customizableui-special-spring1","urlbar-container","customizableui-special-spring2","save-to-pocket-button","downloads-button","fxa-toolbar-menu-button","unified-extensions-button","ublock0_raymondhill_net-browser-action","reset-pbm-toolbar-button"],"toolbar-menubar":["menubar-items"],"TabsToolbar":["firefox-view-button","tabbrowser-tabs","new-tab-button","alltabs-button"],"PersonalToolbar":["personal-bookmarks"]},"seen":["save-to-pocket-button","developer-button","ublock0_raymondhill_net-browser-action"],"dirtyAreaCache":["nav-bar","PersonalToolbar","toolbar-menubar","TabsToolbar"],"currentVersion":20,"newElementCount":2} browser.urlbar.placeholderName DuckDuckGo browser.urlbar.placeholderName.private DuckDuckGo browser.urlbar.quicksuggest.enabled false browser.urlbar.quicksuggest.migrationVersion 2 browser.urlbar.quicksuggest.scenario offline browser.urlbar.speculativeConnect.enabled false browser.urlbar.suggest.quicksuggest.nonsponsored false browser.urlbar.suggest.quicksuggest.sponsored false browser.urlbar.tipShownCount.searchTip_onboard 4 browser.urlbar.trimURLs false browser.xul.error_pages.expert_bad_cert true captivedetect.canonicalURL datareporting.healthreport.infoURL datareporting.policy.dataSubmissionEnabled false datareporting.policy.dataSubmissionPolicyAcceptedVersion 2 datareporting.policy.dataSubmissionPolicyNotifiedTime 1725149776032 devtools.everOpened true devtools.toolbox.footer.height 310 devtools.toolbox.host right devtools.toolbox.previousHost bottom devtools.toolsidebar-height.inspector 170 devtools.toolsidebar-width.inspector 700 devtools.toolsidebar-width.inspector.splitsidebar 250 distribution.iniFile.exists.appversion 128.3.1 distribution.iniFile.exists.value false doh-rollout.disable-heuristics true doh-rollout.doneFirstRun true doh-rollout.home-region US doh-rollout.uri https://mozilla.cloudflare-dns.com/dns-query dom.forms.autocomplete.formautofill true dom.popup_allowed_events click dblclick mousedown pointerdown dom.push.userAgentID [REDACTED] dom.security.https_only_mode true dom.security.https_only_mode_ever_enabled true dom.security.https_only_mode_send_http_background_request false extensions.activeThemeID default-theme@mozilla.org extensions.blocklist.pingCountVersion -1 extensions.databaseSchema 36 extensions.enabledscopes 5 extensions.formautofill.addresses.enabled false extensions.formautofill.available off extensions.formautofill.creditCards.available false extensions.formautofill.creditCards.enabled false extensions.formautofill.creditCards.reauth.optout [REDACTED] extensions.getAddons.cache.lastUpdate 1729383854 extensions.getAddons.databaseSchema 6 extensions.getaddons.showpane true extensions.htmlaboutaddons.recommendations.enabled false extensions.lastAppBuildId 20241008174909 extensions.lastAppVersion 128.3.1 extensions.lastPlatformVersion 128.3.1 extensions.pendingOperations false extensions.pictureinpicture.enable_picture_in_picture_overrides true extensions.pocket.enabled false extensions.postDownloadThirdPartyPrompt false extensions.quarantinedDomains.list autoatendimento.bb.com.br,ibpf.sicredi.com.br,ibpj.sicredi.com.br,internetbanking.caixa.gov.br,www.ib12.bradesco.com.br,www2.bancobrasil.com.br extensions.screenshots.disabled true extensions.systemAddonSet {"schema":1,"directory":"{[REDACTED]}","addons":{"webcompat@mozilla.org":{"version":"133.2.20241017.92612"}}} extensions.ui.dictionary.hidden true extensions.ui.lastCategory addons://discover/ extensions.ui.locale.hidden true extensions.ui.sitepermission.hidden true extensions.webcompat.enable_shims true extensions.webcompat.perform_injections true extensions.webcompat.perform_ua_overrides true extensions.webextensions.ExtensionStorageIDB.migrated.screenshots@mozilla.org true extensions.webextensions.ExtensionStorageIDB.migrated.uBlock0@raymondhill.net true
Part 1
So first off I appreciate your “about:config” dump, that is helpful.
However, having ONLY that dump makes it difficult to actually diagnose your issue. It would be helpful to have an idea of what fails.
- Are you only unable to join meetings?
- Can you create meetings?
- Only audio?
- Only video?
- Are there any error messages?
- Are there any messages at all on screen?
- Are there errors in the JavaScript console?
- If there are a lot, can you compare it against the working vanilla version and see where the errors are unique/start to differ?
- When did this issue start to happen? (It worked a week ago, but not now?)
- Is your config based off a guide online?
Second, you have “media.peerconnection.enabled” set to “false”. That setting controls WebRTC. Google Meet uses WebRTC. If I set that value to false my Google Meet meetings fail to load, it just stays stuck at the joining meeting phase.
So maybe that’s your culprit. Of course I would expect if you’ve had this set for a long time I would have expected it to fail for a long time. Also both alternatives you mentioned use WebRTC, so I would expect those to fail with that setting disabled.
Of course if it used to work with that disabled then it’s possible Google Meet changed and had a fallback no longer in use or something else.
As an aside, I understand that WebRTC has (had?) issues leaking local IP addresses while connected to a VPN. So I understand why you might have it disabled.
The webrtc setting is probably it. IMO it’s still google’s fault for not providing a meaningful error message. It just stuck on the loading screen, assuring me that I would enter the meeting but I just didn’t. I don’t like webrtc because it can be used for fingerprinting, so I will probably use jami in the future
extensions.webextensions.restrictedDomains extensions.webextensions.uuids {"formautofill@mozilla.org":"1cf43bc6-c83e-4df3-a8d2-4038fe816116","pictureinpicture@mozilla.org":"d820dd36-7976-4480-938c-d16b1e655d48","screenshots@mozilla.org":"c5c295b2-c7ae-43ca-b011-cf2335845c51","webcompat-reporter@mozilla.org":"7dec689b-6735-4d50-8320-42358545e131","webcompat@mozilla.org":"6eed24ef-4fed-499f-913e-ef3557628934","default-theme@mozilla.org":"e2130512-1026-4ea0-a0ab-75347897ece0","addons-search-detection@mozilla.com":"f79cc98d-3c13-42d4-8428-bb4d904aac3e","google@search.mozilla.org":"03fee1c7-accd-4276-9798-698f7a16f8c2","wikipedia@search.mozilla.org":"263c52b0-3dd3-40e1-a28f-96ca794755e9","bing@search.mozilla.org":"76b29622-02c9-4c0b-9291-0b86a3d45d4b","ddg@search.mozilla.org":"f24a2e9c-26ec-4114-b7c6-5223dca5fca9","amazondotcom@search.mozilla.org":"eeb096d0-d4a3-4e77-85c3-0643308710b1","ebay@search.mozilla.org":"b5e0c41a-3c79-41bf-8a09-b717abcd054e","uBlock0@raymondhill.net":"9e988b15-dbad-4de5-be05-f46bbc94f24f"} gecko.handlerService.defaultHandlersVersion 1 geo.provider.use_geoclue false idle.lastDailyNotification 1729360598 javascript.use_us_english_locale true media.gmp-gmpopenh264.abi x86_64-gcc3 media.gmp-gmpopenh264.hashValue [REDACTED] media.gmp-gmpopenh264.lastDownload [REDACTED] media.gmp-gmpopenh264.lastDownloadFailReason [REDACTED] media.gmp-gmpopenh264.lastDownloadFailed [REDACTED] media.gmp-gmpopenh264.lastInstallStart [REDACTED] media.gmp-gmpopenh264.lastUpdate [REDACTED] media.gmp-gmpopenh264.version 2.3.2 media.gmp-manager.buildID 20241008174909 media.gmp-manager.lastCheck 1729383901 media.gmp-manager.lastEmptyCheck 1729383901 media.gmp.storage.version.observed 1 media.peerconnection.enabled false media.peerconnection.ice.default_address_only true media.peerconnection.ice.no_host true media.peerconnection.ice.proxy_only_if_behind_proxy true media.videocontrols.picture-in-picture.video-toggle.first-seen-secs 1725165077 media.videocontrols.picture-in-picture.video-toggle.has-used true network.IDN_show_punycode true network.auth.subresource-http-auth-allow 1 network.captive-portal-service.enabled false network.connectivity-service.enabled false network.dns.disableIPv6 true network.dns.disablePrefetch true network.file.disable_unc_paths true network.gio.supported-protocols network.http.referer.XOriginPolicy 2 network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation true network.http.speculative-parallel-limit 0 network.predictor.enabled false network.prefetch-next false network.trr.custom_uri https://dns.mullvad.net/dns-query network.trr.mode 2 network.trr.uri https://dns.mullvad.net/dns-query pdfjs.enableScripting false pdfjs.enabledCache.state true pdfjs.migrationVersion 2 permissions.manager.defaultsUrl places.database.lastMaintenance 1728844120 privacy.annotate_channels.strict_list.enabled true privacy.bounceTrackingProtection.hasMigratedUserActivationData true privacy.fingerprintingProtection true privacy.history.custom true privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage true privacy.purge_trackers.date_in_cookie_database 0 privacy.purge_trackers.last_purge 1729360598375 privacy.query_stripping.enabled true privacy.query_stripping.enabled.pbmode true privacy.resistFingerprinting true privacy.resistFingerprinting.block_mozAddonManager true privacy.sanitize.clearOnShutdown.hasMigratedToNewPrefs2 true privacy.sanitize.pending [{"id":"newtab-container","itemsToClear":[],"options":{}}] privacy.trackingprotection.emailtracking.enabled true privacy.trackingprotection.enabled true privacy.trackingprotection.socialtracking.enabled true privacy.userContext.enabled true privacy.window.maxInnerHeight 900 privacy.window.maxInnerWidth 1600 security.OCSP.require true security.cert_pinning.enforcement_level 2 security.pki.crlite_mode 2 security.remote_settings.crlite_filters.enabled true security.sandbox.content.tempDirSuffix [REDACTED] security.tls.enable_0rtt_data false services.settings.blocklists.addons-bloomfilters.last_check 1729405757 services.settings.blocklists.gfx.last_check 1729405757 services.settings.clock_skew_seconds -1 services.settings.last_etag "1729393030056" services.settings.last_update_seconds 1729405757 services.settings.main.addons-manager-settings.last_check 1729405757 services.settings.main.anti-tracking-url-decoration.last_check 1729405757 services.settings.main.cfr.last_check 1729405757 services.settings.main.cookie-banner-rules-list.last_check 1729405757 services.settings.main.devtools-compatibility-browsers.last_check 1729405757 services.settings.main.devtools-devices.last_check 1729405757 services.settings.main.doh-config.last_check 1729405757 services.settings.main.doh-providers.last_check 1729405757 services.settings.main.fingerprinting-protection-overrides.last_check 1729405757 services.settings.main.fxmonitor-breaches.last_check 1729405757 services.settings.main.hijack-blocklists.last_check 1729405757 services.settings.main.language-dictionaries.last_check 1729405757 services.settings.main.message-groups.last_check 1729405757 services.settings.main.normandy-recipes-capabilities.last_check 1729405757 services.settings.main.partitioning-exempt-urls.last_check 1729405757 services.settings.main.password-recipes.last_check 1729405757 services.settings.main.password-rules.last_check 1729405757 services.settings.main.pioneer-study-addons-v1.last_check 1729405757 services.settings.main.public-suffix-list.last_check 1729405757 services.settings.main.query-stripping.last_check 1729405757 services.settings.main.quicksuggest.last_check 1729405757 services.settings.main.search-config-icons.last_check 1729405757 services.settings.main.search-config-overrides-v2.last_check 1729405757 services.settings.main.search-config-overrides.last_check 1729405757 services.settings.main.search-config-v2.last_check 1729405757 services.settings.main.search-config.last_check 1729405757 services.settings.main.search-default-override-allowlist.last_check 1729405757 services.settings.main.search-telemetry-v2.last_check 1729405757 services.settings.main.sites-classification.last_check 1729405757 services.settings.main.tippytop.last_check 1729405757 services.settings.main.top-sites.last_check 1729405757 services.settings.main.translations-models.last_check 1729405757 services.settings.main.translations-wasm.last_check 1729405757 services.settings.main.url-classifier-skip-urls.last_check 1729405757 services.settings.main.websites-with-shared-credential-backends.last_check 1729405757 services.settings.main.whats-new-panel.last_check 1729405757 services.settings.security-state.cert-revocations.last_check 1729126810 services.settings.security-state.intermediates.last_check 1729126810 services.settings.security-state.onecrl.last_check 1729126810 services.sync.clients.lastSync 0 services.sync.declinedEngines services.sync.engine.addresses.available true services.sync.globalScore 0 services.sync.nextSync 0 services.sync.prefs.sync.app.shield.optoutstudies.enabled false services.sync.prefs.sync.browser.formfill.enable false services.sync.prefs.sync.signon.rememberSignons false signon.autofillForms false signon.formlessCapture.enabled false signon.management.page.os-auth.optout [REDACTED] signon.rememberSignons false storage.vacuum.last.content-prefs.sqlite 1728004322 storage.vacuum.last.index 2 storage.vacuum.last.places.sqlite 1727815054 toolkit.coverage.endpoint.base toolkit.coverage.opt-out true toolkit.startup.last_success 1729405748 toolkit.telemetry.archive.enabled false toolkit.telemetry.bhrPing.enabled false toolkit.telemetry.cachedClientID [REDACTED] toolkit.telemetry.firstShutdownPing.enabled false toolkit.telemetry.newProfilePing.enabled false toolkit.telemetry.pioneer-new-studies-available true toolkit.telemetry.previousBuildID 20240801134912 toolkit.telemetry.reportingpolicy.firstRun false toolkit.telemetry.server data:, toolkit.telemetry.shutdownPingSender.enabled false toolkit.telemetry.unified false toolkit.telemetry.updatePing.enabled false trailhead.firstrun.didSeeAboutWelcome true webgl.disabled true
Part 2
Great. Your job is to take standard Firefox and switch one of these settings on at a time, testing Google meet until you find which one is the culprit. Good luck! 👍
Exhibit #17837 why Firefox isn’t “just more hardened by default”.
It’s also not necessarily just because Google wants more of your data (which they do); they may also just use a feature that can also be used to fingerprint you. But since it’s also just useful in general, it’s not disabled by default by regular Firefox.
The issue was likely WebRTC being disabled. The thing is, WebGL and WebRTC should be more secure. They shouldn’t be implemented in ways that make it easy to fingerprint the user. Unfortunately, for now I can’t change that, but I can use alternative methods like Jami or temporarily enabling rtc again to use a locally hosted instance of Jitsi.
I don’t know much about WebGL and WebRTC specifically, but sometimes it’s just inherent to the feature, and it’s literally impossible to implement it without allowing fingerprinting the user.
For example, your screen resolution/viewport size can also be used to fingerprint you. It is impossible to allow adjusting a website to different viewport sizes without leaking those viewport sizes - the only way to restrict fingerprinting is to not offer the feature of using arbitrary viewport sizes (which is what Tor browser does, for example).
Yes, it’s all a trade off of functionality for privacy.
Ironically, I just recently had a meeting I had to call into because of this, and the purpose of the meeting was to review the “great new update” lol
if your client or your employer mandates the use of Google Meets as a meeting app. you have to comply.
Employer on a job meeting on an employer device that is. Clients? Not so much …
Might be true, but is some real bullshit. There are protocols/programs that do work on multiple platform (including not web) with privacy settings turned up. Employers should consider if they want Google listening in on all of their business discussions before forcing its buggy platform on employees. I’ll wait for the one that cries that it has Google Calendar integration, when you don’t need Google for a calendar.
While you are setting up that server for Jitsi, realize its XMPP server can cover your text chat & presence needs too.
Sadly MS Teams, Google Meets/Hangouts, Zoom and webex are the defacto standard for video conferencing app in many companies atm and I never heard companies use Jitsi
Everyone I met has heard of Jitsi—guess I should feel blessed about my circle. But that doesn’t mean we should not let these places know there are opportunities to keep that voice data on-premise (which also indirectly helps the privacy of employees). I have chosen jobs for things like this though.
This was not a work meeting, though I appreciate your concern.
I had the same issue using Librewolf, but are you really surprised?
No. However, the issue was ultimately my fault. Google meet relies on webrtc, and I disabled it to prevent fingerprinting.
Personally Meet hasn’t worked in Firefox for weeks, unless I clear all my Google cache and cookies, where it’ll work once and then no more.
I have Enhanced Tracking Protection set to strict and disabling uBlock Origin and Privacy Badger does not fix the issue, though I haven’t tried lowering / disabling ETP.
If you need meet, then try enabling webrtc(
media.peerconnection.enabled
). BE WARNED THAT THIS MAY MAKE YOU SUSCEPTIBLE TO FINGERPRINTING. If already enabled and you’re still facing issues, then my issue might lay elsewhere.
I don’t know if it’s related, but I noticed very recently Google sheets quit working correctly on Firefox.
Try: gfx.canvas.accelerated = false. There is a ff bug since a few months that causes various apps, including all kinds of google docs to malfunction severely, and this setting works around it.
Apparently I already have that setting turned off so I’m not sure what the issue is. I’ve been having issues with the overlays like “find and replace” and “sort range” not appearing. It just randomly broke recently with no apparent change to plug-ins so I’m not sure what’s up. I haven’t bothered disabling plug-ins one at a time to see if one broke it.
More details?
How many days ago? I was just using it
Back in the day, all features of MS Teams didn’t work properly on Firefox either. I remember installing Edge (then in Preview for Linux) both for trying the browser and getting Teams to work as well.