Forum Discussion

Re: Fix the mouse input

I figured out how to make mouse aim feel steady and smooth in Battlefield 1. I recommend using a mouse that has around 20,000dpi and can poll steady at 1,000Hz or more.

*Disclaimer* I'm not saying people's mice are the problem. I'm saying the game's controller input loop is the problem and here's how to brute force past it.

First a quick summery of what I'm doing. I'm running the mouse at an extremely high dpi in order to increase the optical sensor's polling rate for small mouse movements. If you've ever used a polling rate checker like MouseMovementRecorder.exe which is included in MarkC Windows 10 + 8.1 + 8 + 7 Mouse Acceleration Fix. You'll notice the optical sensor's polling rate is very low for slow mouse movements at low DPI values. Increasing DPI also increases the polling rate for slow mouse movements.

In other words, increasing the DPI also increase the polling rate so we can brute force past Battlefield's broken controller input loop.

Here are my settings.

Make sure to turn down Windows OS mouse sensitivity to notch 2. This is why I recommend a 20,000dpi mouse. Otherwise the mouse pointer will move really slow.

That's pretty much it. Set your in-game mouse sensitivity to 0 (always zero for infantry) and make sure to turn off raw mouse input. Raw mouse input doesn't work with such high dpi settings. We need Windows OS to reduce the sensitivity. I also discovered reducing Windows OS mouse sensitivity eliminates mouse jitter at 20,000dpi which I found surprising.

It's also important to test your mouse with MouseTester to make sure your mouse polls smoothly. For example, I have a Razer Viper 8K mouse that can poll up to 8,000Hz but it only polls steady at 2,000Hz and lower.

Razer Viper 8K - 8,000Hz

Razer Viper 8K - 4,000Hz

Razer Viper 8K - 2,000Hz

As you can see, my 8,000Hz mouse can really only poll steady at 2,000Hz. The blue dots have to be right on top of the green line, otherwise the mouse isn't polling steady which causes mouse stutter.

17 Replies

  • Ne0tax's avatar
    Ne0tax
    New Vanguard
    3 years ago

    @OskooI_007 I don't think you've played BF 2042 long enough to know what's wrong. Since I can't find you in BF 2042 stats, I assume you've never played it.
    It's not just about reaction time but that the mouse doesn't do what it's supposed to do at certain speeds 1 to 1.
    And your placebo fixes won't help anyone, just forcing higher DPI more polling rate even though you have a motion sync mouse is a total waste of time in my eyes.
    And even if it brings you less ms you are still bound to the game engine if it has 20ms latency and you double your mouse speed from 1000hz to 2000hz you still only save 0.5ms and are still at 19.5ms so it just doesn't work.

  • GrizzGolf's avatar
    GrizzGolf
    Seasoned Ace
    3 years ago

    @Ne0tax wrote:

    @OskooI_007I don't think you've played BF 2042 long enough to know what's wrong. Since I can't find you in BF 2042 stats, I assume you've never played it.
    It's not just about reaction time but that the mouse doesn't do what it's supposed to do at certain speeds 1 to 1.
    And your placebo fixes won't help anyone, just forcing higher DPI more polling rate even though you have a motion sync mouse is a total waste of time in my eyes.
    And even if it brings you less ms you are still bound to the game engine if it has 20ms latency and you double your mouse speed from 1000hz to 2000hz you still only save 0.5ms and are still at 19.5ms so it just doesn't work.


    What happen with the input now?

  • Adamonic's avatar
    Adamonic
    3 years ago

    I always thought Raw mouse input was jacked up? If I turn it off, I lose X/Y movement. Explain this to my like I am 5, how do I enable X/Y movement on mouse with Raw input "off"?

  • OskooI_007's avatar
    OskooI_007
    Seasoned Ace
    3 years ago

    @Ne0tax wrote:

    @OskooI_007I don't think you've played BF 2042 long enough to know what's wrong. Since I can't find you in BF 2042 stats, I assume you've never played it.
    It's not just about reaction time but that the mouse doesn't do what it's supposed to do at certain speeds 1 to 1.
    And your placebo fixes won't help anyone, just forcing higher DPI more polling rate even though you have a motion sync mouse is a total waste of time in my eyes.
    And even if it brings you less ms you are still bound to the game engine if it has 20ms latency and you double your mouse speed from 1000hz to 2000hz you still only save 0.5ms and are still at 19.5ms so it just doesn't work.


    I rented 2042 on EA Play for a month when it first came out, but haven't played it since. The issue I'm experiencing with Battlefield's mouse input loop is it drops/skips mouse polls which is really noticable at lower Hz.

    At a low dpi setting the mouse will only poll at ~50Hz for slow mouse movements. At 20,000dpi the mouse is polling 1,000+ Hz without even moving it.

    Dropping 1 out of 50 mouse polls is a lot more noticable than 1 out of 1,000. The higher polling also prevents issues where tiny micro aim adjustments fail to register even though you're moving the mouse.

    What issues are you experiencing with the mouse in Battlefield?

  • OskooI_007's avatar
    OskooI_007
    Seasoned Ace
    3 years ago

    @Adamonic wrote:

    I always thought Raw mouse input was jacked up? If I turn it off, I lose X/Y movement. Explain this to my like I am 5, how do I enable X/Y movement on mouse with Raw input "off"?


    Maybe there's an overlay like discord that's hijacking the mouse cursor when raw input is turned off? I'm not sure what's going on. My mouse works with raw input turned off.

  • ATFGunr's avatar
    ATFGunr
    Legend
    3 years ago
    @Adamonic Were you in game when you turned raw input off? I did that and lost the ability to move as well. I planned on trying it out of game, but never got around to it lol. Seems like work. Oskool has some interesting ideas, but I use my PC for different things and wouldn’t want to have to keep switching it all around. If you’re sensing a lazy theme… you’re not that far off.
  • OskooI_007's avatar
    OskooI_007
    Seasoned Ace
    3 years ago

    @Adamonic wrote:
    @ATFGunrYes in game. What is the line in the prefs file that needs to be edited?

    'GstInput.MouseRawInput 1' in PROFSAVE_profile

    Sorry @Adamonic, I didn't know this setting is bugged and not working in 2042.

    *Edit* DICE has fixed this bug and raw input can be turned off without breaking the mouse now.

  • Adamonic's avatar
    Adamonic
    3 years ago

    @OskooI_007Thx, if I turn it off I lose mouse xy.

    Any other thoughts? Discord not open. Nothing else running beside Origin.


    Raw Input Off = loss of Mouse X/Y whether I turn it off in game or out of the game.

  • cso7777's avatar
    cso7777
    Seasoned Ace
    3 years ago

    @OskooI_007 Battlenonsense has tested this and found that at DPI settings below 1600 the input lag increases.

    His video is actually very interesting: https://www.youtube.com/watch?v=6AoRfv9W110 


    But using 20000DPI is a pain with a lot of games, where sensitivity settings cannot cope with the high DPI.

    BF2042s problem is that the engine doesn't handle input correctly (apparently from all input-devices) and has nothing to do with the mouse, it is the game that has an issue.

  • ATFGunr's avatar
    ATFGunr
    Legend
    3 years ago
    @megazz Cheers, hadn’t tried it yet but was going to lol. Thanks for the heads up.
  • OskooI_007's avatar
    OskooI_007
    Seasoned Ace
    3 years ago

    @cso7777 wrote:

    @OskooI_007Battlenonsense has tested this and found that at DPI settings below 1600 the input lag increases.

    His video is actually very interesting: https://www.youtube.com/watch?v=6AoRfv9W110 


    But using 20000DPI is a pain with a lot of games, where sensitivity settings cannot cope with the high DPI.

    BF2042s problem is that the engine doesn't handle input correctly (apparently from all input-devices) and has nothing to do with the mouse, it is the game that has an issue.


    True. You're right, the engine doesn't handle input correctly but nobody seems to know what's causing it. I believe I've narrowed the problem down to the engine dropping mouse polls.

    Increasing polling rate with high dpi isn't about lowering input lag. High dpi is about increasing the polling rate for small mouse movements so when the engine does drop polls it's not as noticable. Which translates into steady aim with no jitter, responsive micro aim corrections, and smooth mouse movement.

    High mouse dpi and polling doesn't fix the game engine dropping polls, it works around the issue by minimizing the affect dropped polls have on mouse movement.

    Unfortunately raw input is bugged in 2042 and turning it off breaks the mouse.

  • BR-DuaneDibbley's avatar
    BR-DuaneDibbley
    Seasoned Ace
    3 years ago

    @OskooI_007 wrote:

    Increasing polling rate with high dpi isn't about lowering input lag. High dpi is about increasing the polling rate for small mouse movements so when the engine does drop polls it's not as noticable. Which translates into steady aim with no jitter, responsive micro aim corrections, and smooth mouse movement.

    High mouse dpi and polling doesn't fix the game engine dropping polls, it works around the issue by minimizing the affect dropped polls have on mouse movement.


    This does not make sense unfortunately due to the way mouse inputs are handled in Windows. Given that no mouse (unless you are still running one connected via PS/2 😉 ) can really 'send' anything to the PC they always require polling. You can configure how fast Windows (the driver) will poll the mouse and most users use 1000Hz I guess (this is not setting for the mouse, even if the mouse software presents it that way) but actually a setting how often Windows asks for changes in mouse state. In  theory, you could even poll any mouse faster, say with 4000Hz, but for mice which internally sample slower, this would just not give you new values 3 out of 4 times and that's why the software limits the range of possible polling rates you can select.

    This is the first step -- how often Windows is aware of changes in mouse state (position + buttons) and this is always required, even with 'raw mouse input' enabled. The only difference between raw mouse input on and off is that for 'ON' the mouse movements are taken 'as read from the mouse' and with the setting to 'ON', also the sensitivity adjustments and mouse acceleration features of Windows will be taken into account. For that reason you should always use raw mouse input as especially mouse acceleration will screw with your aim.

    The second question is about the polling rate of the GAME (here it is said that with BF2042 we now have 250Hz). So in theory, if the game polls at 250Hz it will get the accumulated result of 4 polling results of Windows. To be precise and as they are not synced, rarely this will be of 3 or 5 polls because of beat.

    Let's assume your theory is correct and BF2042 would 'miss' inputs of one of its polls you would miss the accumulated distance traveled during that time. For say 20000 DPI this would mean more 'increments' would be missed but with in game sens this is in the end reflects the same in game movements delta that is neglected. If there is any movement at all in these 4ms in question, this will either be registered or not.

    The ONLY way your 'hack' would/could be effective would be if the distance traveled within those 4 ms would be so small (meaning mouse movement so slow) that it would not register at least one increment on lower DPI settings but result in one or more for the 20000 DPI configuration. Otherwise it would just mean smaller or bigger numeric values to be neglected (that are scaled by in game sens to the same value anyway).

  • OskooI_007's avatar
    OskooI_007
    Seasoned Ace
    3 years ago

    @DuaneDibbleyI never stated I was overclocking the mouse past it's maximum polling rate. What I'm doing is increasing the polling rate for slow mouse movement.

    I explained how mice poll slower when mouse movement is slow. Like 50Hz polling slow. By increasing dpi that slow mouse movement now polls at 1,000Hz. Mice can poll slower than their bInterval value by NAKing polling requests.

    I explained how the mouse gets extremely stuttery in BF1 when mouse polling is set to 125Hz and the framerate capped to 125fps. Increasing mouse polling makes this stutter less noticable. The stutter is being caused by dropped mouse polls.


    I have a high level understanding of USB protocol. Including USB descriptors such as bInterval. I also understand the Windows OS driver polls the mouse and the mouse responds to those polls.

    The game isn't directly polling the mouse. The OS mouse driver is. That's why mice can be polled at 1,000Hz by the driver, with the game's input loop sampling the driver at 250Hz. The 250Hz engine samping is where mouse polls are being dropped. Not at the OS mouse driver level.

    All I can say is I've field tested 20,000dpi with high polling rates for small mouse movements in Battlefield 1 and I've noticed a huge difference in how the mouse behaves. Smoother, more steady, and no jitter at high dpi.

  • BR-DuaneDibbley's avatar
    BR-DuaneDibbley
    Seasoned Ace
    3 years ago
    @OskooI_007

    Not sure why you think I thought that you were "overclocking the mouse past it's maximum polling rate". I did just explain how mouse input works and how it reaches the game. If you are a expert on USB communication as well, then let's say the explanation was aimed at the other people reading the thread that might want to understand how these things work.

    And sure, in theory a mouse could have 'no new information' when polled in which case it indeed NAK the poll and add another delay (depending on what is in bInterval, which for my mouse is 1), but this would only happen if no new information is available (read: no button press or no increment in any direction from sensor). You decrease the likelyhood that 'no new information' is available if you increase DPI that might have an effect on very slow mouse movements, but if you have to accumulate over 4 or even 8 poll results anyway, this should not matter. And in any case, even with a slow mouse movement of less than 3 cm / second you will have with 1000 Hz polling rate one increment in every poll.

    Sure, if you mouse has a high bInterval and for one poll would decide to NAK as the movement was so slow that there was no new data), then this could have an effect. But then I'd say it is a 'bug' if the USB descriptor has bInterval of >1.
  • OskooI_007's avatar
    OskooI_007
    Seasoned Ace
    3 years ago
    @DuaneDibbley The response rate of optical sensors is easy to test with a polling rate tester such as MouseMovementRecorder.exe which I linked to a few post ago.

    Set the mouse dpi to 800dpi or even 3,000dpi. Move the mouse very slowly and MouseMovementRecorder.exe will show the optical sensor replying at a very low frequency. Better yet, take your hand off the mouse so it's not moving and the optical sensor will reply at 0Hz. If the optical sensor is replying at 0Hz with a 1,000Hz bInterval, that means the optical sensor is NAKing 1,000 poll requests.

    Now increase the dpi to 20,000 and see what MouseMovementRecorder.exe reports even with the mouse completely stationary. It'll be replying at a much higher frequency.

    Also of interest, Windows polls the mouse buttons on the Viper 8k at 8,000Hz but only polls the optical sensor at the polling rate set in the Razer mouse software. The polling rate for optical sensor is rate limited with NAKs.

    If Windows is polling the mouse at 8,000Hz but the optical sensor is set to 1,000Hz, then the sensor NAKs 7,000 out of 8,000 poll requests. If the mouse is completely stationary at low dpi, it's NAKing all 8,000 polling requests.

About Battlefield 2042 General Discussion

Discuss the latest news and game information around Battlefield 2042 in the community forums.15,959 PostsLatest Activity: 13 days ago