Contribute
Register

[Guide] ASUS ZenBook Pro Duo 15 OLED UX582 OpenCore

Joined
Sep 24, 2012
Messages
180
Motherboard
ASUS ZenBook Pro Duo 15 UX582
CPU
i9-10980HK
Graphics
UHD 630 + RTX 3070
ASUS ZenBook Pro Duo 15 OLED UX582 using OpenCore 0.8.8 [WIP]

ZenBook_Pro_Duo_15_OLED_UX582.png


- A guide of the most high-end Hackintosh laptop after Apple switched to Apple Silicon -

Disclaimer: I do not take the responsibility for any damages caused on your laptop following this guide. Please proceed this guide with your own will and use it at your own risk.


Summary: A perfect choice for high-end Hackintosh laptop - almost everything is working on this model.

Spec:

BIOS: Version 305
CPU: Intel Core i9-10980HK (variant: Intel Core i7-10870H)
iGPU: Intel UHD 630
dGPU: Nvidia RTX 3070 8GB (won't work; disabled to save battery; could be enabled with UEFIGraphicsFB.kext for HDMI port without graphics acceleration)
RAM: LPDDR4X 32GB
SSD: Samsung PM981A 1TB M.2 SSD (Not compatible with macOS; replaced with PNY CS3030 2TB M.2 SSD)
Audio: Realtek ALC294 & Nvidia RTX 3000 series HDMI
Wireless: Intel Wi-Fi 6 AX201
Touchpad: ELAN TouchPad
Ports: 1x USB 3.2 Gen 2 Type-A; 2x Thunderbolt 3; 1x HDMI 2.1; 1x 3.5mm Combo Audio Jack; 1x DC-in

What's working:
  • Intel UHD Graphics 630
  • Intel WiFi 6 (speed could be slow on some very few routers)
  • Intel Bluetooth
  • Internal stereo speaker
  • Internal microphone
  • Combo audio jack
  • Camera
  • Battery indication
  • CPU SpeedStep
  • Main touchscreen
  • Secondary ScreenPad Plus
  • Brightness control (software brightness control workaround with Lunar)
  • Stylus pen (works on both screens without the sense of pressure)
  • Keyboard
  • FN keys:
    • FN+Esc (_QD5) = FN Lock/Unlock
    • FN+F1 = Volume Mute
    • FN+F2 = Volume Down
    • FN+F3 = Volume Up
    • FN+F4 (_Q0E) = Main Display Brightness Down
    • FN+F5 (_Q0F) = Main Display Brightness Up
    • FN+F6 (_Q12) = Enable/Disable Trackpad
    • FN+F7 (_Q0D) = Keyboard Backlight
    • FN+F8 = N/A
    • FN+F9 = N/A
    • FN+F10 (_Q17) = N/A
    • FN+F11 = N/A
    • FN+F12 (_Q18) = Toggles Battery Charging Threshold; ASUS has a firmware implementation for limiting battery charging, which is set to limit to 80% by default.
    • FN+Performance Mode Switch (_Q30) = N/A
    • FN+Display/ScreenPad Switch (_Q31) = ScreenPad Brightness
    • FN+Enable/Disable ScreenPad (_Q32) = Enable/Disable
    • FN+Spacebar (_Q71 ??) = N/A
  • Trackpad
  • USB 3.2 Gen2 Type-A
  • USB 3 Type-C
  • USB 3 Type-C to DP/HDMI (only one port works due to macOS restriction)
  • Thunderbolt 3 (only non-eGPU devices work for now; what have been tested and work: Intel X540 two port 10G Ethernet, and NVME storage.)
  • Power adaptor
  • Sleep/wake
  • iCloud
  • Continuity

What's not working for now:
  • Nvidia RTX 3070 (won't work due to no driver in macOS)
  • HDMI port (routed to Nvidia RTX 3070; same as above)
  • Native brightness control with macOS CoreDisplay (need to port driver from Linux for display brightness control; check s-light/ASUS-ZenBook-Pro-Duo-UX581GV)
  • Ambient light sensor (same as above)
  • Thunderbolt eGPU (WIP; need to work with DROM and SSDT)
  • Numpad (need to port driver from Linux; check mohamed-badaoui/asus-touchpad-numpad-driver)
  • Some other FN keys (WIP; check hieplpvip/AsusSMC)

ToDo List:
  • Brightness auto adjustment with ambient sensor
  • Some other FN keys (FN+F10, fan control, switch main/secondary monitors, and disable secondary monitor)
  • Trackpad GPIO mode
  • Numpad
  • Thunderbolt 3 for eGPU (need more SSDT and DROM patches)
  • Battery ACPI patch (Although battery indication is working OOB with SMCBatteryManager.kext and SSDT-EC-USBX.aml, an SSDT patch may still be needed for better battery management.)

Bios Settings:
- BIOS Lock: Disabled
- CFG Lock: Disabled
- Fast Boot: Disabled
- Secure Boot Control: Disabled
- VT-d: Disabled
- SATA Mode Selection: AHCI
- DVMT Pre-Allocated: 64M
- DVMT Total Gfx Mem: MAX
- Force unlock on all GPIO pads: Enabled
- Kernel Debug Serial Port: Legacy UART
- Touch Pad Interrupt Mode: GPIO Interrupt
- Touch Panel Interrupt Mode: GPIO Interrupt

- Legacy USB Support: Enabled
- XHCI Legacy Support: Enabled
- XHCI Hand-off: Enabled
- EHCI Hand-off: Enabled

OpenCore EFI:
 
Last edited:
Index
1. Pre-install
- 1.1 Replace and Clone the SSD
- 1.2 Disable BitLocker for Windows
- 1.3 Update BIOS
- 1.4 Setup the Hidden BIOS settings
- 1.5 Fix Windows SATA Mode
- 1.6 OpenCore PlatformInfo
2. Installation
- 2.1 Boot from OpenCore USB drive
- 2.2 macOS Installer
- 2.3 Booting from SSD
3. Post-Install
- 3.1 Boot from SSD
- 3.2 Kext
- 3.3 ACPI
- 3.4 Build and minimize Intel WiFi Driver
- 3.5 Build and minimize Intel Bluetooth Driver
4. Post-Install: Required Software
- 4.1 Brightness Control
- 4.2 Enable/Disable Intel Turbo Boost
- 4.3 Adjust Mission Control and Dock Position
- 4.4 Adjust Launchpad Size
5. Post-Install: Useful Software for Dual Screen Laptop
- 5.1 Window Resize
- 5.2 Window Preview
6. Results
- 6.1 GeekBench Score
7. Advanced
- 7.1 Update AppleALC
- 7.2 Flash Thunderbolt Firmware
- 7.3 USB WiFi Adapter
8. Driver Development
9. Changelog
 
Last edited:
1. Pre-Install
1.1 Replace and Clone the SSD

Due to the fact that the factory-preinstalled Samsung PM981A is not compatible with macOS (PM981A causes kernel panic in the second stage macOS installation and other random kernel panic after installation) and there is only one M.2 slot in UX582, I have replaced the M.2 SSD with a cheap-but-not-so-cheap PNY CS3030 2TB M.2 SSD. It is using a Phison controller, which is known to have better compatibility with macOS. I recommend you find a similar SSD with Phison controller, although PNY CS3030 is the cheapest one with a known brand I could find. I do not recommend getting a PCIE 4.0 SSD because the chipset on this laptop is running PCIE 3.0 although it's using an Intel 10 gen CPU. You would be wasting money to get a PICE 4.0 SSD on this laptop.

I plan to triple boot windows, macOS, and Ubuntu, so I used Acronis True Image to clone the factory-preinstalled Samsung PM981A to my PNY CS3030 2TB M.2 SSD. After cloning Windows and other factory-preinstalled partitions to my new SSD, I boot into Windows and shrink the C: drive and use the spare space to create a new partition in NTFS. This new partition would be used to format as APFS in macOS installer. You may create more partitions with the spare space if you plan to boot more operation systems.


1.2 Disable BitLocker for Windows

If you want to dual boot Windows 10/11, always remember to disable BitLocker in Windows.
Otherwise, after you turn off the Secure Boot in BIOS, you will be asked to enter the BitLocker key to unlock Windows. If you know your BitLocker key or if you have it synced with your Microsoft account, it's all good. If not, you'll end up losing your Windows files and reinstalling Windows. As always, backup your data before doing any OS installation.


1.3 Update BIOS

Make sure your BIOS version is the same as this guide before you do the following steps.
As of January 2023, the latest BIOS version used in this guide is 305. You may still proceed with the following steps if you can extract the Setup.txt from Setup.bin in the BIOS with ifrextract.


1.4 Setup the Hidden BIOS Settings (Not Required - as of 1/16/2022)

Edit: As of 1/16/2022, the BIOS settings are found not required to get OpenCore boot macOS.

Before booting macOS installer with OpenCore EFI, you will need to change the BIOS settings in UX582. The BIOS menu is accessible through pressing F2 on the keyboard. However, since some of the settings are not visible in the BIOS menu, you would need modGRUBShell.efi to modify the hidden BIOS settings. I was hoping to flash the BIOS so that the hidden BIOS settings can be shown in the menu; however, it turns out the BIOS is locked with the PCH chipset after checking with UEFITool.app. If you flash a modified BIOS, the laptop will be bricked.

modGRUBShell.efi is placed in OpenCore EFI. When you boot with OpenCore, simply select modGRUBShell and use the following commends to change the hidden BIOS settings:
- BIOS Lock: Disabled
Code:
setup_var_cv PchSetup 0x17 0x17 0x0
- CFG Lock: Disabled
Code:
setup_var_cv CpuSetup 0x3E 0x11 0x0
- Fast Boot: Disabled
Code:
setup_var_cv SaSetup 0x136 0x16 0x0
- Secure Boot Control: Disabled
Code:
setup_var_cv SecureBootSetup 0x0 0x2B 0x0
- VT-d: Disabled
Code:
setup_var_cv SaSetup 0xF9 0x16 0x0
- SATA Mode Selection: AHCI
Code:
setup_var_cv PchSetup 0x44 0x17 0x0
- DVMT Pre-Allocated: 64M
Code:
setup_var_cv SaSetup 0xF5 0x16 0x2
- DVMT Total Gfx Mem: MAX
Code:
setup_var_cv SaSetup 0xF6 0x16 0x3
- Force unlock on all GPIO pads: Enabled
Code:
setup_var_cv PchSetup 0x18 0x17 0x1
- Kernel Debug Serial Port: Legacy UART
Code:
setup_var_cv PchSetup 0x8 0x17 0x0
- Touch Pad Interrupt Mode: GPIO Interrupt
Code:
setup_var_cv Setup 0x2AE 0x1 0x0
- Touch Panel Interrupt Mode: GPIO Interrupt
Code:
setup_var_cv Setup 0x2B4 0x1 0x0
- Legacy USB Support: Enabled
Code:
setup_var_cv UsbSupport 0x1 0x27 0x0
- XHCI Legacy Support: Enabled
Code:
setup_var_cv UsbSupport 0x2A 0x27 0x1
- XHCI Hand-off: Enabled
Code:
setup_var_cv UsbSupport 0x2B 0x27 0x1
- EHCI Hand-off: Enabled
Code:
setup_var_cv UsbSupport 0x2 0x27 0x1

If you want to verify the BIOS settings modified from above, use the following commend. For example, for CFG Lock:
Code:
setup_var_cv CpuSetup 0x3E

If you mess up with the BIOS settings with modGRUBShell, you can always load the default BIOS setting in the BIOS menu and redo the commends above.

Exit modGRUBShell with the command "exit". You should be redirected back to the OpenCore boot menu. Press Ctrl+Alt+Delete to restart the laptop. After the screen lit up, hold the power key to shutdown the laptop and then proceed with the next step.

1.5 Fix Windows SATA Mode

If you are dual booting Windows, you will find Windows can no longer boot after setting the SATA mode to AHCI in BIOS. To fix this problem, simply put Windows to safe mode before changing SATA mode to AHCI in BIOS and turn off safe mode after the SATA mode is changed to AHCI. If you have already changed the SATA mode, you may want to switch back the SATA mode before putting Windows to safe mode.

1.6 OpenCore PlatformInfo

To avoid the duplicated serial number causing iCloud issue, please make sure to change the Serial Number, UUID, MLB, and ROM in the PlatformInfo section in OpenCore. I use OpenCore Configuration.app to generate these information. Make sure you are using the corresponding OpenCore Configuration version for your OpenCore version; otherwise, serious problems could occur in the later installation sections.
 
Last edited:
2. Installation
2.1 Boot from OpenCore USB Drive

After finishing setting up the BIOS, exit modGRUBShell as instructed in the pre-installation step above. I recommend doing a cold boot instead of a restart after changing the BIOS settings. Choose OpenCore EFI again from the BIOS Menu. This time, boot with the macOS installer, which you may have on the same USB drive. There is a guide on how to create macOS installer on USB drive from Apple.

2.2 macOS Installer

After booting from OpenCore, you will see the macOS installation screen. Remember to format the disk partition you just created to APFS. The lowest supported macOS version on this laptop is macOS Catalina. Follow the instruction in the installer to complete the setup. You will need at least another boot to finish the installation after the installer copy the macOS installer to your SSD.

2.3 Booting from SSD

To boot from the internal SSD, put the OpenCore EFI to your SSD EFI partition after macOS is installed on your SSD. However, the BIOS menu would not show the OpenCore EFI. This is a known issue with many motherboard in hackintosh. To resolve this, you would need a live Linux distro with efibootmgr package installed. Instead of sdX, use nvme0nX for the M.2 SSD.
You can then add the OpenCore boot option in the BIOS menu entered from F2 key at boot.
 
Last edited:
3. Post-Install

3.1 Boot from SSD

After installing macOS from your USB drive, you would want to boot macOS/OpenCore directly from the SSD. To do this, mount the EFI partition with OpenCore Configurator.app and copy your OpenCore files to it. Remember to keep and make a backup of Windows EFI files.

If you encounter issues with disk being full in the EFI partition, you might want to erase/format the EFI partition. First, you would want to check the location of the EFI partition in Terminal.app:
Code:
diskutil list

After you found the partition, make a copy of all the file in your EFI partition and use this command to erase the EFI partition:
Code:
newfs_msdos -v EFI /dev/diskXsY
Here, diskXsY is the partition you found from the previous command. In my case it is disk0s2.

Once the formation is finished, you may copy the files into the EFI partition.

3.2 Kext

The following kexts are used in OpenCore EFI:

ACPIDebug.kext - Can be used with SSDT-RMDT.aml to generates ACPI debug code to identify FN key events and other ACPI events, such as close lid, plugin power adapter, etc.
AirportItlwm-BigSur.kext - Renamed from AirportItlwm.kext; Intel WiFi 6 driver in macOS Big Sur.
AirportItlwm-Catalina.kext - Renamed from AirportItlwm.kext; Intel WiFi 6 driver in macOS Catalina.
AirportItlwm-Monterey.kext - Renamed from AirportItlwm.kext; Intel WiFi 6 driver in macOS Monterey.
AnyiSightCam.kext - Planned to use for WebCam fack-id injection.
AppleALC.kext - Customized version for Realtek ALC294 audio.
AsusSMC.kext - SMC driver for ASUS laptops; needed for keyboard backlight and ALS device; disable SMCLightSensor.kext when using this.
BrightnessKeys.kext - Enable Brightness FN Keys.
CodecCommander.kext - Fix speaker and headphone that have no sound at boot and after sleep/wake.
CPUFriend.kext - CPU power management.
CPUFriendDataProvider.kext - Information generated for CPUFriend.kext.
CpuTscSync.kext - Solve some kernel panics after wake.
DiskArbitrationFixup.kext - No used for now; disabling the "The disk you inserted was not readable by this computer" message at boot on 10.9 or later.
HoRNDIS.kext - Allows the use of Android phone's native USB tethering mode in macOS.
IntelBluetoothFirmware.kext - Injection for Intel Bluetooth.
IntelBluetoothInjector.kext - Injection for Intel Bluetooth.
Lilu.kext - Required kext for arbitrary kext, library, and program patching throughout the system for macOS.
NoTouchID.kext - Lilu plugin for disabling Touch ID support for the use of MBP16 SMBIOS.
NVMeFix.kext - Recommended to enable this for NVMe/M.2 SSD power management in hackintosh.
SMCBatteryManager.kext - Needed for battery indication.
SMCLightSensor.kext - VirtualSMC plugin for SMC light sensor; disabled for AsusSMC.kext.
SMCProcessor.kext - VirtualSMC plugin for CPU sensor.
SMCSuperIO.kext - VirtualSMC plugin for IO sensors.
VirtualSMC.kext - SMC emulator layer.
VoodooI2C.kext - Required kext for the touchpad and both touchscreens.
VoodooI2CHID.kext - Required kext for the touchpad and both touchscreens.
VoodooPS2Controller.kext - Required kext for the PS2 keyboard.
WhateverGreen.kext - Lilu plugin providing patches to select GPUs on macOS
XHCI-unsupported.kext - Customized kext for the onboard USB ports.

CPUFriend
To optimize the CPU power management and save the battery, I use the CPUFriendFriend py script to customize the CPUFriendDataProvider.kext for my i9-10980HK power management settings and the best battery life. If you are using i7-10870H or want to have a better performance more than the battery life, you will have to create and replace the CPUFriendDataProvider.kext in EFI/OC/Kexts with the CPUFriendFriend py script.

3.3 ACPI


SSDT-ALC294.aml
SSDT-ALS0.aml
SSDT-ASUSFN.aml
SSDT-AWAC.aml
SSDT-AsusSMC.aml
SSDT-DDGPU.aml
SSDT-DMAC.aml
SSDT-DTGP.aml
SSDT-EC-USBX.aml
SSDT-ELAN-POLLING.aml
SSDT-GPRW.aml
SSDT-HPET.aml
SSDT-IMEI.aml
SSDT-MEM2.aml
SSDT-OC-XOSI.aml
SSDT-PLUG.aml
SSDT-PMCR.aml
SSDT-PNLFCFL.aml
SSDT-PPMC.aml
SSDT-PS2K.aml
SSDT-PTS.aml
SSDT-RHUB.aml
SSDT-RMDT.aml
SSDT-SBUS-MCHC.aml
SSDT-TB3.aml
SSDT-XSPI.aml

3.4 Build and minimize Intel WiFi Driver

To reduce the boot time, we might need to decrease the size of AirportItlwm.kext by removing the redundant firmware in the AirportItlwm.kext. In this guide, it will help you keep only the firmware used by your Intel WiFi card.

First, clone the itlwm project from GitHub using the following commands in the Terminal app to your project folder:
Code:
git clone --depth=1 https://github.com/OpenIntelWireless/itlwm.git
cd itlwm
git clone --depth=1 https://github.com/acidanthera/MacKernelSDK.git

Open the IORegistryExplorer app, and search for itlwm. Under the AirportItlwm, check the firmware loaded in the IOModel Property.
Screen Shot 2023-01-26 at 6.17.35 PM.png

Navigate to your itlwm project folder, and inside the itlwm project folder, keep only the firmware match the IOModel Property in ./itlwm/firmware. In my case, the firmware loaded on my UX582 is iwlwifi-QuZ-a0-hr-b0-XX.ucode, where XX is the firmware version and can vary based on the itlwm version.

Build itlwm project using the following commands in the Terminal app:
Code:
xcodebuild -scheme "AirportItlwm (all)" -configuration Release

Navigate to
~/Library/Developer/Xcode/DerivedData/itlwm-*/Build/Products/Release/*macOS Version*/AirportItlwm.kext

The reduced size of AirportItlwm.kext should be around 1.4 MB; copy this build AirportItlwm.kext to your OpenCore Kexts folder. The boot time should be reduced a bit.

3.5 Build and minimize Intel Bluetooth Driver

Same as above, to reduce the boot time, we can decrease the size of IntelBluetoothFirmware.kext and IntelBluetoothInjector.kext by removing the redundant firmware inside them.

Open the IORegistryExplorer app, and search for IntelBluetooth. Under the IntelBluetoothFirmware, check the firmware loaded in the fw_name Property.
Screen Shot 2023-01-26 at 6.17.35 PM.png
Clone the IntelBluetoothFirmware project from GitHub using the following commands in the Terminal app to your project folder:
Code:
git clone --depth=1 https://github.com/OpenIntelWireless/IntelBluetoothFirmware.git
cd itlwmIntelBluetoothFirmware
git clone --depth=1 https://github.com/acidanthera/MacKernelSDK.git

Navigate to the IntelBluetoothFirmware project folder, and inside the IntelBluetoothFirmware project folder, keep only the firmware names match the IOModel Property in ./IntelBluetoothFirmware/fw. In my case, the firmware loaded on my UX582 is ibt-19-16-XX.sfi, where XX is the firmware version and can vary based on the IntelBluetoothFirmware version.

Build itlwm project using the following commands in the Terminal app:
Code:
xcodebuild -scheme "Package" -configuration Release

Navigate to
~/Library/Developer/Xcode/DerivedData/IntelBluetoothFirmware-*/Build/Products/Release

Unzip the IntelBluetoothFirmware-*version*-RELEASE.zip. The reduced size of IntelBluetoothFirmware.kext should be around 600KB and the IntelBluetoothInjector.kext should be around 7KB; copy them to your OpenCore Kexts folder. The boot time should be reduced a bit.
 
Last edited:
4. Post-Install: Required Software

4.1 Brightness Control

Due to the reason that real Mac do not use OLED panel, there seems to be no way get brightness control work OOB with SSDT patch through SSDT-PNLFCFL.aml. One of the best workaround I have found for now is the use of Lunar.app. The main screen is connected through eDP (hence, it should be identified as LVDS/eDP in Intel Framebuffer) and the secondary screen is connected through DP. However, to get Lunar.app work with the main screen, instead of setting it as LVDS/eDP, I set the connection type as DP. This way, the software brightness control in Lunar.app would work with the main screen.
Edit: Later version (v5.2.2) of Lunar.app have fixed the above issue. Hence, the main monitor is now set as LVDS/eDP.

The free license is enough to cover the normal use with the brightness control via FN keys. However, to resolve the brightness control hardware-wise, it is important to look into how brightness is handled by DSDT. In Linux, developers have found a way to call the ACPI commends to adjust brightness for both the OLED panel and the screenPad LCD.

In Luna.app, make sure the "Software Dimming" is chose instead of "Apple Native (DisplayService)" as the Apple Native method is based on CoreDisplay service, which cannot activate OLED brightness control.
Luna Settings.png

4.2 Enable/Disable Intel Turbo Boost

Without disabling Turbo Boost, the battery life on UX582 is around 1-2.5 hours. To save the battery when you're using the laptop in the mobile, you may want to use Turbo Boost Switcher.app to disable Turbo Boost and re-enable it once you have power adapter available.

In macOS Monterey, you may activate this by enabling "Low power mode" in System Preferences.app.
Low Power Mode.png

4.3 Adjust Mission Control and Dock Position

In System Preferences > Mission Control, uncheck the option called "Displays have separate Spaces." Then you can have the Dock put on the ScreenPad. When clicking an app on the Dock, it will actually pop up in the main display. This allows you to make full use of the whole main display.

Screen Shot 2023-02-06 at 5.58.39 AM.png

4.4 Adjust Launchpad Size

In Terminal, run the following command to adjust the size of the icons in the Launchpad:
Code:
defaults write com.apple.dock springboard-rows -int 3
defaults write com.apple.dock springboard-columns -int 7;killall Dock

Now that you can see the icons are scattered throughout the Launchpad. You can manually drag them to arrange them or use the below command in Terminal to set them back. Remember that this command also will remove any custom folders that you have created. So use this only if you have not created any folder otherwise you need to arrange the icons manually.
Code:
defaults write com.apple.dock ResetLaunchPad -bool TRUE;killall Dock
 
Last edited:
5. Post-Install: Useful Software for Dual Screen Laptop

In Windows, the window control software is managed by ASUS. You may think that since this laptop is built for Windows, there is few reasons to boot macOS for productive works. However, I have discovered that there are way more softwares in macOS that can boost your productivity way more than the buggy Windows for dual screen laptop.

5.1 Window Resize
Magnet
Deskovery3

5.2 Window Preview
DockMate
 
Last edited:
6. Results
6.1 GeekBench Score

Geekbench 5 CPU Benchmark
Geekbench 5 CPU Benchmark.png
Geekbench 5 OpenCL Benchmark
Geekbench 5 OpenCL Benchmark.png

Geekbench 5 Metal Benchmark
Geekbench 5 Metal Benchmark.png
 
Last edited:
7. Advance
7.1 Update AppleALC

Currently, the stock AppleALC.kext does not content the information needed for the onboard ALC294 to fully work. Hence, I modified the platforms.xml and codec to get the onboard audio work. Before AppleALC makes UX582's ALC294 files available to its source code, I use the following setup to update AppleALC:


7.2 Flash Thunderbolt Firmware

For the full functionality of thunderbolt for purposes such as eGPU connection, you may want to flash the thunderbolt ROM.


7.3 USB WiFi Adapter

Due to the fact that AX201 could be very slow with some routers, I purchased an USB WiFi Adapter as a backup in case I need it in some public space. I found the fastest compact dongle I could find is D-Link DWA-181 AC-1300. The driver, Wireless-USB-OC-Big-Sur-Adapter, can be found on GitHub.
 
Last edited:
8. Help Needed with Driver Development

There are five main driver-related issues needed to be done with UX582:

1. The ScreenPad only works as cursor with click function with VoodooI2C. I am currently working on this issue and need help with more VoodooI2C developers.
2. The trackpad is not working sometimes due to a known VoodooI2C bug: VoodooI2C GitHub Issue #321
3. The numpad is not working in operating system other than Windows. In Linux, this is done by asus-touchpad-numpad-driver. A similar Python driver could be created in macOS.
4. Some FN keys are not working. Someone would need to look into how to patch the SSDT or may even need to modify AsusSMC.kext.
5. The brightness control on both the main and secondary screens are done through software control through Lunar.app for now. This is not the correct way to control the brightness as the ScreenPad (secondary screen) is an LCD panel and the power consumption is max-out at max brightness hardware-wise speaking.
 
Last edited:
Back
Top