Bios Mods -The Best BIOS Update and Modification Source

Full Version: Dell Vostro 3450 Advanced Options unlocking in progress
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
In UEFI mode, the "fast startup" doesn't work, I got stuck with it everytime so I did turn it off.
Hi guys, sorry for interrupting your Windows 8 stuff here.
I'm currently messing with DSDT again to see whether I can find the cause of touchpad and keyboard initialization problem.

There is some weird check in DSDT regarding the keyboard. I'm not sure what it does:
Code:
Device (PS2K)
{
Name (_HID, EisaId ("PNP0303"))
Method (_STA, 0, NotSerialized)
{
If (And (LEqual (PKBD, 0xFF), LEqual (PKBC, 0xFF))) // what is this check for?
{
Return (Zero) // so it disables the keyboard in some situation?
}
Return (0x0F)
}
Same goes for the touchpad:
Code:
Device (PS2M)
{
Method (_HID, 0, NotSerialized)
{
If (LEqual (BRID, One))
{
Return (0x8F058C11) // As we figured out, this is touchpad model detection thing for different models of Vostro 3450
}
Else
{
Return (0x93058C11) // Another touchpad model ID
}
}

Name (_CID, EisaId ("PNP0F13")) // This is a generic name for PS/2 mouse/touchpad
Method (_STA, 0, NotSerialized)
{
If (And (LEqual (PKBD, 0xFF), LEqual (PKBC, 0xFF)))
{
Return (Zero) // So it disables the compatible generic touchpad ID and reports DLL04C5 or whatever it is for another model. What triggers it to report the compatible ID, then?
}
Return (0x0F)
}
I decided to remove all these checks and make it look like a generic touchpad.
So far, I've been able to do this:
https://dl.dropbox.com/u/91178815/touchpad.png
As you see, there's no DLL04C5 or any other Dell ID. Which is good because it is now detected as an ordinary touchpad. You can install any Synaptics driver for it (though you were able to with the original ID too).
To make Fn+F3 combination work, simply import this regfile:
Code:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SynTP\Parameters]
"WheelmouseRedetectToResync"=dword:00000001
"VerifyKBCSync"=dword:00000001
"KeyboardController"=dword:00000001
"DetectForceCompatibilityMode"=dword:00000001
"KBCDisableConfig"=dword:00000001
"KBCNotifyConfig"=dword:00000031
"DisableKey"=dword:0000e01e
"HotkeyEnableMask"=dword:07070707
The modified DSDT code is as follows:
Code:
Device (PS2K)
{
Name (_HID, EisaId ("PNP0303"))
Name (_STA, 0x0F)
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0060, // Range Minimum
0x0060, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0064, // Range Minimum
0x0064, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IRQ (Edge, ActiveHigh, Exclusive, )
{1}
})
Name (_PRS, ResourceTemplate ()
{
StartDependentFn (0x00, 0x00)
{
FixedIO (
0x0060, // Address
0x01, // Length
)
FixedIO (
0x0064, // Address
0x01, // Length
)
IRQNoFlags ()
{1}
}
EndDependentFn ()
})
}

Device (PS2M)
{
Name (_HID, EisaId ("PNP0F13"))
Name (_STA, 0x0F)
Name (_CRS, ResourceTemplate ()
{
IRQ (Edge, ActiveHigh, Exclusive, )
{12}
})
Name (_PRS, ResourceTemplate ()
{
StartDependentFn (0x00, 0x00)
{
IRQNoFlags ()
{12}
}
EndDependentFn ()
})
}
}
}
}
I'm not sure if this fixes the initialization problem, but let's see how it goes. I'm testing it right now.
The Fn+F3 trick worked fine with a Dell driver 16.2.12.13 from Vostro Notebook 2421, thank you. I've forgot to report it as working over at ixbt.
I find DSDT modification unnecessary as most of the things work anyway.
The cause of Fn+F2 not working may be the same cause of shutdown working improperly in UEFI mode (which is also the case for OSX, actually and I blamed Clover EmuVariable driver for this ..). As far as we were able to troubleshoot, the issue appears to be related with memory allocation.. in UEFI mode memory regions are distributes slightly different as to what DSDT suggest.. and as such it causes the system to freeze when attempting to write a certain register. One thing is not right here - why only a certain value written hands the system..

The _SAT method is actually device status 0x0F = enabled, 0x00 = disabled, but you've figured it out already.
The check for PKBD and PKBC appears to be related with
Code:
OperationRegion (PKBS, SystemIO, 0x60, 0x05)
                Field (PKBS, ByteAcc, Lock, Preserve)
                {
                    PKBD,   8,  // probably keyboard device
                    Offset (0x02),
                    Offset (0x03),
                    Offset (0x04),
                    PKBC,   8 // keyboard controller
                }
both PS2 peripherals will be disabled if controller failed to initialize and. This SystemIO is actually SuperIO, which in our case is ITE8518E chip.
but across all the DSDTs i've seen only Dell appears to be checking for this status, which may explain why it randomly stops working at times..
Thanks TW, makes a lot more sense now.

I still don't understand one thing though. Why would they describe a condition when ITE8518E fails to initialize? It's not supposed to happen on a laptop unless there's a hardware problem. I think this check is implemented badly and it may actually be the reason it messes up keyboard and touchpad initialization.

Anyway, I guess it is safe to leave the BRID check there and it will report correct touchpad models?

I have tested two drivers with the generic ID. The driver from Dell website works fine. Fn+F3 doesn't work, but it isn't a problem if you import the .reg file.
16.3.3.8 (the latest one I have) seems a bit messy. I got it to work with Fn+F3, but the LED behavior is strange. If the touchpad is disabled (LED is on) and you press Fn+F3, it flashes once and stays on. The touchpad gets enabled though.
I guess it's a rhetoric question which has no answer for obvious reasons - god knows what were Dell thinking when they implemented the check.
The BRID should be fine I guess, it allows to distinguish AMD SG model from Intel-only model, actually display switching is done based on the same check.
Newer drivers (16.3) seem tho think I've got a touch panel installed and they shove onscreen keyboard at me, removing the language switching bar, which is weird. Hence I'm sticking with 16.2 series of drivers for now.
So, I restored the BRID check and the touchpad has a yellow bang now. Same Error 10 ("The device cannot start"). The keyboard is working fine though.
What am I doing wrong here?
Code:
Device (PS2M)
                {
                  Method (_HID, 0, NotSerialized)
                    {
                        If (LEqual (BRID, One))
                        {
                            Return (0xC5048C11)
                        }
                        Else
                        {
                            Return (0xD9048C11)
                        }
                    }

                    Name (_CID, EisaId ("PNP0F13"))                    
                    Name (_STA, 0x0F)
                    Name (_CRS, ResourceTemplate ()
                    {
                        IRQ (Edge, ActiveHigh, Exclusive, )
                            {12}
                    })
                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFn (0x00, 0x00)
                        {
                            IRQNoFlags ()
                                {12}
                        }
                        EndDependentFn ()
                    })
                }
Also, can you please provide a link for the driver you're using? I tried to download it from Dell website, but it gave me an empty SFX archive with nothing but "version.txt"...
Not sure what's the deal. Try making it always return 0xC5048C11 ... as this is the id that corresponds to AMD models.
Here's the link (the driver is originally made for Computers: Inspiron: 3421; Vostro Notebook: 2421): http://www.dell.com/support/drivers/us/e...erId=NHW53&fileId=3143174396&osCode=W864
Yeah, I just set _HID to 0xC5048C11, and it is working fine now. Interesting. Perhaps the KBC status check was implemented to allow for BRID check? lollll
I think it's safe to leave it 0xC5048C11 even for Intel-only models because from what I've seen it's exactly the same touchpad. I don't even know why they have different IDs for it. The hotkeys are also the same.
Thanks for the link, I'll try this driver and report back shortly.

OK... Tried it.
The LED works fine. There's a small issue though. When you boot Windows and the LED is on for whatever reason, its behavior gets reversed. Apart from that, everything's working fine.
I'm still sticking to 16.3.8.8 because it has an option to disable the touchpad activation gesture, doesn't have annoying balloon popups, and the configuration utility loads much faster. I can't get the LED to work properly with Fn+F3, but I guess this is a little sacrifice I have to make here.

I have restarted my computer like 20 times and haven't had a single issue with the keyboard! I hope this is the solution to the initialization problem.
TW, do you know where Fn+F3 is defined in DSDT? I can't seem to find 0xE01E WMI code there...
I have an idea about fixing the "disable LED" on newer drivers. To verify it, I need to disable the part where it writes to the EC to turn the LED on/off. I thought it was somewhere in DSDT but I can't find it. Is it coded somewhere else?
The register doesnt even have a name iirc. Go to github.com/Dolnor and see dsdt commentary for ec registers.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19