You are currently viewing Using Android/PC as a Second Monitor in Linux
Android as Secondary Display

Using Android/PC as a Second Monitor in Linux

Using second monitor is a cool thing that eliminates the burden of changing windows. Windows 10 have already this feature builtin and it is wireless. There are also bunch of apps available to do these things. But with Linux it seems little hard if you don’t know how to do. So here is the few commands that makes it possible to use any Android devices or Windows or Linux PC as a wireless secondary monitor. However Android can be also connected using a data cable.

And the result will look like above. Image Source

Before starting make sure you have VNC server (x11vnc) installed. To check you can try simply running x11vnc.

x11vnc

You can install tightvnc if VNC server is not already installed.

First of all you need to find the resolution of the device you want to use as secondary display. For example let’s use an Android device of 1280×720 resolution and the PC has 1366×768 resolution.

Then we need to know available displays and outputs ports.

xrandr

The output was;

Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192 eDP-1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm 1366x768 60.00*+ 48.01 1280x720 60.00 59.99 59.86 59.74 1024x768 60.04 60.00 960x720 60.00 928x696 60.05 896x672 60.01 1024x576 59.95 59.96 59.90 59.82 960x600 59.93 60.00 960x540 59.96 59.99 59.63 59.82 800x600 60.00 60.32 56.25 840x525 60.01 59.88 864x486 59.92 59.57 700x525 59.98 800x450 59.95 59.82 640x512 60.02 700x450 59.96 59.88 640x480 60.00 59.94 720x405 59.51 58.99 684x384 59.88 59.85 640x400 59.88 59.98 640x360 59.86 59.83 59.84 59.32 512x384 60.00 512x288 60.00 59.92 480x270 59.63 59.82 400x300 60.32 56.34 432x243 59.92 59.57 320x240 60.05 360x202 59.51 59.13 320x180 59.84 59.32 HDMI-1 disconnected (normal left inverted right x axis y axis)
Code language: CSS (css)

Here my current display is eDP-1 and unused output port is HDMI-1.

First of all we need to create a new mode for the secondary monitor. For this we need some extra information which can be found using;

gtf 1280 720 60

Which gives VESA GTF mode lines for 1280×720 @ 60 fps. This results;

# 1280x720 @ 60.00 Hz (GTF) hsync: 44.76 kHz; pclk: 74.48 MHz Modeline "1280x720_60.00" 74.48 1280 1336 1472 1664 720 721 724 746 -HSync +Vsync
Code language: CSS (css)

Now let’s add a new mode for our Android device.

xrandr --newmode "1280x720_60.00" 74.48 1280 1336 1472 1664 720 721 724 746 -HSync +Vsync
Code language: CSS (css)

Now let’s add this new mode to the unused display. HDMI-1 for this case.

xrandr --addmode HDMI-1 1280x720_60.00
Code language: CSS (css)

Now let’s enable HDMI-1 and move it to the right of the default display (eDP-1). After this mouse cursor can be moved to right side more than your default display allows. It is because we are adding 1280×720 to the right side of eDP-1.

xrandr --output HDMI-1 --mode 1280x720_60.00 --right-of eDP-1
Code language: CSS (css)

The final step is to start VNC server and only allow to show the right portion of the screen which can’t be seen in default display.

x11vnc -clip 1280x720+1366+0

It clips the 1366 pixels (width) of your total screen (1366+1280) and shows the only remaining (which we can not see now) screen of the right side.

Now you need to connect your Android or PC using VNC viewer. To do so you need an IP and port. To find IP run;

ip a

In my case it is 192.168.1.67. The default port in VNC is 5900 unless you changed it.

For Android you can use MultiVNC or for Windows you can use RealVNC. RealVNC is also available for Mac, Linux or other distro.

To exit xrandr,

xrandr --output HDMI-1 --off

You can get more information from here – https://bbs.archlinux.org/viewtopic.php?id=191555

This Post Has 18 Comments

  1. Filipe

    the picture is showing a Ipad, if I’m not wrong, so the same setup works for Ipad as well?

    1. Sangam

      Yes, it works. Extra thing you need to do is find a VNC app like android.

  2. Mike

    everything worked up to : xrandr –addmode DP-3 1920x1200_60.00
    i got :
    X Error of failed request: BadMatch (invalid parameter attributes)
    Major opcode of failed request: 140 (RANDR)
    Minor opcode of failed request: 18 (RRAddOutputMode)
    Serial number of failed request: 43
    Current serial number in output stream: 44

    1. Sangam

      Why you tried with DP-3 instead of HDMI-1?

      1. Mike

        hdmi-0 gives me the same error, and i dont have a hdmi-1 so it gives me,
        xrandr: cannot find output “HDMI-1”

      2. Mike

        Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 32767 x 32767
        DP-0 disconnected (normal left inverted right x axis y axis)
        DP-1 disconnected (normal left inverted right x axis y axis)
        HDMI-0 disconnected (normal left inverted right x axis y axis)
        DP-2 connected primary 2560×1440+0+0 (normal left inverted right x axis y axis) 697mm x 392mm
        2560×1440 99.95*+ 59.95
        1920×1080 60.00 59.94 50.00
        1680×1050 59.95
        1600×900 60.00
        1440×900 59.89
        1280×1024 75.02 60.02
        1280×800 59.81
        1280×720 60.00 59.94 50.00
        1152×864 75.00
        1024×768 75.03 70.07 60.00
        800×600 75.00 72.19 60.32 56.25
        720×576 50.00
        720×480 59.94
        640×480 75.00 72.81 59.94
        DP-3 disconnected (normal left inverted right x axis y axis)
        DP-4 disconnected (normal left inverted right x axis y axis)
        DP-5 disconnected (normal left inverted right x axis y axis)
        USB-C-0 disconnected (normal left inverted right x axis y axis)
        —————————————————————————
        gtf 1920 1200 60
        # 1920×1200 @ 60.00 Hz (GTF) hsync: 74.52 kHz; pclk: 193.16 MHz
        Modeline “1920x1200_60.00” 193.16 1920 2048 2256 2592 1200 1201 1204 1242 -HSync +Vsync
        ————————————————————————————
        xrandr –newmode “1920x1200_60.00” 193.16 1920 2048 2256 2592 1200 1201 1204 1242 -HSync +Vsync
        ————————————————————————————
        xrandr –addmode DP-3 “1920x1200_60.00”
        X Error of failed request: BadMatch (invalid parameter attributes)
        Major opcode of failed request: 140 (RANDR)
        Minor opcode of failed request: 18 (RRAddOutputMode)
        Serial number of failed request: 43
        Current serial number in output stream: 44

  3. Ashwani

    How to revert back to original setting?? There is a lot of empty space in Right side which is extended. My cursor goes away when moved in right side.

    1. Sangam

      xrandr –output HDMI-1 –off

  4. Arash

    Hi. At the end, for connecting the linux PC and the Android tablet using VNC, do we need them to be in a local network necessarily? Is it possible to connect them via USB?

    1. Sangam

      Yes it need to be in same local network.

  5. Priyesh

    This is a genius use of VNC. Thank you for the article.

  6. Lore

    When I arrived to
    “xrandr –output Virtual2 –mode 2560x1600_60.00 –right-of Virtual1”
    I got:
    “X Error of failed request: BadMatch (invalid parameter attributes)
    Major opcode of failed request: 141 (RANDR)
    Minor opcode of failed request: 7 (RRSetScreenSize)
    Serial number of failed request: 56
    Current serial number in output stream: 57”
    Thanks!

  7. Harish

    xrandr –output HDMI-1 –mode 1280x720_60.00 –right-of eDP-1
    at this point i am getting an error saying
    xrandr: Configure crtc 1 failed
    and when i started x11vnc server ignoring the above error , i am just able to mirror my primary screen
    is it possible to extend ?

    1. Pra

      Exactly the same problem. Instead of extending it is mirroring. Any help is appreciated

    1. Sangam

      I don’t know the original source since I din’t copy pasted from this wiki. But one of my friend showed me this and I googled a little bit and made this article. But anyway if that is the original source there is no harm of crediting for their effort. Thank you for your suggestion.

  8. Aran

    I have done it and it works, but my (KDE plasma) display does not show anything but a blank screen (Normall VNC connectins with the same software works)

Leave a Reply