MagicMirror² v2.11.0 is available! For more information about this release, check out this topic.

Strip Down Guide for BenQ 28" VA Monitor GC2870H

  • @yep_dd Same here for passive heat sink and usage. I just placed an old 40mm/12V fan in front of the Pi which runs at 5V. It’s hard to hear in an absolute silent environment. I’ve noticed crashes during the hot period in summer, that’s why I use a fan now and it generall runs smoother. I think at some points the Pi got hot enough to throttle.

  • @madscientist that is true… good idea, I have one 5V 40mm fan as spare. Just one question, are you using your MM in portrait or landscape mode?

  • I use it in portrait mode.

  • @madscientist my experience is that in portrait the performance is almost unusable since everything is copied and rotated and I now decided to go landscape.

  • Hi guys,

    just an update on the mirror. Finally the glas has arrived. I am very happy with the quality and the 50mm edge that has been painted black. There were a few stains on the backside which I had to clean manually.

    Overall I am pretty satisfied with the results, but I have to change a few things:

    What I am happy with:

    • quality of glass (polished and round edges)
    • Monitor appearance
    • aluminimum frame and design (even though it needs to be changed, see below)
    • sound quality
    • The quality of the double-sided tape (seems like this is minor, but it is so strong I have no doubt it will hold the glass)

    What needs to be changed:

    • I changed the PIR Sensor to a radar sensor (RCWL-0516) which works flawlessly behind the glass
    • The wooden white background reflects too much sunlight during daytime so I have to get a black one
    • The Nielsen frame is 50mm too large. The reason behind that is that they measure the inner length but since I put the mirror on the outside it is 50mm longer. It does look okay, but I want the frame to be more inset. So if anyone wants a Nielsen frame for their project. I give mine away for free or a few € whatever you feel is appropriate it measures 95cmx75cm and can be shipped in small pieces and has the high quality double sided tape attached. I could have also gotten a bigger mirror, but obviously that is too expensive
    • the cheap capacitive Sensors from amazon don’t work well behind the glas so I am now getting these MT0.1N-NR. The datasheet looks promising, of course 10x more expensive…

    A few impressions:

    The package came very well shipped:

    I initially fixed the monitor with duct tape to see if I was happy with the position, you can nicely see the 50mm painted edges:

    First test:

    I think the quality of the monitor at night is amazing:
    Even from a steeper angle the backlight is barely visible:

  • Are you sure the touch sensor works behind the mirror? It’s pretty expensive and it would be a pity if it doesn’t. Touch-anything generally doesn’t work behind the mirror because of the metallic coating.

    What mirror are you using and where did you get it from? I am still looking for a better alternative for mine. Not very happy with the transmission of only 8%.

  • @madscientist that is what I am afraid of as well, the metal coating sure does not help… but worst case I will put them on the aluminum frame below from the outside and a nice cover on top

    I got the mirror from here:

  • @madscientist you were right, it does not work well behind the mirror. I will keep the sensor anyway as the way it is designed it is easier to affix to my aluminum frame. I am now thinking of getting small black plexiglas casing to attach to the bottom part to control the mirror and make it look nice… let’s see.

    So this could be the plan:

    • Plexiglas with Cutout letters

    • behind that translucent plexiglas

    • glue together

    • LED Strip on top of translucent glas to illuminate the cutout letters

    • enjoy?

  • I am just going to follow up on that, I found a different solution. I am using a HUE Dimmer Switch that is controlled via FHEM and it controls a python script running on MagicMirror to play my podcast and change the volume:

    (I found that script somewhere on github and modified it a bit)

    #!/usr/bin/python3 -u
    host_name = '' 
    host_port = 8000
    import RPi.GPIO as GPIO
    import os
    import subprocess
    import signal
    from subprocess import call
    from time import sleep
    from http.server import BaseHTTPRequestHandler, HTTPServer
    class MyServer(BaseHTTPRequestHandler):
        def do_HEAD(self):
            self.send_header('Content-type', 'text/html')
        def do_GET(self):
            global proc
            html = '''
               <h1>Magic Mirror Control</h1>
               <p>Current GPU temperature is {}</p>
               <p>Podcast: <a href="/play">Play</a> <a href="/stop">Stop</a></p>
               <p>Volume: <a href="/down">down</a> <a href="/up">up</a></p>
               <p>System: <a href="/shutdown">Shutdown</a> <a href="/restart">Restart</a></p>
            temp = os.popen("/opt/vc/bin/vcgencmd measure_temp").read()
            status = ''
            if self.path=='/':
            elif self.path=='/play':
                proc = subprocess.Popen(["omxplayer", "-o", "alsa:hw:ALSA", "--no-osd", "/tmp/video.mp4"], preexec_fn=os.setsid)
                status='Playing Podcast'
            elif self.path=='/stop':
                status='Stopping Podcast'
                os.killpg(os.getpgid(, signal.SIGTERM)
            elif self.path=='/shutdown':
                subprocess.Popen(["sudo", "shutdown", "-h", "now"], preexec_fn=os.setsid)
            elif self.path=='/restart':
                subprocess.Popen(["sudo", "reboot"], preexec_fn=os.setsid)
            elif self.path=='/down':
                status='Volume down'
                subprocess.Popen(["amixer", "set", "Master", "12%-"], preexec_fn=os.setsid)
            elif self.path=='/up':
                status='Volume up'
                subprocess.Popen(["amixer", "set", "Master", "12%+"], preexec_fn=os.setsid)
            self.wfile.write(html.format(temp[5:], status).encode("utf-8"))
    if __name__ == '__main__':
        http_server = HTTPServer((host_name, host_port), MyServer)
        print("Server Starts - %s:%s" % (host_name, host_port))
        except KeyboardInterrupt:

  • Hello,

    Would it be possible to use a relay to power/unpower the screen ? On the sheet you show pin 3/4 power the backlight correct?


Log in to reply