AEM Screens FAQs

Last update: 2021-11-29
  • Created for:
  • Intermediate

The following section provides answers to few of the commonly asked FAQs related to an AEM Screens project.

Blank Screen Issue


The listed mandatory checks that should be tried by primary support or customer-side support before raising an issue.

1. What should be the First aid troubleshooting steps for any customer facing a black screen or non-playing content?

  • Check if the channel preview is working.
  • Check if the display preview is working
  • Try registering the player as a browser extension on your system to that same display and check if this is working.
  • With the player running on your system, navigate to http://localhost:24502. Check if all the content is downloaded correctly.
  • Check the asset(s) that the appropriate renditions are created and the correct rendition is being played.
  • Check for any scheduled content and if the times are correct. Check if the time set up in the player is correct.
  • Inspect the player console logs and check for any errors. Right click and inspect to see the console logs. If using the windows player press CTRL + ALT +I to bring up dev console to view the logs.

2. How to resolve Grey Screen Issue in AEM Screens by Creating a Default Channel or Schedule?

To avoid the blank or grey screens in the field, please create a default global channel or schedule, assigned to every display with the least priority 1. In case, something goes wrong with content updates (due to network, player, server, or replication), since the players have this content already cached on the disk, that should play fine and avoid the grey screens.

All the other content such as channels or schedules will be at priority greater than 1, so the other content takes priority and global channel or schedule content (with priority 1) will only play as a fall-back option.

Channel Management

1. What is the difference between an online and an offline channel?

An Online Channel, will show the updated content in the real time environment whereas an Offline Channel, shows the cached content.

2. How do I make a channel online?

Select the channel and navigate to channel properties from the action bar. Check Developer mode (force channel to be online) under Channel tab to make the channel online.

3. What is the use of the Channel Role field?

The Channel Role, is the abstraction of the actual channel that is run so that the author can focus on the generic experience directly. You can think of it as a kind of tag that uniquely identifies the channel in its context (display or schedule).

4. How does actual channel resolution happen?

For static references, the resolution just follows the path that is specified.

For dynamic references, the resolution occurs once the channel is assigned to the display (not the schedule). The display path becomes the context for the channel and the resolution happens as follows (highest to lowest priority):

  1. The display has a child node that matches the referenced channel name
  2. The display has a sibling node that matches the referenced channel name
  3. The parent location of the display has a child node that matches the referenced channel name
  4. The grand-parent location of the display has a child node that matches the referenced channel name

And so on, until you reach the locations folder and stop there at the moment (so you cannot reference a channel that would be in the channels folder for instance, only channels in the locations sub-tree).

5. How to setup Custom clientlib offline configuration in AEM Screens Channel?

When using a built custom client-side code clientlib in an AEM Screens channel, the following steps are necessary to make sure that the clientlib files are loaded successfully in the channel (manifest.json) and will contain the path of the clientlib.

Follow the steps below from the channel editor:

  1. Select a channel and click on Edit from the action bar to open the channel editor.
  2. Select the component where you want to add the custom clientlib.
  3. Click on the configure button (the wrench icon).
  4. Navigate to the Offline Config tab and add the path to your custom clientlib in Client-side Libraries.

Device Registration

1. If I discover endpoints such as requests for device onboarding and registration, I can script a large number of devices and register these devices. Besides locking this to a branch Wi-Fi, is it possible to secure these requests?

Currently Registration is only possible on the author instance. Although the registration service is unauthenticated it will only create a pending device in AEM and will not actually register the device or assign any display.

To register a device (which means creating a user for the device in AEM), you still need to authenticate to AEM and currently manually follow the registration wizard to complete registration. Theoretically, a malicious user may create several pending devices but cannot register any without an AEM login.

2. Is there a way to transform HTTP GET requests into HTTP POST with some form of authentication?

The registration request is a POST request.

It is recommended to obtain the device ID from the session rather than passed as parameter. This would clean up the server logs, browser cache, and so on. It is currently not a security issue. Please note that semantically GET is used when there is no state change on the server and POST is used when there is a state change.

3. Is there a way to decline a device registration request?

You cannot decline the registration requests. Instead the registration requests should expire after a timeout that is configured in Adobe Experience Manager Web Console. By default, this value is set to one day and is stored in a memory cache.

Device Monitoring and Health Reports

1. How do I troubleshoot, if my AEM Screens player shows blank screen?

Please check for the following possibilities to troubleshoot the blank screen issue:

  • AEM is unable to push the Offline Content
  • Channel does not have any content
  • None of the assets are scheduled to show at current time

2. What do I do if AEM Screens player cannot register and its state is displayed as Failure?

You need to enable the Apache Sling Referrer Filter Allow Empty. This is required for optimal operation of the control protocol between AEM Screens Player and AEM Screens server.

  1. Navigate to Adobe Experience Manager Web Console Configuration
  2. Check the allow.empty option.
  3. Click Save.

3. How to troubleshoot if while registering an AEM Screens player, device shows FAILURE and the console logs display ENAME_NOT_FOUND error?

This issue may occur if the player is unable to find the AEM Screens Server DNS. You can try using the IP address to connect. To obtain the IP of server, use: arp <server_dns_name>.

4. Does AMS recommend implementing an Android Watchdog on all Devices? Is the Watchdog (Cordova) plugin included as part of the APK?

A cross platform Android watchdog using pure Android APIs is already a part of the apk. No additional software is needed but depending on the device you use, you may need to resign the apk to obtain system privileges for a full power cycle (Powermanager api). If it is not resigned using the manufacturer keys, it will quit and restart the application but not power cycle.

For more information on how to implement Android Player, please refer to Implementing Android Player.

5. What third-party remote monitoring and alerting tools (software) does Adobe/AMS recommend for monitoring each device?

Depending on what you desire out of the monitoring and alerts, a new feature AEM Screens Notifications service notifies you if a device has not pinged in a while. The third-party tools will depend on your Operating System (OS), its capabilities and the customer’s specific needs.

For more information on where you can monitor device activity, please refer to AEM Screens Notifications Service.

AEM Screens Player

1. How to Install ChromeOS player as Chrome Browser Plugin?

ChromeOS player can be installed as Chrome Browser plugin in developer mode without requiring actual chrome player device. For installation, follow the steps below:

  1. Click here to download the latest Chrome Player.
  2. Unzip and save it on disk.
  3. Open Chrome browser and select Extensions from the menu or directly navigate to chrome://extensions.
  4. Switch on the Developer mode from top right corner.
  5. Click on Load Unpacked from top left corner and load unzipped Chrome Player.
  6. Check AEM Screens Chrome Player plugin if is available in the list of extensions.
  7. Open a new tab and click the Apps icon from the top left corner, or directly navigate to chrome://apps.
  8. Click on AEM Screens Plugin to launch Chrome Player. By default, the player is launched in full screen mode. Press esc to exit full screen mode.

2. How to troubleshoot if Screens player is unable to authenticate through publish instance with custom error handler?

When AEM Screens player starts, it makes a request to /content/screens/, when the player gets a 404 error. The player initiates an authentication request to authenticate against the publish instance. If there is a custom error handler in publish instance, please make sure that you return the 404 status code for anonymous user on /content/screens/

3. How to set the device screen stay on in an Android Player?

Follow the steps below to turn on Stay Awake in on any Android player:

  1. Navigate to Android player settings --> About
  2. Tap 7 times on the build number to enable Developer Options in Settings
  3. Navigate to Developer Options
  4. Enable Stay Awake

4. How to enable window mode for the Windows player?

There is no window mode in Windows player. It is always full screen mode.

5. How to troubleshoot if an AEM Screens player continuously sends login requests?

Follow the steps below to troubleshoot an AEM Screens player that continuously sends requests to /content/screens/svc.json and /libs/granite/core/content/login.validate/j_security_check:

  1. When AEM Screens player starts, it requests to /content/screens/svc.json. When the player gets a 404 status code in the response, it initiates an authentication request using /libs/granite/core/content/login.validate/j_security_check against the publish instance. If there is a custom error handler in the publish instance, make sure to return the 404 status code for anonymous user on /content/screens/svc.json or /content/screens/

  2. Check if your dispatcher configuration allows these requests in the /filters.

    See Configuring Screens Filters for more details.

  3. Check if your dispatcher rewrite rules are rewriting any of the screens paths to a different path.

  4. Check if you have /etc/map rules on the author or publish instance and screens paths are matched to sling:match and internally redirected to a different path. Resolving the exact url in /system/console/jcrresolver helps in identifying if the publish instance is rewriting these URLs to any other path.

  5. Check if Apache Sling Resource Resolver Factory configuration is causing internal re-writes.

6. How to get the details of the display and device from the player API?

You can get the details of the display and device via:

  • an internal JS API

  • a ContextHub store: Three ContextHub stores are defined in /libs/screens/clientlibs/contexthub to expose channels, device and, display info.

    Follow the steps below to use these ContentHub store values:

    • Edit the channel properties and set the ContextHub path in the personalization tab to the value (as mentioned above)

    • In the channel JS, you can use:


General Troubleshooting Tips

1. How to Disable Livefyre to avoid A/P Screens Error?

In order to disable Livefyre to avoid log errors :

  1. Disable Livefyre bundle:

    • Navigate to https://&lt;host&gt;:&lt;port&gt;/system/console/bundles
    • Search for the AEM Livefyre bundle:
    • Click Stop
  2. Disable Livefyre poller:

    • In CRXDE Lite, navigate to /etc/importers/polling/livefyre-poller/jcr:content
    • Add a new property enabled type Boolean
    • Set enabled property to false

2. How to Add Oak Index information?

AEM Screens creates index definitions for the queries used by the product.
If there are any Query Traversal WARNs in the error.log, create a custom index for your query. Refer to Configuring the Indexes for more details.

You can also refer to an additional resource on Oak Documentation.

3. What is required to configure v3 Manifests?

For enabling v3 Manifest, you must:

  • Update Dispatcher.
    See Configuring Dispatcher for Manifest Version v3 for more details.

  • Update Custom Component.
    See Template for Custom Handlers for more details.

  • Disable ContentSync in /system/console/configMgr/configMgr/com.adobe.cq.screens.offlinecontent.impl.ContentSyncCacheFeatureFlag.

  • Enable SmartSync in /system/console/configMgr/com.adobe.cq.screens.offlinecontent.impl.OfflineContentServiceImpl.

  • Edit channel/experience fragment/page components.

  • Navigate to the Offline Config tab.

  • Enter clientlibs and folders for static files that need to be added to the manifest.

4. What should you do, if, after the package screens-cloud-ams-pkg-0.0.20, screens-cloud-ams-pkg-0.0.16 and the screens core bundles are installed but not active?

You must install a minimum version of AEM 6.5 Feature Pack 8 for the AMS connector to work. See the Availability to get the minimum version of Screens feature pack.

The service is used to define the public hostname for the author and publish instances, and the values are then used to update the device server URLs and also for ContextHub targeting.

CQ Link Externalizer service in Screens can be configured via:

  1. Navigate to http://localhost:4502/system/console/configMgr
  2. Day CQ Link Externalizer
  3. Change the hostname for the author/publish entries as needed

On this page