August 18, 2016Andy Haldeman
Amazon Fire TV now has a feature called System X-Ray that allows developers to visually track device and application metrics while an application is in use. This is a useful tool for developers and testers, as it gives them pertinent metrics that can help diagnose issues within an app or game.
System X-Ray is available on all Amazon Fire TV and Fire TV Stick devices with Fire OS version 5.0.2 and higher.
The System X-Ray feature is enabled in the Developer Tools Menu dialog. There are three ways to invoke the dialog.
Once the dialog appears, navigate to the System X-Ray setting and toggle it to “On”.
The System X-Ray overlay is divided into four sections, Display (DIS), Central Processing Unit (CPU), Memory (MEM), and Network (NET). Let’s take a closer look at each of these sections:
HDMI Mode – This is the current resolution and frequency being used by the Amazon Fire TV to display the user interface. Amazon Fire TV allows changes to the resolution under Settings->Display & Sounds->Display->Video Resolution. This does not reflect the resolution settings used by a game, or by an app for media playback.
HDCP –The HDCP version used by Fire TV to encrypt content being sent through the HDMI cable to the television.
Central Processing Unit
The CPU section shows how the CPU cores are being used. Each core is represented as a numbered column. The utilization percentage is represented below each column. The usage bar in each column will also change colors to reflect utilization. The available colors are green for low utilization, darker green, yellow, orange, and red for high utilization. If an Amazon Fire TV device only has two cores, then columns 3 and 4 will display, but will show 0% utilization.
CPU utilization can help identify if an app is CPU intensive. A core that shows consistent heavy usage may indicate a need to make a process multi-threaded.
The memory section has a bar with the labels App (blue), Other (gray), and Available (white). The App section shows the proportional set size (PSS) of the memory used by the foreground app. The package name of the foreground app is displayed below the bar. The Other section shows the memory being used by the processes on the device, by reading the “Active” value from /proc/meminfo. It includes the memory used by the foreground app. The Available section shows how much memory is unused, by reading the “MemTotal” value from /proc/meminfo and subtracting the “Active” value.
The Memory section can be used to identify a memory leak in an app, if an app takes up more memory than expected, or is causing low memory conditions on the device.
This section shows how strength of the WiFi signal, the rate at which data is being downloaded to the Amazon Fire TV, and the rate at which data is being downloaded by the foreground app.
RSSI (Received Signal Strength Indication) - This section shows how strong the WiFi signal is, measured in dBm. The bar indicates the signal strength and is color coded using the same color coding scheme as the CPU section to indicate the severity of a problem. If the Amazon Fire TV has a wired connection and is not using WiFi, then RSSI is not shown.
Total Download Speed - This measures how many bits per second are being actively downloaded to the device. This is not the available bandwidth. If 0 bps is displayed, it means no data is being downloaded at the moment.
FG App (Foreground App) - This measures how many bits per second are being actively downloaded by the foreground app. This number will never be higher than the Total Download Speed.
The Network section can be used to diagnose connectivity issues, slow download speeds, and lower quality streams being chosen by a media player.
Ready to build an app or Game for Amazon Fire TV? Download the SDK here.