Jump to content

Alexander Martinez

Members
  • Content count

    12
  • Joined

  • Last visited

About Alexander Martinez

  • Rank
    InsanelyMac Protégé
  • Birthday 01/21/1989

Contact Methods

  • MSN
    anonimo_antonimo@hotmail.com
  • Website URL
    http://twitter.com/#!/jamartinezm

Profile Information

  • Gender
    Male
  • Location
    Mexico
  • Interests
    Minecraft! (jamartinezm)
  1. [Guide] Getting XFX HD6850 connectors to work

    The magic of the reboot! Good luck with the editing!
  2. [Guide] Getting XFX HD6850 connectors to work

    This is wierd. I see you have 10.7.3. If I remember correctly it updated the drivers... Maybe the script is having trouble with the new drivers? Anyway... I took a dump of the 10.7.2 kext and they seem to have the same offsets, so it theory it should work. Kext ATI6000Controller Personality: Pithecia ConnectorInfo count in decimal: 3 Disk offset in decimal 176512 0000000 00 04 00 00 04 03 00 00 00 01 00 00 21 03 02 04 0000010 04 00 00 00 14 02 00 00 00 01 00 00 00 00 04 03 0000020 10 00 00 00 10 00 00 00 00 01 00 00 00 00 00 01 0000030 Personality: Bulrushes ConnectorInfo count in decimal: 6 Disk offset in decimal 176560 0000000 00 04 00 00 04 03 00 00 00 01 00 00 11 02 01 01 0000010 00 04 00 00 04 03 00 00 00 01 00 00 21 03 02 02 0000020 00 04 00 00 04 03 00 00 00 01 00 00 12 04 03 03 0000030 00 04 00 00 04 03 00 00 00 01 00 00 22 05 04 04 0000040 00 04 00 00 04 03 00 00 00 01 00 00 10 00 05 05 0000050 00 04 00 00 04 03 00 00 00 01 00 00 20 01 06 06 0000060 Personality: Cattail ConnectorInfo count in decimal: 4 Disk offset in decimal 176656 0000000 02 00 00 00 40 00 00 00 29 05 00 00 00 00 00 05 0000010 00 04 00 00 04 03 00 00 00 01 00 00 11 02 01 01 0000020 00 04 00 00 00 01 00 00 00 09 00 00 21 03 02 02 0000030 00 04 00 00 00 01 00 00 00 09 00 00 12 04 03 03 0000040 Personality: Hydrilla ConnectorInfo count in decimal: 5 Disk offset in decimal 176720 0000000 02 00 00 00 00 01 00 00 09 01 00 00 12 04 03 03 0000010 00 04 00 00 04 03 00 00 00 01 00 00 11 02 01 01 0000020 00 04 00 00 00 01 00 00 00 09 00 00 21 03 02 02 0000030 00 04 00 00 00 01 00 00 00 09 00 00 22 05 05 04 0000040 00 04 00 00 04 03 00 00 00 01 00 00 10 00 04 05 0000050 Personality: Duckweed ConnectorInfo count in decimal: 4 Disk offset in decimal 176800 0000000 04 00 00 00 14 02 00 00 00 01 00 00 00 00 06 05 0000010 00 08 00 00 04 02 00 00 00 01 00 00 22 05 02 04 0000020 00 02 00 00 04 00 00 00 00 01 00 00 11 02 03 06 0000030 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01 0000040 Personality: Fanwort ConnectorInfo count in decimal: 4 Disk offset in decimal 176864 0000000 02 00 00 00 40 00 00 00 29 05 00 00 00 00 00 04 0000010 00 04 00 00 04 03 00 00 00 01 00 00 11 02 01 01 0000020 00 04 00 00 00 01 00 00 00 09 00 00 21 03 02 02 0000030 00 04 00 00 00 01 00 00 00 09 00 00 12 04 03 03 0000040 Personality: Elodea ConnectorInfo count in decimal: 5 Disk offset in decimal 176928 0000000 02 00 00 00 00 01 00 00 09 01 00 00 12 04 03 03 0000010 00 04 00 00 04 03 00 00 00 01 00 00 10 00 05 05 0000020 00 04 00 00 04 03 00 00 00 01 00 00 11 02 01 01 0000030 00 04 00 00 00 01 00 00 00 09 00 00 21 03 02 02 0000040 00 04 00 00 00 01 00 00 00 09 00 00 22 05 04 04 0000050 Personality: Kudzu ConnectorInfo count in decimal: 2 Disk offset in decimal 177008 0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 03 03 0000010 00 08 00 00 04 02 00 00 00 01 00 00 11 02 01 01 0000020 Personality: Gibba ConnectorInfo count in decimal: 5 Disk offset in decimal 177040 0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 05 01 0000010 00 04 00 00 04 03 00 00 00 01 00 00 22 05 04 02 0000020 00 08 00 00 04 02 00 00 00 01 00 00 11 02 06 04 0000030 00 02 00 00 14 02 00 00 00 01 00 00 00 00 03 05 0000040 04 00 00 00 04 02 00 00 00 01 00 00 11 02 01 03 0000050 Personality: Lotus ConnectorInfo count in decimal: 3 Disk offset in decimal 177120 0000000 00 04 00 00 04 03 00 00 00 01 00 00 11 02 01 01 0000010 00 08 00 00 04 02 00 00 00 01 00 00 22 05 04 04 0000020 00 04 00 00 00 01 00 00 00 01 00 00 21 03 02 02 0000030 Personality: Ipomoea ConnectorInfo count in decimal: 3 Disk offset in decimal 177168 0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 01 05 0000010 00 08 00 00 04 02 00 00 00 01 00 00 11 02 04 03 0000020 10 00 00 00 10 00 00 00 00 01 00 00 00 00 00 02 0000030 Personality: Muskgrass ConnectorInfo count in decimal: 4 Disk offset in decimal 177216 0000000 00 04 00 00 04 03 00 00 00 01 01 00 11 02 01 01 0000010 00 04 00 00 00 01 00 00 00 09 02 00 21 03 02 02 0000020 00 04 00 00 00 01 00 00 00 09 03 00 22 05 04 04 0000030 00 08 00 00 04 02 00 00 00 01 04 00 12 04 03 03 0000040 Personality: Juncus ConnectorInfo count in decimal: 4 Disk offset in decimal 177280 0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 03 03 0000010 00 04 00 00 04 03 00 00 00 01 00 00 10 00 04 05 0000020 00 04 00 00 04 03 00 00 00 01 00 00 11 02 01 01 0000030 00 04 00 00 04 03 00 00 00 01 00 00 21 03 02 02 0000040 Personality: Osmunda ConnectorInfo count in decimal: 3 Disk offset in decimal 177344 0000000 02 00 00 00 00 01 00 00 29 05 00 00 10 00 05 05 0000010 00 04 00 00 04 03 00 00 00 01 00 00 11 02 01 01 0000020 00 04 00 00 04 03 00 00 00 01 00 00 21 03 02 02 0000030 If it doesn't work then my recommendation is to get the 10.7.2 drivers and work with those. To be honest, I haven't updated my system yet so I wouldn't be able to help you any further. Good luck.
  3. [Guide] Getting XFX HD6850 connectors to work

    I apologize for not responding earlier. I got an intership on early January and things have been crazy for me right now. After reading everything and seeing the posts you all have made I see that most of you have got it working, I'm really glad for you. If you can (and want to) please post your fixed kexts (and/or final connector profiles) for others to download. Nothing beats having a good database of previously edited kexts for different models/configurations/etc. @lox72 Does the screen always flicker or just in some random moments? How many and which outputs do you have connected when it happens? Could be a link/encoder problem. @billdlv Thanks to your post I am now aware of the new redsock_bios_decode tool. I have added the link to the tutorial. It should prove to be useful to many.
  4. [Guide] Getting XFX HD6850 connectors to work

    Hello, lox72. Glad you got the card recognized. As for the HDMI audio problem, it's either incomplete/missing DSDT edits or using an old patched AppleHDA.kext. Start by editing your DSDT. Verify with IORegistryExplorer if HDAU is loading under PEGP. I edited my DSDT I will attatch my current DSDT. Your areas of interest will be GFX0 and HDAU, where it says hda-gfx. This is what my audio edits look like: Device (PCI0) { Name (_HID, EisaId ("PNP0A03")) Name (_ADR, Zero) Name (_UID, One) Name (_BBN, Zero) Device (PEGP) { Name (_ADR, 0x00010000) Name (_PRW, Package (0x02) { 0x09, 0x05 }) Device (GFX0) { Name (_ADR, Zero) Name (_SUN, One) Method (_DSM, 4, NotSerialized) { Store (Package (0x06) { "@0,connector-type", Buffer (0x04) { 0x00, 0x08, 0x00, 0x00 }, "@1,connector-type", Buffer (0x04) { 0x00, 0x08, 0x00, 0x00 }, "hda-gfx", Buffer (0x0A) { "onboard-1" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } Device (HDAU) { Name (_ADR, One) Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { "hda-gfx", Buffer (0x0A) { "onboard-1" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } } Good Luck dsdt.aml.zip
  5. [Guide] Getting XFX HD6850 connectors to work

    Have you tried verifying that the modded kext is being loaded correctly? If you run ati-personality.pl (or ati-personality.pl -x for x64) after an edit, does it show your modified values? Are you editing the file for the correct kernel version (32 bits vs 64 bits)? Could it be that the system is loading a cached version that is not modified (try booting with -f)? As for the tv not getting a picture: Check for duplicate hotplug id's. Check for incorrect connector type. I'd like to think that it's more of an encoder problem than a transmitter but I would not discard the latter. Use the decoded bios information to get the transmitter (UNIPHYx where x could be nothing, 1 or 2). HDMI is usually single link (check with your manufacturer), so you would choose UNIPHYx:LINKA or UNIPHYx:LINKB. Try each of the encoders with both transmitters. Let me know how it goes.
  6. [Guide] Getting XFX HD6850 connectors to work

    Hello, This does not happen for any of my monitors. My computer has been waking up and sleeping for over 2 weeks in a row and all displays work correctly. Just like you said, try checking for duplicate Hot plug IDs. Best wishes to you too.
  7. [Guide] Getting XFX HD6850 connectors to work

    Nice! I'm glad you got all connectors to work! I'm still waiting a little bit to get the active adapter (since I've got to ship it outside the US), then I'll be in multi-monitor heaven!
  8. ATI Personalities EasyEditor (or going to be, if I get some help)

    First of all, great job, I wish I had seen this tool last week! After playing with the generator for a little while, I came up with some suggestions (do disregard if they are already on your mind / in the works, etc.) Transmitter You could do the following: Provide a drop down list with all the possible combinations: UNIPHY:DUALLINK = 0x00 UNIPHY:LINKA = 0x10 UNIPHY:LINKB = 0x20 UNIPHY1:DUALLINK = 0x01 UNIPHY1:LINKA = 0x11 UNIPHY1:LINKB = 0x21 UNIPHY2:DUALLINK = 0x02 UNIPHY2:LINKA = 0x12 UNIPHY2:LINKB = 0x22 Or, You could have the user select the values from two columns with 3 radio buttons each. The first column would select the link type (Duallink, LINKA, LINKB) which sets the high nibble (0, 1 and 2, respectably). The second column would select the physical link (UNIPHY, UNIPHY1, UNIPHY2) and corresponds to the low nibble (0, 1, and 2, respectably). This gives the above combinations in a more organized fashion. Encoder Provide a drop down list of all the values for quick selection (DIG1, DIG2, DIG3,.., DIG6) and a check box for channels that have a DAC. If checked, it would add a 1 to the high nibble otherwise it should keep the high nibble in 0. (Example: DIGA with DAC should be 0x10, DIGB without DAC would be 0x01). I wish I could offer help out on the Control Flag, but I haven't done enough research on them to actually be helpful. Let me know if I can help with anything. And again, great job. Alex.
  9. ATI 6870 framebuffer under 10.7

    @Marek: Do you have pci-root set in your org.chameleon.boot.plist? I recall reading that this may cause the bootloader to not load personalities correctly. Also, try to update to the latest chameleon (or chimera) if you haven't done so yet. @baguazao I just posted a guide that could help you out with that, and there is a post from mcbyte_it that makes it even easier to create custom connector descriptors (I wish I had seen it earlier!)
  10. [Guide] Getting XFX HD6850 connectors to work

    That actually makes a lot of sense. This actually gives me a real excuse to go out and buy a DP to HDMI adapter to stop having to unplug cables (so, I'm lazy, sue me). Also, I'm glad you liked the post.
  11. [Guide] Getting XFX HD6850 connectors to work

    I've finally got a new XFX HD6850, not knowing all the work that I would need to put in for all the connectors to work, but it was worth it. It's a 1GiB model with red fans/connectors Vendor ID: 0x1002 Device ID: 0x6739 It has the following connectors (according to the connector guide on XFX's website) A top DVI connector is the only DVI with a VGA option (DVI-I) and dual Channel. A HDMI connector. A bottom DVI connector is a digital only (DVI-D). A Display Port connector. I can't test this since I do not have any adapters or displays compatible with this protocol. For 3 days I read forum threads and did some research and test on my card and, from what I tested, got this to work completely: * Top DVI port in both Digital and Analog mode (DVI -> VGA passive adapter). Well call it DVI1 * Bottom DVI port. We'll call it DVI2. * HDMI with audio. * HotPlug detection on the above ports. * OpenGL (DVD Player works, Steam games work). * Quartz and CI. * All dual monitor combinations work (DVI1 + DVI2, DVI1+HDMI, DVI2+HDMI). Note: Card does not support triple monitors, even on Windows; If all three ports are plugged, then DVI2 will disconnect. Removing the HDMI cable will NOT reconnect it automatically, you will need to click on Detect Displays or disconnect DVI2 and reconnect it. What is NOT tested: * Dual Link DVI on first port. * Display port (video nor audio). Since I saw no guide (at least with an explanation on the first page) I will try to explain how I did it, what steps to take, etc, to get the card to work. Bear with me as I have not written that many tutorials in the past (and English is not my first language xD) At the end of the post, you will find an edited ATI6000Controller.kext that works for my system, and the connector description that I made for the card. First off, many thanks to: - Mucha (http://www.insanelym...howtopic=252061) - bcc9 (http://www.insanelym...threaded&start=) - streakies (http://www.tonymacx8...=28464&start=90) for their research and guides (yes, I did read over 30 forum pages). They proved to be extremely useful. ******************************************************************************************************************* How I did it: My DSDT is hda-gfx patched using Toleda's guide. My boot.plist had GE=Yes and did NOT have pciroot or anything similar. Chimera 1.7 NOTE: I read several cases where using AppleNullCPUManagement.kext or npci=x resulted in personality override not working correctly (you always get not personality or the default). Take your necessary precautions. Step 1: Identify default personality Download IORegistryExplorer (or install Xcode to get it) Without a personality, the card will work will all the ports, but will lag, have random artifacts and will not work with OpenGL (DVD Player will crash, etc.). We need a personality for the card to work! I installed the card and booted into Mac. I saw that only the monitor connected on DVI1 worked (with or without an adapter). I wrote down which personality was loaded (ioreg | grep ATY). Duckweed was selected by Chimera. The correct number of ports were listed (4). ******************************************************************************************************************* Step 2: Get the tools, dump and decode BIOS, get SenseID and transmitter of each port. Download bcc9's radeon_bios_decode and ati_personality.pl scripts from the above post. (See UPDATE below) Download an Hex editor (I used Hex Fiend, you could also use HexEdit, or something similar). Install (or boot) Windows. Download and install GPU-Z Dump your BIOS Save it into a flash drive or partition accessible by mac. Reboot into Mac Decode your BIOS file: radeon_bios_decode < BARTS.rom UPDATE: redsock's bios decoder to get the encoder and link information directly from the bios. See bottom of the post For me, it looked a little something like this: ATOM BIOS Rom: SubsystemVendorID: 0x1682 SubsystemID: 0x3110 IOBaseAddress: 0x0000 Filename: 685ZNF63.SB BIOS Bootup Message: BARTS PRO HYNIX GDDR5 32Mx32 BIOS PCI ID: 1002:6739 Connector at index 0 Type [@offset 44250]: DisplayPort (10) Encoder [@offset 44254]: INTERNAL_UNIPHY2 (0x21) i2cid [@offset 44360]: 0x90, OSX senseid: 0x1 Connector at index 1 Type [@offset 44260]: HDMI-A (11) Encoder [@offset 44264]: INTERNAL_UNIPHY2 (0x21) i2cid [@offset 44387]: 0x93, OSX senseid: 0x4 Connector at index 2 Type [@offset 44270]: DVI-I (2) Encoder [@offset 44274]: INTERNAL_UNIPHY (0x1e) i2cid [@offset 44424]: 0x94, OSX senseid: 0x5 Connector at index 3 Type [@offset 44280]: DVI-I (2) Encoder [@offset 44284]: INTERNAL_KLDSCP_DAC1 (0x15) i2cid [@offset 44424]: 0x94, OSX senseid: 0x5 Connector at index 4 Type [@offset 44290]: DVI-D (3) Encoder [@offset 44294]: INTERNAL_UNIPHY1 (0x20) i2cid [@offset 44451]: 0x95, OSX senseid: 0x6 My sense ID's are: Display port: 1 HDMI: 4 DVI1: 5 DVI2: 6 "INTERNAL_KLDSCP_DAC1" mans that we have an analog signal. In my case, it's sense-id is the same as DVI1 because that port also provides VGA output with the passive adapter. So in total we get 4 physical ports, not 5 (as you can probably figure out by looking at your card xD). The transmitters for my connectors are: Display port: UNIPHY2 HDMI: UNIPHY2 DVI1: UNIPHY DVI2: UNIPHY1 These are the physical links that the GPU uses to connect to the ports. We will need these later. ******************************************************************************************************************* Step 3: Get the personality list and connector info. Get a list of all the personalities that exist on your system. sudo /folder/where/you/saved/the/tool/ati_personality.pl.0.7/ati-personality.pl And the x64 personalities (if you run on 64 bits) sudo /folder/where/you/saved/the/tool/ati_personality.pl.0.7/ati-personality.pl -x You will get a very long output. Save the output (copy it or just pipe it to a file). You should notice that the x32 and x64 versions are identical except for the offset. Work with whichever version you are booting with, and change the other one when you are finished. Delete the unnecessary personalities (I'm working with a 6xxx so I deleted all except the ones listed in ATI6000Controller.kext Now, you will have to make a decision: Will you try to figure out each connector by yourself (Steps 4B-4C), or will you try to find out if another personality works with the remaining connectors (Step 4A)? I chose to try out each personality, with each combination of connections, with both AtiPorts=4 and no AtiPorts. As you may probably guess… it took a long time to do so, many reboots, and a hell lot of paper (or a spreadsheet) to write down the results. This worked for me to get DVI1 and HDMI (with audio) working. I had to use the second way to get DVI2 to work. So, you may not be saved from doing both, if you are unlucky like me. ******************************************************************************************************************* Step 4A - Trying out each personality Write down the names of the personalities from your dump. For me, they are Pithecia, Bulrushes, Cattail, Hydrilla, Duckweed, Fanwort, Elodea, Kudzu, Gibba, Lotus, Ipomoea, Muskgrass, Juncus and Osmunda. I can skip Duckweed as I already know what works on it. You may skip the 'make a table' part if you have good memory, or just write down what works. I did it to get as much info as I could and learn from it Make a table (in Excel, in paper, etc). The rows will be the name of the personalities, the columns will be all the combination of connectors you care about. In my case these were DVI1, DVI2, HDMI, DVI1+DVI2, DVI1+HDMI, DVI2+HDMI, ALL) You will fill out the spaces with your results from your tests. Now, this is something that will differ for some people. To change the personality that loads, all you need to do is type 'AtiConfig=nameofpersonality' in your boot loader. This did NOT work for me. It would get stuck or panic for some strange reason (I blame RealtekRTL81xx.kext as it always does this when I change my default options and it's a pain in the ass to fix). I edited my boot.plist EVERY SINGLE TIME before trying out the next personality. Your milage may vary. WARNING: YOU WILL BE STUCK WITH GREY SCREENS, BLACK SCREENS, ERRORS ON THE BOOTLOADER WHEN TRYING OUT DIFFERENT PERSONALITIES. BE SURE TO HAVE A COMPUTER THAT CAN SSH OR VNC INTO YOUR MAC SO YOU MAY REVERT YOUR CHANGES. I WILL NOT HELP YOU RECOVER YOU MAC, I WILL NOT EXPLAIN HOW TO MAKE BACKUPS, ETC. BE PREPARED. DON'T SAY I DIDN'T WARN YOU That being said, I had an additional laptop running Windows 7 that I used to connect via SSH (using puTTY) to the Mac and make the necessary changes to keep on trying. Now, reboot your computer, and start with the first personality and add the number of physical ports. I started with Pithecia. I started with DVI1 plugged in, and nothing else In the boot loader type (without the quotes) "AtiConfig=Pithecia AtiPorts=4" Boot. Write down the result. (Greyscreen, Blackscreen, Flickering, Garbage on screen, panic, etc.) I plugged DVI2 in. Write down result. Unplug DVI2, Plug HDMI, write down. Unplug DVI1, write down. etc… Repeat for each combination. I did not boot with each combination, but if you have the time, you should try it. When you are done, you should try it out again without AtiPorts. This gave me different results on each try. For me, I've got the following results: With AtiPorts = 4 *Pithecia: Only DVI1 works with corrupted frame buffer. *Bulrushes: HDMI works. DVI1 works mirroring HDMI (flickering) *Cattail: Blackscreen on all combinations. *Hydrilla: Same as cattail *Duckweed: DVI1 works. HDMI with DVI1 freezes the displays. *Fanwort: Blackscreen *Elodea: Blackscreen *Gibba: Same as duckweed *Lotus: Black screen *Ipomoea: Only DVI1 works but with corrupted frame buffer. *Mangabey: Everything works because frame buffer does not load, so no acceleration (if you run ioreg | grep ATY, you get ATY,ATY,RadeonFramebuffer) *Muskgrass: Blackscreen *Juncus: Black screen[/list] Without AtiPorts: *Elodea: Only DVI1 works. *Gibba: Only DVI1 works. *Lotus: Only HDMI works (with audio!). With these, I can get 2 ports working: Duckweed/Gibba (DVI1) and Lotus (HDMI). Now, we need to merge this values in to the personality. This is explained in step 4B. ******************************************************************************************************************* Step 4B - Create new personality connector information. First off we need to define how a connector is structured. Let's use a vanilla duckweed from 10.7.2 as an example as it was the one that had DVI1 working for me. 0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01 0000010 00 04 00 00 04 03 00 00 00 01 00 00 22 05 05 02 0000020 00 08 00 00 04 02 00 00 00 01 00 00 11 02 03 04 0000030 00 02 00 00 14 02 00 00 00 01 00 00 00 00 06 05 Each line is a connector. Let's decode connector 4 (0000030) Split it up like this: 00 02 00 00 / 14 02 00 00 / 00 01 / 00 00 / 00 / 00 / 06 / 05 We get the following descriptors: 00020000 14020000 0001 0000 00 00 06 05 But these are in big endian. We need them in little endian, so we flip each descriptor, and let's also name them: 00 00 02 00 - Connector type 00 00 02 14 - Control flags (ATY,ControlFlags) 01 00 - Features 00 00 - Unknown 00 - Transmitter 00 - Encoder 06 - HotPlug ID 05 - Sense ID Let's decode them using this information taken from muchas's post: ----------------------- 1- ConnectorType: (I added single link, from bbc9's post) /* 4 bytes ,from bbc9 radeondump */ #define CONNECTORTYPE_LVDS 0x00000002 #define CONNECTORTYPE_DVIDL 0x00000004 //Dual Link #define CONNECTORTYPE_VGA 0x00000010 #define CONNECTORTYPE_S-V 0x00000080 #define CONNECTORTYPE_DP 0x00000400 #define CONNECTORTYPE_HDMI 0x00000800 #define CONNECTORTYPE_DVISL 0x00000004 //Single Link 2- ATY,ControlFlags: /* 4 byte the same as found on ioreg key: ATY,ControlFlags. hardcoded for each connector type u can try one by one until u find the working one for u 0x0002 : LVDS > ControlFlag : 0x0040 / 0x0100 0x0004 : DVI-? > ControlFlag : 0x0016 - 0x0014 / 0x214 0x0010 : VGA > ControlFlag : 0x0010 0x0080 : S-Video > ControlFlag : 0x0002 0x0200 : DVI-? > ControlFlag : 0x0014 / 0x0214 - 0x0204 0x0400 : DisplayPort > ControlFlag : 0x0100 - 0x0104 - 0x0304 / 0x0604 - 0x0400 0x0800 : HDMI > ControlFlag : 0x0200 0x1000 : DVI-? > ControlFlag : 0x0016 */ 3-Features; /* Features byte 0 , for example for LVDS screen it's almost 0x09 = 0x01 + 0x08 > Internal + Backlight */ #define FEATURE_USE_INTERNAL 0x01 #define FEATURE_USE_RGB_ON_YUV 0x04 #define FEATURE_USE_BACKLIGHT 0x08 #define FEATURE_BACKLIGHT_INVERTED 0x10 #define FEATURE_USE_CLAMSHELL 0x20 /* 1 byte, hardcoded for each connector type 0x0002 : LVDS > Features : 0x09 0x0004 : DVI-? > Features : 0x00 0x0010 : VGA > Features : 0x00 0x0080 : S-Video > Features : 0x04 0x0200 : DVI-? > Features : 0x00 0x0400 : DisplayPort > Features : 0x00 0x0800 : HDMI > Features : 0x00 0x1000 : DVI-? > Features : 0x00 */ /* Features byte 1 , no idea ???*/ 4- Unknown ; ??? 5- Transmitter; /* u can get this from dmesg after installing Dong's RadeonHD with debug info */ /* Transmitter Bits 0-3 (TransmitterID) */ #define UNIPHY 0x00 #define UNIPHY1 0x01 #define UNIPHY2 0x02 /* Transmitter Bits 4-7 (LinkID) */ #define DUALLINK 0x00 // LINKA + LINKB #define LINKA 0x10 #define LINKB 0x20 /* Transmitter byte */ #define UNIPHYA 0x10 // = UNIPHY:LINKA #define UNIPHYB 0x20 // = UNIPHY:LINKB #define UNIPHYAB 0x00 // = UNIPHY:DUALLINK #define UNIPHYC 0x11 // = UNIPHY1:LINKA #define UNIPHYD 0x21 // = UNIPHY1:LINKB #define UNIPHYCD 0x01 // = UNIPHY1:DUALLINK #define UNIPHYE 0x12 // = UNIPHY2:LINKA #define UNIPHYF 0x22 // = UNIPHY2:LINKB #define UNIPHYEF 0x02 // = UNIPHY2:DUALLINK #define DACA 0x00 #define DACB 0x10 6- Encoder; /* u can get this from Dmesg as above for R8XX architecture and above there is 06 Digital Encoder: DIG_1 > DIG_6*/ /* Encoder Bits 0-3 (DIG_ID : Digital) */ #define DIG1 0x00 // = DIGA #define DIG2 0x01 // = DIGB #define DIG3 0x02 // = DIGC Only for Radeon HD 5XXX Series and above #define DIG4 0x03 // = DIGD Only for Radeon HD 5XXX Series and above #define DIG5 0x04 // = DIGE Only for Radeon HD 5XXX Series and above #define DIG6 0x05 // = DIGF Only for Radeon HD 5XXX Series and above /* Encoder Bits 4-7 (DAC_ID : Analog) */ #define DAC 0x10 7- HotplugID; /* 4 bits it's a unique id for each port, i have tried with 0 for port0, 1 for port1 and 2 for port2 and it's just working */ 8- SenseID; /* SenseLine = (i2cid & 0xf) +1 ,you get i2cid from bbc9 radeondump */ Bits 0-3: Sense Line Bit 4: Use hw i2c flag So we get that connector 4 on duckweed is: 00 00 02 00 - Connector type: Single DVI 00 00 02 14 - Control flags (ATY,ControlFlags): DVI + VGA + DVI 01 00 - Features: No Idea. 00 00 - Unknown. 00 - Transmitter: UNIPHY:DUALLINK (Link A + Link using DAC A 00 - Encoder: DIGA 06 - HotPlug ID: 06 05 - Sense ID: 05 If you remember from above, my bios dump said that DVI1 had a sense ID of 5. This is the reason that this connector matches!. You can check it out in IORegistryExplorer: Search for your personality, locate the correct ID and check ATYFlags. 1 means unmatched ( or unconnected ). Everything else means that it is matched, but it doesn't mean that it working correctly. So, we have a semi working connector. Why a semi working connector? Because it's supposed to be a Dual Link DVI, not a Single Link DVI. Let's fix this! I changed the connector type to 00 00 00 04: DualLink DVI Giving me a final result of (in big endian): 04 00 00 00 14 02 00 00 00 01 00 00 00 00 06 05 So we need to change this value in the kext. Make a backup of your ATI6000Controller.kext Open up your HEX editor, and locate the correct offset for your personality (176800 for x64 on duckweed) Find the old connector and replace the values with the new ones. Save it and install the new kext. Reboot For me, DVI1 still worked, and IORegistryExplorer now showed the correct connector-type: 0x4 Next up, fixing HDMI. Currently, we have duckweed like this: 0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01 0000010 00 04 00 00 04 03 00 00 00 01 00 00 22 05 05 02 0000020 00 08 00 00 04 02 00 00 00 01 00 00 11 02 03 04 0000030 04 00 00 00 14 02 00 00 00 01 00 00 00 00 06 05 We have an HDMI descriptor on connector 3 (0000020) but it is not working. It's sense ID DOES match the bios dump, but something may be off in the rest of the descriptor. Instead of figuring it out, let's look at Lotus, where we found out that HDMI was working. 0000000 00 04 00 00 04 03 00 00 00 01 00 00 11 02 01 01 0000010 00 08 00 00 04 02 00 00 00 01 00 00 22 05 04 04 0000020 00 04 00 00 00 01 00 00 00 01 00 00 21 03 02 02 We see that connector 2 (0000010) is an HDMI descriptor with a sense id of 04, just as in duckweed, but it has different Control Flags, etc. What we want to do here, is just copy the line completely into duckweed This gives us: 0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01 0000010 00 04 00 00 04 03 00 00 00 01 00 00 22 05 05 02 0000020 00 08 00 00 04 02 00 00 00 01 00 00 22 05 04 04 0000030 04 00 00 00 14 02 00 00 00 01 00 00 00 00 06 05 We add this into the kext and reboot, and BAM! we've got HDMI working with DVI1 and audio… but there is a little detail: You need to click Detect Displays for an HDMI device to be detected on connection or disconnection. This does not happen in DVI1. Let's look at why this is happening… If we remember from above, the second to last byte is the HotPlugID. This is the one responsible for telling the OS that we plugged (or unplugged) a cable. We notice that we have 2 connectors with the same HotPlugID: Connector 1(0000000) and the HDMI connector. So, 2 connectors drive the same signal. This is not good. Let's change that. 0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01 0000010 00 04 00 00 04 03 00 00 00 01 00 00 22 05 05 02 0000020 00 08 00 00 04 02 00 00 00 01 00 00 22 05 02 04 0000030 04 00 00 00 14 02 00 00 00 01 00 00 00 00 06 05 So we changed the HDMI's HotPlugID from 04 to 02. Try different numbers starting with 00. Also, just for fun, I tried to change DVI1 to 01, and hot plugging stopped working, I had to revert to 06 (Don't fix it if it's not broken!) You may have to play around with the numbers. until you get it working. We write this into the kext and BAM! HDMI is detecting the hot plug, as is DVI1. Both monitors work on dual display. DVI1 also works with the DVI to VGA adapter. So… if you only want those ports working, then YOU ARE DONE! CONGRATULATIONS! *Virtual High Five* Enjoy your HDMI and DVI1 dual monitor setup! But… If you are like me, and want DVI2 to work, then you are not quite done yet… This is going to be harder, as we do not have any personality that worked with it :c Let's get dirty. ******************************************************************************************************************* Step 5: Creating a connector descriptor You may try to modify a connector that has the same description as you want (Sense ID = 6, Connector type= 0x0200, etc..) I chose to create it from scratch, as I did not know any real information on it, other that it's a Single Link Connector. This is what the structure looks like: AAAAAAAA BBBBBBBB CCCC DDDD EE FF GG HH A = Connector type B = Control Flags C = Features D = ??? E = Transmitter F = Encoder G = HotPlugID H = Sense ID Let's look at the bios dump one more time Sense ID's Display port: 1 HDMI: 4 DVI1: 5 DVI2: 6 We know the new connector needs to end in 06, so we have AAAAAAAA BBBBBBBB CCCC DDDD EE FF GG 06 (We will fill out all the letters later..) Transmitters: Display port: UNIPHY2 HDMI: UNIPHY2 DVI1: UNIPHY DVI2: UNIPHY1 So, UNIPHY is being used in dual link (LINKA+LINKB) for DVI1 Display port and HDMI share UNIPHY2… if we convert the connector part of them, we see that HDMI uses LINK B, and DP uses LINK A. DVI2 uses UNIPHY1… So we have 3 possibilities for the transmitter: 01 UNIPHY1:DUALLINK 11 UNIPHY1:LINKA 21 UNIPHY1:LINKB We know we don't have dual link on that port (again, by checking the XFX connector guide on their webpage), so we can skip 01. Let's try with UNIPHY1:LINKA (11): AAAAAAAA BBBBBBBB CCCC DDDD 11 FF GG 06 Let's give it a HotPlugId, like 03: AAAAAAAA BBBBBBBB CCCC DDDD 11 FF 03 06 We know that it's a Single Link DVI connector so: 00020000 BBBBBBBB CCCC DDDD 11 FF 03 06 For features, we want DVI…. let's choose the same as in DVI1 so we get: 00020000 BBBBBBBB 0001 DDDD 11 FF 03 06 And the Unknown part… let's keep it zero'ed 00020000 BBBBBBBB 0001 0000 11 FF 03 06 Let's add the control flags… How do we know which one to use? Well… we try all that seem to fit, so it's one of these 3: 0x0004 : DVI-? > ControlFlag : 0x0016 - 0x0014 / 0x214 0x0200 : DVI-? > ControlFlag : 0x0014 / 0x0214 - 0x0204 0x1000 : DVI-? > ControlFlag : 0x0016 Let's start with 0004: (the tables are in little endian, we need them in big endian, remember?) 00020000 04000000 0001 0000 11 FF 03 06 Finally, we need the encoder information. We have 6 different encoders: #define DIG1 0x00 // = DIGA #define DIG2 0x01 // = DIGB #define DIG3 0x02 // = DIGC Only for Radeon HD 5XXX Series and above #define DIG4 0x03 // = DIGD Only for Radeon HD 5XXX Series and above #define DIG5 0x04 // = DIGE Only for Radeon HD 5XXX Series and above #define DIG6 0x05 // = DIGF Only for Radeon HD 5XXX Series and above /* Encoder Bits 4-7 (DAC_ID : Analog) */ #define DAC 0x10 We don't have a DAC (as it is a purely digital port.), so the values may be 00 up to 05. Let's start with 00 00020000 04000000 0001 0000 11 00 03 06 We have a new connector description! So, let's add it to the duckweed personality, by replacing one of the remaining connectors. I chose to replace connector 2 (0000010). Why not the first one? Well, it has a SenseID (01) that matches my display port, and has the correct connector type, so it may be working but I don't have the means for testing it. So we get this new personality: 0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01 <-- Display port 0000010 00 02 00 00 04 00 00 00 00 01 00 00 11 00 03 06 <-- DVI2 0000020 00 08 00 00 04 02 00 00 00 01 00 00 22 05 02 04 <-- HDMI 0000030 04 00 00 00 14 02 00 00 00 01 00 00 00 00 06 05 <-- DVI1 Save it and reboot (Remember to only leave HDMI or DVI1 plugged in. I left DVI1 with the VGA adapter. Connect DVI2) This is what happened to me: I booted up and MAGIC I saw that my monitor on DVI2 showed… something… It was a flickering garbled screen, with the same image as DVI1… I had mirroring turned on, so I turned it off. The image on DVI2 remained the same as DVI1. I could change resolution, the name of the monitor showed correctly. HotPlug worked, but, the image was incorrect. From this, I gathered that: LINKA is the correct physical link to the DVI2 port. The control flags may be correct. So, what is going on? We have an incorrect encoder set up! We are stealing DVI1's encoder signal! Let's brute force this b***h! Next up, DIGB(01) 0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01 <-- Display port 0000010 00 02 00 00 04 00 00 00 00 01 00 00 11 01 03 06 <-- DVI2 0000020 00 08 00 00 04 02 00 00 00 01 00 00 22 05 02 04 <-- HDMI 0000030 04 00 00 00 14 02 00 00 00 01 00 00 00 00 06 05 <-- DVI1 Results: The same… Up next, DIGC(02) 0000000 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01 <-- Display port 0000010 00 02 00 00 04 00 00 00 00 01 00 00 11 02 03 06 <-- DVI2 0000020 00 08 00 00 04 02 00 00 00 01 00 00 22 05 02 04 <-- HDMI 0000030 04 00 00 00 14 02 00 00 00 01 00 00 00 00 06 05 <-- DVI1 Results: SUCCESS! I got DVI2 to show it's signal. Everything worked! I was overwhelmed with joy. I did it. I got it to work. I tried everything out: DVD player worked, steam worked, CI/QE worked, displays shut off. Hot Plug worked on port. If I had DVI1+DVI2 and plugged HDMI, DVI2 disconnected and HDMI got control. Unplugging HDMI only gives back control to DVI2 if you click detect monitors (not sure why, and actually, I don't care at all). I am done I don't need anything else from the personality. But, what if you weren't so lucky? My recommendation: try the remaining encoder, transmitter and control flags combinations, in that order. ******************************************************************************************************************* Final Results. This is what my personality looks like right now (I rearranged the connectors, just because I could): Personality: Duckweed ConnectorInfo count in decimal: 4 Disk offset in decimal 176800 0000000 04 00 00 00 14 02 00 00 00 01 00 00 00 00 06 05 0000010 00 08 00 00 04 02 00 00 00 01 00 00 22 05 02 04 0000020 00 02 00 00 04 00 00 00 00 01 00 00 11 02 03 06 0000030 00 04 00 00 04 03 00 00 00 01 00 00 12 04 04 01 The first line is the top DVI connector. XFX states this is the only DVI with a VGA option (DVI-I) and dual Channel. The second line is the HDMI connector. This was taken from the Lotus personality with changed HotPlug ID and Sense ID. The third line is the bottom DVI connector. XFX states this is a digital only (DVI-D). No personality worked for this port, and I had to test each value until I got a working signal. The fourth line is the Display Port connector. I can't test this since I do not have any adapters or displays compatible with this protocol. I have attached my kext ATI6000Controller.kext.zip if you want to try it out. I hope this guide helps someone else. Thanks to everyone for the research. Alex Update (11/Feb/'12): There is a new tool available, created by redsockosx to decode the BIOS. This gives way more information than the previous tool in regards to the encoder/phy/link/etc. This tool may be downloaded from here. You dump the BIOS it just like you would with radeon_bios_decode. Thanks redsock! If you get random freezes/lag try tweaking the encoder values. This seemed to solve all problems for some users.
  12. Hey there! First of all I want to say hi to you all and thank most of the people posting here because you've helped out a lot (I'd mention all of you but I lost track ) Here's the thing: I ran into a problem that I couldn't find in the board (I searched, really!) and was looking for some insight: Since my mobo is nForce based I know I can't use the onboard LAN, so I pulled a working WLAN Card (Broadcom 4318) from my dad's desktop (Gateway... something). Works fine under XP and Vista (on both machines). Everything works except for sound, but I haven't really tried to get it to work (maybe I'll come back after fixing this issue for more help) Anyways, here it is: When I boot into OSX it's detected properly as an Airport Card, I can set up the card and connect to any wireless network and surf the net. BUT after using it a while (Can be 1 hour or 1 minute) the connection drops and all the Wireless networks dissapear! I can turn the airport on and off but have no success. No more wireless networks will appear no matter what. The only solution is to reboot, but the problem reapears randomly. This is really bugging me as it's the only reason why I haven't been enyoing MacOS (no internets = no messenger, no lulz, no forums, no insanelymac = no fun ) Does anyone have an idea on what's going on? Maybe some recomendations, secret trick, prayer, ritual or something to get it to keep the networks from dissapearing? Thanks in advance, Alex
×