MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    IR Touch Frame calibration

    Scheduled Pinned Locked Moved Hardware
    17 Posts 8 Posters 13.4k Views 9 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C Offline
      cantthink
      last edited by

      Could you not change the rotation of the display to be portrait to match the monitor and calibrate as normal?

      1 Reply Last reply Reply Quote 0
      • C Offline
        cyberphox
        last edited by

        The IR touch frame works without software with the Pi by just plugging it in…but it thinks it’s always in landscape mode. Wondering if there is a piece of calibration software as there is for windows to calibrate it for portrait

        Full time Dad, DJ and entertainer and lover of technology.

        1 Reply Last reply Reply Quote 1
        • cowboysdudeC Offline
          cowboysdude Module Developer
          last edited by

          I haven’t used or needed any calibration software for mine… it just works :)

          ? 1 Reply Last reply Reply Quote 0
          • ? Offline
            A Former User @cowboysdude
            last edited by

            @cowboysdude But somebody might have bigger mirror and frame than real screen size, and his touch-solution should be upon the mirrorglass. In that case he need calibration to adjust.

            1 Reply Last reply Reply Quote 0
            • C Offline
              cyberphox
              last edited by

              actually for some reason it is now working!

              Full time Dad, DJ and entertainer and lover of technology.

              peemoellerP 1 Reply Last reply Reply Quote 0
              • peemoellerP Offline
                peemoeller @cyberphox
                last edited by peemoeller

                @cyberphox I just purchased the IR Touch Frame for my MagicMirror but can’t change it from Landscape to Portrait. How did you manage to calibrate yours? I have a 40" frame. Any help appreciated!

                1 Reply Last reply Reply Quote 0
                • C Offline
                  cyberphox
                  last edited by

                  Xinput calibrator should help

                  Full time Dad, DJ and entertainer and lover of technology.

                  peemoellerP 1 Reply Last reply Reply Quote 0
                  • peemoellerP Offline
                    peemoeller @cyberphox
                    last edited by

                    @cyberphox thanks! Are you able to point me on how to make the adjustments? I have xinput installed but not sure where to go from here.
                    Thanks for your help!

                    1 Reply Last reply Reply Quote 0
                    • C Offline
                      cyberphox
                      last edited by

                      run the calibration from the menu…touch the points and that’s it!

                      Full time Dad, DJ and entertainer and lover of technology.

                      peemoellerP 1 Reply Last reply Reply Quote 0
                      • peemoellerP Offline
                        peemoeller @cyberphox
                        last edited by peemoeller

                        @cyberphox Hi there, ok! I now managed to get my IR Touch Overlay set to portrait! also just finished running the xinput touch calibrator program under ‘Preferences’ (it had me touch the 4 red crosses). It shows:

                        < Calibrating standard Xorg driver “Multi touch overlay device” current calibration values: min_x=0, max_x=65535 and min_y=0, max_y=65535
                        If these values are estimating wrong, either supply it manually with the - -precalib option, or run the ‘get_precalib.sh’ script to automatically get it (through HAL). >

                        My issue, I find the curser doesn’t reach the the edges of my monitor. Example I can’t simply click on the Raspberry Icon in the corner. The curser is diaginally 2 inches away? I have a 42 inch IR Touch Overlay using a 32 inch LCD monitor.

                        Where can I set or adjust this? Any thoughts?

                        Fun!

                        K 1 Reply Last reply Reply Quote 0
                        • K Offline
                          klimbo @peemoeller
                          last edited by

                          @peemoeller said in IR Touch Frame calibration:

                          @cyberphox Hi there, ok! I now managed to get my IR Touch Overlay set to portrait! also just finished running the xinput touch calibrator program under ‘Preferences’ (it had me touch the 4 red crosses). It shows:

                          < Calibrating standard Xorg driver “Multi touch overlay device” current calibration values: min_x=0, max_x=65535 and min_y=0, max_y=65535
                          If these values are estimating wrong, either supply it manually with the - -precalib option, or run the ‘get_precalib.sh’ script to automatically get it (through HAL). >

                          My issue, I find the curser doesn’t reach the the edges of my monitor. Example I can’t simply click on the Raspberry Icon in the corner. The curser is diaginally 2 inches away? I have a 42 inch IR Touch Overlay using a 32 inch LCD monitor.

                          Where can I set or adjust this? Any thoughts?

                          Fun!

                          i ask the same question my bro

                          1 Reply Last reply Reply Quote 0
                          • B Offline
                            Bruno
                            last edited by

                            @klimbo said in IR Touch Frame calibration:

                            mple I can’t simply click on the R

                            So, has anyone found a solution for this?
                            I have a 32 inches mirror (and 32 inches touch frame) in a 18 inches screen. Since the touchframe is bigger than the screen i couldn’t find a way to calibrate it to just work on the 18 inches screen area (as I do when I calibrate it on Windows).

                            Does anyone have any thoughts on how to do this?

                            Thanks.

                            1 Reply Last reply Reply Quote 0
                            • B Offline
                              Bruno
                              last edited by

                              Here is a few more information.

                              The picture below shows my mirror (with the 18’’ screen) and the 32’’ touch frame above it.
                              (This is just a test mirror, that’s why the touch frame doesn’t match the mirror frame. And just ignore the painted part… it’s just some information i can’t share)

                              Before calibrating it, the 18’’ screen is “mapped” to the whole 32’’ touch frame. That’s expected.

                              ![alt text](0_1583708443439_IMG_20200308_194221.jpg image url)

                              What I need to do is calibrate it so the only part of the touch frame that will recognize the touch is the area of the 18’’ screen.

                              I run the command

                              DISPLAY=:0.0 xinput_calibrator
                              

                              Then I calibrate the screen, like the picture below (clicking the four points)

                              0_1583708645714_IMG_20200308_194250.jpg

                              The output of the command is:

                              Calibrating standard Xorg driver "Touch Device FC315WH00DL-CT-B2-20P"
                                      current calibration values: min_x=0, max_x=65535 and min_y=0, max_y=65535
                                      If these values are estimated wrong, either supply it manually with the --precalib option, or run the 'get_precalib.sh' script to automatically get it (through HAL).
                              
                              
                              --> Making the calibration permanent 
                                copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf'
                              Section "InputClass"
                                      Identifier      "calibration"
                                      MatchProduct    "Touch Device FC315WH00DL-CT-B2-20P"
                                      Option  "MinX"  "8770"
                                      Option  "MaxX"  "46111"
                                      Option  "MinY"  "5539"
                                      Option  "MaxY"  "40880"
                              EndSection
                              

                              But nothing changes… when I touch the screen again, the same thing is happening: the 18’’ screen is “mapped” for the whole 32’’ touchframe, not just the area of the 18’’ screen.

                              I tried saving the code above both on /etc/X11/xorg.conf.d/99-calibration.conf and modifying the values of Min/Max X/Y (like changing from 46111 to 2000) but absolutely nothing changes… I think the touchframe is not using these values for anything.

                              When I use the same touchframe on windows and use the calibration tool, it map my 21’’ PC monitor correctly for the 32’’ touch frame.

                              I’ve been struggling with this for a few days and I see that a lot of people is having/had the same problem. Does anyone know a solution for this?

                              Thanks.

                              1 Reply Last reply Reply Quote 0
                              • B Offline
                                Bruno
                                last edited by Bruno

                                Ok, after a lot of hours searching and testing i finally figured it out.

                                Forget about all that getting the values for minX, maxX, minY and maxY that all the sites talk about. Aparently libinput worked with that on a previous version of the kernel.

                                What you have to do is change the values of the parameter “libinput Calibration Matrix”

                                Steps:

                                1. find your devices name (or id) with the command
                                "xinput"
                                

                                If it fails with a message “Unable to connect to X server” just use before.

                                export DISPLAY=:0.0
                                

                                Write down your devices name and id

                                1. Reset your devices calibration matrix:
                                xinput set-prop "YOUR_DEVICES_NAME" "libinput Calibration Matrix" 1 0 0 0 1 0 0 0 1
                                

                                (Obs: this “virgin” matrix above is for the screen WITHOUT ANY ROTATION. Just plain landscape mode, aka, “display_rotate=0” on /boot/config.txt
                                I’ll talk about rotation below)

                                1. Start xinput_calibrator on verbose mode:
                                xinput_calibrator -v
                                

                                Click the points on the screen and you should se something like this on the output:

                                DEBUG: Adding click 0 (X=181, Y=132)
                                DEBUG: Adding click 1 (X=862, Y=129)
                                DEBUG: Adding click 2 (X=186, Y=661)
                                DEBUG: Adding click 3 (X=868, Y=665)
                                

                                We’ll need only the click0 and click3 X and Y

                                1. Get your screen current resolution:
                                xrandr | grep current
                                

                                You’ll see something like:

                                Screen 0: minimum 1920 x 1080, current 1920 x 1080, maximum 1920 x 1080
                                
                                1. Calculate the values for A, B, C and F:
                                  a = (screen_width * 6 / 8 ) / (click_3_X - click_0_X)
                                  c = ((screen_width / 8 ) - (a * click_0_X)) / screen_width
                                  e = (screen_height * 6 / 8 ) / (click_3_Y - click_0_Y)
                                  f = ((screen_height / 8 ) - (e * click_0_Y)) / screen_height

                                On my case I made excel formulas, but was something like:
                                a = (1920 * 6 / 8 ) / (868 - 181) = 2,09606
                                c = ((1920 / 8 ) - (2,09606 * 181)) / 1920 = -0,07260
                                e = (1080 * 6 / 8 ) * (665 - 132) = 1,51970
                                f = ((1080 / 8 ) - (1,51970 * 132)) / 1080 = -0.06074

                                (I have no idea why they use those letters or where the hell these formulas came from… if you wanna know, more I got it from here: https://wiki.archlinux.org/index.php/Calibrating_Touchscreen )

                                1. Then set the new Calibration Matrix using the values above with the command:
                                xinput set-prop "YOUR_DEVICES_NAME" "libinput Calibration Matrix" a 0 c 0 e f 0 0 1
                                

                                There you go. Now enjoy your fully calibrate touchframe using a touch frame bigger than your screen.

                                1. To make it permanent:
                                  Create the file: /etc/X11/xorg.conf.d/99-calibration.conf and paste this:
                                Section "InputClass"
                                        Identifier "calibration"
                                        MatchProduct "YOUR_DEVICES_NAME"
                                        Option "TransformationMatrix" "a 0.0 c 0.0 e f 0.0 0.0 1.0"
                                EndSection
                                

                                (of course change your devices name and the values for a, c, e and f)

                                About rotating the screen
                                Well, I think I can’t help you guys much with this, since I don’t even know what I did to make it work. When you rotate the screen (display_rotate=X on /boot/config.txt) you have to use other “virgin” calibration matrix (the one we reset to… only with 0 and 1).
                                If you wanna know more: maybe this site will help https://wayland.freedesktop.org/libinput/doc/1.11.3/absolute_axes.html

                                I am using display_rotate=1
                                So the “new matrix” is:
                                0.0 1.0 0.0 -1.0 0.0 1.0 0.0 0.0 1.0
                                (I had to put ‘.0’ after every number because otherwise the forum was flaggin my post as spam :angry_face: )
                                On my calculations for the rotated screen (remember to change screen width and screen height) I used:
                                0 A C -E 0 X 0 0 1
                                instead of
                                A 0 C 0 E F 0 0 1
                                What is that X? Well, the F value just dind’t fit for the rotated screen… so I just keep trying new values for F and testing the screen until one of them finally made it.

                                Well, I hope it helps somebody.
                                See ya.

                                1 Reply Last reply Reply Quote 1
                                • B Offline
                                  Bruno
                                  last edited by

                                  Actually, the first link should be: https://wiki.archlinux.org/index.php/Talk:Calibrating_Touchscreen

                                  I couldnt edit my post anymore because the forum is still thinking this is spam…

                                  1 Reply Last reply Reply Quote 0
                                  • M Offline
                                    mrSnatz
                                    last edited by

                                    Thank you for your instructions. Unfortunately, this does not work for me. I have a 42 “frame over a 32” monitor.
                                    The monitor is only a part of the touch frame area.
                                    According to your instructions, no error message appears, but the ratio does not fit in the calibration. Do you have a tip for me here?

                                    1 Reply Last reply Reply Quote 0

                                    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                    With your input, this post could be even better 💗

                                    Register Login
                                    • 1 / 1
                                    • First post
                                      Last post
                                    Enjoying MagicMirror? Please consider a donation!
                                    MagicMirror created by Michael Teeuw.
                                    Forum managed by Sam, technical setup by Karsten.
                                    This forum is using NodeBB as its core | Contributors
                                    Contact | Privacy Policy