My Brute
Well, you may have heard about My Brute, it’s becoming quite popular lately…and that’s because it’s really adictive!
Just give it a try! http://poser123.mybrute.com
Well, you may have heard about My Brute, it’s becoming quite popular lately…and that’s because it’s really adictive!
Just give it a try! http://poser123.mybrute.com
I recently bought a new laptop, a Sony Vaio Z.
It’s a great machine indeed! The only problem with it is the lack of compatibility with Linux, especially regarding it’s hybrid graphics card system (it has two cards, an Intel and a Nvidia). Basically, it’s not possible to use Linux with just one of the cards enabled without the need to go to XP (yeah, one has to downgrade to XP to be able switch cards, as Vista disables the cards on shutdown/reboot) every time before booting Linux. So after using Linux with just one card enabled, if I shutdown/restart the system both cards are on again :/.
I’m not going to enter in details on how this happens, I’ll just post some info on how to solve the problem of having to boot XP everytime. With this, I can reboot/shutdown and the selected card is still the only one avaiable.
Solving the problem
I’ll describe the process starting from scratch, i.e., with Vista pre-installed.
The first thing to do is downgrade Vista to XP, as it still is the only way to switch between the two cards.
Now, after having Linux installed we just need to get the DSDTs for two situations: Intel only avaible and Nvidia only avaiable.
cp /proc/acpi/dsdt DSDT
And disassemble it:
iasl -d DSDT
In this two DSDTs there is a section like this:
If (CondRefOf (_OSI, Local0))
{
If (_OSI ("Linux"))
{
Store (0x03E8, OSYS)
}If (_OSI (”Windows 2001″))
{
Store (0×07D1, OSYS)
}If (_OSI (”Windows 2001 SP1″))
{
Store (0×07D1, OSYS)
}If (_OSI (”Windows 2001 SP2″))
{
Store (0×07D2, OSYS)
}If (_OSI (”Windows 2006″))
{
Store (0×07D6, OSYS)
}
}
So we just change
If (_OSI ("Linux"))
{
Store (0x03E8, OSYS)
}
to
If (_OSI ("Linux"))
{
Store (0x07D6, OSYS)
}
Do this on both DSDTs. And now we can compile them.
./iasl -tc DSDT
This will generate two files. One of them has the extension .aml (which is the one want).
Now here is the thing…He have to use just one DSDT at a time. Like, if we want to use the Intel we have to use the changed Nvidia DSDT, and if we want to use the Nvidia we have to use the changed Intel DSDT (Yeah that’s right, Nvidia DSDT for Intel and Intel DSDT for Nvidia).
Copy this changed DSDT to initrd and reconfigure it (This commands are for Ubuntu, so please check your distro documentation for specif instructions on how to do this).
cp DSDT.aml /etc/initramfs-tools/DSDT.amlsudo dpkg-reconfigure linux-image-$(uname -r)
Now reboot/supend/shutdown and if we have the DSDT for the card you want and have the card itself enabled it should work! But you still have to go to XP to switch form one card to another, which is not that bad I think…I’ll be using the Intel for like 99% of the time
If you have any doubt just ask, I asure you this is working great!
Btw, here are my changed DSDTs just in case (just compile them and put them into initrd as above).
http://dl.getdropbox.com/u/563152/DSDT_Intel_changed.dsl
http://dl.getdropbox.com/u/563152/DSDT_Nvidia_changed.dsl
Edit: Just added the missing command to disassemble the DSDT before changing it.
My semester doing Erasmus here in Spain is almost over…It was really cool to live in a big european capital like Madrid, it’s really different from what I’m used to in Coimbra.
I had a great time here and, more than anything, it was a lesson for life. But now it’s time to get back and to all the things I miss…Like good coffee!
Anyway, I still got a week to spend here, and a project to deliver, so…