Jump to content

Chrome's New Built-in Google Cast Experience Not Working with Emby


mbn110

Recommended Posts

This thread seems to be related: http://emby.media/community/index.php?/topic/37868-android-devices-cant-find-chromecasts-test-with-306060/
I've opted to create a new thread because I think there was a bit of confusion as to what the problem actually was in the other thread (and it was in the wrong section), plus I've done quite a bit more testing to try to narrow the problem down.
 
The Problem:
Chrome recently rolled out a new, built-in experience for Google Cast: https://chrome.googleblog.com/2016/08/google-cast-is-now-built-in-to-chrome.html. This experience doesn't seem to work in the latest version of Emby, 3.0.6400.0. When clicking the "Chromecast" option from the Emby web interface, the new Google Cast "Cast to" dialog never shows up, and I am never prompted to select the device to which I would like to cast. Other sites, like YouTube and Google Music, still work as expected from their respective web interfaces.
 
Steps to reproduce:

  • Load the Emby web interface in either Desktop or Mobile Chrome
  • Click the "Cast" Icon (next to the "Search" icon)
  • Emby's device selection dialog shows up with two (or more) options. "My Device" and "Chromecast" should be present in the list.
  • Click "Chromecast"

Expected Result: The Google Cast "Cast to" dialog should appear, allowing me to select a Chromecast.
Actual Result: Emby's device selection dialog disappears and nothing happens -- the Google Cast "Cast to" dialog never appears. An error is thrown in the browser's console (see "Additional Information & Logs" below).
 
Workarounds:

  • If I revert back to 3.0.5972.0, casting works as expected. 3.0.5984.0 seems to be the first (stable) version in which casting from the web interface is broken (it would seem that this could be related to all of the promise-related work in 5984 -- the errors thrown in console are promise-related).
  • (Desktop Chrome only) If I disable the Media Router in Chrome (https://support.google.com/chromecast/answer/6349849?hl=en) and install the old Chromecast extension, casting works as expected in 6400, but only the first time I try casting; If I disconnect the Chromecast via the web interface and try reconnecting, or if I dismiss the "Cast to" dialog without selecting a device, Emby will not open extension dialog again (until I reload the page).

Browsers Tested:

  • Chrome for Windows (Stable, Beta, Canary)
  • Chrome for Android (Stable, Beta, Dev)

Emby Versions Tested:

  • 3.0.6400.0 - Broken
  • 3.0.5984.0 - Broken
  • 3.0.5972.0 - Working

Additional Information & Logs:
Another, possibly related bug: Anytime I dismiss one of Emby's contextual pop-up dialogs (the device selection list, or a menu accessed by clicking the "three-dots" icon on any show/season/etc) without taking an affirmative action (i.e. by clicking outside the dialog -- not selecting any of the options present inside the dialog), I get a JS console error saying "Uncaught (in promise) undefined" from actionsheet.js, line 256.
 
Here's some relevant JS Console output for the Chromecast issue. The most important lines (I believe) are the last 7:

connectionmanager.js?v=3.0.6400.0:37 Begin ConnectionManager constructor
site.js?v=3.0.6400.0:55 loading ApiClient singleton
site.js?v=3.0.6400.0:55 creating ApiClient singleton
apiclient.js?v=3.0.6400.0:15 ApiClient serverAddress: https://emby.mydomain.com:8920
apiclient.js?v=3.0.6400.0:16 ApiClient clientName: Emby Mobile
apiclient.js?v=3.0.6400.0:17 ApiClient applicationVersion: 3.0.6400.0
apiclient.js?v=3.0.6400.0:18 ApiClient deviceName: Chrome 55.0.2849.0
apiclient.js?v=3.0.6400.0:19 ApiClient deviceId: 74843059c25e4eb92b915483eb19ccb72d40e3f2
credentials.js?v=3.0.6400.0:15 credentials initialized with: {"Servers":[{"DateLastAccessed":1473023141141,"LastConnectionMode":2,"ManualAddress":"https://emby.mydomain.com:8920","Id":"4b357c41351942878762ca096cd81225","Name":"Hyperion","LocalAddress":"http://192.168.1.224:8096","RemoteAddress":"https://emby.mydomain.com:8920","UserId":"9a6dae51d09b431dba3a1a2c66679d56","AccessToken":"c641a4eb4f2a48e1a41e12e877b5d0ef","Users":[{"Id":"9a6dae51d09b431dba3a1a2c66679d56","IsSignedInOffline":true}]}]}
site.js?v=3.0.6400.0:55 loaded ApiClient singleton
site.js?v=3.0.6400.0:105 initAfterDependencies promises resolved
mediacontroller.js?v=3.0.6400.0:75 Beginning MediaController.init
site.js?v=3.0.6400.0:111 Begin onAppReady
site.js?v=3.0.6400.0:114 onAppReady - loading dependencies
mediacontroller.js?v=3.0.6400.0:22 Active player: {"name":"My Device","id":"74843059c25e4eb92b915483eb19ccb72d40e3f2","playerName":"Html5 Player","playableMediaTypes":["Audio","Video"],"isLocalPlayer":true,"supportedCommands":["GoHome","GoToSettings","VolumeUp","VolumeDown","Mute","Unmute","ToggleMute","SetVolume","SetAudioStreamIndex","SetSubtitleStreamIndex","DisplayContent","GoToSearch","DisplayMessage","SetRepeatMode"]}
router.js?v=3.0.6400.0:588 Setting page base to /web
site.js?v=3.0.6400.0:114 Loaded dependencies in onAppReady
site.js?v=3.0.6400.0:110 Defining core routes
site.js?v=3.0.6400.0:109 Defining route: /about.html
site.js?v=3.0.6400.0:109 Defining route: /addplugin.html
site.js?v=3.0.6400.0:109 Defining route: /appservices.html
site.js?v=3.0.6400.0:109 Defining route: /autoorganizelog.html
site.js?v=3.0.6400.0:109 Defining route: /autoorganizesmart.html
site.js?v=3.0.6400.0:109 Defining route: /autoorganizetv.html
site.js?v=3.0.6400.0:109 Defining route: /channelitems.html
site.js?v=3.0.6400.0:109 Defining route: /channels.html
site.js?v=3.0.6400.0:109 Defining route: /channelsettings.html
site.js?v=3.0.6400.0:109 Defining route: /cinemamodeconfiguration.html
site.js?v=3.0.6400.0:109 Defining route: /connectlogin.html
site.js?v=3.0.6400.0:109 Defining route: /dashboard.html
site.js?v=3.0.6400.0:109 Defining route: /dashboardgeneral.html
site.js?v=3.0.6400.0:109 Defining route: /dashboardhosting.html
site.js?v=3.0.6400.0:109 Defining route: /device.html
site.js?v=3.0.6400.0:109 Defining route: /devices.html
site.js?v=3.0.6400.0:109 Defining route: /devicesupload.html
site.js?v=3.0.6400.0:109 Defining route: /dlnaprofile.html
site.js?v=3.0.6400.0:109 Defining route: /dlnaprofiles.html
site.js?v=3.0.6400.0:109 Defining route: /dlnaserversettings.html
site.js?v=3.0.6400.0:109 Defining route: /dlnasettings.html
site.js?v=3.0.6400.0:109 Defining route: /edititemmetadata.html
site.js?v=3.0.6400.0:109 Defining route: /encodingsettings.html
site.js?v=3.0.6400.0:109 Defining route: /favorites.html
site.js?v=3.0.6400.0:109 Defining route: /forgotpassword.html
site.js?v=3.0.6400.0:109 Defining route: /forgotpasswordpin.html
site.js?v=3.0.6400.0:109 Defining route: /gamegenres.html
site.js?v=3.0.6400.0:109 Defining route: /games.html
site.js?v=3.0.6400.0:109 Defining route: /gamesrecommended.html
site.js?v=3.0.6400.0:109 Defining route: /gamestudios.html
site.js?v=3.0.6400.0:109 Defining route: /gamesystems.html
site.js?v=3.0.6400.0:109 Defining route: /home.html
site.js?v=3.0.6400.0:109 Defining route: /index.html
site.js?v=3.0.6400.0:109 Defining route: /itemdetails.html
site.js?v=3.0.6400.0:109 Defining route: /itemlist.html
site.js?v=3.0.6400.0:109 Defining route: /kids.html
site.js?v=3.0.6400.0:109 Defining route: /library.html
site.js?v=3.0.6400.0:109 Defining route: /librarydisplay.html
site.js?v=3.0.6400.0:109 Defining route: /librarypathmapping.html
site.js?v=3.0.6400.0:109 Defining route: /librarysettings.html
site.js?v=3.0.6400.0:109 Defining route: /livetv.html
site.js?v=3.0.6400.0:109 Defining route: /livetvguideprovider.html
site.js?v=3.0.6400.0:109 Defining route: /livetvitems.html
site.js?v=3.0.6400.0:109 Defining route: /livetvrecordinglist.html
site.js?v=3.0.6400.0:109 Defining route: /livetvseriestimer.html
site.js?v=3.0.6400.0:109 Defining route: /livetvsettings.html
site.js?v=3.0.6400.0:109 Defining route: /livetvstatus.html
site.js?v=3.0.6400.0:109 Defining route: /livetvtunerprovider-hdhomerun.html
site.js?v=3.0.6400.0:109 Defining route: /livetvtunerprovider-m3u.html
site.js?v=3.0.6400.0:109 Defining route: /livetvtunerprovider-satip.html
site.js?v=3.0.6400.0:109 Defining route: /log.html
site.js?v=3.0.6400.0:109 Defining route: /login.html
site.js?v=3.0.6400.0:109 Defining route: /metadata.html
site.js?v=3.0.6400.0:109 Defining route: /metadataadvanced.html
site.js?v=3.0.6400.0:109 Defining route: /metadataimages.html
site.js?v=3.0.6400.0:109 Defining route: /metadatanfo.html
site.js?v=3.0.6400.0:109 Defining route: /metadatasubtitles.html
site.js?v=3.0.6400.0:109 Defining route: /movies.html
site.js?v=3.0.6400.0:109 Defining route: /music.html
site.js?v=3.0.6400.0:109 Defining route: /mypreferencesdisplay.html
site.js?v=3.0.6400.0:109 Defining route: /mypreferenceshome.html
site.js?v=3.0.6400.0:109 Defining route: /mypreferenceslanguages.html
site.js?v=3.0.6400.0:109 Defining route: /mypreferencesmenu.html
site.js?v=3.0.6400.0:109 Defining route: /myprofile.html
site.js?v=3.0.6400.0:109 Defining route: /mysync.html
site.js?v=3.0.6400.0:109 Defining route: /camerauploadsettings.html
site.js?v=3.0.6400.0:109 Defining route: /mysyncjob.html
site.js?v=3.0.6400.0:109 Defining route: /mysyncsettings.html
site.js?v=3.0.6400.0:109 Defining route: /notificationlist.html
site.js?v=3.0.6400.0:109 Defining route: /notificationsetting.html
site.js?v=3.0.6400.0:109 Defining route: /notificationsettings.html
site.js?v=3.0.6400.0:109 Defining route: /nowplaying.html
site.js?v=3.0.6400.0:109 Defining route: /photos.html
site.js?v=3.0.6400.0:109 Defining route: /playbackconfiguration.html
site.js?v=3.0.6400.0:109 Defining route: /playlists.html
site.js?v=3.0.6400.0:109 Defining route: /plugincatalog.html
site.js?v=3.0.6400.0:109 Defining route: /plugins.html
site.js?v=3.0.6400.0:109 Defining route: /reports.html
site.js?v=3.0.6400.0:109 Defining route: /scheduledtask.html
site.js?v=3.0.6400.0:109 Defining route: /scheduledtasks.html
site.js?v=3.0.6400.0:109 Defining route: /search.html
site.js?v=3.0.6400.0:109 Defining route: /secondaryitems.html
site.js?v=3.0.6400.0:109 Defining route: /selectserver.html
site.js?v=3.0.6400.0:109 Defining route: /serversecurity.html
site.js?v=3.0.6400.0:109 Defining route: /shared.html
site.js?v=3.0.6400.0:109 Defining route: /streamingsettings.html
site.js?v=3.0.6400.0:109 Defining route: /support.html
site.js?v=3.0.6400.0:109 Defining route: /supporterkey.html
site.js?v=3.0.6400.0:109 Defining route: /syncactivity.html
site.js?v=3.0.6400.0:109 Defining route: /syncjob.html
site.js?v=3.0.6400.0:109 Defining route: /syncsettings.html
site.js?v=3.0.6400.0:109 Defining route: /tv.html
site.js?v=3.0.6400.0:109 Defining route: /useredit.html
site.js?v=3.0.6400.0:109 Defining route: /userlibraryaccess.html
site.js?v=3.0.6400.0:109 Defining route: /usernew.html
site.js?v=3.0.6400.0:109 Defining route: /userparentalcontrol.html
site.js?v=3.0.6400.0:109 Defining route: /userpassword.html
site.js?v=3.0.6400.0:109 Defining route: /userprofiles.html
site.js?v=3.0.6400.0:109 Defining route: /wizardagreement.html
site.js?v=3.0.6400.0:109 Defining route: /wizardcomponents.html
site.js?v=3.0.6400.0:109 Defining route: /wizardfinish.html
site.js?v=3.0.6400.0:109 Defining route: /wizardlibrary.html
site.js?v=3.0.6400.0:109 Defining route: /wizardlivetvguide.html
site.js?v=3.0.6400.0:109 Defining route: /wizardlivetvtuner.html
site.js?v=3.0.6400.0:109 Defining route: /wizardservice.html
site.js?v=3.0.6400.0:109 Defining route: /wizardsettings.html
site.js?v=3.0.6400.0:109 Defining route: /wizardstart.html
site.js?v=3.0.6400.0:109 Defining route: /wizarduser.html
site.js?v=3.0.6400.0:109 Defining route: /configurationpage
site.js?v=3.0.6400.0:109 Defining route: /
apiclient.js?v=3.0.6400.0:278 Requesting url without automatic networking: https://emby.mydomain.com:8920/Plugins/SecurityInfo
connectionmanager.js?v=3.0.6400.0:905 Begin connect
connectionmanager.js?v=3.0.6400.0:808 Begin getAvailableServers
connectionmanager.js?v=3.0.6400.0:756 Begin getConnectServers
connectionmanager.js?v=3.0.6400.0:920 Begin connectToServers, with 1 servers
connectionmanager.js?v=3.0.6400.0:981 begin connectToServer
connectionmanager.js?v=3.0.6400.0:998 beginning connection tests
connectionmanager.js?v=3.0.6400.0:1072 testing connection mode 2 with server Hyperion
connectionmanager.js?v=3.0.6400.0:200 tryConnect url: https://emby.mydomain.com:8920/emby/system/info/public
connectionmanager.js?v=3.0.6400.0:172 ConnectionManager requesting url: https://emby.mydomain.com:8920/emby/system/info/public
connectionmanager.js?v=3.0.6400.0:123 fetchWithTimeout: timeoutMs: 20000, url: https://emby.mydomain.com:8920/emby/system/info/public
connectionmanager.js?v=3.0.6400.0:135 fetchWithTimeout: succeeded connecting to url: https://emby.mydomain.com:8920/emby/system/info/public
connectionmanager.js?v=3.0.6400.0:176 ConnectionManager response status: 200, url: https://emby.mydomain.com:8920/emby/system/info/public
connectionmanager.js?v=3.0.6400.0:1085 calling onSuccessfulConnection with connection mode 2 with server Hyperion
connectionmanager.js?v=3.0.6400.0:172 ConnectionManager requesting url: https://emby.mydomain.com:8920/emby/System/Info
connectionmanager.js?v=3.0.6400.0:176 ConnectionManager response status: 200, url: https://emby.mydomain.com:8920/emby/System/Info
connectionmanager.js?v=3.0.6400.0:172 ConnectionManager requesting url: https://emby.mydomain.com:8920/emby/users/9a6dae51d09b431dba3a1a2c66679d56
connectionmanager.js?v=3.0.6400.0:176 ConnectionManager response status: 200, url: https://emby.mydomain.com:8920/emby/users/9a6dae51d09b431dba3a1a2c66679d56
connectionmanager.js?v=3.0.6400.0:380 returning instance from getOrAddApiClient
apiclient.js?v=3.0.6400.0:278 Requesting url without automatic networking: https://emby.mydomain.com:8920/Users/9a6dae51d09b431dba3a1a2c66679d56
connectionmanager.js?v=3.0.6400.0:380 returning instance from getOrAddApiClient
apiclient.js?v=3.0.6400.0:511 Begin updateServerInfo. connectionMode: 2
apiclient.js?v=3.0.6400.0:520 Setting server address to https://emby.mydomain.com:8920
apiclient.js?v=3.0.6400.0:278 Requesting url without automatic networking: https://emby.mydomain.com:8920/Sessions/Capabilities/Full
connectionmanager.js?v=3.0.6400.0:453 calling apiClient.openWebSocket
connectionmanager.js?v=3.0.6400.0:933 resolving connectToServers with result.State: 3
router.js?v=3.0.6400.0:277 embyRouter - processing path request /web/home.html
router.js?v=3.0.6400.0:298 embyRouter - user is authenticated
router.js?v=3.0.6400.0:319 embyRouter - proceeding to /web/home.html
apiclient.js?v=3.0.6400.0:278 Requesting url without automatic networking: https://emby.mydomain.com:8920/Users/9a6dae51d09b431dba3a1a2c66679d56/Views
apiclient.js?v=3.0.6400.0:278 Requesting url without automatic networking: https://emby.mydomain.com:8920/DisplayPreferences/home?userId=9a6dae51d09b431dba3a1a2c66679d56&client=webclient
apiclient.js?v=3.0.6400.0:572 web socket connection opened
apiclient.js?v=3.0.6400.0:278 Requesting url without automatic networking: https://emby.mydomain.com:8920/Users/9a6dae51d09b431dba3a1a2c66679d56/Views
apiclient.js?v=3.0.6400.0:278 Requesting url without automatic networking: https://emby.mydomain.com:8920/Users/9a6dae51d09b431dba3a1a2c66679d56/Items?S…mageTypes=Primary%2CBackdrop%2CBanner%2CThumb&EnableTotalRecordCount=false
apiclient.js?v=3.0.6400.0:278 Requesting url without automatic networking: https://emby.mydomain.com:8920/Users/9a6dae51d09b431dba3a1a2c66679d56/Items/L…BasicSyncInfo&ImageTypeLimit=1&EnableImageTypes=Primary%2CBackdrop%2CThumb
apiclient.js?v=3.0.6400.0:278 Requesting url without automatic networking: https://emby.mydomain.com:8920/LiveTv/Recordings?userId=9a6dae51d09b431dba3a1…spectRatio%2CBasicSyncInfo&IsInProgress=false&EnableTotalRecordCount=false
chromecast.js?v=3.0.6400.0:4 chromecast.initialize
chromecast.js?v=3.0.6400.0:4 chromecast init success
chromecast.js?v=3.0.6400.0:8 chromecast receiver found
apiclient.js?v=3.0.6400.0:278 Requesting url without automatic networking: https://emby.mydomain.com:8920/Sessions?ControllableByUserId=9a6dae51d09b431dba3a1a2c66679d56
chromecast.js?v=3.0.6400.0:10 chromecast launching app...
chromecast.js?v=3.0.6400.0:10 chromecast launch error
home.html:1 Uncaught (in promise) undefined
Link to comment
Share on other sites

  • 1 month later...
davidruzicka

Have the same problem.

Easier workaround:

While on Emby web app, hit the Cast menu in Chrome's menu and choose your chromecast then it works as expected (your chromecast appears selected in emby's web app and emby starts casting)

Link to comment
Share on other sites

davidruzicka

Updated server.

It kind of work on 3.0.8300.0: your chromecast name doesn't appear in Emby's cast menu but when you hit Chromecast in the menu under Your Device it starts Chrome's integrated casting where you can select your chromecast...

 

for ref.: https://emby.media/community/index.php?/topic/40595-cannot-see-chromecast-from-chrome/

Edited by davidruzicka
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...