Contribute
Register

Lenovo Ideapad U410 Mountain Lion 90% working

Status
Not open for further replies.
Lenovo U310 WiFi Fix:
10.8.4 update breaks Wi-Fi(timeout when connecting). To fix the Wi-Fi you need
/usr/libexec/airportd from 10.8.3 to replace the one from 10.8.4. Additionally
you need to replace IO80211Family.kext to a version from 10.7.3. Here's how:

1) Turn Wi-Fi Off
2) Run Kext Wizard and install IO80211Family.kext
3) sudo mv /usr/libexec/airportd /usr/libexec/airportd.old
4) sudo cp airportd /usr/libexec/airportd
5) sudo chmod 755 /usr/libexec/airportd
6) Enjoy Wi-Fi!

I didn't install the kext, seems to work fine with just replacing airportd.
 

Attachments

  • 10.8.4 WiFi Fix 2.zip
    5.6 MB · Views: 133
Add this to /System/Library/Displays/Overrides/DisplayVendorID-6af/
Code:
<key>DisplayProductName</key>
    <string>Lenovo Display</string>
Change this to whatever you'd like displayed in about mac->display

Code:
ioreg -lw0 | grep IODisplayPrefsKey
Verify ids

Also adds scaled 1600x900 Res
 

Attachments

  • DisplayProductID-233c.zip
    857 bytes · Views: 119
http://www.insanelymac.com/forum/topic/268219-acpi-backlight-driver/
Enables Brightness slider functionality and dim on battery power option.

If you're using my dsdt, it's alrdy patched for this, so just install the kext.
*Note: Full brightness is quite a bit dimmer than normal. Trying to figure out how to fix it.
*Workaround: fn+f12 a bunch of times to make it brighter.
 
Anyone updated there rig to 10.8.5? What are the steps and things to reinstall.?
 
Haven't updated yet. Just make sure you have a working backup. then install the combo update. Most likely you'll just have to reinstall the kexts.
 
Haven't updated yet. Just make sure you have a working backup. then install the combo update. Most likely you'll just have to reinstall the kexts.

I did. Both from combo update and apps store. The only thing that was not working was the battery icon, it has the x mark. Needed to change genericusbxchi to version 1.2.5. Does your dsdt.aml have rehab man battery patch for applesmartbatterymanager. Kext? How could I inject it? Appleacpibatterymanager. Kext not loading on kernel. Do you have a solution? Thanks.
 
did you get the battery icon working in 8.4?

Seems it's missing the _BIX function. Will prolly have to write the function xor more? Seems beyond my skill. But if you can find a patch, I will patch the dsdt.

Generic Platforms


You may use this battery driver on most generic platforms that conform to the ACPI standards listed below. The following options are available:

  • ACPI 3.x - _BIF method: Configure key "**UseExtendedBatteryInformationMethod**" to false in Info.plist and install kext.
  • ACPI 4.x - _BIX method: Configure key "**UseExtendedBatteryInformationMethod**" to true in Info.plist and install kext.
  • ACPI 5.x - Coming soon
Ensure your ACPI DSDT _BIF, _BIX, _BST methods return data according to the ACPI specification. For example DSDT code, see HP DVx platforms, note however that you will have to determine how your DSDT interfaces to the battery and modify the code accordingly.




This driver polls the battery state by default every 30 seconds. If you wish to override this value to make the system respond to battery events quicker, you can set "**BatteryPollingPeriodOverride**" in the Info.plist to the number of seconds between polls.

Code:
 Device (BAT1)        {
            Name (_HID, EisaId ("PNP0C0A"))
            Name (_UID, One)
            Name (_PCL, Package (0x01)
            {
                _SB
            })
            Name (PBIF, Package (0x0D)
            {
                One, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                One, 
                0xFFFFFFFF, 
                0xFA, 
                0x64, 
                0x0A, 
                0x19, 
                "BAT1", 
                " ", 
                " ", 
                " "
            })
            Name (PBST, Package (0x04)
            {
                Zero, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0x2710
            })
            Name (BAST, Zero)
            Name (USBW, Zero)
            Name (B1WT, Zero)
            Method (_STA, 0, NotSerialized)
            {
                If (^^PCI0.LPCB.EC0.ECOK)
                {
                    If (^^PCI0.LPCB.EC0.MBTS)
                    {
                        Return (0x1F)
                    }
                }


                Return (0x0F)
            }


            Method (_BIF, 0, NotSerialized)
            {
                If (^^PCI0.LPCB.EC0.ECOK)
                {
                    If (^^PCI0.LPCB.EC0.MBTS)
                    {
                        UPBI ()
                        Return (PBIF)
                    }
                }


                IVBI ()
                Return (PBIF)
            }


            Method (_BST, 0, NotSerialized)
            {
                If (^^PCI0.LPCB.EC0.ECOK)
                {
                    If (^^PCI0.LPCB.EC0.MBTS)
                    {
                        UPBS ()
                    }
                    Else
                    {
                        IVBS ()
                    }
                }
                Else
                {
                    IVBS ()
                }


                Return (PBST)
            }


            Method (UPBI, 0, NotSerialized)
            {
                Acquire (BATM, 0xFFFF)
                Store (One, Index (PBIF, Zero))
                Store (^^PCI0.LPCB.EC0.B1FC, Index (PBIF, 0x02))
                WAEC ()
                Store (0x02, ^^PCI0.LPCB.EC0.HIID)
                WADR ()
                Store (^^PCI0.LPCB.EC0.DICP, Local1)
                Store (Local1, Index (PBIF, One))
                Store (^^PCI0.LPCB.EC0.DIVO, Index (PBIF, 0x04))
                CREC ()
                Store (Divide (Local1, 0x0A, ), Index (PBIF, 0x05))
                Store (Divide (Multiply (Local1, 0x03), 0x64, ), Index (
                    PBIF, 0x06))
                WAEC ()
                Store (0x06, ^^PCI0.LPCB.EC0.HIID)
                WADR ()
                Store (^^PCI0.LPCB.EC0.SBDN, Index (PBIF, 0x09))
                CREC ()
                Store ("LION", Index (PBIF, 0x0B))
                WAEC ()
                Store (0x05, ^^PCI0.LPCB.EC0.HIID)
                WADR ()
                Store (^^PCI0.LPCB.EC0.SBMN, Index (PBIF, 0x0C))
                CREC ()
                Release (BATM)
            }


            Method (UPBS, 0, NotSerialized)
            {
                Store (^^PCI0.LPCB.EC0.MCUR, Local5)
                Store (POSW (Local5), Index (PBST, One))
                Store (^^PCI0.LPCB.EC0.MBRM, Index (PBST, 0x02))
                Store (^^PCI0.LPCB.EC0.MBVG, Index (PBST, 0x03))
                If (^^PCI0.LPCB.EC0.MBTF)
                {
                    Store (Zero, Index (PBST, Zero))
                }
                Else
                {
                    If (LNotEqual (Local5, Zero))
                    {
                        If (^^PCI0.LPCB.EC0.MBTC)
                        {
                            Store (0x02, Index (PBST, Zero))
                        }
                        Else
                        {
                            Store (One, Index (PBST, Zero))
                        }
                    }
                    Else
                    {
                        If (^^PCI0.LPCB.EC0.MBTC)
                        {
                            Store (0x02, Index (PBST, Zero))
                        }
                        Else
                        {
                            Store (Zero, Index (PBST, Zero))
                        }
                    }
                }
            }


            Method (IVBI, 0, NotSerialized)
            {
                Store (0xFFFFFFFF, Index (PBIF, One))
                Store (0xFFFFFFFF, Index (PBIF, 0x02))
                Store (0xFFFFFFFF, Index (PBIF, 0x04))
                Store ("Bad", Index (PBIF, 0x09))
                Store ("      ", Index (PBIF, 0x0A))
                Store ("Bad", Index (PBIF, 0x0B))
                Store ("Bad", Index (PBIF, 0x0C))
            }


            Method (IVBS, 0, NotSerialized)
            {
                Store (Zero, Index (PBST, Zero))
                Store (0xFFFFFFFF, Index (PBST, One))
                Store (0xFFFFFFFF, Index (PBST, 0x02))
                Store (0x2710, Index (PBST, 0x03))
            }
        }
 
did you get the battery icon working in 8.4?

Seems it's missing the _BIX function. Will prolly have to write the function xor more? Seems beyond my skill. But if you can find a patch, I will patch the dsdt.



Code:
 Device (BAT1)        {
            Name (_HID, EisaId ("PNP0C0A"))
            Name (_UID, One)
            Name (_PCL, Package (0x01)
            {
                _SB
            })
            Name (PBIF, Package (0x0D)
            {
                One, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                One, 
                0xFFFFFFFF, 
                0xFA, 
                0x64, 
                0x0A, 
                0x19, 
                "BAT1", 
                " ", 
                " ", 
                " "
            })
            Name (PBST, Package (0x04)
            {
                Zero, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0x2710
            })
            Name (BAST, Zero)
            Name (USBW, Zero)
            Name (B1WT, Zero)
            Method (_STA, 0, NotSerialized)
            {
                If (^^PCI0.LPCB.EC0.ECOK)
                {
                    If (^^PCI0.LPCB.EC0.MBTS)
                    {
                        Return (0x1F)
                    }
                }


                Return (0x0F)
            }


            Method (_BIF, 0, NotSerialized)
            {
                If (^^PCI0.LPCB.EC0.ECOK)
                {
                    If (^^PCI0.LPCB.EC0.MBTS)
                    {
                        UPBI ()
                        Return (PBIF)
                    }
                }


                IVBI ()
                Return (PBIF)
            }


            Method (_BST, 0, NotSerialized)
            {
                If (^^PCI0.LPCB.EC0.ECOK)
                {
                    If (^^PCI0.LPCB.EC0.MBTS)
                    {
                        UPBS ()
                    }
                    Else
                    {
                        IVBS ()
                    }
                }
                Else
                {
                    IVBS ()
                }


                Return (PBST)
            }


            Method (UPBI, 0, NotSerialized)
            {
                Acquire (BATM, 0xFFFF)
                Store (One, Index (PBIF, Zero))
                Store (^^PCI0.LPCB.EC0.B1FC, Index (PBIF, 0x02))
                WAEC ()
                Store (0x02, ^^PCI0.LPCB.EC0.HIID)
                WADR ()
                Store (^^PCI0.LPCB.EC0.DICP, Local1)
                Store (Local1, Index (PBIF, One))
                Store (^^PCI0.LPCB.EC0.DIVO, Index (PBIF, 0x04))
                CREC ()
                Store (Divide (Local1, 0x0A, ), Index (PBIF, 0x05))
                Store (Divide (Multiply (Local1, 0x03), 0x64, ), Index (
                    PBIF, 0x06))
                WAEC ()
                Store (0x06, ^^PCI0.LPCB.EC0.HIID)
                WADR ()
                Store (^^PCI0.LPCB.EC0.SBDN, Index (PBIF, 0x09))
                CREC ()
                Store ("LION", Index (PBIF, 0x0B))
                WAEC ()
                Store (0x05, ^^PCI0.LPCB.EC0.HIID)
                WADR ()
                Store (^^PCI0.LPCB.EC0.SBMN, Index (PBIF, 0x0C))
                CREC ()
                Release (BATM)
            }


            Method (UPBS, 0, NotSerialized)
            {
                Store (^^PCI0.LPCB.EC0.MCUR, Local5)
                Store (POSW (Local5), Index (PBST, One))
                Store (^^PCI0.LPCB.EC0.MBRM, Index (PBST, 0x02))
                Store (^^PCI0.LPCB.EC0.MBVG, Index (PBST, 0x03))
                If (^^PCI0.LPCB.EC0.MBTF)
                {
                    Store (Zero, Index (PBST, Zero))
                }
                Else
                {
                    If (LNotEqual (Local5, Zero))
                    {
                        If (^^PCI0.LPCB.EC0.MBTC)
                        {
                            Store (0x02, Index (PBST, Zero))
                        }
                        Else
                        {
                            Store (One, Index (PBST, Zero))
                        }
                    }
                    Else
                    {
                        If (^^PCI0.LPCB.EC0.MBTC)
                        {
                            Store (0x02, Index (PBST, Zero))
                        }
                        Else
                        {
                            Store (Zero, Index (PBST, Zero))
                        }
                    }
                }
            }


            Method (IVBI, 0, NotSerialized)
            {
                Store (0xFFFFFFFF, Index (PBIF, One))
                Store (0xFFFFFFFF, Index (PBIF, 0x02))
                Store (0xFFFFFFFF, Index (PBIF, 0x04))
                Store ("Bad", Index (PBIF, 0x09))
                Store ("      ", Index (PBIF, 0x0A))
                Store ("Bad", Index (PBIF, 0x0B))
                Store ("Bad", Index (PBIF, 0x0C))
            }


            Method (IVBS, 0, NotSerialized)
            {
                Store (Zero, Index (PBST, Zero))
                Store (0xFFFFFFFF, Index (PBST, One))
                Store (0xFFFFFFFF, Index (PBST, 0x02))
                Store (0x2710, Index (PBST, 0x03))
            }
        }

@dastre

I found this in page 23 https://github.com/RehabMan/HP-ProBook-4x30s-DSDT-Patch, 06_battery patch.txt. Im not sure if that is the one. Yup I was able to get it working on 10.8.4 but not on 10.8.5. What method do you use for patching? And what are the patches that you now have for your current dsdt. Where can I get those patches? I want to try it myself. Thanks. Are you also dual booting with windows 8? Did you install osx in ssd or hdd? Thanks again.
 
i use dsdtse to patch dsdt.

No i completely removed windows 8 and the mini ssd. I have a 240gig mushkin ssd that i replaced the hdd with.

I'll get back to you about the patches tomorrow as i have to goto work
 
did you get the battery icon working in 8.4?

Seems it's missing the _BIX function. Will prolly have to write the function xor more? Seems beyond my skill. But if you can find a patch, I will patch the dsdt.

There is almost no reason to implement _BIX. _BIF/_BST are enough.

And no reason to edit the Info.plist of my version. My version automatically selects DSDT methods based on what exists.

I've done a few Lenovo DSDT patches. If you provide the raw DSDT, chances are I have one already done for it, or can adapt one I've already created.

- - - Updated - - -

@dastre

I found this in page 23 https://github.com/RehabMan/HP-ProBook-4x30s-DSDT-Patch, 06_battery patch.txt. Im not sure if that is the one. Yup I was able to get it working on 10.8.4 but not on 10.8.5. What method do you use for patching? And what are the patches that you now have for your current dsdt. Where can I get those patches? I want to try it myself. Thanks. Are you also dual booting with windows 8? Did you install osx in ssd or hdd? Thanks again.

Battery patches are always specific to the computer or family of computers. Other than using the ProBook patches as an example, the patches themselves will not be very useful for a computer that is not a Probook.
 
Status
Not open for further replies.
Back
Top