• OS
  • Disable dithering on M1/M2 devices

akuts404 For macbook pro 14, I use 1512x945.

For external 27' 2k display I use native 2560x1440 or 2048x1152

I have followed the instructions from @NewDwarf on how to disable dithering on my M1 mac. I didn't see much of an alleviation of symptoms. I have also reduced my resolution to 1600x900 using BetterDisplay, again with not much of an effect on my symptoms.

Specs:

Interestingly, on my other Mac, I don't use BetterDisplay, but did follow @NewDwarf instructions to disable dithering, which helped me greatly. I can use this Mac, with pretty much no symptoms.

Specs:

Just a note that on both Macs, I am using external LCD TFT backlit monitors.

I wonder if it is because the usable on is running Big Sur. And the unusable one is running Monterey?

    Zazu I don't think @NewDwarf technique works on M1/M2 Macs, only Intel ones. Glad your Intel one is usable now 🙂

    Sounds like that supports your findings?

    • Zazu replied to this.

      Zazu I wonder if it is because the usable on is running Big Sur. And the unusable one is running Monterey?

      I think there is a high possibility that upgrading to Monterey, even the mac with intel will start giving you problems.

      You should make a disk image and try it, but I wouldn't do that if I were you 🙂

      • Zazu replied to this.

        ryans Yeah, New dwarf had 2 seperate solutions for intel and M1 macs. I tried both and it seems the intel solution worked but the M1 had ambiguous results. I have now brute forced working on my M1 and today seems better. Reminder that on my M1 I have also reduced my resolution using betterdisplay, and did what Newdwarf recommended to disable dithering.

        11 days later

        From MacRumors:

        I’ve confirmed with the developer that a Dummy Display is the only way to switch the color to 8-bit on Apple silicon, which should disable temporal dithering in theory. Keep in mind that will give you less colors to work with and may make for a slightly less color-accurate display if your work is graphic-dependent.

          ryans nice! Can you post the link of the topic? 🙂 thanks

            JesHD have you tried bootcamp with Windows and see if it works to no eye syrain?

            Zazu I am having trouble finding it, what method did you use on your intel Mac?

            • Zazu replied to this.
              5 days later

              @NewDwarf Thanks so much for this!! And everyone else with the better display dummy work around.

              @NewDwarf did you ever find a command that works in Monterey/Ventura? Im on Ventura now and experiencing some eye pain, don't want to downgrade really but preparing to if I have too. There got to be a way to get this working on the new MacOS's!

              Edit just saw your new post here and tried this method: https://ledstrain.org/d/2101-new-attempt-to-disable-dithering-on-m1m2-chipsets/7

              2 months later

              I am using Macbook Pro M1 14 Inch 2021, running macOS Monterey, using display port to connect to Dell U2913WM.

              Within a week of switching from my old intel Mac to the M1 I started experiencing eye strain and migraines. I resorted to switching everything to dark mode, changed both display frequency to 60 Hertz. I also disabled true tone, disabled auto brightness, reduced motion and transparency in accessibility settings. All of this helped but only now thanks to @NewDwarf post have I fixed the constant feeling of flickering on the external display. I'm surprised this solution isn't published more widely and Apple hasn't fixed it by default.

              I followed the instructions above, here's the full steps I took:

              Shutdown, hold down power button until login options shows, start recovery mode, then open terminal.

              csrutil disable

              Restart into main OS, open terminal

              sudo nvram boot-args="enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0"

              Restart, dithering appears to have stopped 🎉 it can be hard to tell but it immediately reduced strain and headache from the feeling of constant flicker, so that's a great sign! I will continue to monitor but I think that has done the trick.

              In the main settings I also have the external display colour mode set to sRGB, refresh rate 60 Hertz.

              I then also installed BetterDisplay to see if it had any other options, again it immediately improved things because it had an HiDPI resolution option which for me made text more readable and on the whole felt more crisp (not as good as a retina display, but it will do). After tweaking the contrast and brightness this also improved it further.

              Finally once finished, shutdown, then hold down power button, go to recovery mode, then open terminal and reverse the change earlier:

              csrutil enable

              Thanks again!

                jamesacres Also here's the log output

                [jamesacres@Jamess-MBP-2 ~]$ log show --predicate "processID == 0" | grep Dither
                2023-03-21 22:05:14.472824+0000 0x776cd    Error       0x0                  0      0    kernel: (Sandbox) System Policy: nvram(51036) deny(1) boot-arg-set enableDither
                2023-03-21 22:05:39.470670+0000 0x777f1    Error       0x0                  0      0    kernel: (Sandbox) System Policy: nvram(51072) deny(1) boot-arg-set enableDither
                2023-03-21 22:12:33.253081+0000 0x2c4e     Default     0x0                  0      0    kernel: (Sandbox) System Policy: nvram(1507) allow boot-arg-set enableDither
                2023-03-21 22:12:33.253092+0000 0x2c4e     Default     0x0                  0      0    kernel: (Sandbox) System Policy: nvram(1507) allow boot-arg-set iomfb_RuntimeProperty_enableDither
                2023-03-21 22:12:33.253096+0000 0x2c4e     Default     0x0                  0      0    kernel: [System Event] [2164899825] [INFO] [Subsystem: nvram] [Event: write] boot-args to enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:13:03.341919+0000 0x9e8      Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:13:03.341919+0000 0x9e6      Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:13:04.454396+0000 0xaab      Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:13:22.574676+0000 0x1020     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:13:22.692003+0000 0x103f     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:13:22.770218+0000 0x104c     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:13:22.778096+0000 0x1055     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:13:34.230074+0000 0x1ae5     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:13:34.245873+0000 0x1aea     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:21:48.650860+0000 0x9d3      Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:21:48.650860+0000 0x9d1      Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:21:49.638767+0000 0xa9e      Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:22:13.111652+0000 0x1020     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:22:13.218779+0000 0x1051     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:22:13.344461+0000 0x1065     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:22:13.467268+0000 0x108f     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:22:24.671409+0000 0x1b34     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:22:24.687293+0000 0x1b3e     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:26:39.061278+0000 0x9d9      Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:26:39.061280+0000 0x9d7      Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:26:40.220311+0000 0xaa5      Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:26:57.643257+0000 0x1036     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:26:57.758000+0000 0x1064     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:26:57.801180+0000 0x1077     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:26:57.813398+0000 0x107d     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:27:08.763317+0000 0x1b38     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                2023-03-21 22:27:08.789499+0000 0x1b41     Default     0x0                  0      0    kernel: Boot args: enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0
                [jamesacres@Jamess-MBP-2 ~]$ log show --process 0 | grep "IOMobileFramebufferLegacy"
                [jamesacres@Jamess-MBP-2 ~]$ 

                jamesacres as I got it from the other post, this tweak doesn’t work for apple silicon.

                For me only dummy trick is working.

                What version of Monterey OS do you use?

                I tried it again and I get this logs:

                Last login: Wed Mar 22 11:54:04 on ttys000

                sentiny@artems-MacBook-Pro ~ % log show --predicate "processID == 0" | grep Dither

                2023-03-22 11:25:24.830739+0300 0x1dc9 Default 0x0 0 0 kernel: (Sandbox) System Policy: nvram(817) allow boot-arg-set enableDither

                2023-03-22 11:25:24.830744+0300 0x1dc9 Default 0x0 0 0 kernel: (Sandbox) System Policy: nvram(817) allow boot-arg-set iomfb_RuntimeProperty_enableDither

                2023-03-22 11:25:29.211465+0300 0x1df9 Default 0x0 0 0 kernel: (Sandbox) System Policy: nvram(820) allow boot-arg-set enableDither

                2023-03-22 11:25:29.211478+0300 0x1df9 Default 0x0 0 0 kernel: (Sandbox) System Policy: nvram(820) allow boot-arg-set iomfb_RuntimeProperty_enableDither

                2023-03-22 11:25:48.467066+0300 0x20b4 Default 0x0 0 0 kernel: (Sandbox) System Policy: nvram(902) allow boot-arg-set iomfb_force_block_Dither

                2023-03-22 11:31:40.677142+0300 0x1df2 Default 0x0 0 0 kernel: (Sandbox) System Policy: nvram(669) allow boot-arg-set enableDither

                2023-03-22 11:34:32.640627+0300 0x2223 Default 0x0 0 0 kernel: (Sandbox) System Policy: nvram(712) allow boot-arg-set enableDither

                2023-03-22 11:34:32.640633+0300 0x2223 Default 0x0 0 0 kernel: (Sandbox) System Policy: nvram(712) allow boot-arg-set iomfb_RuntimeProperty_enableDither

                2023-03-22 11:35:59.274504+0300 0x2374 Default 0x0 0 0 kernel: (Sandbox) System Policy: nvram(727) allow boot-arg-set enableDither

                2023-03-22 11:35:59.274512+0300 0x2374 Default 0x0 0 0 kernel: (Sandbox) System Policy: nvram(727) allow boot-arg-set iomfb_RuntimeProperty_enableDither

                sentiny@artems-MacBook-Pro ~ %

                  I don't have this line and lines under it:

                  2023-03-21 22:12:33.253096+0000 0x2c4e Default 0x0 0 0 kernel: [System Event] [2164899825] [INFO] [Subsystem: nvram] [Event: write] boot-args to enableDither=0 PE_i_can_has_debugger=1 iomfb_RuntimeProperty_enableDither=0

                  I use MacOS 12.6.2

                  Sentiny

                  I am using 13.2 (22D49)

                  It seemed to work for me, pretty confident the dithering stopped after that command and reboot. Not sure if that extra line indicates whether it worked or not.

                    jamesacres Are you able to use also the mini led display of the MBP 14"? Or you have fixed the problem only with the external monitor?

                    Thanks

                      dev