When using an external monitor, the screen will stop drawing (freeze) while the mouse is moving. The mouse cursor itself moves around smoothly but, all other areas of the screen including terminals, will remain static. Once movement of the mouse stops, all other areas of the screen will update and continue to redraw until the next mouse movement.
The computer is a Dell XPS 9500 laptop which is connected to a Dell D6000 docking station via USB-C. The monitor, Acer B276HUL, is connected to the docking station via Display Port. The mouse is connected to the USB HUB on the monitor, which is then connected to the docking station. However, the mouse’s connection proved to be irrelevant during testing.
Here’s a diagram which might make it a little easier to understand the connections:
After coming across this somewhat similar post I figured that the mouse was the source of the issue. Basically, it was flooding the bus with data thus overwhelming the dock and clogging the pipes where video traffic would normally flow.
I then installed the
qrazercfg utilities to adjust the “Scan frequency” of the mouse. At first, this seems to mitigate the issue, but not completely resolve it. Setting the value to a low frequency of 125 Hz made game play possible, but the freezing issue was still noticeable.
When the issue became unbearable, I decided to dig a little further into the matter. My first thought was to replace the mouse with a simple, no frills mouse to see if it would make a difference. With the new mouse connected, there was no change in performance and the issue remained.
I did try moving the mouse from the monitor bus, to the dock’s bus, and then finally directly to the laptop, but the issue persisted no matter where the mouse was connected.
Now that I had two completely different pieces of hardware that produced the same issue, I wanted to confirm my original assumption that the mouse itself was sending too much data. I used the
usbtop utility to view the “Raw USB traffic” for the devices and their associated buses.
The two components of interest were the dock’s internal display port (DisplayLink Dell Universal Dock D6000) and the mouse itself (Razer USA, Ltd Mamba 2015 Tournament Edition [RZ01-01370100-R3]). When monitoring the bandwidth of the display port, I woud see values in the 100’s or 1,000’s of kb/s. However, when moving the mouse this jumps to 10,000’s of kb/s. Going from an average value of around 5,000 kb/s to 79,000 kb/s.
Again, I moved the mouse to the various buses and was able to reproduce the same jump in bandwidth (to the display port device) regardless of the bus in use. Furthermore, I was able to see the mouse’s traffic in isolation and this would average 5 kb/s.
Now that I had hard evidence that the mouse was not flooding the bus as assumed, I turned my attention to the graphics card. I figured a simple test would be disabling the native display, which has a resolution of 3840 x 2400. Effectively reducing the numbers of pixels by over half.
This did not make a difference. That leads me to think that the hardware is more than capable of driving the display. I also know that this exact same hardware did not exhibit this issue when running Windows.
As my final diagnostic attempt, I completely disabled the external monitor on the display port. My hope was that there was some other data being sent to the port even when the display was disabled. Essentially, I was expecting to see some “noise” on the port when the mouse moved, but this did not occur. Instead, the port’s bandwidth remained at 0.0 kb/s.
At this point, I’m thinking the issue is related to how many times the monitor is told to redraw the screen. Basically the software version of the hardware’s refresh rate.
I know there are a ton of configuration settings for X and I have no idea where to begin looking for additional diagnostic information related to how X handles communicating with display. So, I’m looking to you, the magnificent Manjaro community, for guidance on next steps.