I have Jellyfin installed on a remote machine, connected to my laptop and phone via Tailscale. Is it possible to cast from that machine to a gen 2 Chromecast?

From the Jellyfin instance installed on my laptop, in the same LAN, I can authenticate from the phone and cast to the Chromecast, so all the pieces work.

I have tried announcing the subnet from the laptop (--advertise-routes=192.168.1.0/24), with IP forwarding etc. The remote machine accepts the route and can ping the Chromecast (192.168.1.100). From the phone I can connect to the server and start casting. The screen shows the Jellyfin logo, but playing anything has no effect.

Has someone managed to make it work?


EDIT: As I feared, it seems it’s not possible. I can’t change the routing table of my ISP’s router, so the Chromecast can’t reach the remote server.

I’ll try to find a newer Chromecast, or maybe just get a Raspberry and install the full client there. Thanks everyone!

  • lemmyvore@feddit.nl
    link
    fedilink
    English
    arrow-up
    10
    ·
    edit-2
    1 year ago

    When you “cast” from the phone to the Chromecast, what happens it that the phone gives the Chromecast an URL where it can find the stream to play. The phone can read that stream because it’s connected to the Tailscale VPN. The Chromecast isn’t, so the stream URL is inaccessible to it. You see the Jellyfin logo because that’s a feature of casting (the app on the phone gives the Chromecast a logo to show).

    There’s no point in announcing the subnet from your laptop, because your laptop is not a router for the local LAN. You can use this to reach local LAN devices from remote Tailscale nodes but not the other way around.

    Some possible solutions:

    1. You enable the hotspot feature on the phone while connected to Tailscale, and connect the Chromecast to the wifi of the phone. But the stream will consume the cellular connection, because you’re using the phone’s wifi for the hotspot (the phone only has one wifi interface so it cannot use it both to connect to the local LAN and for hotspot).
    2. If you connect the local laptop to the router with a wired connection you can use its wifi as hotspot, connect the laptop to Tailscale, connect the Chromecast to the laptop hotspot, and the stream will arrive over the local connection.
    3. You can try to install Tailscale on the router, if it runs OpenWRT or something similar, and if it has enough storage space (the Tailscale packages are kinda large). If you announce the subnet from the router then it will work as intended and all the devices on the local LAN will be able to “see” the remote laptop.
    4. If you’re using nginx as reverse proxy with TLS certificates for the remote Jellyfin you can try this: expose it to the internet without Tailscale and use nginx-ip-whitelister to temporarily allow access from your local LAN’s public IP. All devices in the local LAN will see the remote Jellyfin. But read the warnings on the project page, it’s not as secure as a VPN. And of course “expose jellyfin to the internet” is not as simple as it sounds (you need a domain, you need to get Let’s Encrypt certs, a public IP, a port forward etc.)
    • qubik@lemmy.world
      link
      fedilink
      English
      arrow-up
      3
      ·
      1 year ago
      1. Open Jellyfin stream with VLC (android) and Chromecast trough it. VLC works like reverse proxy.
      • pastrami@sammich.es
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 year ago

        I use this same method to stream to Chromecast regularly (with Kodi). I will sometimes have issues with some encodings, or desyncs when pausing, but it is solid enough to support streaming full movies at 4K.

    • TechAdmin@lemmy.world
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 year ago

      For 3, if router supports it could also try doing static route via Tailscale joined machine that has IP forwarding enabled

    • Atemu
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 year ago

      But the stream will consume the cellular connection, because you’re using the phone’s wifi for the hotspot (the phone only has one wifi interface so it cannot use it both to connect to the local LAN and for hotspot).

      This is not necessarily true. It’s almost always possible to use the 2.4GHz band on one side and the 5GHz one on the other and multiple networks on one WiFi interface isn’t impossible either.

      Modern Android devices can provide hotspot of the connected WiFi without any modifications. For some anecdata: My FP4 with LineageOS 20 and a Samsung A50 (Android 11) can both do it.