Contribute
Register

[Guide] Lenovo T440s Clover UEFI

Status
Not open for further replies.
Joined
May 23, 2011
Messages
248
Motherboard
Lenovo T440S / Toshiba X205-SLI6 / Toshiba C850 / Dell T110 / Lenovo T410 / MP3,1 / MBP4,1
CPU
i5 4300U / T9300 / i3 3110M / 8x 2.8Ghz Xeon / i5 560m / 8x 3.2Ghz X5482 / T9300
Graphics
HD4400 / 2x 8600M GT / Intel HD4000 / Intel IronLake / HD5770 / 8800GT & GTX650 / 8600M GT
Mac
  1. MacBook Pro
  2. Mac Pro
Classic Mac
  1. eMac
Mobile Phone
  1. iOS
This is a quick guide for the T440s... it should provide you with all of the features the laptop can provide.

System: Lenovo T440s 20ARS0HB01
CPU: i5 vPro 4300U @ 1.9Ghz
RAM: 12Gb DDR3L (4Gb soldered to motherboard, 8Gb in open slot)
Graphics: HD4400, 1600x900 TFT LCD
(I've upgraded to 1920x1080 IPS FHD Non-Touchscreen)
SSD: Intel 180GB SSD (upgraded to Samsung 840 Evo 1TB)
BT: Combo card - Intel 7260AC (OSX sees Intel Blue Moon BT but it doesn't really work)
Audio: ALC 292
WLAN: Intel 7260AC M.2 NGFF

The idea is to make the OS think this is a MacBookAir6,2 and this guide is targeted at OSX 10.10.2.

NON_WORKING:
Intel 7260AC NGFF M.2 WiFi + BT combo card - unsupported chipset
Media Card reader - unsupported chipset

UNTESTED:
VGA - I'm going to assume it does not work
MiniDisplayPort - there is a patch for audio for this but its also untested

WORK IN PROGRESS:
WiFi / BT card replacement...
This laptop BIOS is encrypted and the only method to bypass the whitelisting would be to use an external SPI programmer to flash a modified BIOS. There are no known methods to bypass this at this time.
The other issue is that this laptop has M.2 NGFF slots (default 2 slots optional 3rd slot) which means the replacement options are basically non-existent at this time. You will need a compatible card that has the A+E key configuration. The Dell DW1560 card seems to be the best possible replacement card when it is actually available.

Currently I have an adapter card setup to attempt to add WiFi by using an atheros card and rebranding to bypass whitelist ... it almost works ... The card turns on but it is unable to detect any access points. It has had one bonus side effect in that once I added it then iMessage was able to function properly. Before it was installed I was getting the message to call Apple Care.


Side note: Dual battery support isn't the best in 10.10 (worked fine in 10.8/10.9 but Apple removed some support) You can monitor the battery charge percentages using HWMonitor. Once one battery gets to ~6% remaining the laptop will change to draw power from the other battery. This is a seamless transition.

I've had no issues using docking port and the USB ports and NIC on the docking station, however I have not connected any displays to the docking station so I'm unable to say if those displays work or not.



--Start of DSDT fixes--
This is made for BIOS version 2.32. I made the guide since I was updating the BIOS version for my 3rd time so it just seemed logical to have all the steps in one place.

Its easiest to extract ACPI tables via clover (using F4 or Fn+F4 at clover screen).

I chose to manually combine all SSDT and DSDT together along with the SSDT generated via ssdtPRGen except for SSDT-11 as it fails to compile properly and I can't figure out a fix for it. I've spent a lot of time with this laptop's DSDT/SSDTs and you may not decide to do that combination yourself. If you don't you'll need to determine which SSDTs you will need to patch on your own.

When I apply patches I will always run a single patch then compile to verify it didn't create any compile issues.

Patches to apply using MaciASL and Rehabman's patch repository:
Code:
Remove _DSM 
Replace Names (sourceforge)
Remove WMI (sourceforge - run 3 times to remove all 3 WMI devices)
Rename PCI0.VID to PCI0.IGPU
Haswell HD4600 Yosemite
battery lenovo X220 (remove lines to keep second battery before running)
IRQ Fix
SMBUS Fix
AC Adapter Fix
Add MCHC
Fix _WAK Arg0 v2
Fix PNOT/PPNT
Add IMEI
Haswell LPC
Brightness fix (Haswell)
7-series / 8-series USB
Insert DTGP (sourceforge)


Manual fixes:

LED wake fix (stops LED from continuing to blink after wake from sleep)
Code:
# add these lines into method _WAK after NVSS
            \_SB.PCI0.LPC.EC.LED (Zero, 0x80)
            \_SB.PCI0.LPC.EC.LED (0x0A, 0x80)
Example:
Code:
        If (LEqual (Arg0, 0x03))
        {
            NVSS (Zero)
            \_SB.PCI0.LPC.EC.LED (Zero, 0x80)
            \_SB.PCI0.LPC.EC.LED (0x0A, 0x80)
            Store (\_SB.PCI0.LPC.EC.AC._PSR (), PWRS)
            If (OSC4)
            {
                PNTF (0x81)
            }


Always run fan at high speed (part patch part manual fix)
Code:
# add these lines into \_SB.PCI0.LPC.EC after the BATW method
                    Field (ECOR, ByteAcc, NoLock, Preserve)
                    {
                                Offset (0x84), 
                        HFN1,   16
                    }

Example:
Code:
                       }
                    }

                    Field (ECOR, ByteAcc, NoLock, Preserve)
                    {
                                Offset (0x84), 
                        HFN1,   16
                    }

                    Field (ECOR, ByteAcc, NoLock, Preserve)
                    {
                                Offset (0xA0), 
                        BRC0,   8, 
                        BRC1,   8, 
                        BFC0,   8,


Custom patches:
Code:
# OS Check fix - Emulate windows 8 or higher:
into method label _INI parent_label \_SB code_regex If\s+\(\\_OSI\s+\(\"Windows\s2013\"\)\) replace_matched
begin If(LOr(_OSI("Darwin"),_OSI("Windows 2013"))) end;

Code:
# HDMI / Display Port Audio fix (untested)
# rename B0D3 to HDAU
into device label B0D3 set_label begin HDAU end;
into_all all code_regex B0D3 replaceall_matched begin HDAU end

Code:
# Add ALC292 information into HDEF device
into device label HDEF parent_label PCI0 remove_entry;
into device label PCI0 insert begin
Device (HDEF)\n
{\n
Name (_ADR, 0x001B0000) // _ADR: Address\n
Name (_S3D, 0x03) // _S3D: S3 Device State\n
Name (RID, Zero)\n
Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake\n
{\n
0x0D,\n
0x04\n
})\n
\n

OperationRegion (HDAR, PCI_Config, 0x4C, 0x10)\n
Field (HDAR, WordAcc, NoLock, Preserve)\n
{\n
DCKA, 1,\n
Offset (0x01),\n
DCKM, 1,\n
, 6,\n
DCKS, 1,\n
Offset (0x08),\n
Offset (0x09),\n
PMEE, 1,\n
, 6,\n
PMES, 1\n
}\n
\n

Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method\n
{\n
Store (Package (0x08)\n
{\n
"codec-id",\n
Buffer (0x04)\n
{\n
0x92, 0x02, 0xEC, 0x10\n
},\n
\n

"layout-id",\n
Buffer (0x04)\n
{\n
0x01, 0x00, 0x00, 0x00\n
},\n
\n

"device-type",\n
Buffer (0x0F)\n
{\n
"Realtek ALC292"\n
},\n
\n

"PinConfigurations",\n
Buffer (One)\n
{\n
0x00\n
}\n
}, Local0)\n
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
Return (Local0)\n
}\n
}\n
end;


Always run fan at high speed (part patch part manual fix)
Code:
# Add SMCD device 
into device label SMCD parent_label LPC remove_entry;
into device label LPC insert begin
                Device (SMCD)\n
                {\n
                    Name (_HID, "monitor")\n
                    Method (FAN0, 0, NotSerialized)\n
                    {\n
                        Store (^^EC.HFN1, Local0)\n
                        Return (Local0)\n
                    }\n

                    Method (TCPU, 0, NotSerialized)\n
                    {\n
                        Store (^^EC.TMP0, Local0)\n
                        If (LLessEqual (Local0, 0x32))\n
                        {\n
                            Store (0x07, ^^EC.HFSP)\n
                        }\n

                        If (LGreaterEqual (Local0, 0x55))\n
                        {\n
                            Store (0x07, ^^EC.HFSP)\n
                        }\n
                        Else\n
                        {\n
                            If (LGreaterEqual (Local0, 0x4B))\n
                            {\n
                                Store (0x07, ^^EC.HFSP)\n
                            }\n
                            Else\n
                            {\n
                                If (LGreaterEqual (Local0, 0x46))\n
                                {\n
                                    Store (0x07, ^^EC.HFSP)\n
                                }\n
                                Else\n
                                {\n
                                    If (LGreaterEqual (Local0, 0x41))\n
                                    {\n
                                        Store (0x07, ^^EC.HFSP)\n
                                    }\n
                                    Else\n
                                    {\n
                                        If (LGreaterEqual (Local0, 0x3D))\n
                                        {\n
                                            Store (0x07, ^^EC.HFSP)\n
                                        }\n
                                    }\n
                                }\n
                            }\n
                        }\n

                        Return (Local0)\n
                    }\n
                }\n
end;

Add missing Airport device
Code:
# Add Airport device
into device label EXP2 parent_label PCI0 insert
begin
                Device (ARPT)\n
                {\n
                    Name (_ADR, Zero)\n
                    Name (_PRW, Package (0x02)\n
                    {\n
                        0x09, \n
                        0x04\n
                    })\n
                    Method (_DSM, 4, NotSerialized)\n
                    {\n
                        Store (Package (0x04)\n
                            {\n
                                "AAPL,slot-name", \n
                                Buffer (0x08)\n
                                {\n
                                    "AirPort"\n
                                }, \n
                                "device_type", \n
                                Buffer (0x08)\n
                                {\n
                                    "AirPort"\n
                                }\n
                            }, Local0)\n
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))\n
                        Return (Local0)\n
                    }\n
                }\n
end;

Fix the Fn keys so that all of them have a function
Code:
#T440s Fn key fix
# _Q15 (Fn+F5) brightness down key
into method label _Q15 replace_content
begin
    Notify(\_SB.PCI0.LPC.KBD, 0x0205)\n
    Notify(\_SB.PCI0.LPC.KBD, 0x0285)\n
end;

# _Q14 (Fn+F6) brightness up key
into method label _Q14 replace_content
begin
    Notify(\_SB.PCI0.LPC.KBD, 0x0206)\n
    Notify(\_SB.PCI0.LPC.KBD, 0x0286)\n
end;

# _Q6A (Fn+F4) Microphone Mute key
into method label _Q6A replace_content
begin
    Notify(\_SB.PCI0.LPC.KBD, 0x0168)\n
    Notify(\_SB.PCI0.LPC.KBD, 0x01e8)\n
end;

# _Q16 (Fn+F7) Projector / Mirror mode key
into method label _Q16 replace_content
begin
    Notify(\_SB.PCI0.LPC.KBD, 0x026e)\n
    Notify(\_SB.PCI0.LPC.KBD, 0x02ee)\n
end;

# _Q64 (Fn+F8) Wireless disable key
into method label _Q64 replace_content
begin
    Notify(\_SB.PCI0.LPC.KBD, 0x0169)\n
    Notify(\_SB.PCI0.LPC.KBD, 0x01e9)\n
end;

# _Q66 (Fn+F9) Settings key
into method label _Q66 replace_content
begin
    Notify(\_SB.PCI0.LPC.KBD, 0x0164)\n
    Notify(\_SB.PCI0.LPC.KBD, 0x01e4)\n
end;

# _Q67 (Fn+F10) Spotlight key
into method label _Q67 replace_content
begin
    Notify(\_SB.PCI0.LPC.KBD, 0x0165)\n
    Notify(\_SB.PCI0.LPC.KBD, 0x01e5)\n
end;

# _Q68 (Fn+F11) App switcher key
into method label _Q68 replace_content
begin
    Notify(\_SB.PCI0.LPC.KBD, 0x0166)\n
    Notify(\_SB.PCI0.LPC.KBD, 0x01e6)\n
end;

# _Q69 (Fn+F12) Launchpad key
into method label _Q69 replace_content
begin
    Notify(\_SB.PCI0.LPC.KBD, 0x0167)\n
    Notify(\_SB.PCI0.LPC.KBD, 0x01e7)\n
end;

--End of DSDT fixes--

Using platform ID 0x0a260006

Config.plist kexts to patch

Code:
		<key>KextsToPatch</key>
		<array>
			<dict>
				<key>Comment</key>
				<string>Enable TRIM for SSD</string>
				<key>Find</key>
				<data>
				AEFQUExFIFNTRAA=
				</data>
				<key>Name</key>
				<string>IOAHCIBlockStorage</string>
				<key>Replace</key>
				<data>
				AAAAAAAAAAAAAAA=
				</data>
			</dict>
			<dict>
				<key>Comment</key>
				<string>AppleHDA ALC 292 #2</string>
				<key>Find</key>
				<data>
				hAjsEA==
				</data>
				<key>Name</key>
				<string>AppleHDA</string>
				<key>Replace</key>
				<data>
				AAAAAA==
				</data>
			</dict>
			<dict>
				<key>Comment</key>
				<string>9MB cursor bytes patch</string>
				<key>Find</key>
				<data>
				BgAmCgEDAwMAAAACAAAwAQAAYAA=
				</data>
				<key>Name</key>
				<string>AppleIntelFramebufferAzul</string>
				<key>Replace</key>
				<data>
				BgAmCgEDAwMAAAACAAAwAQAAkAA=
				</data>
			</dict>
			<dict>
				<key>Comment</key>
				<string>AppleHDA ALC 292 #1</string>
				<key>Find</key>
				<data>
				hBnUEQ==
				</data>
				<key>Name</key>
				<string>AppleHDA</string>
				<key>Replace</key>
				<data>
				kgLsEA==
				</data>
			</dict>
			<dict>
				<key>Comment</key>
				<string>Second Stage Patch 2</string>
				<key>Find</key>
				<data>
				QYjE6wM=
				</data>
				<key>Name</key>
				<string>IOGraphicsFamily</string>
				<key>Replace</key>
				<data>
				QYjE6yM=
				</data>
			</dict>
			<dict>
				<key>Comment</key>
				<string>Second Stage Patch 1</string>
				<key>Find</key>
				<data>
				hcB0XUg=
				</data>
				<key>Name</key>
				<string>IOGraphicsFamily</string>
				<key>Replace</key>
				<data>
				McB0W0g=
				</data>
			</dict>
			<dict>
				<key>Comment</key>
				<string>AppleHDA ALC 292 #3</string>
				<key>Find</key>
				<data>
				hQjsEA==
				</data>
				<key>Name</key>
				<string>AppleHDA</string>
				<key>Replace</key>
				<data>
				AAAAAA==
				</data>
			</dict>
			<dict>
				<key>Comment</key>
				<string>Bootloader Graphics - Second Stage Patch</string>
				<key>Find</key>
				<data>
				QYjE6xE=
				</data>
				<key>Name</key>
				<string>IOGraphicsFamily</string>
				<key>Replace</key>
				<data>
				QYjE6zE=
				</data>
			</dict>
		</array>



You may want to add a SMC key into FakeSMC to fix logging about an AC adapter power issue...

Code:
                                        <key>ACID</key>
                                        <array>
                                                <string>ch8*</string>
                                                <data>
                                                hfwETdgSevQ=
                                                </data>
                                        </array>




Installed 'add-on' kexts:

ACPIBacklight.kext
ACPIBatteryManager.kext
AppleHDA_ALC292.kext
FakePCIID.kext
FakePCIID_HD4600_HD4400.kext
FakePCIID_Intel_HDMI_Audio.kext
FakeSMC.kext
IntelMausiEthernet.kext
VoodooPS2Controller.kext


I think that is all I've done to customize this laptop so far...
BIOS settings will impact if sleep works or not, if they are wrong you will see wake caused by USB even if no USB devices are installed. If someone needs help I can post screenshots of each BIOS page.
I'm using Clover to boot in UEFI mode with CSM off for the record with clover installed to the EFI partition.

Like many others here Rehabman has provided a lot of valuable help to get to this stage. Thanks!
 
I realized that the DSDT changes for the FAN speed boost weren't actually reporting fan speed to OSX.

I've corrected this, you will want to add the fan section before you run the battery patch or you can adjust it after the fact like this:

Code:
# this one is fan related
into device label EC code_regex HFN1,\s+16 replace_matched begin FN10,8,FN11,8 end;

# this one is added in a patched DSDT to return fan speed
into method label FAN0 parent_label SMCD code_regex \(\^\^EC\.HFN1, replaceall_matched begin (B1B2(^^EC.FN10,^^EC.FN11), end;

HWMonitor can now read system fan speed. I've not figured out why but this only seems to work from cold boot or reboot from OSX to OSX ... If you are in windows and reboot to OSX then for some reason the fan speed modificaiton doesn't work.
 

Attachments

  • Screen Shot 2015-03-15 at 9.22.02 PM.jpg
    Screen Shot 2015-03-15 at 9.22.02 PM.jpg
    92.5 KB · Views: 1,268
... I've not figured out why but this only seems to work from cold boot or reboot from OSX to OSX ... If you are in windows and reboot to OSX then for some reason the fan speed modificaiton doesn't work.

Probably the EC is initialized differently by Windows and when you restart into OS X (instead of cold boot), you inherit those settings.
 
Hi,

I've got a couple of questions, I have a Lenovo T440p on the way. It's almost an identical machine except for an m version of the i5 and Intel HD 4600. I have the same upgrades 1920x1080p IPS and ssd.


  • Does the Intel HD 4600 need different drivers?
  • Do you have the 720p webcam and would this camera work out of the box?
  • Did you use any of the guidelines of the Lenovo T430 guide or would you suggest using any tweaks of that guide in particular?

I would really like to get Yosemite running on the T440p, would you see any reason for your guide not to work?
 
[*]Do you have the 720p webcam and would this camera work out of the box?
Camera works OOTB with no issues.
[*]Did you use any of the guidelines of the Lenovo T430 guide or would you suggest using any tweaks of that guide in particular?
As this isn't my first hack (it's probably my 6th or 7th unique machine) I don't typically use a guide unless there are specific issues I have with something. I'm usually able to get the OS working without much trouble after some DSDT work.
Audio is not perfect. Headphones only work correctly when using voodoohda for me.
 
You can fix the headphones and AppleHDA with my build of CodecCommander.kext.

https://github.com/RehabMan/EAPD-Codec-Commander

I've not had the static issue come up again so far when using headphones, however once I use the headphone jack my internal speakers no longer work until reboot.

Music playing from internal speakers -> plug in headphones and audio switches to headphones automatically (as it should) and system prefs is updated to show headphones as output device -> unplug headphones and system prefs says internal speakers again but audio isn't routed back to the internal speakers. I can either continue to listen to headphones or reboot to get internal speakers again.

What info could I pull that would help determine what is failing on the audio re-routing to fix it?


Showing the current versions of the various loaded kexts
Code:
eweiman-t440s-osx:~ erikweiman$ kextstat | egrep -i 'hda|rehab|org|voodoo|brcm'
   18    2 0xffffff7f81e78000 0x16000    0x16000    org.netkas.driver.FakeSMC (1655) <11 7 5 4 3 1>
   20    0 0xffffff7f8209a000 0x7000     0x7000     com.no-one.BrcmPatchRAM (1.7.1) <19 5 4 3>
   24    0 0xffffff7f829ee000 0x8000     0x8000     org.rehabman.driver.AppleSmartBatteryManager (1.55) <11 4 3>
   25    0 0xffffff7f81eb7000 0x5000     0x5000     org.hwsensors.driver.CPUSensors (1655) <18 7 5 4 3>
   39    0 0xffffff7f81ebe000 0x8000     0x8000     org.hwsensors.driver.ACPISensors (1655) <18 11 7 5 4 3>
   41    2 0xffffff7f80f6b000 0xe000     0xe000     org.rehabman.voodoo.driver.PS2Controller (1.8.15) <11 7 5 4 3 1>
   43    0 0xffffff7f81ecb000 0x4000     0x4000     org.rehabman.driver.FakePCIID (1.1.0) <12 7 5 4 3 1>
   57    0 0xffffff7f817ee000 0x5e6000   0x5e6000   com.apple.driver.AirPort.Brcm4360 (930.37.3) <56 55 44 12 7 6 5 4 3 1>
   66    0 0xffffff7f80f8e000 0x6000     0x6000     org.rehabman.voodoo.driver.PS2Keyboard (1.8.15) <41 35 7 6 5 4 3 1>
   67    0 0xffffff7f80f79000 0xb000     0xb000     org.rehabman.voodoo.driver.PS2Trackpad (1.8.15) <41 35 7 6 5 4 3 1>
   95    2 0xffffff7f8265d000 0xf000     0xf000     com.apple.iokit.IOHDAFamily (272.18) <5 4 3 1>
   96    1 0xffffff7f8266c000 0x1c000    0x1c000    com.apple.driver.AppleHDAController (272.18) <95 94 83 12 7 6 5 4 3 1>
  120    0 0xffffff7f827e6000 0xab000    0xab000    com.apple.driver.AppleHDA (9267.0) <119 101 96 95 94 83 6 5 4 3 1>
  121    0 0xffffff7f8208d000 0x6000     0x6000     org.tw.CodecCommander (2.4.0) <94 12 4 3 1>
 
I've not had the static issue come up again so far when using headphones, however once I use the headphone jack my internal speakers no longer work until reboot.

Music playing from internal speakers -> plug in headphones and audio switches to headphones automatically (as it should) and system prefs is updated to show headphones as output device -> unplug headphones and system prefs says internal speakers again but audio isn't routed back to the internal speakers. I can either continue to listen to headphones or reboot to get internal speakers again.

What info could I pull that would help determine what is failing on the audio re-routing to fix it?


Showing the current versions of the various loaded kexts
Code:
eweiman-t440s-osx:~ erikweiman$ kextstat | egrep -i 'hda|rehab|org|voodoo|brcm'
   18    2 0xffffff7f81e78000 0x16000    0x16000    org.netkas.driver.FakeSMC (1655) <11 7 5 4 3 1>
   20    0 0xffffff7f8209a000 0x7000     0x7000     com.no-one.BrcmPatchRAM (1.7.1) <19 5 4 3>
   24    0 0xffffff7f829ee000 0x8000     0x8000     org.rehabman.driver.AppleSmartBatteryManager (1.55) <11 4 3>
   25    0 0xffffff7f81eb7000 0x5000     0x5000     org.hwsensors.driver.CPUSensors (1655) <18 7 5 4 3>
   39    0 0xffffff7f81ebe000 0x8000     0x8000     org.hwsensors.driver.ACPISensors (1655) <18 11 7 5 4 3>
   41    2 0xffffff7f80f6b000 0xe000     0xe000     org.rehabman.voodoo.driver.PS2Controller (1.8.15) <11 7 5 4 3 1>
   43    0 0xffffff7f81ecb000 0x4000     0x4000     org.rehabman.driver.FakePCIID (1.1.0) <12 7 5 4 3 1>
   57    0 0xffffff7f817ee000 0x5e6000   0x5e6000   com.apple.driver.AirPort.Brcm4360 (930.37.3) <56 55 44 12 7 6 5 4 3 1>
   66    0 0xffffff7f80f8e000 0x6000     0x6000     org.rehabman.voodoo.driver.PS2Keyboard (1.8.15) <41 35 7 6 5 4 3 1>
   67    0 0xffffff7f80f79000 0xb000     0xb000     org.rehabman.voodoo.driver.PS2Trackpad (1.8.15) <41 35 7 6 5 4 3 1>
   95    2 0xffffff7f8265d000 0xf000     0xf000     com.apple.iokit.IOHDAFamily (272.18) <5 4 3 1>
   96    1 0xffffff7f8266c000 0x1c000    0x1c000    com.apple.driver.AppleHDAController (272.18) <95 94 83 12 7 6 5 4 3 1>
  120    0 0xffffff7f827e6000 0xab000    0xab000    com.apple.driver.AppleHDA (9267.0) <119 101 96 95 94 83 6 5 4 3 1>
  121    0 0xffffff7f8208d000 0x6000     0x6000     org.tw.CodecCommander (2.4.0) <94 12 4 3 1>

Post ioreg: http://www.tonymacx86.com/audio/58368-guide-how-make-copy-ioreg.html. Please, use the IORegistryExplorer v2.1 attached to the post! DO NOT reply with an ioreg from any other version of IORegistryExplorer.app.
 

Attachments

  • IOREG - T440s.zip
    4 MB · Views: 595
Status
Not open for further replies.
Back
Top