The Emulator is a web-based application that emulates the behavior of physical devices and the signageOS JS APIs.
Its purpose is to allow you to quickly test the APIs and run your Applet in a "device-like" environment.
Due to its web-based nature, Emulator comes with certain limitations documented below.
General Limitations
Below is the list of general limitations of the Emulator. These features will not provide any feedback or response. All other features in Applet JS API and REST API are available and the Emulator will provide sufficient feedback that can be used for development and debugging.
Emulator limitation on Chrome v.72 to v.100
If you update your Chrome to the latest version 72+ the Emulator might stop working for you. The reason is behind the Chrome security policy which disallows certain iframe communication.
In certain cases, an older version of Chrome (49) will be necessary to download, in that case, you can download it from here.
Running Emulator on Chrome v.100+
Chrome changed several internal APIs with the release of version 100. Specifically, it broke the native Chrome file system leveraged by the Emulator. Running Emulator on Chrome v100+ requires updating the Emulator version to 11.0.0 and above.
Chrome native filesystem has been replaced by Filesystem implementation based on IndexDB.
Older versions of Chrome/Chromium
Links to older version are below:
List of features and limitations in the Emulator
Feature/Capability | State | Note |
---|---|---|
SCREENSHOT_UPLOAD | Emulated | Returns only blue screen png image |
MODEL | Emulated | Based on navigator.platform |
SERIAL_NUMBER | Emulated | Based on userAgent |
TIMERS_PROPRIETARY | Emulated | Creates black overlay |
TIMERS_NATIVE | Emulated | Creates black overlay |
STORAGE_UNITS | Emulated | Only Internal storage units are supported |
SYSTEM_REBOOT | Emulated | Refresh browser window |
APP_RESTART | Emulated | Refresh browser window |
SET_VOLUME | Emulated | Works only for video playback via sos.video JS API |
SET_BRIGHTNESS | Emulated | Adds overlay with transparency to lighten/darken the content |
DISPLAY_POWER | Emulated | Adds black overlay |
APP_UPGRADE | Emulated | Changes URL in the browser window to correct/new URL |
SCREEN_RESIZE | Emulated | Only supports change of orientation , not for resolution |
NETWORK_INFO | Emulated | Emulated based on the userAgent or what Chrome allows |
PROXIMITY_SENSOR | Emulated | Activated with mouse movement over the Emulator window |
FACTORY_RESET | Emulated | Deletes all files in cache, internal file storage and refresh browser window |
FIRMWARE_UPGRADE | Emulated | Internally set new FW version, refresh borwser window and report back new FW |
FILE_SYSTEM_FILE_CHECKSUM | Emulated | Works only on smaller files, based on browser performance |
WIFI | Emulated | Pre-defined list of fake Wifi networks to connect to |
WIFI_SCAN | Emulated | Returns pre-defined list of Wifi networks (listed below the table) |
VIDEO_4K | Emulated | Works on good enough PCs |
monitors IMonitors | Emulated | Determnistic based on window.navigator manufacturer - this.window.navigator.vendor || this.window.navigator.appCodeName, // firefox doesn't have vendor model - this.window.navigator.userAgent serial - this.window.navigator.productSub firmware - this.window.navigator.appVersion |
SET_TIME | N/A | Throws Exception |
REMOTE_CONTROL | N/A | Throws Exception |
List of emulated wifi networks
Wifi SSID | Is protected? | Password | Encryption |
---|---|---|---|
School | true | uni12345 | WPA2 Enterprise |
Work | true | happy1234 | WPA2 Enterprise |
BrownsWifi | false | -- | -- |
SmithsWifi | true | unsecure9876 | WEP |
JaneAndroid | true | hihi5678 | WPA2 Personal |
Chris's Phone | true | hello5678 | WPA |
Autoplay policy in Chrome 66+
If you’re experiencing trouble with playing videos while using Chrome version 66 or newer, it’s possible that the video playback is being blocked by the browser.
One of the new features in Chrome 66 is that by default, the user must interact with the website first or the browser will prevent any video playback with audio enabled. This is acceptable for regular websites, but not for digital signage devices.
To fix this, follow these steps:
- Open chrome://flags/#autoplay-policy
- Set Autoplay policy to No user gesture is required
- Relaunch Chrome
You can read more about it in this blog post.
Adblock issue in Chrome
It may happen that the video won't be displayed in the emulator due to Adblock app running in the Chrome browser background. It can cause the unexpected exception error which blocks automatically the video content in the browser media player.
The following media content is set up as a suspicious one by default in the Adblock settings.
So what should you do in this situation?
All you have to do is cancel blocking of media content in the Adblock setting.
File Management Limitation on Emulator < v8.0.0
Files are stored in the browser’s Local Storage only if they are smaller than 10kb. Otherwise, they are served by the original URL.
If you want to check the content stored in the internal device memory you can do it by running the following command in the Chrome browser: filesystem:https://2.signageos.io/persistent/
Please note that this feature only works in the Box emulators.
Unable to request PERSISTENT file system
error in emulator console
If you encounter this error while running emulator in your browser, please make sure Chromium version is under 104. This version introduced breaking changes that prevent the communication of our front-display and front-applet through iframe. A fix is being worked on.
Video codecs support in Chromium
If you use Chromium to run the Emulator, you might experience an issue while playing videos. Chromium by default supports only the open video codecs read more here.
Chromium does not support MP4 with H.264 codec! Use different format while using Chromium as your Emulator.
Emulator version
If you want to use older Chromium to test the performance with the emulator before deploying there are some guidelines to note.
Chromium in version 104 introduced breaking change and dropped support for webkit filesystem API. That led us to drop support for older Chromiums with Emulator v10.0.0 and above.
If you want to run Emulator on older Chromium, you need to use version <10.0.0.
Under THIS link you can use to open older Emulator v9.23.0:
It's recommended to use an anonymous window.
As this emulator is now considered a legacy, please check the changelog for any feature that you might be using and is not in this version.
FAQ
What should I do in the case of the emulator doesn't display the applet content, not only in Chrome but Firefox and IE / Microsoft Edge as well?
There are some common rules which may apply to all popular browser in such a situation
-
Don't click to emulator (browser) window before it starts play video.
-
There is some browsers policy, which may blocks the applet content.
Kindly refer to the autoplay policy in Chrome -
Some browsers have limitations on a number of accesses to internal memory (used internally to emulate file system). Some browsers need to be turned off and on again after a while.
-
Check the video format if it's supported by the emulator. We recommend testing integration on a subset of videos for emulator purpose.
Kindly refer to the video codecs support in Chromium -
Some browsers have also some limitations on the file size in the internal file system (unpredictable limit).
-
It's always better to test smaller videos in Emulator.
-
If there is a specific error message displayed, refer to the js API methods / events and the code errors common for the specific action.
JS Video functions -
All media files should be served from the internal memory storage.
More information on File System and Offline Cache for media files -
We use some 'browser listeners' which inform about the errors related to the applet emulator content. So if the video file loads and plays properly but there are some information errors on the memory leak, it's not the technical issue on the signageOS side.