This article applies to all TeamViewer IoT users and requires TeamViewer client version 14 or higher.
General
TeamViewer's IoT remote screen feature allows a user to access the screen attached to a remotely accessed device with the TeamViewer IoT agent installed on it.
TeaViewer IoT currently enables screen grabbing in 3 ways
- By accessing the session of an X11 server
- By accessing the framebuffer
- By providing access of QT applications through an SDK which can be included in the app.
Access can be either read or write depending on the configuration. For framebuffer only read access is possible.
Note: To use this feature TeamViewer 14 or a higher version must be used to connect to the device
X11 Server
Connect with the TeamViewer client to the device and use Remote Terminal
Run these commands:
sudo apt update sudo apt install xvfb
Xvfb -ac :1 -screen 0 1280x1024x24 &
This will start virtual x with specified display parameters
For this command to run after the restart of the device you can add a crontab. From remote terminal run:
sudo nano /etc/crontab
add these lines:
#X virtual desktop
@reboot pi Xvfb -ac :1 -screen 0 1280x1024x24
After you write down the commands press Ctrl + X and input character Y to save the file and then hit enter.
Next, from remote terminal run:
export DISPLAY=:1
NOTE: If you logout from session the export DISPLAY=:1 command will be gone and you will have to execute the command again once you logged in. If you restart the device the process of virtual X will be lost and must be executed again once logged in.
To always run the command from remote terminal:
sudo nano /home/pi/.bashrc
add these lines:
#run export display
export DISPLAY=:1
After you write down the commands press Ctrl + X and input character Y to save the file and then hit enter.
From command line add:
sudo teamviewer-iot-agent configure set EnableRemoteScreen 1 sudo teamviewer-iot-agent configure set RemoteScreenChannels \"X11\" sudo reboot
NOTE: If the server has multiple displays, you must specify display number and user like this:
RemoteScreenChannels = \"X11:1:root\"
X11 - protocol
1 - display number
root - user
Example accessing the Firefox browser with X11 grabbing
Open the TeamViewer client and select Remote Terminal
Install Mozilla Firefox using this command:
sudo apt-get install firefox-esr
Then from remote terminal run:
/usr/bin/firefox www.teamviewer.com
In the TeamViewer client click on Remote control and here you will see Mozilla Firefox with the teamviewer.com website open.
Accessing the Framebuffer
In the TeamViewer client connect to the device and use Remote Terminal
You have to find the number of framebuffer therefore enter this command:
ls /dev/ | grep fb
In this example, our framebuffer is fb0
Then, from command line add:
sudo teamviewer-iot-agent configure set EnableRemoteScreen 1 sudo teamviewer-iot-agent configure set RemoteScreenChannels \"FBD:/dev/fb0\" sudo teamviewer-iot-agent restart sudo reboot
Note: fb number could be different, so please check with the command above
To test it, open the TeamViewer client, select your device click on Remote control and here you will see the desktop interface of the Raspberry.
Note: framebuffer only read access is possible so, you will not get control of the desktop using mouse or keyboard
Note: If you want use framebuffer grabbing on a Raspberry Pi 4 follow the extra steps .
Run from Remote terminal:
sudo nano /boot/config.txt
Go down until you found this line dtoverlay=vc4-kms-v3d and add # in front of them
Logo positioning
When using X11 in the channel definition a logo is shown when a remote control is running as user feedback. This is done to prevent that a user is being monitored without his notice.
To configure the placement of the logo you will have to modify the global.conf using the steps above and add this:
Valid values are:
- TopLeft
- TopRight
- BottomRight
- BottomLeft
Data protection
To avoid that users can be surveilled without being notified the following measurements have been implemented
- An icon is shown in grabbed X11 and framebuffer sessions
- For QT applications TeamViewer's EULA requires that this being handled by the application TeamViewer's Remote screen is implemented
- In X11 session only non-users sessions can be grabbed, also login screens are not shown