Jump to content

Nvidia 560M Brightness Slider Not Working


Fortitude
 Share

9 posts in this topic

Recommended Posts

Hi guys, I’ve been a long time reader of InsanelyMac, and this is my first ever post.

I have a Qosmio X775-3DV78 laptop that runs macOS Sierra 10.12.6.

After a lot of trial and error, I just about have brightness control fully working. Using my current clover config file, my screen is at half the usual brightness, and playing around with the brightness slider doesn’t do anything.

 

This thread for Mac OS X Yosemite proves that variable brightness on a 560M is possible, and provides an attached config file at the end. (It also claims that editing /S*/L*/E*/AppleGraphicsControl.kext/C*/P*/AppleGraphicsDevicePolicy.kext/C*/Info.plist helped get LVDS + HDMI or LVDS + VGA working. I edited it, and have LVDS + HDMI working, but not LVDS + VGA.)

 

My system kernel panics when running it, and the device properties are a string instead of a dictionary… I have no idea how on earth to convert the properties string in the thread’s final config file into a dictionary in order to dissect it.

 

Regardless, I’m not even sure that I would know what to transfer over to my config file, and would really appreciate some guidance in order to at least get my slider working.

(LVDS + VGA would be a plus if it’s at all possible…)

 

I’ve attached problem reporting files below:

Broken Brightness Slider.png

Qosmio X775 Problem Reporting Files.zip

Link to comment
Share on other sites

Hi Hervé, thank you for replying so quickly!

Thanks to you I found out that my VGA port has been working the whole time. It only works while initially booting up the computer and being connected to it!

 

It appears that my initial NVCAP value is correct too, however there are some issues:

- My laptop thinks my external VGA monitor is still connected when it’s actually disconnected.

- Afterwards, plugging into an HDMI monitor works, but plugging into a VGA monitor straight afterwards won’t work.

- HDMI will work afterwards and know when it's connected/disconnected.

 

I hope that the solution for this lies in the device properties of that final config that I linked, and that you or someone here can show me how to translate the string into a dictionary.

Link to comment
Share on other sites

Thanks for the lengthy and detailed reply, I’ve got great news to share:

The detect displays button connects/disconnects my VGA monitor!!!

 

Triple monitor would have been cool to implement, however, it appears that my hardware limits me to two outputs regardless just as you and the link I shared said. I even tried outputting to three monitors on Windows and Linux, and I was stuck with just two outputs. (I don’t have HD3000 drivers on Windows/Linux.)

 

The SMBIOSes made no difference whatsoever to my graphics output, and I don’t believe I can get the iGPU working alongside the dGPU because my laptop uses Optimus.

 

That’s insane that we share the same NVCAP!!!

05010000 0000FFFF FFFF0000 0000000F 00000000

Meanwhile, I tried this one that you created, and it seemed to work just as well as the old one.

I extracted one with EFIStudio from that hex string…

It matches the similar inquiry that you sent me, and appears to be a game changer for my laptop.

 

05010000 00000100 06000000 0000000e 00000000

With that NVCAP, my internal display doesn’t work, but I can drive two external displays:

  • NVDA,Display-A@0 -> HDMI/DVI
  • NVDA,Display-B@1 -> VGA

 

05000000 0000ffff ffff0000 0000000e 00000000

My current NVCAP enables my internal display, and lets me drive one external display:

  • NVDA,Display-A@0 -> HDMI/DVI/VGA
  • NVDA,Display-B@1 -> LVDS

 

This leads me to realize the following regarding my DCB Mask(s):

  • 0100 -> HDMI/DVI
  • 0600 -> VGA
  • ???? -> LVDS

 

I’ve used the NVCAP calculator in the past, but I haven’t had much luck generating NVCAP values from it. (Maybe you’d have a better time with it than me.) 

I thought that I’d share with you a dump of the DCB entries from it using a 560M ROM with you just incase it might help regarding figuring out what the four bit LVDS value is.

 

+--------------------------+
|     NVCAP Calculator     |
+--------------------------+

Enter in the location of your VBIOS

Windows Tip:  Shift + Right click your VBIOS and click "Copy Path"
+--------------------------+
|     NVCAP Calculator     |
+--------------------------+

(1) Choose VBIOS/ROM file
(2) Show DCB Entries
(3) Calculate NVCAP

Current ROM file: /Users/Fortitude/Downloads/NVIDIA.GTX560M.1536.110412.rom
Type in the number to select your option, or "q"/"quit" to quit: 2
DCB Entry 0
Type: LVDS EdidPort: 1 Head: 3 Connector: 0 Bus: 0 Loc: 0 
BDR: false BBDR: false Resources: 1 Virtual: false 
DCB Entry 1
Type: TMDS EdidPort: 1 Head: 3 Connector: 1 Bus: 0 Loc: 0 
BDR: false BBDR: false Resources: 1 Virtual: false 
DCB Entry 2
Type: TMDS EdidPort: 1 Head: 3 Connector: 2 Bus: 0 Loc: 0 
BDR: false BBDR: false Resources: 1 Virtual: false 
DCB Entry 3
Type: DisplayPort EdidPort: 13 Head: 3 Connector: 5 Bus: 1 Loc: 0 
BDR: false BBDR: false Resources: 8 Virtual: false 
DCB Entry 4
Type: TMDS EdidPort: 9 Head: 3 Connector: 5 Bus: 1 Loc: 0 
BDR: false BBDR: false Resources: 8 Virtual: false 
DCB Entry 5
Type: DisplayPort EdidPort: 12 Head: 3 Connector: 4 Bus: 1 Loc: 0 
BDR: false BBDR: false Resources: 8 Virtual: false 
DCB Entry 6
Type: TMDS EdidPort: 8 Head: 3 Connector: 4 Bus: 1 Loc: 0 
BDR: false BBDR: false Resources: 8 Virtual: false 
DCB Entry 7
Type: TMDS EdidPort: 8 Head: 3 Connector: 3 Bus: 1 Loc: 0 
BDR: false BBDR: false Resources: 8 Virtual: false 
DCB Entry 8
Type: DisplayPort EdidPort: 11 Head: 3 Connector: 8 Bus: 3 Loc: 0 
BDR: false BBDR: false Resources: 4 Virtual: false 
DCB Entry 9
Type: TMDS EdidPort: 7 Head: 3 Connector: 8 Bus: 3 Loc: 0 
BDR: false BBDR: false Resources: 4 Virtual: false 
DCB Entry a
Type: DisplayPort EdidPort: 10 Head: 3 Connector: 7 Bus: 2 Loc: 0 
BDR: false BBDR: false Resources: 2 Virtual: false 
DCB Entry b
Type: TMDS EdidPort: 6 Head: 3 Connector: 7 Bus: 2 Loc: 0 
BDR: false BBDR: false Resources: 2 Virtual: false 
DCB Entry c
Type: TMDS EdidPort: 6 Head: 3 Connector: 6 Bus: 2 Loc: 0 
BDR: false BBDR: false Resources: 2 Virtual: false 
DCB Entry d
Type: CRT EdidPort: 0 Head: 3 Connector: 9 Bus: 4 Loc: 0 
BDR: false BBDR: false Resources: 2 Virtual: false 

Press enter to continue:

 

If I had this as my NVCAP value:

05010000 00000100 ffff0000 0000000e 00000000

Would this theoretically be the result?

  • NVDA,Display-A@0 -> HDMI
  • NVDA,Display-B@1 -> LVDS/VGA

 

Could I for instance program something into the DSDT/SSDT to disconnect my LVDS display upon closing the lid and connect a VGA monitor and vice versa? That way I could for instance close my laptop, and drive two external monitors at my desk (possibly in SSDT-2 through the _DSS method under the LCD device). I don’t have working sleep on lid, and wasn’t sure if it would enable that property (though I do have wake on lid working). I suppose I could also just have two separate config files if it isn’t possible to implement.

 

Finally, here’s the decoded hex string from that old thread:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)</key>
	<dict>
		<key>@0,AAPL,boot-display</key>
		<string></string>
		<key>@0,NVDA,UnderscanMin</key>
		<string>0x00000052</string>
		<key>@0,backlight-control</key>
		<string>0x00000001</string>
		<key>@0,built-in</key>
		<string></string>
		<key>@0,compatible</key>
		<string>NVDA,NVMac</string>
		<key>@0,connector-type</key>
		<data>
		AgAAAAA=
		</data>
		<key>@0,device_type</key>
		<string>display</string>
		<key>@0,display-cfg</key>
		<string>0x00030103</string>
		<key>@0,fboffset</key>
		<string>0x00030000</string>
		<key>@0,name</key>
		<string>NVDA,Display-A</string>
		<key>@0,pwm-info</key>
		<data>
		AhgAZNjQAQAIUgAAIhYAAAAEAAABAAAA
		</data>
		<key>@0,use-backlight-blanking</key>
		<string></string>
		<key>@1,NVDA,UnderscanMin</key>
		<string>0x00000052</string>
		<key>@1,can-hot-plug</key>
		<string></string>
		<key>@1,compatible</key>
		<string>NVDA,NVMac</string>
		<key>@1,connector-type</key>
		<string>0x00000800</string>
		<key>@1,device_type</key>
		<string>display</string>
		<key>@1,display-cfg</key>
		<string>0x0100ffff</string>
		<key>@1,name</key>
		<string>NVDA,Display-B</string>
		<key>@2,connector-type</key>
		<string>0x00000800</string>
		<key>AAPL,HasPanel</key>
		<string>0x00000001</string>
		<key>AAPL,Haslid</key>
		<string>0x00000001</string>
		<key>AAPL,aux-power-connected</key>
		<string>0x00000001</string>
		<key>AAPL,backlight-control</key>
		<string>0x00000001</string>
		<key>AAPL00,DataJustify</key>
		<string>0x00000001</string>
		<key>AAPL00,Dither</key>
		<string>0x00000000</string>
		<key>AAPL00,DualLink</key>
		<string>0x00000001</string>
		<key>AAPL00,Inverter</key>
		<string>0x00000000</string>
		<key>AAPL00,InverterFrequency</key>
		<string>0x00000000</string>
		<key>AAPL00,LinkFormat</key>
		<string>0x00000000</string>
		<key>AAPL00,LinkType</key>
		<string>0x00000000</string>
		<key>AAPL00,PixelFormat</key>
		<string>0x00000000</string>
		<key>AAPL00,T1</key>
		<string>0x00000000</string>
		<key>AAPL00,T2</key>
		<string>0x00000001</string>
		<key>AAPL00,T3</key>
		<string>0x000000c8</string>
		<key>AAPL00,T4</key>
		<string>0x000000c8</string>
		<key>AAPL00,T5</key>
		<string>0x00000001</string>
		<key>AAPL00,T6</key>
		<string>0x00000000</string>
		<key>AAPL00,T7</key>
		<string>0x00000190</string>
		<key>AAPL00,blackscreen-preferences</key>
		<string>0x08000000</string>
		<key>NVCAP</key>
		<data>
		BQEAAAAAAQAGAAAAAAAADgAAAAA=
		</data>
		<key>NVDA,Features</key>
		<string>0x00b306ff</string>
		<key>NVDA,invalid-config</key>
		<string>0x00000000</string>
		<key>NVPM</key>
		<data>
		AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
		</data>
		<key>VRAM,totalsize</key>
		<string>0xc0000000</string>
		<key>built-in</key>
		<string>0x00</string>
		<key>device_type</key>
		<string>NVDA,Parent</string>
		<key>graphic-options</key>
		<string>0x00000000</string>
		<key>hda-gfx</key>
		<data>
		b25ib2FyZC0yAA==
		</data>
		<key>model</key>
		<data>
		Ik5WSURJQSBHZUZvcmNlIEdUWCA1NjBtIg==
		</data>
	</dict>
</dict>
</plist>

 

Sorry to overwhelm you with information, I just wanted to let you know what I’ve learned. If you’re not sure how to approach disconnecting/reconnecting the LVDS display no worries, you’ve helped me do more than I expected. It would be awesome though if you or someone here knows how to do it.

 

I would highly appreciate your input though on how to convert the decoded hex string for my current NVCAP value (along with anything else that I have to do) and get variable brightness working for my laptop, because plugging this in as it is now just causes my system to kernel panic.

Edited by Fortitude
Link to comment
Share on other sites

Three yeas ago I set my Dell E5430 to use Nvidia graphics 5200M (Fermi).

Preboot-log said

16:004  0:005  Found generic VBIOS ROM file (10de_0DFC.rom)
16:023  0:018   using loaded ROM image
16:023  0:000  version 70.08.A8.00.13
16:023  0:000  nVidia Dell NVS 5200M  1024MB NVC1 [10DE:0DFC] :: PciRoot(0x0)\Pci(0x1,0x0)\Pci(0x0,0x0) => device #1
16:023  0:000  Nvidia: VideoPorts: undefined, default to: 2
16:023  0:000  NVidia: FakeID 10DE:FEA
16:023  0:000  set NVCAP: 05010000-00000100-06000000-0000000F-00000000
16:023  0:000  Nvidia Mobile backlight

And yes, I had brightness slider on LVDS internal screen.

But I had no external displays and I am not sure it is possible to make system to adjust brightness on external screens.

Link to comment
Share on other sites

Hi Herve, I’m really glad that you replied mainly talking about the DCB entries instead of the variable brightness, because I figured out the variable brightness today.

 

I feel like a moron because I followed Rehabman’s guide regarding fixing brightness and each time overlooked the first paragraph about 10.12.4+.

It appears that my initial config file was correct, but my system kexts were wrong.

So eventually I followed this guide in order to extract some files from 10.12.3, and replace the ones in 10.12.6.

 

After I did this I have variable brightness with a 3 bit register (hardware limitation), so you can mark this thread mainly as solved (I still have to convert the device properties for my system). However, I really appreciate you for diving into helping me with the DCB entries. I originally just pulled a ROM from online, but I’ll try to extract my ROM to save some time and share it with you.

 

I’ve got some reading to do regarding Nvidia’s documentation, but you’ve explained the basics very well to me and I'll try my best to flip the bits around in order to crack this case.

 

Regarding when I close the lid with my current NVCAP value (HDMI/VGA + LVDS), my LVDS monitor turns off, but it doesn’t disconnect the LVDS monitor from the operating system or trigger sleep mode. HDMI/VGA remains connected.

Link to comment
Share on other sites

  • 3 weeks later...

Sorry for taking a while to respond, I’ve been pretty busy lately.

However, I’ve got great news to share with everyone.

I’m happy to say that I extracted my VBIOS, and decoded the DCB entries!

(I’ve attached my VBIOS below.)

 

Just want to say right off the bat that I was wrong about my internal display being LVDS, it’s an EDP.

This explains why I could never get my integrated graphics working. (though I haven’t tried porting the HD3000 externally)

 

The ROM that I originally provided is completely different to the one that I extracted from my system. (I retrieved it through the Windows 10 registry using this method.)

 

The ROM dump info from my system shows 4 x DCB entries with:

entry 0 -> TDMS (HDMI/DVI)
entry 1 -> CRT (VGA)
entry 2 -> LVDS (unused)
entry 3 -> DisplayPort (internal)

This is the current NVCAP value that I’m now using:

05010000 00000800 03000000 0000000f 00000000

Which maps to this result:

  • NVDA,Display-A@0 -> DisplayPort
  • NVDA,Display-B@1 -> HDMI or VGA

 

I figured out how to disconnect the internal display upon closing the LID.

I had to install the DSDT patch “Poll for LID changes,” and ACPIPoller.kext.

If there’s an external display connected, the computer stays awake and disconnects my internal display. If no external display is connected, the computer goes into sleep mode.

 

I’ve tried every conceivable combination of DCB entries in order to get dual external monitors working upon closing the LID.

After closing the LID, I can’t seem to enable separate HDMI/VGA regardless of how DCB entries are arranged, and assigning DisplayPort to both heads just disables my internal display.

 

Do you think it would be possible to patch my VBIOS or use a different one?

(I’m assuming that if my internal display and VGA monitor shared the same bus, then they’d mirror each other and I could get dual external monitors working upon closing the LID.)

 

If not, I’m happy to have two separate configs, and just switch between them if needed.

 

Finally, I worked out how to achieve native resolution on my external HDMI monitor (2560x1440) using SwitchResX (though I wonder if installing my own custom EDID override to “/System/Library/Displays/Contents/Resources/Overrides” would be better). The only problem is that the refresh rate only goes up to 34hz. Would you happen to know how I could get it up to 60hz?

VBIOS.rom

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...