Fortitude Posted June 29, 2021 Share Posted June 29, 2021 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: Qosmio X775 Problem Reporting Files.zip Quote Link to comment Share on other sites More sharing options...
Allan Posted June 29, 2021 Share Posted June 29, 2021 😃👇 Quote Link to comment Share on other sites More sharing options...
Fortitude Posted June 30, 2021 Author Share Posted June 30, 2021 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. Quote Link to comment Share on other sites More sharing options...
notobo Posted July 1, 2021 Share Posted July 1, 2021 Maybe you can overide this problem with Monitor Control? https://github.com/MonitorControl/MonitorControl Quote Link to comment Share on other sites More sharing options...
Fortitude Posted July 3, 2021 Author Share Posted July 3, 2021 (edited) 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 July 19, 2021 by Fortitude Quote Link to comment Share on other sites More sharing options...
Slice Posted July 4, 2021 Share Posted July 4, 2021 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. Quote Link to comment Share on other sites More sharing options...
Fortitude Posted July 4, 2021 Author Share Posted July 4, 2021 Hey Slice, that’s very interesting because it appears to be similar to the person in this thread. I guess it could be possible that Toshiba wired things in a weird way when they built my laptop, and/or my VBIOS is completely different. Quote Link to comment Share on other sites More sharing options...
Fortitude Posted July 4, 2021 Author Share Posted July 4, 2021 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. Quote Link to comment Share on other sites More sharing options...
Fortitude Posted July 20, 2021 Author Share Posted July 20, 2021 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.