Contribute
Register

Giacomoleopardo Build - ZOTAC Z77-ITX WiFi - Core i7-3770T - MacMini 6,2

Status
Not open for further replies.
:thumbup:
Soon i'll build another miniitx, totally silent!
Case: Streacom F8C Evo

My advice, Giacomo, go with Streacom FC8 non EVO:
- it is cheaper even if you add an extra heat pipe set to your order (it costs 85€ + 7,5€ extra heat-pipe set, no Vat included - when ordering from Fabacom website)
- it has an SD-Card reader
- the heatsink is much easier to mount due to round heat pipes, you can pull it up and down to change the cpu - on the EVO you have to dismount all the heatsink and reapply the thermal paste because the heatpipes are plane and you can not turn them.
- the USB3 connectors in the front of the EVO need an extra usb3 header cable not included and for extra 7,50€ without VAT, not so practical for hackintosh cause you still cant use usb2 sticks in usb3 ports
- only one advantage i see personally is the EVO's universal eject button for optical drives, but there is no need on a hackintosh when using eject of os x or on the keyboard...

I have already build 5 hackintoshes with FC8 case and 4 with FC8EVO - for Zotac Z77-itx i recommend FC8, you can even add 2 extra heat-pipe sets for having 6 heat pipes in total. I also tried overclocking on FC8 with 5 heat-pipes and its working well without getting too hot. Zotac board has 4 internal USB2 ports so you can connect the 2 front USB2 ports + SD Card reader + Infrared. Its suits perfectly this main board!
For Gigabyte 7 Series miniITX boards an FC8EVO would be a better choice since they have only 2 internal USB2 ports and in order to use IR and SD Card reader you have to build a USB cable which connects on external USB2 port.
 
My advice, Giacomo, go with Streacom FC8 non EVO:
- it is cheaper even if you add an extra heat pipe set to your order (it costs 85€ + 7,5€ extra heat-pipe set, no Vat included - when ordering from Fabacom website)
- it has an SD-Card reader
- the heatsink is much easier to mount due to round heat pipes, you can pull it up and down to change the cpu - on the EVO you have to dismount all the heatsink and reapply the thermal paste because the heatpipes are plane and you can not turn them.
- the USB3 connectors in the front of the EVO need an extra usb3 header cable not included and for extra 7,50€ without VAT, not so practical for hackintosh cause you still cant use usb2 sticks in usb3 ports
- only one advantage i see personally is the EVO's universal eject button for optical drives, but there is no need on a hackintosh when using eject of os x or on the keyboard...

I have already build 5 hackintoshes with FC8 case and 4 with FC8EVO - for Zotac Z77-itx i recommend FC8, you can even add 2 extra heat-pipe sets for having 6 heat pipes in total. I also tried overclocking on FC8 with 5 heat-pipes and its working well without getting too hot. Zotac board has 4 internal USB2 ports so you can connect the 2 front USB2 ports + SD Card reader + Infrared. Its suits perfectly this main board!
For Gigabyte 7 Series miniITX boards an FC8EVO would be a better choice since they have only 2 internal USB2 ports and in order to use IR and SD Card reader you have to build a USB cable which connects on external USB2 port.

Thanks for the tips, but unfortunately I already ordered it.
Sd card reader and usb3 on front side are useful, obviously, but I don't need them for this rig (I know, FC8 non evo has front usb 2, so it was even more better).
BTW, fc8 non-evo has eject button as well, only not a central one, but you know how it works on the internal side: it does the job too.
On the other hand I didn't know that it's possible to add extra pipes, that probably would have convinced me to choose fc8 rather than evo, but it's too late, and it's not a big deal to me!
I appreciate your advice, though :thumbup:
 
Thanks for the tips, but unfortunately I already ordered it.
Sd card reader and usb3 on front side are useful, obviously, but I don't need them for this rig (I know, FC8 non evo has front usb 2, so it was even more better).
BTW, fc8 non-evo has eject button as well, only not a central one, but you know how it works on the internal side: it does the job too.
On the other hand I didn't know that it's possible to add extra pipes, that probably would have convinced me to choose fc8 rather than evo, but it's too late, and it's not a big deal to me!
I appreciate your advice, though :thumbup:

The problem with FC8 non EVO eject button is that it's left sided and all slim slot-in drives actually on the market have right sided eject button. Thats why Streacom made universal eject button on EVOs (not only FC8) which works for left and right sided buttons. But since we are using them to build our hackintosh the eject button is not really important ;)

Have fun building your 0-noise hackintosh! :)
 
UPDATE #5 - Editing DSDT in order to have USB 3.0 working backwards as 2.0 (Intel chipset)
UPDATE #7 - This manual editing is not necessary anymore: There are two choises in order to make USB 3.0 Intel 7Series controller fully working
1 - install USB 3.0 - Universal from the latest MultiBeast (or manually download Zenith432's GenericUSBXHCI.kext - Binaries v1.1.4 from here install it with kextbeast and put xhcdump in /usr/local/bin)
2 - Follow in post #1 the instructions to use MaciASL patches to edit DSTD​

As for me, I prefer DSDT edit method, I like to have the minimum number of non-vanilla kext installed, but both methods work! /end UPDATE #7

With this editing, now I have rear ALL usb 3.0 working backward as 2.0 and 1.0 too, tested with HDD 3.0, HDD 2.0, USB flash drive 2.0 and iPhone 4.
My frontal usb 3.0 connected via internal header works now as 2.0 only, but I think it's not a OSX issue (they work as 2.0 even in Windows 7 64bit). Other users (with other mainboards) got full success, even with internal 3.0 header.
Pay attention: this editing is required just for Intel 7 series chipset USB, not others. Since my board doesn't have any other usb controller, I don't know if this editing could affect any other already working non-intel usb.

Here we go.

step 1 - make a backup of your existing DSDT.aml
step 2 - open actual dsdt.aml with a dsdt editor (DSDTSE or MaciASL or DSDT Editor, whatever you want)
step 3 - find
Code:
Device (XHC)
and select the entire block from Device (XHC) to Device (HDEF)
Code:
Device (XHC)
...............................
Device (HDEF)

and replace into this

Code:
Device (XHC1)
        {
            Name (_ADR, 0x00140000)
            OperationRegion (XPRT, PCI_Config, 0x74, 0x6C)
            Field (XPRT, DWordAcc, NoLock, Preserve)
            {
                        Offset (0x01), 
                PMEE,   1, 
                    ,   6, 
                PMES,   1, 
                        Offset (0x5C), 
                PR2,    32, 
                PR2M,   32, 
                PR3,    32, 
                PR3M,   32
            }

            OperationRegion (XH1C, PCI_Config, 0xD0, 0x10)
            Field (XH1C, ByteAcc, NoLock, Preserve)
            {
                PAHC,   1, 
                PBHC,   1, 
                PCHC,   1, 
                PDHC,   1, 
                        Offset (0x08), 
                PASS,   1, 
                PBSS,   1, 
                PCSS,   1, 
                PDSS,   1
            }

            OperationRegion (XHC2, PCI_Config, 0x44, 0x04)
            Field (XHC2, ByteAcc, NoLock, Preserve)
            {
                        Offset (0x01), 
                MIAI,   2
            }

            Name (XRST, Zero)
            Method (_INI, 0, NotSerialized)
            {
                If (OSDW ())
                {
                    Store (Zero, MIAI)
                }

                If (LAnd (LGreaterEqual (OSYS, 0x07DC), LLess (OSYS, 0x2710)))
                {
                    Store (One, PASS)
                    Store (One, PAHC)
                    Store (One, PBSS)
                    Store (One, PBHC)
                    Store (One, PCSS)
                    Store (One, PCHC)
                    Store (One, PDSS)
                    Store (One, PDHC)
                }
            }

            Method (_S3D, 0, NotSerialized)
            {
                Return (0x02)
            }

            Method (_S4D, 0, NotSerialized)
            {
                Return (0x02)
            }

            Device (RHUB)
            {
                Name (_ADR, Zero)
                Device (PRT1)
                {
                    Name (_ADR, One)
                    Method (_UPC, 0, Serialized)
                    {
                        Name (UPCP, Package (0x04)
                        {
                            0xFF, 
                            0x03, 
                            Zero, 
                            Zero
                        })
                        Return (UPCP)
                    }

                    Method (_PLD, 0, Serialized)
                    {
                        Name (PLDP, Package (0x01)
                        {
                            Buffer (0x10)
                            {
                                /* 0000 */    0x01, 0xC6, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                /* 0008 */    0x69, 0x0C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00
                            }
                        })
                        Return (PLDP)
                    }

                    Name (MUXS, "EHCA")
                }

                Device (PRT2)
                {
                    Name (_ADR, 0x02)
                    Method (_UPC, 0, Serialized)
                    {
                        Name (UPCP, Package (0x04)
                        {
                            0xFF, 
                            0x03, 
                            Zero, 
                            Zero
                        })
                        Return (UPCP)
                    }

                    Method (_PLD, 0, Serialized)
                    {
                        Name (PLDP, Package (0x01)
                        {
                            Buffer (0x10)
                            {
                                /* 0000 */    0x01, 0xC6, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                /* 0008 */    0x69, 0x0C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00
                            }
                        })
                        Return (PLDP)
                    }

                    Name (MUXS, "EHCB")
                }

                Device (PRT3)
                {
                    Name (_ADR, 0x03)
                    Method (_UPC, 0, Serialized)
                    {
                        Name (UPCP, Package (0x04)
                        {
                            0xFF, 
                            0x03, 
                            Zero, 
                            Zero
                        })
                        Return (UPCP)
                    }

                    Method (_PLD, 0, Serialized)
                    {
                        Name (PLDP, Package (0x01)
                        {
                            Buffer (0x10)
                            {
                                /* 0000 */    0x01, 0xC6, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                /* 0008 */    0x69, 0x0C, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00
                            }
                        })
                        Return (PLDP)
                    }

                    Name (MUXS, "EHCC")
                }

                Device (PRT4)
                {
                    Name (_ADR, 0x04)
                    Method (_UPC, 0, Serialized)
                    {
                        Name (UPCP, Package (0x04)
                        {
                            0xFF, 
                            0x03, 
                            Zero, 
                            Zero
                        })
                        Return (UPCP)
                    }

                    Method (_PLD, 0, Serialized)
                    {
                        Name (PLDP, Package (0x01)
                        {
                            Buffer (0x10)
                            {
                                /* 0000 */    0x01, 0xC6, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                /* 0008 */    0x69, 0x0C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00
                            }
                        })
                        Return (PLDP)
                    }

                    Name (MUXS, "EHCD")
                }
            }

            Method (_PRW, 0, NotSerialized)
            {
                Return (GPRW (0x0D, 0x04))
            }

            Method (_DSM, 4, NotSerialized)
            {
                Store (Package (0x0B)
                    {
                        "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, 
                        Buffer (One)
                        {
                            0x00
                        }
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }

            Method (XHCA, 0, NotSerialized)
            {
                If (LNot (OSDW ()))
                {
                    Store (One, PASS)
                }

                Store (One, PAHC)
            }

            Method (XHCB, 0, NotSerialized)
            {
                If (LNot (OSDW ()))
                {
                    Store (One, PBSS)
                }

                Store (One, PBHC)
            }

            Method (XHCC, 0, NotSerialized)
            {
                If (LNot (OSDW ()))
                {
                    Store (One, PCSS)
                }

                Store (One, PCHC)
            }

            Method (XHCD, 0, NotSerialized)
            {
                If (LNot (OSDW ()))
                {
                    Store (One, PDSS)
                }

                Store (One, PDHC)
            }

            Method (EHCA, 0, NotSerialized)
            {
                If (LNot (OSDW ()))
                {
                    Store (Zero, PASS)
                }

                Store (Zero, PAHC)
            }

            Method (EHCB, 0, NotSerialized)
            {
                If (LNot (OSDW ()))
                {
                    Store (Zero, PBSS)
                }

                Store (Zero, PBHC)
            }

            Method (EHCC, 0, NotSerialized)
            {
                If (LNot (OSDW ()))
                {
                    Store (Zero, PCSS)
                }

                Store (Zero, PCHC)
            }

            Method (EHCD, 0, NotSerialized)
            {
                If (LNot (OSDW ()))
                {
                    Store (Zero, PDSS)
                }

                Store (Zero, PDHC)
            }
        }

        Device (HDEF)

Follow the thread to keep editing!
 
Let's keep on editing!

step 4 - Find
Code:
Name (_ADR, 0x001D0000)
Under that you'll find
Code:
Device (HUBN)
here you have to look for the devices that don't have Method (_DSM. In my case they are Device (PR11), Device (PR12), Device (PR13), Device (PR18), skipping Device (PR01). Those devices - without Method (_DSM - have to be modified adding Name (MUXS, "XHCA") to Device (PR11), Name (MUXS, "XHCB") to Device (PR12), Name (MUXS, "XHCC") to Device (PR13), Name (MUXS, "XHCD") to Device (PR18).
Here is the first case, that's the same for the other three

from
Code:
Device (PR11)
                    {
                        Name (_ADR, One)
                        Method (_UPC, 0, Serialized)
                        {
                            Name (UPCP, Package (0x04)
                            {
                                0xFF, 
                                0xFF, 
                                Zero, 
                                Zero
                            })
                            Return (UPCP)
                        }

                        Method (_PLD, 0, Serialized)
                        {
                            Name (PLDP, Package (0x01)
                            {
                                Buffer (0x10)
                                {
                                    /* 0000 */    0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                    /* 0008 */    0xE1, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                                }
                            })
                            Return (PLDP)
                        }
                    }

to
Code:
Device (PR11)
                    {
                        Name (_ADR, One)
                        Method (_UPC, 0, Serialized)
                        {
                            Name (UPCP, Package (0x04)
                            {
                                0xFF, 
                                0xFF, 
                                Zero, 
                                Zero
                            })
                            Return (UPCP)
                        }

                        Method (_PLD, 0, Serialized)
                        {
                            Name (PLDP, Package (0x01)
                            {
                                Buffer (0x10)
                                {
                                    /* 0000 */    0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                    /* 0008 */    0xE1, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                                }
                            })
                            Return (PLDP)
                        }

                        [B]Name (MUXS, "XHCA")[/B]
                    }

step 5 - Find
Code:
Method (_OSC, 4, Serialized)
and replace the entire block from this
Code:
Method (_OSC, 4, Serialized)
            {
                Store (Arg3, Local0)
                CreateDWordField (Local0, Zero, CDW1)
                CreateDWordField (Local0, 0x04, CDW2)
                CreateDWordField (Local0, 0x08, CDW3)
                If (^XHC.CUID (Arg0))
                {
                    Return (^XHC.POSC (Arg1, Arg2, Arg3))
                }
                Else
                {
                    If (_OSI ("Windows 2012"))
                    {
                        If (LEqual (XCNT, Zero))
                        {
                            ^XHC.XSEL ()
                            Increment (XCNT)
                        }
                    }
                }

                If (LEqual (Arg0, GUID))
                {
                    Store (CDW2, SUPP)
                    Store (CDW3, CTRL)
                    If (LEqual (NEXP, Zero))
                    {
                        And (CTRL, 0xFFFFFFF8, CTRL)
                    }

                    If (NEXP)
                    {
                        If (Not (And (CDW1, One)))
                        {
                            If (And (CTRL, One))
                            {
                                NHPG ()
                            }

                            If (And (CTRL, 0x04))
                            {
                                NPME ()
                            }
                        }
                    }

                    If (LNotEqual (Arg1, One))
                    {
                        Or (CDW1, 0x08, CDW1)
                    }

                    If (LNotEqual (CDW3, CTRL))
                    {
                        Or (CDW1, 0x10, CDW1)
                    }

                    Store (CTRL, CDW3)
                    Store (CTRL, OSCC)
                    Return (Local0)
                }
                Else
                {
                    Or (CDW1, 0x04, CDW1)
                    Return (Local0)
                }
            }

            Scope (\_SB.PCI0)

into this
Code:
Method (_OSC, 4, Serialized)
            {
                Store (Arg3, Local0)
                CreateDWordField (Local0, Zero, CDW1)
                CreateDWordField (Local0, 0x04, CDW2)
                CreateDWordField (Local0, 0x08, CDW3)
                Store (CDW2, SUPP)
                Store (CDW3, CTRL)
                If (LEqual (One, OSDW ()))
                {
                    If (LAnd (LEqual (Arg0, GUID), NEXP))
                    {
                        If (Not (And (CDW1, One)))
                        {
                            If (And (CTRL, 0x02))
                            {
                                NHPG ()
                            }

                            If (And (CTRL, 0x04))
                            {
                                NPME ()
                            }
                        }

                        If (LNotEqual (Arg1, One))
                        {
                            Or (CDW1, 0x08, CDW1)
                        }

                        If (LNotEqual (CDW3, CTRL))
                        {
                            Or (CDW1, 0x10, CDW1)
                        }

                        Store (CTRL, CDW3)
                        Store (CTRL, OSCC)
                        Return (Local0)
                    }
                    Else
                    {
                        Or (CDW1, 0x04, CDW1)
                        Return (Local0)
                    }
                }
                Else
                {
                    If (LEqual (Arg0, Buffer (0x10)
                            {
                                /* 0000 */    0xA9, 0x12, 0x95, 0x7C, 0x05, 0x17, 0xB4, 0x4C, 
                                /* 0008 */    0xAF, 0x7D, 0x50, 0x6A, 0x24, 0x23, 0xAB, 0x71
                            }))
                    {
                        Store (One, ^XHC1.PASS)
                        Store (One, ^XHC1.PAHC)
                        Store (One, ^XHC1.PBSS)
                        Store (One, ^XHC1.PBHC)
                        Store (One, ^XHC1.PCSS)
                        Store (One, ^XHC1.PCHC)
                        Store (One, ^XHC1.PDSS)
                        Store (One, ^XHC1.PDHC)
                    }

                    Return (Local0)
                }
            }

            Scope (\_SB.PCI0)

step 6 - Find this block
Code:
Scope (_SB.PCI0)
    {
        Method (_INI, 0, NotSerialized)
        {
            Store (0x07D0, OSYS)
            If (CondRefOf (_OSI, Local0))
            {
                If (_OSI ("Windows 2001"))
                {
                    Store (0x07D1, OSYS)
                }

                If (_OSI ("Windows 2001 SP1"))
                {
                    Store (0x07D1, OSYS)
                }

                If (_OSI ("Windows 2001 SP2"))
                {
                    Store (0x07D2, OSYS)
                }

                If (_OSI ("Windows 2001.1"))
                {
                    Store (0x07D3, OSYS)
                }

                If (_OSI ("Windows 2006"))
                {
                    Store (0x07D6, OSYS)
                }

                If (_OSI ("Windows 2009"))
                {
                    Store (0x07D9, OSYS)
                }

                If (_OSI ("Windows 2012"))
                {
                    Store (0x07DC, OSYS)
                }
            }
        }

and replace with this
Code:
Scope (_SB.PCI0)
    {
        Method (_INI, 0, NotSerialized)
        {
            Store (0x07D0, OSYS)
            If (CondRefOf (_OSI, Local0))
            {
                [B]If (_OSI ("Darwin"))
                {
                    Store (0x2710, OSYS)
                }[/B]

                If (_OSI ("Windows 2001"))
                {
                    Store (0x07D1, OSYS)
                }

                If (_OSI ("Windows 2001 SP1"))
                {
                    Store (0x07D1, OSYS)
                }

                If (_OSI ("Windows 2001 SP2"))
                {
                    Store (0x07D2, OSYS)
                }

                If (_OSI ("Windows 2001.1"))
                {
                    Store (0x07D3, OSYS)
                }

                If (_OSI ("Windows 2006"))
                {
                    Store (0x07D6, OSYS)
                }

                If (_OSI ("Windows 2009"))
                {
                    Store (0x07D9, OSYS)
                }

                If (_OSI ("Windows 2012"))
                {
                    Store (0x07DC, OSYS)
                }
            }
        }

step 7 - At the end of DSDT add from this (or whatever you have)
Code:
Store (Buffer (One)
            {
                0x00
            }, Arg4)
        Return (Zero)
    }
}

to this
Code:
Store (Buffer (One)
            {
                0x00
            }, Arg4)
        Return (Zero)
    }

    [B]Method (OSDW, 0, NotSerialized)
    {
        If (LEqual (OSYS, 0x2710))
        {
            Return (One)
        }
        Else
        {
            Return (Zero)
        }
    }[/B]
}

step 8 - Find
Code:
\_SB.PCI0.XHC.XWAK ()
and if you have it replace that with
Code:
\_SB.PCI0.XHC1._INI ()

step 9 - Resolve any references to the XHC that could generate compile error (it's about XHC to be replaced with XHC1), then you're done!

If everything is ok after compiled DSDT, put it in Extra folder, repair permission, rebuild cache and reboot.
I don't actually know if this method could work for everybody, take this like a trial and error job!
What work for me
- usb 2.0 ------------------------------------> all of them with any device plugged in
- usb 3.0 rear ------------------------------> both with any device plugged all of them with any device plugged in
- usb 3.0 frontal (via internal header)---> with any usb 2.0 device and hdd 3.0 as 2.0 device (although hdd 3.0 seems to be unstable, sometimes not recognized)

EDIT: It tourned out that my frontal usb 3.0 issue was related to an hardware problem: I'm trying to find if it is the little Wesena frontal usb 3.0/2.0 board that came with the case, or just the Streacom usb 3.0 cable.

[
50468-usb-3-0-front-board.jpg

As a matter of fact, with this

50469-rear-internal-header-usb-3.JPG

I've got fully functional usb 3.0/2.0/1.0 via internal header as well.
I've decided to connect wesena board (the two frontal usb) as usb 2.0 (working properly)

Many thanks to Mieze and mrengles.

:thumbup:


Credits

Mieze for all the job, info, editing and support
mrengles for linkin to Mieze and support


Attachments

DSDT pre and post edit (maybe useful to compare)
 

Attachments

  • giacomoleopardo dsdt's.zip
    29.6 KB · Views: 183
Last edited by a moderator:
Thanks a lot Giacomoleopardo for the detailed guide! I even got my Intel DQ77KB's USB3.0 fixed, now they are able to use USB2.0 and 1.1 devices:clap::clap:
 
Thanks a lot Giacomoleopardo for the detailed guide! I even got my Intel DQ77KB's USB3.0 fixed, now they are able to use USB2.0 and 1.1 devices:clap::clap:

Mieze's got the entire credit for this! She's outstanding! :thumbup:
 
However, I discovered that only the USB2.0 devices will disconnect after wake from sleep, while USB3.0s are fine o_O any clue?
 
Status
Not open for further replies.
Back
Top