RieGan / Ideapad-S340-15iwl-Hackintosh

Tutorial and configuration about creating hackintosh using OpenCore for Lenovo Ideapad S340-15iwl
11 stars 1 forks source link

HDAFix still required #2

Open WraithWinterly opened 2 years ago

WraithWinterly commented 2 years ago

3 updates for this issue.

HDAFrom my original tutorial is still required. After doing so, it fixed the issue of my audio cutting out and combo port breaking.

SD Card: The driver works pretty weird. Sometimes it works, when opening from sleep it would sometimes duplicate the device then do a bunch of weirdness. It is not ready or is not configured right at the moment.

Remove bootargs for properties, remove -igfxblr for enable-backlight-registers-fix property under the iGPU device. Also add enable-backlight-smoother property. It makes the brightness adjustment really nice and smooth. What is darkwake=0 for? Does sleep need it? I don't recall having my previous builds with it, but I am not sure if it should be used or the purpose of it.

I feel like there might be more to fix for graphics. The video game I developed / am developing is very stuttery, however other testers with real macs said it runs just fine, so I wonder if there is a graphics performance issue. It could be unrelated though, but this computer is not very low end, so I don't believe the graphics are just super weak.

RieGan commented 2 years ago

HDAFrom my original tutorial is still required. After doing so, it fixed the issue of my audio cutting out and combo port breaking.

The latest commit is only to enable('allow' is maybe the correct word for it) sending HD audio command from user space. Basically user still have to send HDA command after wake to force Apple's ALC driver to connect with jack audio. It can be done by:

  1. Manually sending the command every wake using alc-verb(same as linux's hda-verb, it included in acidanthera's AppleALC)
    alc-verb 0x19 SET_PIN_WIDGET_CONTROL 0x25
    alc-verb 0x21 SET_UNSOLICITED_ENABLE 0x83
  2. Using app that run every wake to send that command like:
    • customized(parameter changed to something like above) version of ALCPlugFix that you use on your tutorial, but it using some kind of old hda-verb which need codecCommander(old method of enabling sendin HDA command before acidanthera implementing ALCUserClient on AppleALC kext)
    • ALCPlugFix-Swift. This is kinda new app, using IOkit that provided by ALCUserClientProvider(from AppleALC.kext). It has some kind of custom event listener, so it can send command every wake, boot, connect, disconnect, etc.

On next commit I will provide the tutorial and the file needed for ALCPlugFix-Swift

RieGan commented 2 years ago

I feel like there might be more to fix for graphics. The video game I developed / am developing is very stuttery, however other testers with real macs said it runs just fine, so I wonder if there is a graphics performance issue. It could be unrelated though, but this computer is not very low end, so I don't believe the graphics are just super weak.

Could you share more info about your game and comparation when using windows and hackintosh. Because the result of Geekbench's OpenCL benchmark & webGL test is pretty much in margin of error (less than 10% difference when using linux, maybe less than 5% if I remember correctly) and maybe around 6 months ago, I play CS:GO on my laptop with this config and compare it when using linux, it feel less performance but not that much(I think because proton is more optimized on linux)

RieGan commented 2 years ago

What is darkwake=0 for? Does sleep need it? I don't recall having my previous builds with it, but I am not sure if it should be used or the purpose of it.

It is for disabling darkwake. Basically darkwake is feature that wake on sleep(without activating screen, which is why it's called darkwake) to do something on background temporarily like checking notification, reconnect wifi, etc.

This is some result of my experiment in the past, it's focused on CPU power state.

SMBIOS: MacBookPro14,1 (Intel core 7th gen)

When using MacBookPro14,1 SMBIOS, there's no problem because darkwake using higher clock when wake from sleep state(this is only my opinion). The problem, if you noticed when using that SMBIOS, the idle clock(CPU) is very high and its make fan ramps up pretty quickly, it can't be fixed with CPUFriend.

SMBIOS: MacBookPro15,4 (Intel core 8th gen)

Because we're using the same CPU generation(i5-8257u & i5-8265u basically same), the problem with CPU power & clock speed is solved. The CPU run less power hungry thus makes the CPU more efficient and less hot. But there's problem when darkwake, the laptop won't do anything, just hang and nothing. I think because darkwake using lower clock speed than minimum clock speed of i5-8265u(800Mhz). They dont show us the minimum clock speed of i5-8257u on the specsheet, this is just speculation but it should be lower than 800Mhz. That is why we need to disable darkwake.

I've tried some other builds/configs that use MacBookPro14,1's SMBIOS (I think, one of them is your's). All of them have same problem with high CPU clock & power, but no problem with wake/sleep. But, when i change the SMBIOS to MacBookPro15,4 suddenly the wake/sleep is broken like I mentioned before.

If there's an option to change the clock speed when darkwake, I can "re-enable" it.

RieGan commented 2 years ago

Remove bootargs for properties, remove -igfxblr for enable-backlight-registers-fix property under the iGPU device. Also add enable-backlight-smoother property. It makes the brightness adjustment really nice and smooth.

Owh yeah, I literally forgot to move it to device-properties. Nice mention about enable-backlight-smoother I don't know if it exists. Thanks about that.