From SpinetiX Support Wiki

Jump to: navigation, search
This article is a stub. Main article: Logs.


The player.log file includes all the information related to the player rendering engine. It was introduced in firmware 3.1.0 to group together the information that before was contained in now-deprecated logs (info.log, javascript.log, resources.log, and warn.log).

It contains, amongst other useful information, details about the player performance counters, including CPU performance and FPS drop of frames.

Log format

The entries in the player log look like this:

dd-mm-yyyy hh:mm:ss LEVEL logger - information


dd-mm-yyyy hh:mm:ss is the date and time of the player at the moment of writing.
logger - information - the name of the process and the information it is logging, such as:
  • spx.player - logs the player model and firmware version, like SpinetiX HMP400 version 'Stecknadelhorn 4.8.2-38890' started ....
  • spx.stats - logs the player statistics, like
    20-03-2024 23:36:22 INFO spx.stats - 72:00:00 Period: 60s Pic: 3600 Usage: 10.8% ( 4.6|28.6) Peak: 66ms Buffers: 983ms (min 917ms) FPS Drop: 0% Peak drop: 0%
  • spx.resource, - logs resource related information, like
    New Resource 'spx://interface/index.svg', New Resource 'spx://localserver/index.svg'
    New Resource ''
  • - logs the opening and closing of main index files, like
    Open: spx://localserver/index.svg (Size:1920x1080) (Dur: indefinite) in 4ms (network 0ms)
    Close: spx://localserver/index.svg, Close: spx://elementi/index.svg
  • spx.display.input - logs information about the input devices, like device '/dev/input/event0' opened.
  • spx.display.comportfsm, spx.display.comportfsm.hdmicec - logs information from communication ports: serial port and HDMI CEC, like
    COM port sending command PowerOn started at 0:00:00
    HDMI connected to HDMI sink, detected HDMI sink with CEC TV functionality
  • - logs information regarding media decoding and playback, like
    Found media stream: video H.264, 1920x1080 (16:9) 4:2:0 25 fps High profile Level 4.0
  • spx.svglib.jscript - logs JavaScript related information.
  • spx.svglib.multiscreen - logs information about the multiscreen ID, like Setting Screen ID to 'screen-1-1'

Player statistics

A line containing the performance counters of the player is added every second during the first 20 seconds upon content restart, then every 10 seconds during the first 5 minutes, and finally every minute afterward. Here is an example:

20-03-2024 23:36:22 INFO  spx.stats - 72:00:00 Period: 60s Pic: 3600 Usage: 10.8% ( 4.6|28.6) Peak:   66ms Buffers:  983ms (min  917ms) FPS Drop:  0% Peak drop:  0% 

The typical log entry has the following format:

  • dd-mm-yyyy hh:mm:ss INFO spx.stats - rendering_time
    The date and time, the level and the logger for this line, followed by the rendering time upon content restart (due to a player restart, a publish or a content pull action).
  • Period: n_seconds
    The time duration in seconds (e.g., 1s, 10s, 60s) used for aggregation.
  • Pic: n_frames
    The number of frames rendered within the aggregation period. If this is equal to (freq * n_seconds), where freq is the output frequency (e.g., 60Hz = 60 frames per seconds, 50Hz), then the player has no problem rendering the content; a lower number means that some frames were dropped.
  • Usage: n% ( arm | dsp )
    The resource usage in percentage. In the first set of parentheses, the values for CPU and GPU components.
  • Peak: n_ms
    The number of milliseconds that the longest frame took to render - this should be below the maximum rendering latency to ensure that no frames are dropped; a larger number means that something took a lot of time to be opened or rendered.
  • Buffers: n_ms (min n_ms)
    The average duration (in milliseconds) of the available buffers. In parentheses, the minimum value for available buffers.
  • FPS Drop: 0%
    The percentage of frames dropped because the rendering speed (FPS) has been reduced.
  • Peak drop: 0%
    The percentage of frames dropped because of peak rendering.
Note Note:
For firmware versions below 4.3.0, the statistics for usage, FPS drop, and FPS peak also include a second set of parenthesis containing worst case values, like (w1s/ w10s/ w60s). The first two values are calculated for any 1s and 10s period within the current aggregation period, while the last value is the worst case for any 60s period from the beginning of the rendering time.
22-03-2015 16:36:21 INFO spx.stats - 0:10:00 Period: 60s Pic: 2970 Usage: 22% ( 16| 71) (121/ 29/ 26) Peak: 286ms Buffers: 514ms (min 20ms) FPS Drop: 0% ( 28/ 5/ 1) Peak drop: 0% ( 4/ 0/ 6)


Everytime a new resource is opened, the logger adds information about that resource, along with the date and time when it started. The logger might also add extra details about the video / audio streams inside the media, redirects, unsupported media etc.

The typical message that is added when a resource starts to play, has this format:
dd-mm-yyyy hh:mm:ss INFO   - New Resource 'URI' [flags] (dlc/tcd)
  • URI is starting with spx://localserver/ for local resources and with http(s):// for the external ones.
  • [flags] ([PCIC]) have the following meaning:
    P = PHP processing is done (i.e. the resource is .php).
    C = the caching mechanism is used for this resource (i.e. the resource is not local), but not necessarily that the resource is currently being played from cache.
    I = iCal processing is done (i.e. the resource is .ics).
    C = the resource is currently cached. (added in firmware 3.0).
    This flag is used in combination with the first C flag (i.e. [ C C]) and followed by the caching information (dlc/tcd).
  • (dlc/tcd) means "duration left in cache" from "total cache duration". (added in firmware 3.0)
    • dlc ("duration left in cache") can be either a number (of seconds) <= tcd or the string "----" meaning that the resource will be retrieved from the server.
    • tcd ("total cache duration") can be between 10s and 3600s.
Note Note:
The last 'C' char may be replaced by a '0' (i.e. [ C 0]), indicating that the cache mechanism is used for asynchronous retrieval, but that the resource is NOT cached. It will be retrieved each time it is needed by the player. In this case the (dlc/tcd) is not present.


29-08-2019 13:45:32 INFO   - New Resource 'spx://interface/index.svg' (host: /srv/raperca/interface/public) [    ]
29-08-2019 13:45:32 INFO   - New Resource 'spx://interface/schedule/51/schedule.json' [    ]
29-08-2019 13:45:32 INFO   - New Resource 'spx://localserver/index.svg' (host: /srv/raperca/content) [    ]
29-08-2019 13:45:32 INFO  spx.resource         - Mapping virtual host: to /usr/bin/../share/raperca/../spxjslibs/libs/
29-08-2019 00:01:27 INFO   - New Resource 'spx://localserver/Exemple_Sigange_2/Price%20List/Layout/Horizontal%20Forecast.svg' [    ]
29-08-2019 00:01:27 INFO   - New Resource '' [ C C] (3965/7200s)
29-08-2019 00:01:28 INFO   - New Resource '' XHR GET -> 200 OK, Content-type: 'text/csv' 331 bytes
29-08-2019 00:01:47 INFO   - New Resource 'spx://localserver/Welcome/template%20corporate/Media/DNAStrandRotateLoopVidevo.mp4' [    ]

If a resource is being played continuously in a loop, the above line is added only once at starting time. Nevertheless, in case of a media resource, one or more lines will be added by the logger each time the media is restarting - for instance:

29-08-2019 00:01:47 INFO     - Found media stream: video H.264, 1920x1080  (16:9) 4:2:0 25 fps Main profile Level 4.1
29-08-2019 00:01:47 INFO     - Found media stream: audio AAC, 48000Hz stereo

When the media ends, you might see a message (it can be safely ignored) like this:

29-08-2019 00:01:51 WARN     - error retrieving data of multimedia source from URI 'spx://localserver/Welcome/template%20corporate/Media/DNAStrandRotateLoopVidevo.mp4', MIME type 'video/mp4' (unknown error: -541478725), assuming end of stream

Common errors

  • Unsupported media stream:
    Unsupported media stream: ffmpeg codec id=0
    If your video/audio file is not playing correctly then check the encoding settings on the Video encoding page. If your video is playing as expected and you still see this error in the logs, then it can safely be ignored; the player is discarding the streams it does not handle, such as subtitles and metadata.
  • Server or proxy hostname lookup failed:
    Server or proxy hostname lookup failed : '[requested_file_url]' -> Could not resolve hostname `[proxy_server]': Host not found
    HMP cannot connect to the Internet - check if you have correctly entered the proxy details.
  • Object Not Found:
    File not found : 'project://AutoServer0-4/index.svg' -> 404: Object Not Found
    The "Autoserver" source (followed by a number) represents a remote network path. If you see this error then you will usually be using Client/Server mode but you have specified the server source incorrectly. Check the source is a directory path, and not a file.
  • Stream demuxing failed:
    WARN - Stream demuxing failed because more than 1048576 bytes of buffering is required
    This is the result of a non-optimal multiplexing of the audio and video streams that requires more than 1 MB (respectively 3 MB in case of streaming media) of buffering of the audio or video stream in order to keep it in sync with the other. The solution is to re-multiplex the audio and the video streams using a software that creates correct multiplexing, like FFMpeg.
  • SSL certificate verification failed:
    HTTP Error : Command: GET on 'https://...' -> 0: Server certificate verification failed: issuer is not trusted
    The HMP could not verify the SSL certification for the resource URL and thus the resource is not loaded. Try using http or manually add the missing certificate on the HMP.


Any information or error generated by the JavaScript machine is added to the player.log by the spx.svglib.jscript logger - like for instance:

29-08-2019 13:44:49 INFO  spx.svglib.jscript   - exception thrown: TypeError: $.FooBar is undefined at spx://localserver/widgets/table.js:69
29-08-2019 13:44:49 INFO  spx.svglib.jscript   - exception thrown: TypeError: $.FooBar is undefined at

Sometimes, especially during content development, it might be useful to log JavaScript debug information into the player.log - you can do that using the standard JavaScript alert() function or the jSignage loggers: debug, error, info, warn. You can also change the global logging level with the logAtLevel() function.

This page was last modified on 5 April 2024, at 11:59.