No internet connection
  1. Home
  2. Technical Support

Cursor offset

By Marc Strik @strikmarc
    2023-09-27 13:06:25.123Zassigned to
    • @david

    TinyPilot is fantastic and we could use it for medical assistance in remote areas. But for a certain device which I want to take over, there is an horizontal offset of the mouse cursor. The screen is projected but with black vertical bars on the side and I need to click "next to" the buttons to be able to proceed. It is like TinyPilot projects a different resolution than the original bu the mouse is ignorant to this. It is a bit similar to this post (Issue with mouse cursor offset) but I am not able to change the resolution of the machine.

    Does anyone have a solution for this?

    Solved in post #10, click to view
    • 13 replies

    There are 13 replies. Estimated reading time: 11 minutes

    1. @fft2023-09-28 05:44:34.759Z

      Hi Marc,
      I do not have a solution, but maybe an idea which could help: I disable the mouse cursor in the TinyPilot setting. Than you only see the mouse of the remote PC.
      I hope it helps
      Juergen

      1. SMarc Strik @strikmarc
          2023-09-28 07:07:01.426Z

          HI Juergen,

          Thank you so much for your response. While that could indeed bypass the issue when you see a cursor on the remote screen, I'm controlling a touch screen without visible cursor.

          Marc

        • In reply tostrikmarc:
          David @david2023-09-28 11:14:27.083Z

          Hi @strikmarc, I'm sorry you're running into this cursor issue.

          Can you tell me a little more about your setup? Are you using a VGA adapter (or any other adapter)? And do you happen to know the resolution your target machine is outputting?

          Could you also share a log from your TinyPilot? On the TinyPilot web interface, go to System > Logs and click Get Shareable URL. Then paste the link in your reply.

          1. SMarc Strik @strikmarc
              2023-09-29 14:33:07.452Z

              Thanks @david for your help. The target machine has USB ports and a Displayport, so I use a Displayport-to-HDMI cable (so no seperate adapter). I don't know the resolution of the target machine. See the log here: https://logs.tinypilotkvm.com/HWcn8Sdg. (the target machine is connected now, with the problem)

              1. David @david2023-10-02 11:18:36.660Z

                Thanks for the info. A DisplayPort to HDMI cable should be fine here.

                Your logs suggest your target device is outputting at TinyPilot's default resolution (1920x1080). In the past, we've seen situations where a target device won't adjust its own resolution and will instead embed its normal resolution in a 1920x1080 window. So that might mean your target device is interpreting mouse events intended for a 1920x1080 display - causing this offset issue you're experiencing.

                It would be really useful if we could find the resolution your device normally uses for its screen. I saw in a previous comment that this is a touch screen. Do you have the make/model of your target machine so I can take a look at its specifications and see if we can find a solution?

                1. SMarc Strik @strikmarc
                    2023-10-02 16:23:01.942Z

                    Thanks for your explanation, it's a non-commercial device in kiosk mode. I can however ask their engineers whether they could give me the screen resolution. Would that help?

                    1. David @david2023-10-02 18:26:41.928Z

                      If it's possible to ask the engineers about the display settings that would be great! Ideally we need the resolution e.g., 1920x1080, and the refresh rate (also known as the frame rate), e.g., 60hz.

                      If we can't get any info about the resolution, we might be able to work it out using a TinyPilot screenshot of your display (on the TinyPilot web interface, go to Actions > Screenshot). We'd have to guess the refresh rate though. If we know those numbers, I might be able to create an EDID with those display settings as your TinyPilot's default.

              2. S
                In reply tostrikmarc:
                Marc Strik @strikmarc
                  2023-10-13 13:25:39.166Z

                  I got an answer from the engineers! The resolution is 1024 x 768 and the framerate is 60 Hz. Is this helpful?

                  1. David @david2023-10-13 18:37:14.657Z

                    Fantastic! Yes, thank you!

                    I've created a new EDID for you (the EDID is the message your TinyPilot uses to tell target machines which resolutions to use). I've set the default resolution and frame rate to 1024x768 at 60Hz. I'm hoping that by setting a new default, your target machine will output at the correct resolution instead of 1920x1080. If it outputs at the correct resolution, this should solve the cursor offset issue.

                    If you use your TinyPilot with other devices, the new default shouldn't be a problem, but you might need to manually adjust the resolution to something more suitable in the target machine's display settings.

                    To change to this custom EDID that I created for you, SSH into your TinyPilot and run the following block of commands (copy and paste the whole block at once):

                    EDID="/home/ustreamer/edids/tc358743-edid.hex"
                    
                    # Back up original EDID
                    cp --no-clobber "${EDID}" ~/tc358743-edid.hex.bak
                    
                    # Set the new EDID
                    echo -ne "" | sudo tee "${EDID}" && \
                      echo '00ffffffffffff0052627698008888882d1e0103' | sudo tee -a "${EDID}" && \
                      echo '800000781aee91a3544c99260f50547fef8081c0' | sudo tee -a "${EDID}" && \
                      echo '8140810081809500a9c081406140e01500a04000' | sudo tee -a "${EDID}" && \
                      echo '16303020340000000000001eec2c80a070381a40' | sudo tee -a "${EDID}" && \
                      echo '3020350000000000001e000000fc0054696e7950' | sudo tee -a "${EDID}" && \
                      echo '696c6f740a202020000000fd00185a125010000a' | sudo tee -a "${EDID}" && \
                      echo '20202020202001ed02031ef14b010204131f2021' | sudo tee -a "${EDID}" && \
                      echo '223c3d3e2309070766030c00300080e2007f0000' | sudo tee -a "${EDID}" && \
                      echo '0000000000000000000000000000000000000000' | sudo tee -a "${EDID}" && \
                      echo '0000000000000000000000000000000000000000' | sudo tee -a "${EDID}" && \
                      echo '0000000000000000000000000000000000000000' | sudo tee -a "${EDID}" && \
                      echo '0000000000000000000000000000000000000000' | sudo tee -a "${EDID}" && \
                      echo '0000000000000000000000000000008e' | sudo tee -a "${EDID}" && \
                      sudo v4l2-ctl --device=/dev/video0 --set-edid=file="${EDID}" --fix-edid-checksums
                    

                    Once you've applied the change, if you reconnect your TinyPilot to your target machine, the output resolution should update to 1024x768. Can you try it out and see if that fixes this cursor offset issue?

                    If you need to, you can revert to the original EDID using this command:

                    EDID="/home/ustreamer/edids/tc358743-edid.hex"
                    sudo cp ~/tc358743-edid.hex.bak "${EDID}" && \
                      sudo chown ustreamer:ustreamer "${EDID}" && \
                      sudo v4l2-ctl --device=/dev/video0 --set-edid=file="${EDID}" --fix-edid-checksums
                    

                    Please let me know if you have any questions about the process (or anything else)!

                    ReplySolution
                  2. S
                    In reply tostrikmarc:
                    Marc Strik @strikmarc
                      2023-10-19 15:58:08.967Z

                      Thanks David. I applied your EDID using SSH (see screenshot) and reconnected the TinyPilot. I don't see any changes. I tried multiple times.
                      Is it trying to change the resolution in the target machine? Not sure that is possible, seems like a kiosk mode device.

                      1. David @david2023-10-20 11:19:13.070Z

                        Thanks for trying that, @strikmarc!

                        Is it trying to change the resolution in the target machine?

                        It's setting the new default resolution your TinyPilot requests from your target machine to 1024x768 at 60Hz. Since your target machine normally outputs at those settings, I was hoping it would remove the side borders and fix the cursor offset.

                        My final suggestion here is to disconnect your TinyPilot, restart both your target machine and your TinyPilot, and reconnect them to see if the devices re-negotiate the video display settings. I know you said you reconnected your TinyPilot, but restarting both devices can actually help here.

                        Could you also send me a new TinyPilot log like you did before?

                        Unfortunately, if those steps don't work and your log confirms the resolution your target machine is outputting at, I think we'll have to say that your target device is incompatible with TinyPilot.

                        Please let me know if you have any questions.

                        1. SMarc Strik @strikmarc
                            2023-10-21 16:56:44.611Z

                            Restarting the target machine fixed it. So yes it removed the black borders and the cursor offset issue is fixed. And I confirm that on other target machines it does not pose any problems. This is fantastic, thank you so much David!

                            1. David @david2023-10-23 08:14:34.439Z

                              Amazing news! I'm so glad it worked the way I hoped.

                              You're welcome! Please feel free to reach out again if you have any other questions.