3일간 참으로 억겹의 시간을 보내면서, 허리가 많이 아팠습니다만..
큰 힌트를 주신 여섯길타래 뉴해킨님께 큰 감사의 이야기 전해 드리고 싶습니다.

결국 충돌없이 잘 인식 시키면서 Z420을 아끼게 되는데요. 사실 오늘 새벽까지만해도 팔아버리고 싶었던게 함정입니다만 각설하고 본문으로 직행하겠습니다.

 

준비물 

1. FL1100칩셋의 USB 3.0 (국내에선 BZ1-Ultra USB 3.0 PCIe로 판매중입니다)
2. /System/Library/Extensions/IOUSBHostFamily.kext
3. EFI/Clover/patched/SSDT-1.aml
4. USBInjectAll.kext (최신 버전 필요)
5. IORegistryExplorer (없어도 되긴 하지만 있으면 더더욱 좋아요)
6. 웅녀를 능가할 인내심
 

 

** Z420의 슬롯 번호에 대해

CPU에서 가까운 슬롯이 1번이며 대부분 BCM94360CD를 여기에 장착 하시죠
그 다음 2번 슬롯은 GPU를 장착하시게 되는데... 대부분 이런 케이스가 발생하면 추가 PCIe는 바로 5번에 설치를 하도록 합니다. 행여나 슬롯이 부족하신 분께서는 GPU 쿨러를 1 slot으로 변경하시면 좀 나아지시리라 여깁니다.

자 그럼, AppleUSBXHCIFL1100을 인식 시키는 HP Z420의 SSDT-1.aml을 수정하도록 하겠습니다.

 

SSDT-1.aml에서 (\_SB.PCI0.NEP3.SLT5 에 USB 3.0 PCIe 카드가 장착되었으나,
IORE에서는. 운영체제에서 불러오는 변수인 XHC1과는 거리가 먼 SLT5로 표시됩니다. 이것을 XHC1으로 Fake 시켜 버리겠습니다.

 

가. SSDT-1.aml

/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20100331
 *
 * Disassembly of iASL2X5ZTg.aml, Sun Oct 16 16:57:15 2016
 *
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x00000615 (1557)
 *     Revision         0x01
 *     Checksum         0x0A
 *     OEM ID           "APPLE "
 *     OEM Table ID     "Devicein"
 *     OEM Revision     0x00015601 (87553)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20100331 (537920305)
 */
DefinitionBlock ("iASL2X5ZTg.aml", "SSDT", 1, "APPLE ", "Devicein", 0x00015601)
{
    External (\_SB_.PCI0, DeviceObj)
    External (\_SB_.PCI0.NPE2, DeviceObj)
    External (\_SB_.PCI0.NPE3, DeviceObj). /* 시스템 버스 NPE3를 DSDT.aml에서 참조 합니다 */
    External (\_SB_.PCI0.NPE2.SLT2, DeviceObj)
    External (\_SB_.PCI0.NPE3.SLT5, DeviceObj) /* 시스템 버스 SLT5를 DSDT.aml에서 참조 합니다 */

    Method (XOSI, 1, NotSerialized)
    {
        Name (WINV, Package (0x06)
        {
            "Windows", 
            "Windows 2001", 
            "Windows 2001 SP2", 
            "Windows 2006", 
            "Windows 2006 SP1", 
            "Windows 2009"
        })
        Return (LNotEqual (Match (WINV, MEQ, Arg0, MTR, Zero, Zero), 
            Ones))
    }

    Scope (\_SB.PCI0)
    {
        Device (HDEF)
        {
            Name (_ADR, 0x001B0000)
            Name (_PRW, Package (0x02)
            {
                0x08, 
                0x04
            })
            Method (_DSM, 4, NotSerialized)
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                        0x03
                    })
                }

                Return (Package (0x02)
                {
                    "hda-gfx", 
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    }
                })
            }
        }
    }

    Scope (\_SB.PCI0.NPE3.SLT5)
    {
        Name (_STA, Zero)/* NPE3.SLT5의 DSDT내용을 삭제 시킵니다 */
    }

    Scope (\_SB.PCI0.NPE3) 
    {
        Device (XHC1) /* NPE3.XHC1 장치를 새롭게 만들어 _DSM구문을 로딩 합니다 */
        {
            Name (_ADR, Zero)
            Name (_SUN, 0x05)
            Method (_DSM, 4, NotSerialized)
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                        0x03
                    })
                }

                Return (Package (0x18)
                {
                    "device-id", 
                    Buffer (0x04)
                    {
                        0x00, 0x11, 0x00, 0x00
                    }, 

                    "IOName", 
                    Buffer (0x0D)
                    {
                        "pci1b73,1100"
                    }, 

                    "name", 
                    Buffer (0x0D)
                    {
                        "pci1b73,1100"
                    }, 

                    "compatible", 
                    Buffer (0x0D)
                    {
                        "pci1b73,1100"
                    }, 

                    "built-in", 
                    Buffer (One)
                    {
                        0x00
                    }, 

                    "device_type", 
                    Buffer (0x10)
                    {
                        "XHCI Controller"
                    }, 

                    "AAPL,clock-id", 
                    Buffer (One)
                    {
                        0x00
                    }, 

                    "AAPL,current-available", 
                    0x0834, 
                    "AAPL,current-extra", 
                    0x0898, 
                    "AAPL,current-extra-in-sleep", 
                    0x0640, 
                    "AAPL,max-port-current-in-sleep", 
                    0x0834, 
                    "AAPL,device-internal", 
                    Zero
                })
            }
        }
    }

    Scope (\_SB.PCI0.NPE2.SLT2)
    {
        Name (_STA, Zero)
    }

    Scope (\_SB.PCI0.NPE2)
    {
        Device (GFX1)
        {
            Name (_ADR, Zero)
            Name (_SUN, 0x02)
            Method (_DSM, 4, NotSerialized)
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                        0x03
                    })
                }

                Return (Package (0x0A)
                {
                    "@0,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x08, 0x00, 0x00
                    }, 

                    "@1,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x08, 0x00, 0x00
                    }, 

                    "@2,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x08, 0x00, 0x00
                    }, 

                    "@3,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x08, 0x00, 0x00
                    }, 

                    "hda-gfx", 
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    }
                })
            }
        }

        Device (HDAU)
        {
            Name (_ADR, One)
            Method (_DSM, 4, NotSerialized)
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                        0x03
                    })
                }

                Return (Package (0x02)
                {
                    "hda-gfx", 
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    }
                })
            }
        }
    }

    Device (UIAC)
    {
        Name (_HID, "UIA00000")
        Name (RMCF, Package (0x04)
        {
            "EH01", 
            Package (0x04)
            {
                "port-count", 
                Buffer (0x04)
                {
                    0x08, 0x00, 0x00, 0x00
                }, 

                "ports", 
                Package (0x10)
                {
                    "PR11", 
                    Package (0x04)
                    {
                        "UsbConnector", 
                        0xFF, 
                        "port", 
                        Buffer (0x04)
                        {
                            0x01, 0x00, 0x00, 0x00
                        }
                    }, 

                    "PR12", 
                    Package (0x04)
                    {
                        "UsbConnector", 
                        Zero, 
                        "port", 
                        Buffer (0x04)
                        {
                            0x02, 0x00, 0x00, 0x00
                        }
                    }, 

                    "PR13", 
                    Package (0x04)
                    {
                        "UsbConnector", 
                        Zero, 
                        "port", 
                        Buffer (0x04)
                        {
                            0x03, 0x00, 0x00, 0x00
                        }
                    }, 

                    "PR14", 
                    Package (0x04)
                    {
                        "UsbConnector", 
                        Zero, 
                        "port", 
                        Buffer (0x04)
                        {
                            0x04, 0x00, 0x00, 0x00
                        }
                    }, 

                    "PR15", 
                    Package (0x04)
                    {
                        "UsbConnector", 
                        Zero, 
                        "port", 
                        Buffer (0x04)
                        {
                            0x05, 0x00, 0x00, 0x00
                        }
                    }, 

                    "PR16", 
                    Package (0x04)
                    {
                        "UsbConnector", 
                        Zero, 
                        "port", 
                        Buffer (0x04)
                        {
                            0x06, 0x00, 0x00, 0x00
                        }
                    }, 

                    "PR17", 
                    Package (0x04)
                    {
                        "UsbConnector", 
                        Zero, 
                        "port", 
                        Buffer (0x04)
                        {
                            0x07, 0x00, 0x00, 0x00
                        }
                    }, 

                    "PR18", 
                    Package (0x04)
                    {
                        "UsbConnector", 
                        Zero, 
                        "port", 
                        Buffer (0x04)
                        {
                            0x08, 0x00, 0x00, 0x00
                        }
                    }
                }
            }, 

            "EH02", 
            Package (0x04)
            {
                "port-count", 
                Buffer (0x04)
                {
                    0x06, 0x00, 0x00, 0x00
                }, 

                "ports", 
                Package (0x0C)
                {
                    "PR21", 
                    Package (0x04)
                    {
                        "UsbConnector", 
                        0xFF, 
                        "port", 
                        Buffer (0x04)
                        {
                            0x01, 0x00, 0x00, 0x00
                        }
                    }, 

                    "PR22", 
                    Package (0x04)
                    {
                        "UsbConnector", 
                        Zero, 
                        "port", 
                        Buffer (0x04)
                        {
                            0x02, 0x00, 0x00, 0x00
                        }
                    }, 

                    "PR23", 
                    Package (0x04)
                    {
                        "UsbConnector", 
                        Zero, 
                        "port", 
                        Buffer (0x04)
                        {
                            0x03, 0x00, 0x00, 0x00
                        }
                    }, 

                    "PR24", 
                    Package (0x04)
                    {
                        "UsbConnector", 
                        Zero, 
                        "port", 
                        Buffer (0x04)
                        {
                            0x04, 0x00, 0x00, 0x00
                        }
                    }, 

                    "PR25", 
                    Package (0x04)
                    {
                        "UsbConnector", 
                        Zero, 
                        "port", 
                        Buffer (0x04)
                        {
                            0x05, 0x00, 0x00, 0x00
                        }
                    }, 

                    "PR26", 
                    Package (0x04)
                    {
                        "UsbConnector", 
                        Zero, 
                        "port", 
                        Buffer (0x04)
                        {
                            0x06, 0x00, 0x00, 0x00
                        }
                    }
                }
            }
        })
    }
}

위 내용처럼 SSDT-1.aml을 작성하셨다면, /EFI/Clover/patched에 저장하시면 됩니다.

 

나. AppleUSBXHCIPCI.kext 수정

/System/Library/Extensions/IOUSBFamily.kext를 바탕화면에 복사한 다음,
패키지 내용 보기를 눌러서 다음의 경로로 이동합니다.

Contents/Plugins/AppleUSBXHCIPCI.kext/Info.plist

PlistEditor를 이용해 아래의 스샷처럼 수정을 하면 됩니다.

ScreenCapture 3.jpg

위 스샷은 타 모델은 모두 삭제하고 MacPro6,1-XHC1만 남겨 놓았습니다. 혹시라도 불안하신 분께서는
MacPro6,1-XHC1만 수정하세요... 

수정이 완료되면. KCPM Utility Pro를 이용해 S/L/E에 복사 하시고, 권한 복구를 해주세요. : )

* HS01~HS04번 포트는 삭제 합니다. 그래야 BCM94360CD와 포트 충돌이 일어나지 않습니다.
* 포트 충돌이 일어나는 증상으로는 USB3.0도 데이터 읽기 쓰기가 안되고 와이파이 모듈이 다운됩니다.

 

다. USBInjectAll.kext 수정

ScreenCapture 4.jpg

USBInjectAll.kext/Contents/Info.plist를 PlistEditor로 열은다음 위 스샷처럼 수정해 주세요.
- 위 스샷도 HP Z420 기준으로 정리를 했습니다. 타기종 유저분께는 참으로 죄송합니다만... 이와 비슷하게 작업 하시면 됩니다.

IOKitPersonalities/ConfigurationData/ConfigurationXHC1을 추가하고 

-----------------------------------------------------------------------------
- XHC1 : Dictionary
        ㄴ Port Count : Data :
06000000 (스샷은 오타입니다)
        ㄴ Port : Dictionary 
                ㄴ SSP1 : Dictionary
                        ㄴ UsbConnector : Number : 0
                        ㄴ port : Data : 05000000
                ㄴ SSP2 : Dictionary
                        ㄴ UsbConnector : Number : 0
                        ㄴ port : Data : 06000000       
                ㄴ SSP3 : Dictionary
                        ㄴ UsbConnector : Number : 0
                        ㄴ port : Data : 01000000
                ㄴ SSP4 : Dictionary
                        ㄴ UsbConnector : Number : 0
                        ㄴ port : Data : 02000000

-----------------------------------------------------------------------------

ScreenCapture 5.jpg

그리고  하단의 MacPro6,1-XHCMacPro6,1-XHC1으로 변경합니다. (XHC to XHC1)

* IOnameMatch : 1b73_1100
* IOPCIPrimaryMatch : 0x11001b73
* kConfigurationName : XHC1


으로 수정한 다음 저장하고, USBInjectAll.kext 파일을 /EFI/Clover/kexts/10.12에 복사해 줍니다.

 

ScreenCapture 0.jpg

IORegistryExplorer를 이용해 확인하면, NEP3.XHC1으로 장치가 등록된 것을 확인할 수 있습니다. 아쉽게도 SSP3/SSP4의 포트는 활성화 되지 않지만, 차차 방법이 생길거라고 예상합니다. 이렇게 된 케이스라면 BZ1-Ultra의 내장 19핀 USB 3.0은 동작하지 않고  PCIe 카드 슬롯의 USB3.0 포트만 동작하는거라 여기시면 됩니다.


혹시라도 전면 USB 3.0활성화가 꼭 되야 한다면 5.25인치 베이 타입 USB 3.0확장을 노리시면 급한 불은 꺼지겠고요. 후면에서 USB 3.0 케이블을 연장해서 오면 되지 않을까 싶습니다.

 

ScreenCapture 1.jpg

시스템 정보에서 USB3.0버스에 장착된 동기 속도가 최대  5Gbps인지 확인 합니다.

 

ScreenCapture 2.jpg

속도 테스트를 통해 확인하는 이상적인 결과는 UASP를 지원하는 외장하드 케이스에 SSD타입입니다. : )
물론 USB3.0 메모리 스틱도 나쁘지 않은 결과를 줄 것으로 예상합니다.

 

작성하고나면 무쟈게 쉬워 보이는것이지만... FL1100은 OOB 즉 Kext없이 잘 돌아간다는 말만 있을 뿐..
이를 다양한 환경에서 적용하는 방법이 없더라고요.. 그래서 7가지 정도의 조합을 통해서 테스트 하다가 결국 낚여 올라왔습니다!!!

 

3일 동안 대장정을 통해서 마지막 안정화까지 끝냈으니 이제는 생업에 종사할 그 때인 것 같습니다!!!
HP Z420을 사용하시는 모든 분께서 보다 쉽게 안정화를 마치셨으면 합니다~!

 

 

 

 

클럽 : 당주

See the Unseen

★ 글쓴이에게 고마우시면 커피한잔 후원(클릭) ★ 후원 정보를 입력하지 않았습니다.

"[HP Z420] FL1100 USB 3.0 인식 시키기 (와이파이 모듈 충돌 회피)"글의 댓글은 현재 4개 있습니다.
비회원은 10분 34초 후에 댓글을 열람할수 있습니다.
로그인 하시면 바로 확인 하실수 있습니다.



No 제목 조회 닉네임 등록일
887 팁/안정화| Dropbox.app 사용하지 마세요 2 592 comed78 11.09
886 팁/안정화| i3-6100, Asrock H110M-HDV 시에라 전용 완벽 최적화시킨 config.plist, dsdt 등 부트로더 파일 7 825 D'Artagnan 11.08
885 팁/안정화| 스피드스텝, 제값이 출력돼야 과연 좋은 걸까요? 6 878 송준섭 11.07
884 팁/안정화| 시에라 USB3.0 관련 SSDT 생성 커맨드라인 수정한거 올립니다. 8 1205 D'Artagnan 11.05
883 팁/안정화| 메인보드교체후 엡스토어오류 7 306 아이뱅크 11.04
882 팁/안정화| HP Z620 이더넷 82574L칩셋 정상인식시키기 18 616 BBongs 11.04
881 팁/안정화| SM951 NVMe 안정화 (부팅 가능 미디어 전환 방법) 14 1143 zisqo 11.04
880 macOS팁| 2016년 맥북프로 nvram 재설정 방법 333 Mactopia 11.03
879 팁/안정화| 부트 arg for applesklgraphic.kext 1 103 Mactopia 11.03
878 팁/안정화| B85m-d3h 보드 -오류 __UEFI방식으로 USB설치시__바이오스 최신 필수 436 빗소리들으며 11.03
877 macOS팁| 시에라 HD530 글리치 이슈 해결팁이 나왔습니다. 12 1886 soullees 11.03
876 팁/안정화| 기가바이트 B85M-D3H Rev 3.0 한 방 설치를 간편하게 모아 봤습니다. 6 1301 zisqo 11.03
875 팁/안정화| Laptop HD530 부팅화면 애플로고 깨짐 DSDT fix 1 932 comed78 11.02
874 팁/안정화| 퓨리온님의 사운드잡아볼까요? 보충입니다. 3 2161 아이뱅크 10.31
873 팁/안정화| HP Z420 MOD BIOS v3.91 7 867 zisqo 10.30
872 팁/안정화| 시에라(Sierra)의 사파리가 시스템 다운 시키는 문제 패치 1 553 terminator 10.29
871 팁/안정화| 10.12.1로 업데이트 후 BCM94352가 인식이 안되는 오류 패치 1 780 dlgmlrjs 10.27
870 팁/안정화| Device Properties를 이용한 HP Z420 EFI String 변경(GPU 인젝션 가능) 4 852 zisqo 10.27
869 macOS팁| 시리 사용법 도움말 페이지 289 Mactopia 10.26
868 팁/안정화| Nvidia Webdriver의 OS 버전 패치를 직접 하는 방법 1 804 zisqo 10.26
867 팁/안정화| 앨캐피탄 업데이트 설치후 사운드가 먹통일때! 조치! 5 386 홍대퀸카 10.25
866 팁/안정화| 10.12.1(16B2555) 업데이트 이후 Nvidia 웹 드라이버 설치 오류 9 1207 zisqo 10.25
865 macOS팁| 베타 인증서 받는 곳 221 SenkovLee 10.25
864 팁/안정화| usb 없이 해킨 설치하기! 3 1071 대낮의호롱불 10.24
863 macOS팁| MAC을 처음 사용하시나요? 455 Mactopia 10.23
862 macOS팁| 시리 호출 단축키 변경방법 1 243 Mactopia 10.22
861 팁/안정화| aspire v3 571g + bcm94352 업그레이드버전 328 하수 10.21
860 팁/안정화| Cosmetic) SSDT EFI String Injection 6 878 zisqo 10.18
» 팁/안정화| [HP Z420] FL1100 USB 3.0 인식 시키기 (와이파이 모듈 충돌 회피) 4 795 zisqo 10.16
858 팁/안정화| 아이메시지 문자전달 코드 안될 때 해결 방법 8 1025 각시수련 10.14
857 팁/안정화| 간편하게 Trim을 활성화 하는 방법 (클로버 부트로더) 7 1238 zisqo 10.14
856 팁/안정화| 시에라 USB3.0 관련 SSDT INJECTION+클로버 패치 1711 Mactopia 10.13
855 팁/안정화| SSD가 링크 속도 3기가로 뜰 경우 해결 방법 7 481 zisqo 10.13
854 팁/안정화| config.plist를 clover configurator어플 이용방법 4 3267 아이뱅크 10.12
853 팁/안정화| (NSRangeException) 디스플레이 환경설정 패널을 로드할 수 없습니다 문제 해결하기 4 804 하늘처럼 10.11
852 macOS팁| 시에라 - 모든곳에서 다운로드한 앱 허용 1 837 Mactopia 10.11
851 팁/안정화| rx480 시에라에서 기본 잡기 입니다. 28 2096 아이뱅크 10.11
850 macOS팁| 맥 OS 바탕화면 사이트 387 Mactopia 10.10
849 강좌/연재| 2016 ~ 2017 맥북시리즈 예상 라인업 6 1078 KsJ 10.10
848 macOS팁| 앱스토어 다운로드 이슈 - 캐시삭제 433 Mactopia 10.09
서버에 요청 중입니다. 잠시만 기다려 주십시오...