# fx_cast: Chromecast for Firefox
A browser extension that enables Chromecast support for casting web apps (like YouTube, Netflix or BBC iPlayer).

## Description

A browser extension that enables Chromecast support for casting web apps (like YouTube, Netflix or BBC iPlayer), HTML5 media and screen/tab sharing.

Requires a native bridge app to connect with receiver devices. Currently supported on Windows, macOS and Linux.

No full public release yet! Pre-release beta version is incomplete and likely buggy.

## Downloads

Firefox Extension

### Other bridge downloads

Windows macOS
Linux DEB Linux RPM

## FAQs

- ### How do I cast something?

  For sites with built-in cast support, click the cast button in the page and select the destination in the receiver selector popup. You may have to add the site to the whitelist to get the cast button to appear.

  For other sites, there is a "Cast..." item in the context menu when right-clicking on a media player. This may not be visible depending on whether the site has chosen to obscure the player with an overlay or if the media is DRM-encumbered (see below).

  Clicking the toolbar button will open the popup, but depending on the context, it may not be possible to cast anything.

  As a last resort, casting the tab or screen may provide a means of displaying this media on the Chromecast, but it has its own limitations: the performance is very poor and there's no audio casting.

- ### Why do I need the bridge?

  Access to TCP/UDP sockets.

  Network discovery for Chromecast devices relies on mDNS, the implementation of which is reliant on being able to send UDP packets. Communication with the Chromecast device itself relies on a TCP connection. The current workaround is to offload that work to a native companion application that the extension can then launch and communicate with.

  It's possible that this functionality will be re-exposed to extensions, in which case the bridge will be made redundant:

  - bug 1247628 — Enable "TCP and UDP Socket API" for WebExtensions
  - bug 1461830 — [experimental api] mDNS APIs for IoT and p2p extensions

- ### How do I completely remove the bridge?

  - #### Windows

    Removing the bridge on Windows should be as easy as running the uninstaller (`C:\Program Files\fx_cast\uninstaller.exe`) found in the control panel or settings application.

    To manually uninstall, remove the following files/folders and registry keys:

    - `C:\Program Files\fx_cast\`
    - `HKLM\Software\Mozilla\NativeMessagingHosts\fx_cast_bridge`
    - `HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\fx_cast_bridge`

  - #### macOS

    Remove the following files/folders:

    - `/Library/Application Support/fx_cast/`
    - `/Library/Application Support/Mozilla/NativeMessagingHosts/fx_cast_bridge.json`

  - #### Linux

    On Debian-based systems, remove the `fx-cast-bridge` package, otherwise remove the `fx_cast_bridge` package.

    To manually uninstall, remove the following files/folders:

    - `/opt/fx_cast/`
    - `/usr/lib/mozilla/native-messaging-hosts/fx_cast_bridge.json` OR
    - `/usr/lib64/mozilla/native-messaging-hosts/fx_cast_bridge.json`

- ### Why is there no sound when casting a screen or tab?

  API limitations. There's no method of obtaining the audio streams. Merging of audio streams from remote media is also not possible due to cross-origin issues.

  - bug 1391223 — Implement tabCapture API
  - bug 1541425 — Implement audio capture for getDisplayMedia

- ### Why doesn't 𝑥 site work?

  Compatibility with Chrome is far from perfect. Most sites will only enable their cast support if the browser reports itself as Chrome. Ensure that you've added the site to the whitelist. Some sites may not test their Chrome-specific code with Firefox, so it's possible that they're using incompatible/non-standard APIs.

  The API is also not fully implemented and is missing some methods (mostly queue management). The current implementation likely also has edge-cases and bugs which may cause issues.

  Check the compatibility list or if it's missing, submit a new compatibility report issue.

- ### Why can't I cast DRM-encumbered media?

  Unforunately, for DRM-encumbered media, there's no network-accessible URL to provide to the Chromecast and no means of accessing the media streams. The only way to cast on sites like this is via built-in Chromecast support (look for a cast button), which may not always be available.

- ### Why is it taking so long for a full release?

  Though I do enjoy working on this, it's (obviously) not a full-time thing. It's just a hobby project. You can help speed up development by contributing (see below).

- ### How can I support development?

  Contributing code, translations, compatibility reports, or even reporting bugs is very helpful. See the contributing guide for more information.

  You can also donate via PayPal: