Showing posts with label Mac OSX. Show all posts
Showing posts with label Mac OSX. Show all posts

Monday, February 27, 2012

Chimera 1.8.0 Source

The Chimera 1.8.0 source is now available for downloading. Here is the link to the commit: http://forge.voodooprojects.org/p/chameleon/source/commit/1832/
    There is a standalone installer, available at tonymacx86.com/downloads. For bug reporting, feature requests, and general feedback please use the Chimera forum.

    -tonymacx86 & MacMan

    Related Posts:
    Chimera 1.8 Change Log
    Chimera 1.8 Update: OS X 10.8 Mountain Lion Support
    For discussions on this and other topics, register today at tonymacx86.com!

    Tuesday, July 5, 2011

    Creating a Bootable “DOS” USB Stick on a Hackintosh Without Windows or MS-DOS

    A lot of manufacturers provide DOS only firmware updaters. If you have a dual boot system with Windows it’s a piece of cake. But the issue is how do you do this on a Hackintosh without Windows installed?  Well I have found a solution, FreeDOS, a free DOS-compatible operating system for IBM-PC compatible systems. 

    What you need:
    Installation procedure:
    1. Format the USB drive as a MBR/FAT volume
    2. Burn the FreeDOS Base CD
    3. Shut down OS X and disconnect all disk drives
    4. Boot computer while ensuring that Legacy USB support is enabled in the BIOS and USB drive is connected
    5. Boot from FreeDOS Base CD and follow instructions to install. It will install by default to the 1st drive it finds. In this case it’s the USB drive as it’s the only one connected.
    6. Shutdown and reconnect all disk drives.
    7. You now have a bootable “DOS” drive.
    This drive is bootable and can be read and written to in OS X. You can copy any DOS based programs on to it and boot from it to run them.
    For discussions on this and other topics, register today at tonymacx86.com!

    Wednesday, February 2, 2011

    Chameleon's GraphicsEnabler vs. Enabler Kexts

    Not too long ago, one of the only ways to enable certain graphics cards was using enabler kexts such as NVEnabler.kext and ATY_init.kext. These standalone enablers do an adequate job in identifying cards and enabling full graphics acceleration, however there are numerous issues.

    For example, when using the latest ATY_init.kext, you are stuck with running the kernel in 32-bit mode.  If you need to change the default frame buffer for your card, you need to manually edit the kext. Finally, this enabler only supports a limited number of HD 5700 and HD 5800 cards.

    With NVEnabler, you are limited to only 9xxx cards and earlier. Of the more recent cards, it only supports the GTX 260 and GTX 280. It will not recognize nor properly identify any other newer cards.  In that case, you're stuck with Unknown Graphics Controller in System Profiler or a barely functional card. Finally, there has been no further development since the last release in October 2009.

    While the benchmarks are the same, it's more advantageous to use Chameleon's GraphicsEnabler instead of these kexts. The Chameleon team as of Chameleon 2.0 RC5, has been advancing GraphicsEnabler development. For instance, there are 89 more supported cards in Chameleon 2.0 RC5 r699 GraphicsEnabler than in NVEnabler. While in Kabyl's branch of Chameleon 2.0 RC5 r700, there is now support for the HD 5400, HD 5500 and HD 5600. With his branch, you can also configure the frame buffer at boot time or in com.apple.boot.plist. Kabyl has stated that his branch will get merged into the main Chameleon trunk as soon as testing has completed.

    So it  makes sense to switch from these enablers to GraphicsEnabler. For NVIDIA cards, use the main trunk version, 2.0 RC5 r699 or newer. For ATI/AMD cards, use Kabyl's branch, 2.0 RC5 r700 or newer until his code get merged into the trunk. As always you can find the latest version of both in MultiBeast.

    How to Use Chameleon's GraphicsEnabler:

    If using a DSDT, simply make sure that your com.apple.Boot.plist includes:


    If you are not using a DSDT, Chameleon will most likely not identify which slot your graphics card is in. In this case, make sure that your com.apple.Boot.plist includes:


    Good luck- and use GraphicsEnabler!


    -MacMan & tonymacx86

    Monday, December 6, 2010

    Graphics Card Support and Mac OS X

    The issue with graphics cards in OS X is that there are what is called a "Reference Design" which is based on what ATI/AMD or NVIDIA provides to manufactures for a baseline hardware design. Then there is what cards manufacturers ship, either a "Reference Design" or their own unique spin on that hardware. They do this unique spin to set their card part from the "Reference Design" cards. That is fine in Windows, but can create problems in OS X. Apple typically uses a "Reference Design" or very close to one in their graphics cards.


    So where am I going with this. Apple ships and supports a limited set of ATI/AMD "Reference Design" cards in OS X, they do not provide support for all models or any major variations from the "Reference Design". The reason being that the ATI/AMD architecture requires specific model driver support. For example in 10.6 Apple only supports some 46xx and 48xx cards, there is no OOB support for the 45xx cards. So that is why you see patches and/or modifications for Apple's drivers to support some of these other cards.

    The ATI/AMD 5xxx cards are finally easier to install. This has more to do with the GraphicsEnabler technology used within Hackintoshing, Kabyl's boot loader and ATY_Init. Even then you are limited to what cards are supported Out Of BOX (OOB) by Apple. For example the following are the only desktop ATI 5xxx cards Apple supports OOB:

    ATI Radeon HD 5800 Series:        Device ID 0x6898
    ATI Radeon HD 5800 Series:        Device ID 0x6899
    ATI Radeon HD 5700 Series:        Device ID 0x68B8
    ATI Radeon HD 5600 Series:        Device ID 0x68D8
    ATI Radeon HD 5500 Series:        Device ID 0x68D9

    If your card's device id is not in this list, then you need to add your device ID to ATI5000Controller.kext and possibly ATIRadeonX3000.kext. This is great workaround but will be needed to be done after each and any Apple software update that touches the ATI drivers. Ouch.


    NVIDIA cards use a different architecture and allows for a more generic driver than can support more models and variations. The new 4xx cards are based on a new architecture nicknamed "Fermi" and require new drivers.  Check out this article on Tony's blog for our solutions for NVIDIA 4xx cards.

    So until Apple ships support for more cards or allows AMD and NVIDIA to ship generic drivers, graphics card support is a challenge.

    Wednesday, November 17, 2010

    Minimal DSDT Edits for Gigabyte Socket 1366 Motherboards


    Since I posted Minimal DSDT Edits for Gigabyte Socket 1156 Motherboards I picked up a Gigabyte X58A-UD3R Rev 2.0 motherboard as part of the post tonymacx86 and I did for the CustoMac Pro 2010 project on his blog.

    I started researching and testing what edits from my Socket 1156 post were or weren't needed on this board. The good news is that the majority of the edits carry over, but some are not needed. For example, we don't need to inject anything for the USB ports to be fully recognized. But there are a couple of required Socket 1366 specific edits.

    The following is a guide for editing the extracted DSDT from the new Hackintosh-friendly BIOSes only. If you don't have a new Hackintosh-friendly BIOS, as I described in a previous post, you will have to have to manually edit the DSDT for the CMOS reset issue. You will also need to do the three required edits needed regardless of BIOS version. They are to include Method DTGP, add Return Package at the end of _WAK and fix the "Method local variable is not initialized (Local0)" error.

    Now let’s review the common edits that are valid for the Socket 1356 and Socket 1156 motherboards.

    First up are the cosmetic changes. Gigabyte uses generic device names in its DSDT instead of descriptive names like Apple does. One example is Gigabyte uses PX40 instead of LPCB for the LPC Interface Bridge. So the first thing we can do is to search for PX40 and do a global replace with LPCB. The next is to rename the System Management Bus (SMBus) device PX43 to SBUS. Next would be to rename Device (IDE1) to Device (SATA) and then within it rename Device (PRIM) to Device (PRT0) and Device (SECD) to Device (PRT1). The final cosmetic edits deal with USB. You can rename the devices to more appropriate ones as shown within this list:

    Rename USB0 to UHC1
    Rename USB1 to UHC2
    Rename USB2 to UHC3
    Rename USB3 to UHC4
    Rename USB4 to UHC5
    Rename USB5 to UHC6
    Rename USBE to EHC1
    Rename USE2 to EHC2

    Next we need to add to Device (SBUS) a sub-device named Device (BUS0) as seen here:

                    Device (BUS0)
                    {
                        Name (_CID, "smbus")
                        Name (_ADR, 0x00)
                        Device (DVL0)
                        {
                            Name (_ADR, 0x57)
                            Name (_CID, "diagsvault")
                            Method (_DSM, 4, NotSerialized)
                            {
                                Store (Package (0x02)
                                      {
                                        "address",
                                         0x57
                                      }, Local0)
                                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                                Return (Local0)
                            }
                        }
                    }

    The next edit is for audio. Gigabyte uses a device name of AZAL, so we need to do a global replace with HDEF. Then we need to add codec information to Device (HDEF). All that is required is to inject layout-id and PinConfigurations.

    Here is an example of what needs to be added for a board using an ALC889 codec and using our Legacy889HDA.kext:

                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x04)
                            {
                                "layout-id",
                                Buffer (0x04)
                                {
                                    0x79, 0x03, 0x00, 0x00
                                },
                                "PinConfigurations",
                                Buffer (Zero)
                                {
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

    There is a problem with Audio break ups in 10.6.3 and later that can be corrected in the DSDT. The first is in Device (PIC) remove these two lines:

                    IRQNoFlags ()
                    {2}

    The other fix for audio break ups is in Device (TMR) where Gigabyte has not yet added Hackintosh logic. We need to change:

                        Method (_CRS, 0, NotSerialized)
                        {
                            If (LGreaterEqual (OSFX, 0x03))
                            {
                                If (HPTF)
                                {
                                    Return (ATT6)
                                }
                                Else
                                {
                                    Return (ATT5)
                                }
                            }
                            Else
                            {
                                Return (ATT5)
                            }
                        }

    To:
                        Method (_CRS, 0, NotSerialized)
                        {
                            Return (ATT6)
                        }

    Gigabyte has not yet added Hackintosh logic to Device (HPET), so you will get kernel panics in AppleIntelCPUPowerManagement. The fix is easy; just change Method (_STA, 0, NotSerialized) to Return (0x0F) and to change Method (_CRS, 0, NotSerialized) to Return (ATT3).

    The next edit allows use of the power button to put the computer to sleep.  In Device (PWRB) change Name (_HID, EisaId ("PNP0C0C")) to Name (_CID, EisaId ("PNP0C0C")).

    One fix we can do in a Socket 1366 DSDT that I haven't been able to figure out how to do in a Socket 1156 DSDT, is cure the orange external drive icon issue. In Device (SATA) you need to add the following code:

                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package (0x02)
                            {
                                "device-id",
                                Buffer (0x04)
                                {
                                    0x81, 0x26, 0x00, 0x00
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

    For the final edits, we can thank insanelymac user mm67. His modification enables shutdown without a kernel panic (KP). This is a two part edit, of which for the first part after:

        OperationRegion (APMP, SystemIO, 0xB2, 0x02)
        Field (APMP, ByteAcc, NoLock, Preserve)
        {
            APMC,   8,
            APMD,   8
        }

    Insert:

        OperationRegion (PMRS, SystemIO, 0x0430, 0x01)
        Field (PMRS, ByteAcc, NoLock, Preserve)
        {
            , 4,
            SLPE, 1
        }

    For the second part change:

        Method (\_PTS, 1, NotSerialized)
        {
            Or (Arg0, 0xF0, Local0)
            Store (Local0, DBG1)
            OSTP ()
            If (LEqual (Arg0, 0x01)) {}
            If (LEqual (Arg0, 0x03)) {}
            If (LEqual (Arg0, 0x05))
            {
                Store (0x99, SMIP)
            }

    To:

        Method (\_PTS, 1, NotSerialized)
        {
            Or (Arg0, 0xF0, Local0)
            Store (Local0, DBG1)
            OSTP ()
            If (LEqual (Arg0, 0x01)) {}
            If (LEqual (Arg0, 0x03)) {}
            If (LEqual (Arg0, 0x05))
            {
                Store (0x99, SMIP)
                Store (0x00, SLPE)
                Sleep (0x10)
            }

    So with these edits you'll have a fully functional Socket 1366 DSDT for Gigabyte motherboards. If you don't want to tackle these edits yourself, we maintain a database at tonymacx86 with all of these edits already applied. You will always find the latest versions listed here and can access the complete database here.

    If you don't see your Gigabyte Socket 1156 or Socket 1366 motherboard or version listed. You can submit it on the tonymacx86 Forum by clicking here. The instructions are at the top of the topic. After we receive it and verify that it is vanilla, we will do the edits and upload it to the database.

    For discussions on this and other topics, register today at the tonymacx86 Forum!

    Sunday, June 6, 2010

    Welcome to MacManx86: Advanced Hackintosh Tips, Tricks & Techniques





    Let me introduced myself, I am known as MacMan on the tonymacx86 forum and blog. I had to use an different name for my blog, so I decided to go with MacManx86 here as an homage to 
    tonymacx86. It also makes sense as this is a sister site to tonymacx86.blogspot.com.

    On this blog I will be posting more advanced topics than what has typically been posted on tonymacx86.blogspot.com. So if things like DSDT, kexts, and Terminal don't scare you. Or, you want to learn more, stay tuned.