Jump to content

K2100M and Blank Internal Screen...

5 posts in this topic

Recommended Posts



I have a Precision M4800 with a Quadro K2100M. I am able to boot 10.13 and 10.14 and the nVidia kexts load without any kind of injection. I get QE\CI (acceleration) on any external screen (HDMI or HDMI thru a DP adapter), yet the internal screen (which is connected thru eDP).

While this laptop is Haswell-based, Dell has deliberately disabled (as in no traces of the device on the pci bus) the integrated Intel GPU and according to Windows, the display is directly connected to the Quadro K2100M.


From what I can see, on 10.13 and 10.14 ioreg, it detects ports 0 (Display-A), 4 (Display-B), 5 (Display-C) and 7 (Display-D).

I've used the nvidia linux driver + the envytools package from the nouveau team and an old MacOS X (it was still MacOS X then) utility called nVidiaInfo to extract some information from the vbios, and I got this far.




nVidiaInfo's DCB Table (note that TYPE6 probably means DisplayPort as it wasn't a thing when it was released).




The nVidiaInfo's DCB Table and the one reported by the Linux tools do kinda match. I say kinda because there's no mention of an LVDS DCB Entry on the Linux DCB Table, but there is mention of a LVDS Connector on the Linux Connector Table.

I was also able to correlate the DCB Entries and corresponding connectors (or heads) to their respective physical ports on the laptop as shown in the last column. And they do match the ports reported by IOReg. Whenever I boot with my HDMI monitor (TV) attached, it shows up on IOReg under Display-D with a port connector of "07 00 00 00" which matches the "Connector 7/Mac DCB #8" row. Accordingly, if I boot with the same monitor thru a DisplayPort->HDMI convertor on the physical DisplayPort it shows up as Display-B with a port connector of 04 00 00 00 which matches the Connector 4/Mac DCB #4 on the table above.


The only other ports remaining on the IOReg is 0, which is nonexistant on the Linux DCB Table (only as a sole connector as previously mentioned), and 5 which I haven't been able to point out where it goes, but I'm guessing that it might be a port on an External Dock (but I don't own such a Dock to test).


So my reasoning is that I need to change that port number for Display-0 from 00 00 00 00 (remember, port 0) to 08 00 00 00 (as in connector 8 for the eDP panel in the table).


I'm in the process of setting up a GitHub Repo with all the information on this laptop that I got, but I'd be very grateful if anyone can point me in the right direction or give me an ideas at all. I've tried reaching out to @Krazubu since he's known to be a lot knowledgeable on this nVidia stuff. Sadly it doesn't seem that @fassl is around here anymore as his Nvidia Injection topic here on IM is a big help.



  • 1 month later...



I just see your post.

What I'd advise for trials, to narrow down all the variables and make things easier :

- 1st make sure what you need. Be careful, connectors and heads are a totally different thing. Think of heads like a "brain" able to generate a picture, that can then be directed to one or several connectors (after passing through encoders and muxers). What is listed in fassl's software is the SIGNAL type, not the connector. Connector is defined later in the ROM and not displayed here. Your linux tool gives the twos, and as you can see, a connector can transmit several signals depending on the configuration. 

- totally wipe the DCB and keep only the entry you want (#6), but leave it its position in the list (to keep matching with the corresponding connector).

- Fix its head to 0 (15 means "any" and its up to graphic driver to chose. OSX driver doesn't support that and expects some fixed info. Web driver does support it but this introduces complexity and instability in cases like yours)

- leave the rest of data as is for that entry (i2c, bus, loc…)

- use ROM "injection" to avoid messing with your real ROM

- if you manage to get the internal screen working, you can then think about adding other outputs, but you will have to use head 1, because 0 is already taken and it's not possible to use the same head for different outputs.

  • Create New...