Devices
The Devices tab lists every screen linked to your company.
List columns
| Column | Meaning |
|---|---|
| Status | Green / red icon depending on whether the agent has recently heart-beat |
| Name / ID | Device_USERNAME_RDSXXXX and its short RDSXXXX code |
| Company / branch | Who owns it and where it is |
| Playlist status | "Downloading", "Download finished", "Playing", "Not started" (tooltip on hover) |
| Last heartbeat | Last time the agent talked to the server |
| Coverage | Connection quality reported by the agent (where applicable) |
| Actions | Dropdown menu with operations |
Filters
By company, branch, date, or free text (searches name, RDSXXXX, location, department). Filters persist as you navigate.
"Actions" menu
Each row has two dropdowns:
Actions (user)
- Edit kiosk — Web/Playlist mode, home URL, whitelist, admin password. Detail.
- Send message to support — files an incident.
- Logs — shows the agent's latest logs. Useful for diagnostics.
- Screenshot — asks the device for a JPEG capture of what it is showing. Opens a modal with a spinner; within ≤60 s the image appears inside the dialog and is saved to the device card. If the device is offline, the request stays pending and uploads when it returns. Detail.
- Edit — name, location, company/branch, notes.
- Unlock token — only appears when the communication token has been locked after repeated failed attempts.
- Delete — removes the device from the plan (frees the slot).
Admin (Promotienda only)
Internal support actions: manual enable/disable, withdraw, connect, attend incident, etc.
Adding a device
"+ Add" button in the top-right.
- If your plan has free slots, the device is created immediately at no cost.
- If not, the system asks you to expand the plan: pay the proration with your card and both the new slots and the devices get created.
- You receive a confirmation email with the list of created IDs and, if there was a payment, the PDF invoice attached.
Important: a newly created device exists only in the panel. To play content you need to install the agent on the hardware and pair it with the assigned ID. If you bought the device from Promotienda this is already done.
Buying a device
"Buy device" button. Opens the catalogue with the option to ship directly to your premises with the playlist and WiFi preconfigured. Includes 1 year of free RDS licence.
Shipment status
When you buy devices from the catalogue, during the shipping period they appear with a "Shipment pending" label and the user actions are disabled. Promotienda marks them as shipped when they leave the warehouse — at that point the actions re-enable and you receive a notification email.
Device card information
Hovering over a device opens a card with its real-time data. Relevant rows:
| Row | Meaning |
|---|---|
| IP | Last public IP seen by the server |
| Version | Installed agent version (EOL badge if below the minimum supported: 2.0.0 on Android, 1.0.0 on Linux) |
| Coverage | Connection quality reported by the agent |
| Model | Hardware model. Android: Build.DEVICE (e.g. emu64xa, RMX2061). Linux: DMI name (VirtualBox, ThinkPad X1, etc.) |
| Android | Android version (Android agents only) |
| OS | OS distribution and version (Linux agents only, read from /etc/os-release. E.g.: Debian GNU/Linux 13 (trixie)) |
| Uptime | Time since last boot. Useful for spotting unexpected reboots |
| Last heartbeat | Time of the last heartbeat received |
The Android agent uses
SystemClock.elapsedRealtime()(includes deep-sleep time). The Linux agent reads/proc/uptime.
Screenshots
From Actions → Screenshot you can ask the device for a JPEG of what it is showing on screen at that moment. Works on Android and Linux.
How it works
- Pressing the option opens a modal dialog with a spinner and the message "Screenshot requested. Waiting for device…". The grey counter shows elapsed seconds.
- The server marks the request (
screenshot_pending=1) and injects it as a flag in the next heartbeat response to the agent (≤ 60 s). - The agent:
- Linux captures with
scrotfrom display:0(everything visible, including the WebKit browser of kiosk mode or the playlist player). - Android captures with
PixelCopythe foreground Activity window (PlayerActivityorKioskBrowserActivity). This includes GPU-accelerated WebView/Surface content.
- Linux captures with
- The JPEG (quality 70, ~150-400 KB typical) is signed with HMAC-SHA256 v2 and POSTed to
/suport/upload_screenshot.php. - The server verifies the signature, saves the image as
/screenshots/<num_serie_gprs>.jpg(always only one image per device, overwritten), clears the flag and stampsscreenshot_at. - The dialog, polling every 4 s, detects the new image and replaces the spinner with a clickable preview (opens the original image in a new tab).
Timing and retries
- Under normal conditions, the image appears in 5–60 s.
- If the device is off, has no network, or the agent is stopped, the dialog times out at 120 s and shows: "Device did not respond in time. The request stays pending — if it comes back online the image will be uploaded." The request is not cancelled: the moment the agent next heartbeats, it picks up the flag and uploads the image. You only need to refresh the device card to see it.
- On Android, capture only happens while the kiosk Activity is in the foreground (
onResume). If the device is locked or showing another app, the capture waits for the next return to the kiosk.
Privacy and permissions
- Only users with Management > Devices > Modify permission (or Admin > Devices > Create) can request captures.
- The image is served only through the panel and tied to the device's
num_serie_gprs. There is no public endpoint to list them. - Each new capture overwrites the previous one — only the most recent is kept.
Viewing the image later
If you close the dialog, the last capture is still accessible:
- In the device card (click the name or the ID) there is a "Screenshot" section with the image and the date/time it was taken.