Jump to content

Dell Latitude E6430 full solution

- - - - - macOS laptop NVS5200M

  • Please log in to reply
16 replies to this topic

#1
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 6,459 posts
  • Gender:Male
  • Location:Moscow

I successfully installed macOS 10.11.6 and Windows 7 Pro SP1 in UEFI mode on the laptop.
I know, there are detailed guides here and on osxlatitude.com but I was not agree with them and carefully check and test every step to tune my Mac.
 
Hardware
Intel® Core™ i5-3320M CPU @ 2.60GHz, speedstep works with Clover default settings
Chipset Intel 7 series, no patches needed
Video: IntelHD4000 or NVS5200M switchable in BIOS, work in both cases
LAN; Intel 82579LM, works with IntelMausiEthernet.kext v2.2.1
Audio: IDT 92HD93BXX, works with VoodooHDA 2.9.0.
SDHC reader O2Micro; works with native AppleSDHC.kext with Clover Arbitrary properties.

USB3.0 works natively if not disabled in DSDT
PS2 keyboard and touchpad works with VoodooPS2.
WiFi: Dell Intel WiFi was replaced by Dell DW1520, Broadcom BCM943224HMS. DeviceID=4353
LCD Screen 1366x768

BIOS A12. Initially was A02. Then I flashed A23 and found it is quite bad. The screen is full of artefacts. Flash A12 and all is OK. Not tested other versions.

For some reason BIOS can switched from Intel to Nvidia by itself so I have to do my solution working independent on this state.

 

WiFi

It is not working OOB although it has DeviceID known to Apple. The reason is WhiteList in the driver.

I set MacModel as MacBookPro10,1 while the WiFi will work on MacBookAir. I make a patch in Clover.

As well a patch for channels.

I deleted a kext Brcm4331 because it has the same DeviceID. Let kext Brcm4360 to work alone.

 

VideoCards

In Bios we can set Optimus = Enable/Disable

If Enable then we have two videocards Intel first and Nvidia second. In this case additional SSDT-3.aml will switch off Nvidia.

If Disable then we have only Nvidia card. It will work if Board-ID taken from iMac13,2.

But here there is contradiction with WiFi with required Board-ID from MacBookAir.

So I take MacModel as MacBookPro10,1 which is most close by CPU IvyBridge.

Set BoardID like iMac13,2 to make Nvidia working.

Patch BoardID in Brcm4360 to make WiFi working.

Now I have

Inject->

->Intel=YES

->Nvidia=YES

and SSDT-3.aml in ACPI\patched folder. This SSDT will switch off Nvidia if Intel card ON.

For Intel graphics there is a patch against 8 apples at start.

 

Brightness

No special kexts.

The brightness controlled by keys F1,F2 and slider in Control Panel in both case Intel or Nvidia. Details here  #72 

 

DSDT and SSDT

This is very long story and finally I have working sleep in both cases Intel or Nvidia.

 

Sensors

I use my HWSensors3 with FakeSMC 3.5.0.

I got monitoring:

CPU temperature

GPU temperature

GPU main frequency

GPU shader frequency

Battery state % full, time to charged or time to empty.

Battery voltage dinamically.

Battery amperage dynamically. I can see it changes on heavy games.

HDD temperature.

Attached File  Battery.png   99.7KB   2 downloads

 

Audio

I like VoodooHDA and have no problems with it.

The sound is clear, loud, and switchable between internal speaker and headphone.

Mic is working.

 

Bluetooth

Just tested with BTFirmwareUpdate.kext and it works. I not needed it so switched off by wireless switch at right side.

 

Keyboard, Touchpad and Touchstick

Post #14

 

My config, ACPI files and kexts are in attachment.

Attached File  EFI.7z   1.08MB   37 downloads

 

EDITED:

Better DSDT in the post #6.

Sleep working even when AC inserted.

 

Welcome to discussion!



#2
AnaMathematica

AnaMathematica

    InsanelyMac Protégé

  • Members
  • Pip
  • 2 posts

Hi I recently got my E6430 with i7-3740QM and osxlatitude helped a lot with dsdt and ssdt for sleep. It still is not going past 3.50Ghz in geekbench I saw another thread here that says it is impossible for all 4 cores to be working with such (3740QM) I tried turning off All-Cores in BIOS and yes it jumped to 3.7GHz finally but geekbench was so bad (6384) that it was not worth it, so I understand if that is not something you can help with. 

 

I do want to know if you have hdmi out working with the video I am wanting to do some work with group and projector but I am seeing that my hdmi and vga both do not work with the mac os x. They work of course with Windows if I boot with that hard drive but not with OS X. Did you get that working? 

 

Will your EFI folder work with mine if I swap and test or is there something I should change for it to work? I am still trying to learn the dsdt and ssdt meaning (what they each do) and what or how we edit them for custom application to each machine. 



#3
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 6,459 posts
  • Gender:Male
  • Location:Moscow

@AnaMathematica

Welcome!

I think you can test your laptop with my EFI. Be sure you can get back.

I also can not make HDMI working. It works in Windows but macOS.

 

About CPU I have a strange issue. I think it is DSDT bug.

Test with AC inserted.

Attached File  ACPower.png   70.14KB   0 downloads

Low frequency = 800

High = 2400

 

Test the same application but AC off. Only battery.

Attached File  BatteryPower.png   77.18KB   0 downloads

Low frequency = 1200

High = 3300

 

Should be vice versa?!



#4
AnaMathematica

AnaMathematica

    InsanelyMac Protégé

  • Members
  • Pip
  • 2 posts

For the TurboBoost to work correct I had to turn off TurboBoost in BIOS no one else said anything affirming this at osxlatitude but I read someone on another forum with a different situation and hardware approach this way, so I try because I was so frustrated to try anything and it worked! 

 

Here is that post from OsXLatitude

 

I have no idea why that would be such but I ran many tests once I got Jake Lo's dsdt and ssdt files he made for my 3740QM since when I first put them in swapping ACPI folder and config the PowerGadget did not go past 2.4 or 3 GHz , and had strange issues similar to yours but not identical. Mine were Jake Lo's ACPI/config swap had 3 or more different GHz-Ceilings, depending on what stage of sleep and how entered sleep, such like

 

Stage 1: Laptop first on from boot, 1.5GHz 

Stage 2: Laptop sleep from Energy Pane I chose 1 minute, then after wake, 3 GHz ceiling on PowerGadget

Stage 3: Laptop sleep from Lid, then wake from lifting lid and pressing power button, then 1.6 GHz

Stage 4: Laptop sleep from selecting sleep from Apple Menu, then wake, PowerGadget shows ceiling back at 3 GHz

 

I am forgetting some details here when I did however turn off in first test, both SpeedStep and TurboBoost in BIOS, Laptop booted up in full? 3.5 GHz and showed no different ceilings in PowerGadget wether Lid or Powerbutton or other sleep-method. Maybe this might affect the results on your Laptop to try BIOS Turbo/Speed to off and see?



#5
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 6,459 posts
  • Gender:Male
  • Location:Moscow

Thanks for the proposition. I will check.

The difference between Stage 3 and 4 is _LID state.... Dell DSDT is nightmare!



#6
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 6,459 posts
  • Gender:Male
  • Location:Moscow

For the TurboBoost to work correct I had to turn off TurboBoost in BIOS 

Maybe this might affect the results on your Laptop to try BIOS Turbo/Speed to off and see?

 

No, in my case TurboBoost works as expected.

If ON then speed up to 3100.

If OFF then speed up to 2400. 

No side effect.

 

I want to share my better DSDT. I corrected:

1. Wake with Intel graphics as main (Optimus=Enable)

2. Sleep/Wake with AC adapter inserted.

3. Corrected switch off Optimus.

Attached File  DSDT.aml.zip   20.62KB   15 downloads

 

 

And I understand the problem with SpeedStep.

It depends on Board-ID which I set as iMac to make Nvidia works.

But speedstep of iMac is not good for MacBook.



#7
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 6,459 posts
  • Gender:Male
  • Location:Moscow

I have no good Trackpad driver. Only VoodooPS2Mouse or VoodooPS2Trackpad by rehabman which works exactly the same. They have no scroll function.



#8
RehabMan

RehabMan

    InsanelyMacaholic

  • Developers
  • 3,181 posts
  • Gender:Male
  • Location:Bellingham, WA
  • Interests:skiing, software, classic cars

I have no good Trackpad driver. Only VoodooPS2Mouse or VoodooPS2Trackpad by rehabman which works exactly the same. They have no scroll function.


Two finger scrolling (and other features) are available with compatible Synaptics hardware.
You probably don't have Synaptics.
Search for PS2 kexts appropriate for your trackpad hardware.

#9
Jake Lo

Jake Lo

    InsanelyMac Protégé

  • Members
  • PipPip
  • 81 posts

Use this one for Alps touchpad



#10
RehabMan

RehabMan

    InsanelyMacaholic

  • Developers
  • 3,181 posts
  • Gender:Male
  • Location:Bellingham, WA
  • Interests:skiing, software, classic cars

Use this one for Alps touchpad


That one is closed-source, violating the APSL.

There is also some ALPS versions of my version of VoodooPS2Controller.kext floating around (I don't track it, no ALPS hardware here).
Assuming one prefers open source, that is...

#11
Jake Lo

Jake Lo

    InsanelyMac Protégé

  • Members
  • PipPip
  • 81 posts

it's not close source 

https://github.com/D...d/Release-6-WIP



#12
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 6,459 posts
  • Gender:Male
  • Location:Moscow

it's not close source 

https://github.com/D...d/Release-6-WIP

OK, I will check.

I also have an VoodooPS2Touchpad driver working good with old ALPS in AbsoluteMode, with scrolling.

But this driver is not working with new touchpad even I included appropriate ID.



#13
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 6,459 posts
  • Gender:Male
  • Location:Moscow

It's a pity this driver also doesn't contain my ID

https://github.com/D...ackpad/alps.cpp

73,3,64

So it will not work. Nontheless I will test.



#14
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 6,459 posts
  • Gender:Male
  • Location:Moscow

Great! It works with two finger scrolling!

Attached File  VoodooPS2Controller.kext.zip   76.56KB   10 downloads

 

This is sources diff that I made.

Attached File  diff.txt.zip   1.49KB   3 downloads



#15
Jake Lo

Jake Lo

    InsanelyMac Protégé

  • Members
  • PipPip
  • 81 posts

Sorry, not sure if that has the latest changes by Dr.Hurt.

This here is the last update posted



#16
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 6,459 posts
  • Gender:Male
  • Location:Moscow

Sorry, not sure if that has the latest changes by Dr.Hurt.

This here is the last update posted

Thanks for the update information.

Hope he will commit sources to github because osxl don't allow download to guests.

 

This driver is really best!



#17
Slice

Slice

    InsanelyMac V.I.P.

  • Local Moderators
  • 6,459 posts
  • Gender:Male
  • Location:Moscow

Sorry, not sure if that has the latest changes by Dr.Hurt.

This here is the last update posted

I found no differencies with github sources. He seems already commit them

My changes more

1.

-Great thanks to Dense for helping with activating vanilla trackpad prefpane 

It was me who first investigate it.

2.

ADBKeys I know

diff -Nurpb /Users/sergey/Desktop/oldAlps/VoodooPS2Keyboard/ApplePS2ToADBMap.h /Users/sergey/Desktop/newAlps/VoodooPS2Keyboard/ApplePS2ToADBMap.h
--- /Users/sergey/Desktop/oldAlps/VoodooPS2Keyboard/ApplePS2ToADBMap.h	2016-11-04 03:10:14.000000000 +0300
+++ /Users/sergey/Desktop/newAlps/VoodooPS2Keyboard/ApplePS2ToADBMap.h	2017-10-11 07:36:59.000000000 +0300
@@ -119,22 +119,22 @@ static const UInt8 PS2ToADBMapStock[ADB_
     0x55,   // 51  Keypad 3 PageDn
     0x52,   // 52  Keypad 0 Insert
     0x41,   // 53  Keypad . Delete
-    0x44,   // 54  SysReq
+    0x44,   // 54  SysReq / Custom Calc
     0x46,   // 55
-    0x0a,   // 56  Europe 2(ISO)
+    0x0a,   // 56  Europe 2(ISO) º\ª (Spanish)
     0x67,   // 57  F11
     0x6f,   // 58  F12
     0x51,   // 59  Keypad =
-    DEADKEY,// 5a
-    DEADKEY,// 5b
+    0x4f,  // 5a Custom WWW
+    0x50,  // 5b Custom My Documents
     0x5f,   // 5c  Keyboard Int'l 6 (PC9800 Keypad , )
     DEADKEY,// 5d
     DEADKEY,// 5e
     DEADKEY,// 5f
-    DEADKEY,// 60
-    DEADKEY,// 61
-    DEADKEY,// 62
-    DEADKEY,// 63
+    0x3e,  // 60  Right Ctrl
+    0x3d,  // 61  Right Alt
+    0x4c,  // 62  Keypad Enter
+    0x4b,  // 63  Keypad / //??
     0x69,   // 64  F13
     0x6b,   // 65  F14
     0x71,   // 66  F15
@@ -143,26 +143,26 @@ static const UInt8 PS2ToADBMapStock[ADB_
     0x4f,   // 69  F18
     0x50,   // 6a  F19
     0x5a,   // 6b  F20
-    DEADKEY,// 6c  F21
-    DEADKEY,// 6d  F22
-    DEADKEY,// 6e  F23
-    DEADKEY,// 6f
-    0x68,   // 70  Keyboard Intl'2 (Japanese Katakana/Hiragana)
-    DEADKEY,// 71
-    DEADKEY,// 72
-    0x5e,   // 73  Keyboard Int'l 1 (Japanese Ro)
+    0x73,  // 6c  Home
+    0x77,  // 6d  End
+    0x69,  // 6e  Print Scrn
+    0x71,  // 6f  Pause
+    0x37,  // 70  Left Window
+    0x36,  // 71  Right Window
+    0x6e,  // 72  Applications
+    0x34,  // 73 Custom Play/Pause
     DEADKEY,// 74
     DEADKEY,// 75
-    DEADKEY,// 76  F24 , Keyboard Lang 5 (Japanese Zenkaku/Hankaku)
-    0x68,   // 77  Keyboard Lang 4 (Japanese Hiragana)
-    0x68,   // 78  Keyboard Lang 3 (Japanese Katakana)
+    0x3f,  // 76 Custom Stop
+    0x40,  // 77 Custom Prev Track
+    0x42,  // 78 Custom Next Track
     0x68,   // 79  Keyboard Int'l 4 (Japanese Henkan)
-    DEADKEY,// 7a
+    0x4d,  // 7a VidMirror
     0x66,   // 7b  Keyboard Int'l 5 (Japanese Muhenkan)
-    DEADKEY,// 7c
-    0x5d,   // 7d  Keyboard Int'l 3 (Japanese Yen)
-    0x5f,   // 7e  Keypad , (Brazilian Keypad .)
-    DEADKEY,// 7f 
+    0x7f,  // 7c
+    0x48,  // 7d Volume Up
+    0x49,  // 7e Volume Down
+    0x4a,  // 7f Volume Mute
     DEADKEY,// 80 
     DEADKEY,// 81 
     DEADKEY,// 82 

3. URL to sources

 	<key>Source Code</key>
-	<string>https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller</string>
+	<string>https://github.com/DrHurt/OS-X-ALPS-DRIVER</string>

4. Test keyboard echo

diff -Nurpb /Users/sergey/Desktop/oldAlps/VoodooPS2Keyboard/VoodooPS2Keyboard.cpp /Users/sergey/Desktop/newAlps/VoodooPS2Keyboard/VoodooPS2Keyboard.cpp
--- /Users/sergey/Desktop/oldAlps/VoodooPS2Keyboard/VoodooPS2Keyboard.cpp	2016-12-25 10:20:06.000000000 +0300
+++ /Users/sergey/Desktop/newAlps/VoodooPS2Keyboard/VoodooPS2Keyboard.cpp	2017-10-11 07:37:45.000000000 +0300
@@ -92,7 +92,8 @@ void* _org_rehabman_dontstrip_[] =
 
 // get some keyboard id information from IOHIDFamily/IOHIDKeyboard.h and Gestalt.h
 //#define APPLEPS2KEYBOARD_DEVICE_TYPE	205 // Generic ISO keyboard
-#define APPLEPS2KEYBOARD_DEVICE_TYPE	3   // Unknown ANSI keyboard
+//#define APPLEPS2KEYBOARD_DEVICE_TYPE	3   // Unknown ANSI keyboard
+#define APPLEPS2KEYBOARD_DEVICE_TYPE	0x1B
 
 OSDefineMetaClassAndStructors(ApplePS2Keyboard, IOHIKeyboard);
 
@@ -411,8 +412,11 @@ ApplePS2Keyboard* ApplePS2Keyboard::prob
     TPS2Request<2> request;
     request.commands[0].command = kPS2C_WriteDataPort;
     request.commands[0].inOrOut = kDP_TestKeyboardEcho;
-    request.commands[1].command = kPS2C_ReadDataPort;
-    request.commands[1].inOrOut = 0x00;
+//    request.commands[1].command = kPS2C_ReadDataPort;
+//    request.commands[1].inOrOut = 0x00;
+  request.commands[1].command = kPS2C_ReadDataPortAndCompare;
+  request.commands[1].inOrOut = kDP_TestKeyboardEcho; //Slice 0xEE
+
     request.commandsCount = 2;
     assert(request.commandsCount <= countof(request.commands));
     device->submitRequestAndBlock(&request);

5. Special multimedia keys

@@ -1681,6 +1685,18 @@ bool ApplePS2Keyboard::dispatchKeyboardE
                 keyCode = 0;
             }
             break;
+		  case 0x130: keyCode = 0x7d; break;		   // E030 = volume up
+		  case 0x12e: keyCode = 0x7e; break;		   // E02E = volume down
+		  case 0x120: keyCode = 0x7f; break;		   // E020 = volume mute
+			  
+		  case 0x119: keyCode = 0x78; break;		//E019 = next track
+		  case 0x110: keyCode = 0x77; break;		//E010 = prev track
+		  case 0x124: keyCode = 0x76; break;		//E024 = stop
+		  case 0x122: keyCode = 0x73; break;		//E022 = play/pause
+			  
+			  //	  case 0x21: keyCode = 0x54; break;		//E021 = calculator
+			  //	  case 0x16: keyCode = 0x55; break;		//E016 = logout
+		  case 0x10b: keyCode = 0x7a; break;		//E04d = VideoMirror
             
         case 0x0153:    // delete

I don't know if the existing driver do this other way.

 

6. ALPS new ID

diff -Nurpb /Users/sergey/Desktop/oldAlps/VoodooPS2Trackpad/alps.cpp /Users/sergey/Desktop/newAlps/VoodooPS2Trackpad/alps.cpp
--- /Users/sergey/Desktop/oldAlps/VoodooPS2Trackpad/alps.cpp	2017-02-11 19:47:38.000000000 +0300
+++ /Users/sergey/Desktop/newAlps/VoodooPS2Trackpad/alps.cpp	2017-10-10 22:44:44.000000000 +0300
@@ -140,6 +140,7 @@ static const struct alps_model_info alps
     { { 0x62, 0x02, 0x14 }, 0x00, ALPS_PROTO_V2, 0xcf, 0xcf,
         ALPS_PASS | ALPS_DUALPOINT | ALPS_PS2_INTERLEAVED },
     { { 0x73, 0x02, 0x50 }, 0x00, ALPS_PROTO_V2, 0xcf, 0xcf, ALPS_FOUR_BUTTONS },
+    { { 0x73, 0x03, 0x64 }, 0x00, ALPS_PROTO_V2, 0xff, 0xff, ALPS_PASS | ALPS_DUALPOINT | ALPS_PS2_INTERLEAVED },
     /* Dell Vostro 1400 */
     { { 0x52, 0x01, 0x14 }, 0x00, ALPS_PROTO_V2, 0xff, 0xff,
         ALPS_PASS | ALPS_DUALPOINT | ALPS_PS2_INTERLEAVED },

7. Change boot to void as these procedures will not return a value

diff -Nurpb /Users/sergey/Desktop/oldAlps/VoodooPS2Trackpad/alps.cpp /Users/sergey/Desktop/newAlps/VoodooPS2Trackpad/alps.cpp
--- /Users/sergey/Desktop/oldAlps/VoodooPS2Trackpad/alps.cpp	2017-02-11 19:47:38.000000000 +0300
+++ /Users/sergey/Desktop/newAlps/VoodooPS2Trackpad/alps.cpp	2017-10-10 22:44:44.000000000 +0300
@@ -2410,7 +2411,7 @@ bool ALPS::alps_hw_init_ss4_v2()
     
 }
 
-bool ALPS::ps2_command(unsigned char value, UInt8 command)
+void ALPS::ps2_command(unsigned char value, UInt8 command)
 {
     TPS2Request<2> request;
     int cmdCount = 0;
@@ -2424,12 +2425,12 @@ bool ALPS::ps2_command(unsigned char val
     _device->submitRequestAndBlock(&request);
     
     if (request.commandsCount != 2) {
-        return false;
+        return;
     }
     //return request.commandsCount = cmdCount;
 }
 
-bool ALPS::ps2_command_short(UInt8 command)
+void ALPS::ps2_command_short(UInt8 command)
 {
     TPS2Request<1> request;
     int cmdCount = 0;
@@ -2441,7 +2442,7 @@ bool ALPS::ps2_command_short(UInt8 comma
     _device->submitRequestAndBlock(&request);
     
     if (request.commandsCount != 1) {
-        return false;
+        return;
     }
     //return request.commandsCount = cmdCount;
 }
diff -Nurpb /Users/sergey/Desktop/oldAlps/VoodooPS2Trackpad/alps.h /Users/sergey/Desktop/newAlps/VoodooPS2Trackpad/alps.h
--- /Users/sergey/Desktop/oldAlps/VoodooPS2Trackpad/alps.h	2017-02-11 19:40:32.000000000 +0300
+++ /Users/sergey/Desktop/newAlps/VoodooPS2Trackpad/alps.h	2017-10-10 22:44:44.000000000 +0300
@@ -445,9 +445,9 @@ protected:
     
     bool alps_hw_init_ss4_v2();
     
-    bool ps2_command_short(UInt8 command);
+    void ps2_command_short(UInt8 command);
     
-    bool ps2_command(unsigned char value, UInt8 command);
+    void ps2_command(unsigned char value, UInt8 command);
         
     void set_protocol();
     







Also tagged with one or more of these keywords: macOS, laptop, NVS5200M


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2017 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy