# Rotate display on Intel NUC

**URL:** <https://forums.balena.io/t/rotate-display-on-intel-nuc/4675>\
**Category:** Product support\
**Created:** [December 11, 2018, 4:45pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675 "2018-12-11T16:45:27Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![pzarfos](https://avatars.discourse-cdn.com/v4/letter/p/9e8a1a/32.png) [@pzarfos](https://forums.balena.io/u/pzarfos)\
**Post date:** [December 11, 2018, 4:45pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/1 "2018-12-11T16:45:27Z")

</div>

Has anyone been able to rotate the XWindows display 90 degrees using BalenaOS running on an Intel NUC NUC6CAYH?

I tried installing Clear Linux directly on the NUC and I can rotate the display without any problems, so I know it’s possible.

But when I try it using BalenaOS, the xrandr command returns this error: “Error of failed request: BadMatch (invalid parameter attributes)”

Since it can work in Clear Linux but not in BalenaOS, I think I’m missing a video driver, or Xorg config setting somewhere?

I tried the answers from this post, but that did not work for me:

> [@Rotating display on Intel NUC?](https://forums.balena.io/t/rotating-display-on-intel-nuc/563):
>
> Has anyone been able to successfully rotate the display and/or touchscreen with an Intel NUC running resin? Normally setting the rotation in xorg.conf would work but the intel drivers don’t seem to like it. Running xrandr -o right via ssh kinda works but Im unable to access the DISPLAY inside my start.sh script or Dockerfile so I havent been able to run that on start. Thoughts? Base: resin/nuc-node:6.9

Has anyone been able to rotate the display recently? If yes, can you share your Dockerfile, etc?

Thank you.

* * *

Here are some things I’ve tried, and some log info…

```
# DISPLAY=:0 xrandr -o left
X Error of failed request: BadMatch (invalid parameter attributes)
  Major opcode of failed request: 140 (RANDR)
  Minor opcode of failed request: 2 (RRSetScreenConfig)
  Serial number of failed request: 14
  Current serial number in output stream: 14

# DISPLAY=:0 xrandr -q
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1920 x 1080, current 1920 x 1080, maximum 1920 x 1080
default connected 1920x1080+0+0 0mm x 0mm
   1920x1080 0.00*

# journalctl | egrep 'VGA|HDMI'
Dec 11 16:24:30 7eb66d1 kernel: pci 0000:00:02.0: vgaarb: setting as boot VGA device
Dec 11 16:24:30 7eb66d1 kernel: pci 0000:00:02.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
Dec 11 16:24:30 7eb66d1 kernel: fb0: EFI VGA frame buffer device
Dec 11 16:24:30 7eb66d1 kernel: fb: switching to inteldrmfb from EFI VGA
Dec 11 16:24:30 7eb66d1 kernel: [drm] Replacing VGA console driver
Dec 11 16:24:30 7eb66d1 kernel: i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
Dec 11 16:24:30 7eb66d1 kernel: input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:0e.0/sound/card0/input12
Dec 11 16:24:30 7eb66d1 kernel: input: HDA Intel PCH HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:0e.0/sound/card0/input13
Dec 11 16:24:30 7eb66d1 kernel: input: HDA Intel PCH HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:0e.0/sound/card0/input14
Dec 11 16:24:30 7eb66d1 kernel: input: HDA Intel PCH HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:0e.0/sound/card0/input15
Dec 11 16:24:30 7eb66d1 kernel: input: HDA Intel PCH HDMI/DP,pcm=10 as /devices/pci0000:00/0000:00:0e.0/sound/card0/input16

# egrep 'VGA|HDMI' /var/log/Xorg.0.log
[7.870] (II) config/udev: Adding input device HDA Intel PCH HDMI/DP,pcm=3 (/dev/input/event10)
[7.871] (II) config/udev: Adding input device HDA Intel PCH HDMI/DP,pcm=7 (/dev/input/event11)
[7.871] (II) config/udev: Adding input device HDA Intel PCH HDMI/DP,pcm=8 (/dev/input/event12)
[7.871] (II) config/udev: Adding input device HDA Intel PCH HDMI/DP,pcm=9 (/dev/input/event13)
[7.872] (II) config/udev: Adding input device HDA Intel PCH HDMI/DP,pcm=10 (/dev/input/event14)

# lspci | egrep 'VGA|HDMI'
00:02.0 VGA compatible controller: Intel Corporation Device 5a85 (rev 0b)

```

---

<div class="post-metadata">

**Author:** ![thundron](https://sea2.discourse-cdn.com/balena/user_avatar/forums.balena.io/thundron/32/1379_2.png) [@thundron](https://forums.balena.io/u/thundron)\
**Post date:** [December 11, 2018, 6:54pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/4 "2018-12-11T18:54:02Z")

</div>

Hi there,  
Are you running it in the Host OS or in the application container?

---

<div class="post-metadata">

**Author:** ![pzarfos](https://avatars.discourse-cdn.com/v4/letter/p/9e8a1a/32.png) [@pzarfos](https://forums.balena.io/u/pzarfos)\
**Post date:** [December 11, 2018, 7:12pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/5 "2018-12-11T19:12:25Z")

</div>

I ran those commands in the application container.  
The application container is also where I did the “startx”, which runs a simple electron application.

---

<div class="post-metadata">

**Author:** ![thundron](https://sea2.discourse-cdn.com/balena/user_avatar/forums.balena.io/thundron/32/1379_2.png) [@thundron](https://forums.balena.io/u/thundron)\
**Post date:** [December 11, 2018, 7:32pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/6 "2018-12-11T19:32:32Z")

</div>

That should be fine then. Did you enable rotation for your device in the xorg.conf file? See [here](https://askubuntu.com/questions/86055/rotating-screen-90-degrees-clockwise) as an example.

---

<div class="post-metadata">

**Author:** ![pzarfos](https://avatars.discourse-cdn.com/v4/letter/p/9e8a1a/32.png) [@pzarfos](https://forums.balena.io/u/pzarfos)\
**Post date:** [December 11, 2018, 10:39pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/7 "2018-12-11T22:39:39Z")

</div>

Thank you for your help. No, I did not have the RandRRotation option. Based on that link, I added this section to my xorg.conf.d directory, but it is still not working:

```
Section "Device"
    Identifier "Default Device"
    Driver "i915"
    Option "RandRRotation" "on"
EndSection

```

Xorg.0.log file says this:

`[10069.838] (EE) Failed to load module "i915" (module does not exist, 0)`

so it didn’t like my choice of driver. I tried it by omitting the Driver directive, which let XWindows start, but I still was not able to rotate the screen. The ‘fbdev’ driver works, but does not let me rotate the screen.

This is why I thought it I should use the i915 driver:

```
# lspci -k | grep -EA3 'VGA|3D|Display|HDMI'
00:02.0 VGA compatible controller: Intel Corporation Device 5a85 (rev 0b)
        Subsystem: Intel Corporation Device 2067
        Kernel driver in use: i915

# lsmod | grep video
video 36864 1 i915
backlight 16384 2 video,i915

```

When I installed Clear Linux on the bare metal it used a radeon driver. But the radeon driver is not available in the BalenaOS installation either.

Is there more xorg.conf.d config files I’m missing, or am I using the wrong driver, or am I going down the wrong path? Do you have a small working example for the NUC?

---

<div class="post-metadata">

**Author:** ![shaunmulligan](https://sea2.discourse-cdn.com/balena/user_avatar/forums.balena.io/shaunmulligan/32/34_2.png) [@shaunmulligan](https://forums.balena.io/u/shaunmulligan)\
**Post date:** [December 11, 2018, 10:46pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/8 "2018-12-11T22:46:02Z")

</div>

Hi @pzarfos, I don’t have the hardware to test, but it might be possible to just install the driver in your userspace. What docker base image is your project using, if you are using a debian base image, you might be able to add the Radeon driver by following [https://wiki.debian.org/ATIProprietary#Drivers](https://wiki.debian.org/ATIProprietary#Drivers) . On ubuntu base images it might be even easier. I think it mainly just depends on identifying what hardware you have and installing the correct driver.

---

<div class="post-metadata">

**Author:** ![pzarfos](https://avatars.discourse-cdn.com/v4/letter/p/9e8a1a/32.png) [@pzarfos](https://forums.balena.io/u/pzarfos)\
**Post date:** [December 11, 2018, 11:42pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/9 "2018-12-11T23:42:50Z")

</div>

@shaunmulligan I am using  
`FROM resin/%%RESIN_MACHINE_NAME%%-node:8`  
which I believe translates to  
`FROM resin/intel-nuc-node:8`

---

<div class="post-metadata">

**Author:** ![zubairlk](https://sea2.discourse-cdn.com/balena/user_avatar/forums.balena.io/zubairlk/32/954_2.png) [@zubairlk](https://forums.balena.io/u/zubairlk)\
**Post date:** [December 13, 2018, 1:32pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/11 "2018-12-13T13:32:26Z")

</div>

Hi,

So video drivers and DRM are an interesting and confusing area.  
You need to get the kernel right, the kernel module inserted, the userspace driver installed, and xorg configured right.

Looks like the kernel in balenaOS for the NUC image does not have the kernel side for radeon enabled.

```auto
root@73468e6:~# cat /proc/config.gz | gunzip | grep -i DRM_RA 
# CONFIG_DRM_RADEON is not set
root@73468e6:~# 

```

I’m not sure how the radeon driver was being used when you ran clear linux. Does the NUC have a tiny AMD GPU in it? I thought they all came with Intel HD graphics. If it has an AMD GPU, can you use the different display port that is connected to Intel HD graphics. And would it be possible for you to try clear linux using the i915 or fbdev driver and not the radeon driver?

We do have i915 and fbdev should work as well.

```auto
root@73468e6:~# cat /proc/config.gz | gunzip | grep -i DRM_i915
CONFIG_DRM_I915=m
...

```

It is a module. So you’ll have to insert the module before trying to run xorg in your application. That should explain why you faced `[10069.838] (EE) Failed to load module "i915" (module does not exist, 0)`

```auto
root@73468e6:~# find /lib | grep i915
/lib/modules/4.14.48-yocto-standard/kernel/drivers/gpu/drm/i915
/lib/modules/4.14.48-yocto-standard/kernel/drivers/gpu/drm/i915/i915.ko
root@73468e6:~# 

```

I’m not entirely sure why the fbdev driver doesn’t rotate. It should.  
But perhaps the i915 driver is fine.

You’ll probably also need to install the userspace side of the driver.  
i.e. xserver-xorg-video-intel  
[https://packages.debian.org/sid/xserver-xorg-video-intel](https://packages.debian.org/sid/xserver-xorg-video-intel)

There is also the modesetting driver. That should work too.  
In fact, that is the more modern one and worth a try.  
Install the xserver-xorg-video-modesetting in your docker image. And use ‘modesetting’ in your xorg.conf.

Just to recap, you need to get the kernel right, the kernel module inserted, the userspace driver installed, and xorg configured right.

Various combinations  
Kernel: Radeon missing. Don’t try

Kernel i915, compiled with module flag. insert module. install xserver-xorg-video-intel in userspace for the driver. and configure xorg with i915

Kernel i915, compiled with module flag. insert module. install xserver-xorg-video-modesetting in userspace for the driver. and configure xorg with “modesetting” driver

fbdev should work too…

I hope I have given you enough to go on and not confused you more.

Thanks  
ZubairLK

---

<div class="post-metadata">

**Author:** ![pzarfos](https://avatars.discourse-cdn.com/v4/letter/p/9e8a1a/32.png) [@pzarfos](https://forums.balena.io/u/pzarfos)\
**Post date:** [December 13, 2018, 1:46pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/12 "2018-12-13T13:46:37Z")

</div>

Thank you for that detailed explanation. I will try your suggestions and let you know what works.

---

<div class="post-metadata">

**Author:** ![pzarfos](https://avatars.discourse-cdn.com/v4/letter/p/9e8a1a/32.png) [@pzarfos](https://forums.balena.io/u/pzarfos)\
**Post date:** [December 13, 2018, 5:57pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/13 "2018-12-13T17:57:06Z")

</div>

You were right… no radeon. When I installed Clear Linux, there were radeon and amd config files in the xorg.conf.d directory, and XWindows worked, but I’m not sure why it was there… just a red herring.

This is the actual video:  
intel: Driver for Intel® Integrated Graphics Chipsets:  
i810, i810-dc100, i810e, i815, i830M, 845G, 854, 852GM/855GM, 865G,  
915G, E7221 (i915), 915GM, 945G, 945GM, 945GME, Pineview GM,  
Pineview G, 965G, G35, 965Q, 946GZ, 965GM, 965GME/GLE, G33, Q35, Q33,  
GM45, 4 Series, G45/G43, Q45/Q43, G41, B43, HD Graphics,  
HD Graphics 2000, HD Graphics 3000, HD Graphics 2500,  
HD Graphics 4000, HD Graphics P4000, HD Graphics 4600,  
HD Graphics 5000, HD Graphics P4600/P4700, Iris™ Graphics 5100,  
HD Graphics 4400, HD Graphics 4200, Iris™ Pro Graphics 5200

I took your advice and tried the modesetting driver. That got me a lot closer. The screen does not rotate yet, but xrandr seemed a little happier.

Also, I added these packages:  
xserver-xorg-video-intel  
xserver-xorg-video-modesetting

Side note, these drivers did not work: intel, i915, fbdev. (this seems surprising to me, since it is an intel video, and i915 is loaded in the kernel module)

```
% lsmod | grep video
video 36864 1 i915
backlight 16384 2 video,i915

```

So with the modesetting driver, I used this for my 10-screen.conf file:

```
Section "Monitor"
    Identifier "Monitor0"
EndSection
Section "Device"
    Identifier "Device0"
    Driver "modesetting"
    Option "RandRRotation" "on"
EndSection
Section "Screen"
    Identifier "Screen0"  
    Device "Device0"
    Monitor "Monitor0"
    DefaultDepth 24 
    SubSection "Display"
        Depth 24
        Modes "1920x1080_60.00"
    EndSubSection
EndSection

```

And then xrandr -q gets me actual output instead of errors like before:

```
% DISPLAY=:0 xrandr -q
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
DisplayPort-0 connected 1920x1080+0+0 480mm x 270mm
   1920x1080 60.00*+ 50.00 59.94 60.05
   1920x1080i 60.00 50.00 59.94
   1680x1050 59.88
   1400x1050 59.95
   1600x900 60.00
   1280x1024 75.02 60.02
   1440x900 59.90
   1280x800 59.91
   1152x864 75.00
   1280x720 60.00 50.00 59.94
   1024x768 75.03 60.00
   800x600 75.00 60.32
   720x576 50.00
   720x480 60.00 59.94
   640x480 75.00 60.00 59.94
   720x400 70.08
DisplayPort-1 disconnected

```

However, I still cannot rotate the display. ☹

```
% DISPLAY=:0 xrandr -o left
X Error of failed request: BadMatch (invalid parameter attributes)
  Major opcode of failed request: 140 (RANDR)
  Minor opcode of failed request: 2 (RRSetScreenConfig)
  Serial number of failed request: 14
  Current serial number in output stream: 14

```

Can you give me any more suggestions?

Thank you.

---

<div class="post-metadata">

**Author:** ![zubairlk](https://sea2.discourse-cdn.com/balena/user_avatar/forums.balena.io/zubairlk/32/954_2.png) [@zubairlk](https://forums.balena.io/u/zubairlk)\
**Post date:** [December 14, 2018, 3:24pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/22 "2018-12-14T15:24:34Z")

</div>

Hi,

At least one step forward.  
Lets try to focus on the modesetting driver and try to get more debug info as to why this isn’t working. Searching on Google for that message returned too many things.

Can you check dmesg and xorg logs for any extra hints. And possibly start xorg with a debug flag to output more debugging info.

Also, there is a way to rotate via xorg.conf.  
Something like.

```auto
 Option "Rotate" "CCW"

```

Have you tried that?

Regards  
ZubairLK

---

<div class="post-metadata">

**Author:** ![zubairlk](https://sea2.discourse-cdn.com/balena/user_avatar/forums.balena.io/zubairlk/32/954_2.png) [@zubairlk](https://forums.balena.io/u/zubairlk)\
**Post date:** [December 14, 2018, 3:26pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/24 "2018-12-14T15:26:15Z")

</div>

also, can you try running the application container privileged and see if that helps

---

<div class="post-metadata">

**Author:** ![pzarfos](https://avatars.discourse-cdn.com/v4/letter/p/9e8a1a/32.png) [@pzarfos](https://forums.balena.io/u/pzarfos)\
**Post date:** [December 16, 2018, 10:23pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/26 "2018-12-16T22:23:51Z")

</div>

Still no success rotating the display.

I tried your suggestions:

- it is a single container, so I think that means it is running privileged.
- Option “Rotate” “CCW” # did not work ☹
- Option “Rotate” “left” # did not work either
- Option “AIGLX” “off” # I turned this off because logs said it would not load

Here are some parts of dmesg that seemed relevant:  
[3.981574] [drm] Memory usable by graphics device = 4096M  
[3.981580] checking generic (80000000 7f0000) vs hw (80000000 10000000)  
[3.981581] fb: switching to inteldrmfb from EFI VGA  
[3.981614] Console: switching to colour dummy device 80x25  
[3.982571] usbcore: registered new interface driver cdc\_acm  
[3.982575] cdc\_acm: USB Abstract Control Model driver for USB modems and ISDN adapters  
[3.987528] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded  
[3.988437] [drm] Replacing VGA console driver  
[3.988801] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).  
[3.988803] [drm] Driver supports precise vblank timestamp query.  
[3.988926] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem  
[3.990767] i915 0000:00:02.0: Direct firmware load for i915/bxt\_dmc\_ver1\_07.bin failed with error -2  
[3.990773] i915 0000:00:02.0: Failed to load DMC firmware [[https://01.org/linuxgraphics/downloads/firmware](https://01.org/linuxgraphics/downloads/firmware)], disabling runtime power management.  
…  
[4.043866] [drm] Initialized i915 1.6.0 20170818 for 0000:00:02.0 on minor 0  
[4.052398] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no)  
[4.061263] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input8  
[4.118983] r8169 0000:03:00.0 enp3s0: renamed from eth0  
[4.151687] snd\_hda\_intel 0000:00:0e.0: bound 0000:00:02.0 (ops i915\_audio\_component\_bind\_ops [i915])  
[4.154889] fbcon: inteldrmfb (fb0) is primary device  
[4.179789] snd\_hda\_codec\_realtek hdaudioC0D0: autoconfig for ALC283: line\_outs=2 (0x1b/0x21/0x0/0x0/0x0) type:hp  
[4.179792] snd\_hda\_codec\_realtek hdaudioC0D0: speaker\_outs=0 (0x0/0x0/0x0/0x0/0x0)  
[4.179794] snd\_hda\_codec\_realtek hdaudioC0D0: hp\_outs=0 (0x0/0x0/0x0/0x0/0x0)  
[4.179795] snd\_hda\_codec\_realtek hdaudioC0D0: mono: mono\_out=0x0  
[4.179797] snd\_hda\_codec\_realtek hdaudioC0D0: dig-out=0x1e/0x0  
[4.179799] snd\_hda\_codec\_realtek hdaudioC0D0: inputs:  
[4.179801] snd\_hda\_codec\_realtek hdaudioC0D0: Mic=0x19  
[4.179803] snd\_hda\_codec\_realtek hdaudioC0D0: Internal Mic=0x12  
[4.251878] Console: switching to colour frame buffer device 240x67  
[4.280791] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device  
[4.329820] Bluetooth: hci0: Intel Bluetooth firmware patch completed and activated  
[4.671412] EXT4-fs (sda3): mounted filesystem with ordered data mode. Opts: (null)  
[5.727348] [drm] RC6 on

Here are some parts of /var/log/Xorg.0.log that seemed relevant:  
[4863.210] (II) modesetting(0): RandR 1.2 enabled, ignore the following RandR disabled message.  
[4863.211] (==) modesetting(0): DPMS enabled  
[4863.211] (WW) modesetting(0): Option “RandRRotation” is not used  
[4863.297] (–) RandR disabled

Its weird that the log says “ignore the following RandR disabled message” and then “RandR disabled”. It does not say why. I could ignore it if xrandr worked.

The full logs are here: its a big ask, but if you could scan through them to see if you see anything wrong, I would appreciate your help.  
The full dmesg is here: [https://pastebin.com/mcbTk3Ye](https://pastebin.com/mcbTk3Ye)  
The full /var/log/Xorg.0.log is here: [https://pastebin.com/PkbqrXVV](https://pastebin.com/PkbqrXVV)

Alternately, this is my first Balena project, so I’m not married to my Dockerfile and base repo. Maybe I have gone way off track. If anybody has a working example of an Intel NUC that you can rotate the display, I’m all ears. (or eyes in this case)

Thanks!

---

<div class="post-metadata">

**Author:** ![shaunmulligan](https://sea2.discourse-cdn.com/balena/user_avatar/forums.balena.io/shaunmulligan/32/34_2.png) [@shaunmulligan](https://forums.balena.io/u/shaunmulligan)\
**Post date:** [December 25, 2018, 9:03pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/32 "2018-12-25T21:03:33Z")

</div>

hey @pzarfos , it looks like we need to investigate a bit more on this issue and probably try create a demo project on how to use X11 on balenaOS, so one of our team is gonna look into that over the coming days.

---

<div class="post-metadata">

**Author:** ![pzarfos](https://avatars.discourse-cdn.com/v4/letter/p/9e8a1a/32.png) [@pzarfos](https://forums.balena.io/u/pzarfos)\
**Post date:** [December 27, 2018, 1:06pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/34 "2018-12-27T13:06:35Z")

</div>

Actually I started with your resin-electronjs repo on github. Then i added xrandr to the apt-get. And then in start.sh i added the commands:  
sleep 3  
xrandr -o left

---

<div class="post-metadata">

**Author:** ![pdcastro](https://sea2.discourse-cdn.com/balena/user_avatar/forums.balena.io/pdcastro/32/1264_2.png) [@pdcastro](https://forums.balena.io/u/pdcastro)\
**Post date:** [December 27, 2018, 11:33pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/35 "2018-12-27T23:33:38Z")

</div>

Hi @pzarfos,  
I’m not sure this will be of much help, but I thought it wouldn’t hurt either:

- You have added _“Option “RandRRotation” “on””_ to your xorg.conf file, yet the xorg.log reads _“modesetting(0): Option “RandRRotation” is not used”._ I’ve found some web posts that suggest this may be relevant, specially the following post where a Nvidia support agent says that "[RandRRotation is not used] _because Canonical patches X to unconditionally disable rotation"._  
[https://devtalk.nvidia.com/default/topic/999654/linux/randr-rotation-doesn-t-work/](https://devtalk.nvidia.com/default/topic/999654/linux/randr-rotation-doesn-t-work/)  
I realise your chipset is not Nvidia, but they imply it was a Xorg issue rather than a chipset issue, so probably common to all chipsets.
- In that same post, someone added a comment _“The three Ubuntu-Bugs are marked as resolved by now. The issue however persists.”_ but they may have been using a Ubuntu release that did not include the patches. If you can, just for the purpose of testing screen rotation, I would suggest changing your Dockerfile base image to something like “FROM amd64/ubuntu:18.10” (or even 19.04), and see if the log messages still insist on “Option “RandRRotation” is not used”. I guess at least we would be ruling out a known-and-fixed Xorg bug.
- Also I would recommend adding the `--verbose` option to the `xrandr` command to see if it gives us any more clues, and maybe the `--output` option as well.
- Being a single container app, it’s most likely privileged as you said, but you could double check it in the [auto generated docker-compose.yml file](https://www.balena.io/docs/learn/develop/dockerfile/#using-dockerfiles-with-balena).

Regards,  
Paulo

---

<div class="post-metadata">

**Author:** ![curcuz](https://sea2.discourse-cdn.com/balena/user_avatar/forums.balena.io/curcuz/32/137_2.png) [@curcuz](https://forums.balena.io/u/curcuz)\
**Post date:** [January 7, 2019, 5:01pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/40 "2019-01-07T17:01:59Z")

</div>

Hi @pzarfos , I managed to rotate X11 output in the past on an UP squared device, which is also Intel based, running balena-electronJS.

What I did was creating a xinit config file and made sure in my Dockerfile that it gets copied in as `/root/.xinitrc` :

```auto
#!/usr/bin/env bash

 # Rotate screen 180°
xrandr -o inverted
# Start Electron
exec /usr/src/app/node_modules/electron/dist/electron /usr/src/app/ --enable-logging

```

then I had my start script (the bash script defined as CMD in my Dockerfile) executing `startx`

Hope it helps!

---

<div class="post-metadata">

**Author:** ![pzarfos](https://avatars.discourse-cdn.com/v4/letter/p/9e8a1a/32.png) [@pzarfos](https://forums.balena.io/u/pzarfos)\
**Post date:** [January 14, 2019, 8:13pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/42 "2019-01-14T20:13:56Z")

</div>

Success! The /root/.xinitrc method worked!

The key points were:

- Use a ubuntu image instead of just the base image
- Install ubuntu using non-interactive mode, so it does not prompt for a keyboard
- Rotate the display and start electronJS from .xinitrc
- I seem to recall that .xinitrc has to be an executable script
- Updated electronJS version to latest version in package.json

This is my /root/.xinitrc file:

```
#!/usr/bin/env bash
xrandr -o left
URL_LAUNCHER_WIDTH=1080 URL_LAUNCHER_HEIGHT=1920 exec /usr/src/app/node_modules/electron/dist/electron /usr/src/app/ --enable-logging

```

I had to explicitly set the width and height for electronJS.

This is the update I made to the “dependencies” section of my package.json file:

```
"dependencies": {
  "electron": "~4.0.1",
  "electron-rebuild": "^1.8.2",
  "lockfile": "^1.0.4"
},

```

This is my Dockerfile:

```
FROM resin/%%RESIN_MACHINE_NAME%%-ubuntu-node

# Install other apt deps
# Run the install in non-interactive mode
RUN apt-get update && \
  DEBIAN_FRONTEND=noninteractive \
  apt-get install -y --no-install-recommends \
  apt-utils \
  clang \
  xserver-xorg-core \
  xserver-xorg-input-all \
  xserver-xorg-video-fbdev \
  xorg \
  libxcb-image0 \
  ### Removed libxcb-util0 for ubuntu build
  ###libxcb-util0 \
  xdg-utils \
  libdbus-1-dev \
  libgtk2.0-dev \
  libnotify-dev \
  libgnome-keyring-dev \
  libgconf2-dev \
  libasound2-dev \
  libcap-dev \
  libcups2-dev \
  libxtst-dev \
  libxss1 \
  libnss3-dev \
  libsmbclient \
  libssh-4 \
  fbset \
  libexpat-dev \
  && rm -rf /var/lib/apt/lists/*

RUN echo "#!/bin/bash" > /etc/X11/xinit/xserverrc \
  && echo "" >> /etc/X11/xinit/xserverrc \
  && echo 'exec /usr/bin/X -s 0 dpms -nocursor -nolisten tcp "$@"' >> /etc/X11/xinit/xserverrc

# Move to app dir
WORKDIR /usr/src/app

# Move package.json to filesystem
COPY ./app/package.json ./

# Install npm modules for the application
RUN JOBS=MAX npm install --unsafe-perm --production && npm cache clean --force && \
  rm -rf /tmp/* && node_modules/.bin/electron-rebuild

# Move app to filesystem
COPY ./app ./

# Use .xinitrc to rotate the display and start electronJS
COPY ./xinitrc /root/.xinitrc
RUN chmod 755 /root/.xinitrc

## uncomment if you want systemd
ENV INITSYSTEM on

# Start app
CMD ["bash", "startx"]

```

I had to run startx from my Dockerfile.template, because when I ran it from another script without arguments, startx tried to run an xterm window, which failed. I would rather do the startx in a start.sh bash script, like the original examples, because it adjusts the shared memory and would run just the electronJS.

What was your startx command in your bash script?

---

<div class="post-metadata">

**Author:** ![pdcastro](https://sea2.discourse-cdn.com/balena/user_avatar/forums.balena.io/pdcastro/32/1264_2.png) [@pdcastro](https://forums.balena.io/u/pdcastro)\
**Post date:** [February 16, 2019, 12:17am UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/43 "2019-02-16T00:17:54Z")

</div>

@pzarfos, I’ve found that @curcuz had written an answer to your question about a month ago, but sadly it never reached the forums because of a sync problem in our support app. Here’s his answer:

This would be the Dockerfile.template:

```auto
FROM resin/%%RESIN_MACHINE_NAME%%-node:10

# Install other apt deps
RUN apt-get update &amp;&amp; apt-get install -y --no-install-recommends \
apt-utils \
clang \
xserver-xorg-core \
xserver-xorg-input-all \
xserver-xorg-video-fbdev \
xorg \
libxcb-image0 \
libxcb-util0 \
xdg-utils \
libdbus-1-dev \
libgtk2.0-dev \
libnotify-dev \
libgnome-keyring-dev \
libgconf2-dev \
libasound2-dev \
libcap-dev \
libcups2-dev \
libxtst-dev \
libxss1 \
libnss3-dev \
libsmbclient \
libssh-4 \
fbset \
libexpat-dev &amp;&amp; rm -rf /var/lib/apt/lists/*

# Configure X window server
RUN echo "#!/bin/bash" &gt; /etc/X11/xinit/xserverrc \
&amp;&amp; echo "" &gt;&gt; /etc/X11/xinit/xserverrc \
&amp;&amp; echo 'exec /usr/bin/X -s 0 dpms -nocursor -nolisten tcp "$@"' &gt;&gt; /etc/X11/xinit/xserverrc
COPY ./xinitrc /root/.xinitrc
COPY ./40-libinput.conf /usr/share/X11/xorg.conf.d/40-libinput.conf

# Move to app dir
WORKDIR /usr/src/app

# Move package.json to filesystem
COPY ./app/package.json ./

# Install npm modules for the application
RUN JOBS=MAX npm install --unsafe-perm --production &amp;&amp; npm cache clean --force &amp;&amp; \
rm -rf /tmp/* &amp;&amp; node_modules/.bin/electron-rebuild

# Move app to filesystem
COPY ./app ./

## uncomment if you want systemd
ENV INITSYSTEM on

# Start app
CMD ["bash", "/usr/src/app/start.sh"]

```

This would be the start.sh script:

```auto
#!/usr/bin/env bash

# By default docker gives us 64MB of shared memory size but to display heavy
# pages we need more.
umount /dev/shm &amp;&amp; mount -t tmpfs shm /dev/shm

# Remove any lockfiles leftover by a hard reset or shutdown
rm /tmp/.X0-lock &amp;&gt;/dev/null || true
rm /tmp/resin/resin-updates.lock &amp;&gt;/dev/null || true

# Start app
startx

```

This would be the xinitrc file:

```auto
#!/usr/bin/env bash

# Rotate screen 180°
xrandr -o inverted
exec /usr/src/app/node_modules/electron/dist/electron /usr/src/app/ --enable-logging

```

And this would be the 40-libinput.conf file:

```auto
Section "InputClass"
Identifier "libinput pointer catchall"
MatchIsPointer "on"
Option "CalibrationMatrix" "-1 0 1 0 -1 1 0 0 1"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection

Section "InputClass"
Identifier "libinput keyboard catchall"
MatchIsKeyboard "on"
Option "CalibrationMatrix" "-1 0 1 0 -1 1 0 0 1"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection

Section "InputClass"
Identifier "libinput touchpad catchall"
MatchIsTouchpad "on"
Option "CalibrationMatrix" "-1 0 1 0 -1 1 0 0 1"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection

Section "InputClass"
Identifier "libinput touchscreen catchall"
MatchIsTouchscreen "on"
Option "CalibrationMatrix" "-1 0 1 0 -1 1 0 0 1"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection

Section "InputClass"
Identifier "libinput tablet catchall"
MatchIsTablet "on"
Option "CalibrationMatrix" "-1 0 1 0 -1 1 0 0 1"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection

```

---

<div class="post-metadata">

**Author:** ![dansku](https://sea2.discourse-cdn.com/balena/user_avatar/forums.balena.io/dansku/32/1183_2.png) [@dansku](https://forums.balena.io/u/dansku)\
**Post date:** [March 19, 2019, 4:27pm UTC](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675/46 "2019-03-19T16:27:56Z")

</div>

@pzarfos

Just a quick note, but we have just released a blog post showing how to run an x11 desktop manager on the Pi or on other devices that would fit with what you were trying to do.

You can check it here: **[https://github.com/balena-io-playground/x11-window-manager](https://github.com/balena-io-playground/x11-window-manager)**

Cheers

[Next page](https://forums.balena.io/t/rotate-display-on-intel-nuc/4675.md?page=2)
