Jump to content

Sony Vaio VPCF115FM Discussion: DSDT Injection


kizwan
 Share

787 posts in this topic

Recommended Posts

AlexanderPD: Why you are wasting your time? I already wasted this time, PEG3 is the right one, PEGP is in it, because Sony uses the same ACPI code for dual graphics and single graphics Vaios.

 

GraphicsEnabler and EDID injection can not solve the problem of LVDS detection. My recent DSDT already does everything in the right way, so you even do not need GraphicsEnabler anymore. Also PEGP is removed there, because it is not needed (only if your Vaio has also an intel graphics chip).

 

I believe the only point now to make it work is to patch the IOGraphicsFamily. So what could be the reason:

 

- Is the power of the lvds deactivated, so it has to be activated just before iographics tries to detect the screens?

 

- Is iographics unable to get the right data from the lvds hardware, so maybe you could hardcode the data you retrieved by debugging Windows?

 

What do you think?

Link to comment
Share on other sites

Hey Kizwan

I do not know where to start, and I'd have the nVidia HDMI and all complete. Now I use Chameleon to Graphics enabler Yes ...

I would like to inject into my nVidia DSDT G105M, can you help?

I leave the IO reg, bios and my DSDT...

 

I have Exedit and BBEdit, but not how to pass data Exedit bios to read it in BBEdit.

 

Thanks a lot

biosvga_dsdt_ioreg.zip

Link to comment
Share on other sites

Hey guys, long time no see.

 

It's amazing how far we have got with this. I just wanted to let you guys know the following:

 

the Sony Vaio VPCF115FM laptop does not have a whitelist in its bios. What does that mean for us? Simple:

We can swap out our wireless card. I personally tested this by disassembling my vaio and putting a card I had in my other hackintosh into it and it boots up all the way through.

 

In the case of the VPCF115FM, you need a card that is a half height mini Pci. I ordered the Dell 1510 (I went to the irc and many agreed that this card is the way to go for compatiblity with OSX and Win7).

 

For the other models I can only suggest that you take your vaio's apart and test yourselves, but I felt I should let you guys know this detail.

 

Anyways I am waiting on my wireless card. I am debating making a tutorial of how to disassemble the VPCF115FM (considering there isn't any guide on it and I had to do it blind) so if there is enough demand I will post it here or where ever you guys want it. Just let me know in a reply, and who knows, maybe the steps to disassemble the other vaios are similar if not the same.

 

 

PTDM

Link to comment
Share on other sites

GraphicsEnabler and EDID injection can not solve the problem of LVDS detection.

 

So the problem is only there? And if we can found our LVDS address we can inject it as a NVCAP address and make it run successfully? :o

I think we can found it using linux (maybe even in windows.. dunno) i'm googling for that!

Link to comment
Share on other sites

So the problem is only there? And if we can found our LVDS address we can inject it as a NVCAP address and make it run successfully? :P

I don't believe this anymore.

 

Btw. the recent nvidia osx driver has revision 256.xx, while on Linux there is already a 260.xx revision. The revision 260.xx fixed this Sony problem on Linux. So maybe maybe hopefully in the new OSX 10.6.7 there could be a version with 260xx and maybe some special sony related code...?

 

Anyone has access to developer preview of 10.6.7 and can extract nv*.kexts ?

 

EDIT: NO. Netkas already confirmed that there is neither a new ATI nor a new nvidia driver inside of 10.6.7 -_-

 

But there will be soon a new mac book pro, maybe also an driver update for it?

 

 

The most promising approach is patching the IOGraphicsFamily IMO!!!!

 

AlexenderPD, do you have a working build of IOGraphicsFamily?

 

In the case of the VPCF115FM, you need a card that is a half height mini Pci. I ordered the Dell 1510 (I went to the irc and many agreed that this card is the way to go for compatiblity with OSX and Win7).

 

Can you report if it runs successful?

 

EDIT: {censored}, this card is expensive

Link to comment
Share on other sites

Anyone has access to developer preview of 10.6.7 and can extract nv*.kexts ?

 

EDIT: NO. Netkas already confirmed that there is neither a new ATI nor a new nvidia driver inside of 10.6.7 :blink:

 

i tried 10.6.7 yesterday.. kernel panic on startup, just after the gray apple comes out.

Replaced kernel 10.7 with 10.6, still no main lcd (and blue screen only in external lcd)

 

i still have no working IOGraphicsFamily.kext, i'll try to compile it successfully, now i need to reinstall osX :(

 

edit: no geforce for next mac book 13 generation.. only intel hd :wacko: i hope in the 15' model!

Link to comment
Share on other sites

Alright you guys, my new wireless card just came in and I just finished installing it. I will give you the instructions for how to do it for the VPCF115FM notebook. For this guide I am replacing the AR9287 with a Dell 1510 wireless card.

 

Notice: I am not responsible for any damage that happens to your device as a result of this. If you choose to use this you are fully aware of the risks in doing so.

 

You only really need a small philips head screw driver and a flat head screwdriver.

First Thing is first:

 

REMOVE THE LAPTOP FROM ANY SOURCE OF POWER!!!!

ie: remove battery and laptop power adapter.

 

Second:

 

Using the pdf I will attach you will notice that I color coded screws.

Screws of the same color can be put together. RED DOES NOT EQUAL YELLOW!

Remove the screws and put them somewhere for safe keeping.

 

Third:

Once you have removed all the screws, Remove the Optical disk drive, the HDD bay cover, and the RAM cover. Once the Optical drive has been removed you will see three more screws you need to remove.

 

Step four:

remove the screws holding the HDD bracket and then remove the HDD gently (Please take it from me, these things are sensitive and sony takes a BS time to replace them). Also, remove the four screws from under the battery and set them aside alone.

 

Step five:

Once all the screws have been removed, open the laptop and remove the Speaker cover as you will see in the pdf.

**NOTE**: IF any part doesn't come off easily do not force it. go back and check for screws again.

 

Step six:

Remove the keyboard as shown and unplug the two cables from the motherboard.

 

Step seven:

Close the laptop up and gently remove the bottom off. This takes some maneuvering as you have to get around all the ports.

 

Step eight:

You should now see the mother board. In the picture you need to look near where the Optical disk drive was to see the wireless card is. (This location will vary if you do not have the same laptop as me.)

 

Step nine:

Remove the two screws holding the half-height mini pci wireless card and gently pull it from the slot. Make a note of the antenna cable locations and where they are plugged in.

 

Step ten:

move the cables onto the new card and reinstall the new card and replace the screws on.

 

Step eleven:

Go back through steps 10 - 1

 

Step twelve: after you make sure everything is back in place, start your laptop up and go to your windows partition and make sure it detects your new card, and you can connect to the internet. After that reboot into your OSX partition and do the same. If both check out you were succesful.

 

 

 

This is my instructions for my Sony Vaio VPCF115FM notebook. This may or may not work with others and the only way to make sure that you can easily replace your wireless card is to do the steps above with any other windows capable mini pci card OTHER than the default. If you are unable to boot up then your bios has a whitelist that prevents you from easily switching cards. If you are able to boot, then its a matter of finding a card that is osx capable and the right form factor.

 

To those who cant swap cards you need to look into having your bios whitelist removed or edited.

 

Tutorial picture guide here: http://www.mediafire.com/?750s1nf1ccbgdm5

 

If you have any questions reply or PM me and I will do my best to help.

 

 

Phantom Thief Dark Mousy

~Demon Blitz~

Link to comment
Share on other sites

Phantom: Cool, does the Dell card also include bluetooth/does you bluetooth still work?

 

I have exactly the same case, but I did not had to remove any part on the front side! Maybe it is not needed?

 

Do you think, this card could also work:

 

Atheros AR9281

 

Yes, bluetooth still functions due to it being a seperate card, I have not had time to test it. I only removed the front to that I may make not of the antenna cables but most likely it isn't needed (keep in mind I didn't have a guide to go through the steps, I was going blindly).

 

As for the AR9281, I am not sure of its compatibility, your best bet is to either look around the web and see if anybody has gotten it to work, or (and I highly recommend this one) to go on the IRC and see if anybody there knows. I personally picked the Dell 1510 b/c it is a broadcom based chip that OSX doesn't have any issues detecting and using.

Link to comment
Share on other sites

Sadly the new Macbooks/MacBookPros all have ATI inside, so there will be no nvidia kext update.... ;)

 

and THIS really sucks. On linux the internal LCD thing is totally solved with 260+ driver, i hoped until the end in a upgrade.. but seems like we can't hope in this anymore.

 

So.. i need to study hardly (24/7) for a few days and i can't handle this lcd internal detection thing until 5/6 march.

I'm writing here what i'm investigating: we know that LCD is not detected at all.

Some people (me too) tried to force EDID to Display@A hoping in a good result, without success. I tried to understand WHY this.

First, what is EDID? We all know what but maybe not all know what every single bit means in the 128byte string. So i found the official paper about EDID 1.4 (yes, our Vaios had edid v.1.4): Read Here

Why i read that? Because i want to know if in EDID there are information about the address of the screen, in our case the internal lcd. Sadly not a single bit is about the screen address, this is an information that only the VGA can have.

So we can find the lcd address in VGA Rom, via LVDS port. Normally VGA uses i2c protocol to tell this address, but there is a new standard (the one used by our vaio) called DDC.

If you check the DSDT we can found this in the PEG3 section:

  Device (LCD)
				{
					Name (_ADR, 0x0110)
					Method (_DDC, 1, NotSerialized)
					{
						Store (GPID, Local0)
						If (LEqual (Local0, One))
						{
							Return (EDI1)
						}

						If (LEqual (Local0, 0x02))
						{
							Return (EDI2)
						}

						If (LEqual (Local0, 0x03))
						{
							Return (EDI3)
						}

						If (LEqual (Local0, 0x04))
						{
							Return (EDI4)
						}

						If (LEqual (Local0, 0x05))
						{
							Return (EDI5)
						}
						Else
						{
							Return (EMPT)
						}
					}

 

In DSDT we can find 5 DSDTs plus an empty one (EMPT). I removed the first 4 (the only correct EDIDs in my case was 4 and 5) an forced to only tell the right one. My DSDT now is:

					Device (LCD)
				{
					Name (_ADR, 0x0110)
					Method (_DDC, 1, NotSerialized)
					{
						Return (EDI1)
					}

Simple and without any Sony {censored}.

the Method DDC tell the right EDID and the Address of our LCD is 0x0110. Woah, it seems done then!

My tough was to force this 0110 in nVidia driver to make the connection.

How to force that? I found 2 methods, but i'm still unsure on IF we can use them.. in all my tries i always failed.

First metod:

force 0,@display-cfg.

I found some information Here but it's for osX 10.5.. i hope it's the same.

The display-cfg string is a 32-bit string that use i2c (supposed to be i2c) protocol to comunicate the address. Read the link for more information.

the digit we must consider is 3 and 4, and here is where i'm lost. Our address is a 4 digit hex 0x0110 and the i2c address we can use here is only 2 digits, but i don't know what a DCB entry is so.. maybe this is the right method.

By default nVidia driver assign to display-cfg 0xFFFFFFFF to both display@A and display@B, and this is really confusing for me. Maybe display-cfg is used only for detecting internal screens and external works anyway, i really dunno need more investigation.

 

Second method:

force NVCAP.

More information in the same link as before.

We can edit the first and second word to force screen detection. This is troublesome, on DSDT i found:

					Device (CRT)
				{
					Name (_ADR, 0x0100)

So the Address of external video must be 0100, and this is my actual NVCAP:

<04000000 00000100 7e000000 0000000a 00000000>

 

Word 1, for output group 3 like s-video, is 0000 (value from 9 to 12)

Word 2, for output group 1 like display@A, is 0100, the same of the CRT address in DSDT

Word 3, for output group 2 like display@B, is 7E00, wich have totally nonsense.

 

I tried to use 0110 in word 1 (no internal, yes external), in word 3 (no internal, no external), in word 2 (no internal, no external) so no success at all.

I tried to use 0100 in word 3 and all other combination.. always without any success.

So.. maybe i didn't understand NOTHING about this and i'm only doing my childhood dreams, but maybe we can work on this too.

 

Still have to examine NVMT, don't know nothing at all.

 

But.. this is confusing. What about the original question? Why on non-vaios computer people don't have this problem? We have a single difference from other laptop, the soft-edid. What is soft-edid? I Have no fuc****g idea. Google said nothing to me and the only information i found is from an italian nvidia documentation for linux from a russian site:

INSTALLAZIONE E CONFIGURAZIONE

 

Le operazioni di installazione e configurazione di NVIDIA Accelerated Linux Driver Set su un portatile si svolgono allo stesso modo per qualsiasi ambiente desktop, con poche eccezioni di portata minore, elencate di seguito.

 

A partire dalla release 1.0-2802, le informazioni in merito al monitor a schermo piatto interno da utilizzare per l'inizializzazione dello schermo sono generate per opzione predefinita dai dati archiviati nel BIOS video. Questa opzione può essere disabilitata impostando l'opzione "SoftEDID" del kernel sul valore 0. Se "SoftEDIDs" è disattivata, allora i dati necessari vengono selezionati da una tabella, basata sul valore dell'opzione "Mobile" del kernel.

 

L'opzione "Mobile" del kernel può essere impostata su uno qualsiasi dei valori seguenti:

 

0xFFFFFFFF : il modulo del kernel rileva automaticamente il valore corretto

1 : per i portatili Dell

2 : per i portatili Toshiba non Compal

3 : per tutti gli altri portatili

4 : per i portatili Toshiba Compal

5 : per i portatili Gateway

 

Di nuovo, l'opzione "Mobile" del kernel è necessaria soltanto se SoftEDIDs è disabilitato; se viene utilizzata, è solitamente più sicuro lasciare che il modulo kernel rilevi automaticamente il valore corretto (si tratta del comportamento predefinito).

 

Qualora fosse necessario alterare queste opzioni, procedere come segue:

 

o modificare il file os-registry.c nella directory usr/src/nv/ del file .run.

 

o impostare il valore nella riga di comando modprobe (per esempio: `modprobe nvidia NVreg_SoftEDIDs=0 NVreg_Mobile=3`)

 

o aggiungere una riga "opzioni" al file di configurazione del modulo, solitamente /etc/modules.conf (per esempio: "options nvidia NVreg_Mobile=5")

 

i'm italian, so i can translate it well:

 

INSTALLING AND CONFIGURATING

 

<some garbage here>

 

From release 1.0-2802, monitor flat panel information for initialize screen was generated by default from video BIOS. This option can be disabled using the "SoftEDID" kernel option to 0. If "SoftEDIDs" was unchecked then the necessary data was grabbed from a table, depending from the value of "Mobile" kernel option.

 

The "Mobile" kernel option can be set to one of this values:

 

0xFFFFFFFF: kernel module auto-detects the right value

1: for Dell notebooks

2: for Toshiba non Compal notebooks

3: for all the other models

4: for Toshiba Compal Notebooks

5: for Gateway notebooks

 

Again, the "Mobile" options is necessary only if SoftEDIDs is disabled; if used, is usually safer made the kernel module to auto-detect the right value (default option).

 

If you must change this option use ONE of this methods:

 

- Modify os-registry.c file in usr/src/nv/ from .run file.

- Set value by modprobe command in command line (example:

modprove nvidia NVreg_SoftEDIDs=0 NVreg_Mobile=3)

-Add an "option" row in module configuration file, usually /etc/modules.conf (example:

options nvidia NVreg_Mobile=5)

 

i hope this can be usefull, i'll return on this as soon i can.

Why i'm not wasting my time trin' to patch IOGraphicsFamily? i really don't think that can be the right way.. but this is only my personal opinion, i'm not that good in osX (or any other os) to be 100% of that :(

 

Last thing: i'm writing from osX10.6.7, it works good as 10.6.6 but only with 10.6 kernel, the 10.7 crashes on the very beginning of the startup process, seems like he dislike my Intel Core i3.

Link to comment
Share on other sites

Well Alex,

 

I asked the guru of nvidia injection, Krazubu about proper injection on vaios here: link

 

Please read his answers, also another guru called Slice came to the discussion. Krazubu also investigated this problem before I asked: His result is that it does not have anything to do with dsdt nor nvcaps nor display-cfg. He thinks that the snc device will enable the display... The display is activated not by calling some acpi or nvbios.

 

ryuu123, the man behind the snc driver for other vaios wrote that he believes the snc device is NOT responsible for the problem. He thinks we need to disassemble and then binpatch the nvidia driver.

 

Btw. do you know how I can disassemble the driver?

 

Can you ask Krazubu? Or maybe better, slice. Krazubu is always sort of faint-hearted. Maybe one of these can help us.

 

Regarding IOGraphicsFamily: So I believe you have a better understand of the processes it seems. In th IORegExplorer the IOGraphics registers the external screen, so I guessed it's responsible for giving the driver a list of screens. That's why I think it's a good point to patch. But of course maybe I am totally wrong.

 

Did you read this thread completly just to ensure you are not doing anything somebody already tried?

Link to comment
Share on other sites

Well Alex,

 

I asked the guru of nvidia injection, Krazubu about proper injection on vaios here: link

 

Please read his answers, also another guru called Slice came to the discussion. Krazubu also investigated this problem before I asked: His result is that it does not have anything to do with dsdt nor nvcaps nor display-cfg. He thinks that the snc device will enable the display... The display is activated not by calling some acpi or nvbios.

 

ryuu123, the man behind the snc driver for other vaios wrote that he believes the snc device is NOT responsible for the problem. He thinks we need to disassemble and then binpatch the nvidia driver.

 

Btw. do you know how I can disassemble the driver?

 

Can you ask Krazubu? Or maybe better, slice. Krazubu is always sort of faint-hearted. Maybe one of these can help us.

 

Regarding IOGraphicsFamily: So I believe you have a better understand of the processes it seems. In th IORegExplorer the IOGraphics registers the external screen, so I guessed it's responsible for giving the driver a list of screens. That's why I think it's a good point to patch. But of course maybe I am totally wrong.

 

Did you read this thread completly just to ensure you are not doing anything somebody already tried?

 

so.. both display-cfg and nvcap will fail :( sorry if i'm not only wasting my time but even yours!

we can surely disassemble the driver but i'm not good enough for understand it :( And.. before askin on krazubu, he said that nvidia driver on windows (or linux after 260) patches "on the fly" vga rom.. so if we can dump it from a working linux or windows we can replace it in chameleon using UseNvidiaROM=Yes!

Before starting to work in kext patch i want to try this last thing, i'm currently trying to dump rom from windows :P

Link to comment
Share on other sites

here another way to "see" the problem.

What windows driver do that mac os doesn't? I downloaded windows driver installer e found the inf file wich describe what the driver installer needs to do on windows. I attach the file.

 

The interesting part is when he edit the windows registry, maybe we can find something useful!

I'm still trying to understand it but there are some interesting things, like the internal lcd forcing :)

look at this:

[FAEIDS_78_addreg]
HKR,,OverrideEdidFlags0,%REG_BINARY%,7C,00,00,00,00,00,FF,FF,04,00,00,00,08,02,36,7F
HKR,,OverrideEdidFlags1,%REG_BINARY%,36,7f,fa,08,00,00,ff,ff,0d,00,00,00,15,6A,29,17,00,EA,A8,E0,99,57,4B,92,25,1C,50,54,00,00,00,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,37,2F,90,84,61,B1,1E,30,20,30,26,00,98,E6,10,00,00,18,9C,27,90,90,61,B1,1E,30,20,30,26,00,98,E6,10,00,00,18,00,00,00,FC,00,4E,76,69,64,69,61,20,44,65,66,61,75,6C,00,00,00,FC,00,74,20,46,6C,61,74,20,50,61,6E,65,6C,00,00
HKR,,OverrideEdidFlags2,%REG_BINARY%,36,7f,25,00,00,00,ff,ff,0d,00,00,00,15,6A,29,17,00,EA,A8,E0,99,57,4B,92,25,1C,50,54,00,00,00,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,01,69,3A,80,18,71,38,36,40,50,32,4A,00,99,E6,10,00,00,18,BB,30,80,20,71,38,32,40,50,32,4A,04,99,E6,10,00,00,18,00,00,00,FC,00,4E,76,69,64,69,61,20,44,65,66,61,75,6C,00,00,00,FC,00,74,20,46,6C,61,74,20,50,61,6E,65,6C,00,00
HKR,,Panel01,%REG_SZ%,",MS_,,08FA"
HKR,,Panel02,%REG_SZ%,",MS_,,0025"
HKR,,Panel03,%REG_SZ%,",MS_,,0025"

 

By monInfo i can see that internal lcd is named MS_0025, i hope this can be useful!

nvszc.zip

Link to comment
Share on other sites

EDIT: this post is {censored}, don't read it. I verified that this is *not* the reason for our problem.

 

people, i think i got the real reason behind our not working internal LCD ;)

read that and say what u think:

 

In my humble opinion, the real problem is the Hardware ID of our lcd and how the nvidia driver manage it. I looked for other display hardware ID and ALL of them is by the UUUYYYY standard (the EISA-type ID standard), where U is a upper-case letter and Y an hex number. I used in my vaio 2 external lcd, with id: ACR0009 and SHP07EE, both of them working. The internal LCD have hardware id MS_0025 and, because of the "_" character, is a non-standard hardware id. This because DSDT uses the EISAID istruction to tell the hardware id of the display, and if you try to edit your dsdt to force MS_0025 as id you can't compile for this error.

So, i looked for other hardware id: the user ijvaio (he posted a lot in this very thread) have display hardware id MS_0026, it's a coincidence? :P

All the Vaio E, F and Z series have MS_0025 as hardware id for display, but not the VPCFZ21 (it has NVD0300). The SZ series has MS_0040 and i'm sure if we investigate on that we'll find that MS_ in all non-working display.

 

So, i THINK the nvidia driver looks for a standard hardware ID before make the connection, and he found that MS_ that is Not a standard value, or maybe he can't get the HID at all. Maybe ATI user doesn't have that problem because it's a nvidia driver method for find displays (always due my non confirmed theory).

 

About windows: when you install driver it automatically write in your registry the MS_0025 value (in my case) so the os-displaydriver combination manage to find the display. Maybe in linux it works in a different way, i'm not that good to theorize that.

 

If THIS is the problem, do you have an idea to how solve it? Hardware id is unique and you can not change it in the hardware so we need a way to "virtually replace" it. I'm really not good in this so i need your help :D

 

Thank you!

Link to comment
Share on other sites

Well if your theory is true then, and please know that I dont know much about programing other than java, then a solution would be either:

 

A: writing a driver that can make the connection to the display

 

or

 

B: patch the current ones in some way that we can detect our displays.

 

 

I'm just throwing these theories out there.

 

 

PTDM

~Demon Blitz~

Link to comment
Share on other sites

same black screen problem for you?

if yes, can you post the hardwareId of your lcd? (use moninfo.exe for this, it's something like MS_0025, NVD0100 or SNY5001)

 

Yes, my hwId is SNY05FA. :)

Now I have only Win7.

Link to comment
Share on other sites

can you try to force HID via dsdt?

you need to find the part with:

Device (LCD)

{

and add after this:

Name (_HID, EisaId("NVD0100"))

 

using the right hid instead NVD0100

 

if it still doesn't work... my theory is a total fail

 

I'm trying a new installation. AlexanderPD have you tried this kext?

http://extraspeed.blogspot.com/2010/05/nvi...e-qi-fixed.html

with EmpireEFI 1.085 and OsX 10.6.3?

Link to comment
Share on other sites

little update:

i send the geforce 330m rom uploaded by Funky Frank on this topic to the creator of a cool vBios editing tool for windows (NiBiTor 6.0) and seems like the rom is "incomplete".

If i remember the right thing Funky Frank dumped this rom from osX, so MAYBE that rom is incomplete due of osX inability to correcly read it at 100%.

People here and there in internet tells that the full rom is in Vaio's Bios rom, so i just send the vaio bios rom to the NiBiTor creators. They seems to be interested in this, i hope they can get some "full version rom", maybe it can be helpful for our cause.

Link to comment
Share on other sites

 Share

×
×
  • Create New...