Home / Using our USB Displays with the Raspberry Pi 3

We suggest using Mimo HDMI displays for Raspberry Pi since they are plug and play.  However, there are times when USB displays are preferred AND it is possible to use multiple monitors with the Raspberry Pi by connecting both a USB display and an HDMI Display.


Using the RPi 3 with USB Displays is now much easier as the required Kernel components are part of the stock build. You should find that plugging in a Mimo Display into a RPI3 running the latest RASPBIAN build should turn solid green. This is a sign that the display is recognized, and the driver loaded. The green says that Raspbian doesn't know what to display on it, so these changes below will address that.

Use the following instructions to set up the Raspberry Pi 3 (RPi3) Model B for operation with:

(a) a MIMO touchscreen unit with resolution 1280x800

(b) an HDMI monitor with resolution 1920x1080

(c) the MIMO unit positioned to the left of the HDMI monitor.

Go to directory /ETC/X11 and, using your preferred editor, create a file entitled: xorg.conf. This file can be used to enable the MIMO touchscreen to work with the RPi3 in standalone mode, i.e. without the HDMI monitor. Note that with respect to all instructions that follow, it may be necessary to modify read, write, and execute permissions on folders and files that you intend to create or modify. You may also need to modify permissions on folders that contain files that you intend to modify. This can be done using the “sudo chmod a+rwx filename” commands from the command prompt.

For the two-monitor configuration, copy and paste these changes to xorg.conf as follows:

Section "Device"
Identifier "FBDEV 0"
Driver "fbdev"
Option "fbdev" "/dev/fb0"

Section "Device"
Identifier "FBDEV 1"
Driver "fbdev"
Option "fbdev" "/dev/fb1"

Section "Screen"
Identifier "HDMI"
Device "FBDEV 0"
Monitor "Monitor name 0"

Section "Screen"
Identifier "UGA"
Device "FBDEV 1"
Monitor "Monitor name 1"

Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "HDMI"
Screen 1 "UGA" LeftOf "HDMI"
(** end of copy and paste section ** Do not include this line **)

Reboot and verify that the screen display (background, wallpaper, etc) is the same on both displays.

The next step is to size the touchscreen parameters for the resolution of the MIMO. For specific information regarding the sizing and calibration of touchscreens in Linux systems, go to https://wiki.archlinux.org/index.php/Calibrating_Touchscreen.

Invoke the Linux command prompt, then type:

$ xinput list

In the device list that appears, you will find a text string that identifies the touchscreen device, e.g.:

| -> MultimediaLink .. SiS HID Touch Controller id=6 [slave pointer (2)]

At the command prompt, type the following command with the name of the touchscreen identifier in double quotes, e.g.:

$ xinput list-props "MultimediaLink .. SiS HID Touch Controller"

In the list of properties that appears, you will find a default coordinate transformation matrix, e.g.:

Coordinate Transformation Matrix (115): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000

Refer to the definitions of parameters C0, C1, C2, and C3 at the "Calibrating_Touchscreen" website cited earlier. For this combination of touchscreen and HDMI monitor, the total width of the two displays is (1280+1920) = 3200. Hence the calculation for parameter C0 that applies to the touchscreen alone is 1280/3200 = 0.4. Similarly, the greater height of the two displays is 1080. Hence the calculation for parameter C2 that applies to the touchscreen alone is 800/1080 = 0.741. With the touchscreen in the left hand position, the x-y coordinates for the touch offsets are (0,0), so parameters C1 and C3 remain 0.

The coordinate transformation matrix to be applied to this combination of touchscreen and HDMI monitor then becomes:

Coordinate Transformation Matrix (115): 0.400000, 0.000000, 0.000000, 0.000000, 0.741000, 0.000000, 0.000000, 0.000000, 1.000000

At the command prompt, type the following command:

$ xinput set-prop "MultimediaLink .. SiS HID Touch Controller" --type=float "Coordinate Transformation Matrix" 0.4 0 0 0 0.741 0 0 0 1

Verify that the cursor on the touchscreen closely follows a stylus or your finger as you tap various points. Also verify that you can tap and drag a select box on the touchscreen. Neither action should move the cursor onto the HDMI monitor.

Go to directory /USR/SHARE/X11/XORG.CONF.D and open file 40-LIBINPUT.CONF with your preferred editor. Back up the original 40-LIBINPUT.CONF as 40-LIBINPUT_ORIG.CONF. Then insert the following text at the end of the file and save changes to 40-LIBINPUT.CONF. Note that this addition is specific to vendor "MultimediaLink", identifier "SiS HID Touch Controller", and the coordinate transformation matrix calculated for this combination of devices.

Section "InputClass"
Identifier "SiS HID Touch Controller libinput catchall"
MatchVendor "MultimediaLink"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
Option "TransformationMatrix" "0.4 0 0 0 0.741 0 0 0 1"
Option "EmulateThirdButton" "1"
Option "EmulateThirdButtonTimeout" "750"
Option "EmulateThirdButtonMoveThreshold" "30"


Reboot and verify that the operation of the touchscreen and HDMI monitor is the same as before.