1. Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.

ATI HD *AGP* card with HDMI audio problems? Read this!

Discussion in 'AMD / ATI' started by artbio, Oct 23, 2009.

  1. artbio New Member

    Joined:
    Oct 23, 2009
    Messages:
    30 (0.02/day)
    Thanks Received:
    12
    Location:
    Portugal
    If you have an ATI HDXXXX Series of AGP graphics cards with an integrated High Definition Audio Controller, you probably noticed you can't get audio over HDMI and you receive an error in the System Event Viewer like this one:

    This problems happens on old AGP boards and also on some older PCIe boards. Newer PCIe boards don't have this problem. AGP boards weren't designed for multiple devices on the AGP bus. But this problem has an easy fix. At least for BIOS that rely on ACPI for IRQ routing. For those that don't, you can assign IRQ on the BIOS menu or under the OS.

    Certain ATI HDXXXX cards come with an integrated High Definition Audio Controller to provide audio over HDMI. They have an HDMI output. So you will get two devices on the AGP bus. "Bus 2 Device 0 Function 0" and "Bus 2 Device 0 Function 1". Since most BIOS don't provide IRQ Routing for more than "Bus 2 Device 0 Function 0" the graphics function, the HDA function won't get an IRQ and audio over HDMI won't work.

    There is a definitive solution for this problem. You need to edit the ACPI table of your System Board's BIOS. Not the Graphics card one! I am going to give a brief explanation on how I achieved this. In the hopes that this information might help others to fix their system board's BIOS too.

    I only have AWARD BIOS systems, but if you have others like AMI and you are familiar with replacing their BIOS modules you can easily adapt this method.

    So for AWARD you need CBROM 32 bit. I find that version 1.80 works well. However version 1.40 extracts corrupt unusable ACPI tables from the BIOS. Do a search on the Internet for this tool.
    You also need the Intel ASL Compiler, a Text Editor (Notepad will do) and an HEX Editor of your choice, for whatever BIOS AWARD, Phoenix or AMI you are using. You can get the Intel ASL Compiler here -> http://www.acpica.org/downloads/binary_tools.php Extract iasl.exe to a folder of your choice. This is going to be your working folder. Also place the CBROM tool and your Motherboard's BIOS on that folder.

    1 -> Execute Windows Cmd command and on the command prompt enter your working folder. I guess you know how to do that.

    2 -> Extract the ACPI table. On the command prompt execute:
    Code:
    cbrom biosfilename.bin /acpitbl extract
    This will extract an ACPITBL.BIN file to your working folder. You might need to press Enter twice.

    3 -> Extract the DSDT (Differentiated System Description Table) from ACPITBL.BIN. For this open ACPITBL.BIN file with an HEX Editor. Search for an ASCII signature labeled DSDT. Select all the bytes starting immediately before the D of the DSDT word to the end of the ACPITBL.BIN file. Now copy all these bytes to a new file on the HEX Editor and save this new file as DSDT.bin placed on your working folder.

    4 -> Decompile the DSDT table. Execute on the command prompt:
    Code:
    iasl -d DSDT.bin
    If you did everything right up until now you will get a file named DSDT.dsl on your chosen folder.

    5 -> Edit the DSDT table. Open the file DSDT.dsl with your text editor and do a search for the AGP word. This is what you will probably find if you have an nForce 2 BIOS:
    Code:
    Device (AGPB)
    			{
    				Name (_ADR, 0x001E0000)
    				Name (ONBV, 0x00)
    				Name (PICM, Package (0x01)
    				{
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x00, 
    						\_SB.PCI0.LNK5, 
    						0x00
    					}
    				})
    				Name (APIC, Package (0x01)
    				{
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x00, 
    						\_SB.PCI0.APC5, 
    						0x00
    					}
    				})
    				Name (AGP0, Package (0x01)
    				{
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x00, 
    						\_SB.PCI0.LNK4, 
    						0x00
    					}
    				})
    				Name (AGP1, Package (0x01)
    				{
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x00, 
    						\_SB.PCI0.APC4, 
    						0x00
    					}
    				})
    				Method (_PRT, 0, NotSerialized)
    				{
    					If (LNot (PICF))
    					{
    						If (LEqual (ONBV, 0x01))
    						{
    							Return (PICM)
    						}
    						Else
    						{
    							Return (AGP0)
    						}
    					}
    					Else
    					{
    						If (LEqual (ONBV, 0x01))
    						{
    							Return (APIC)
    						}
    						Else
    						{
    							Return (AGP1)
    						}
    					}
    				}
    
    				Device (VGAG)
    				{
    					Name (_ADR, 0x00)
    				}
    			}
    You have to edit this section so that it looks like this:
    Code:
    Device (AGPB)
    			{
    				Name (_ADR, 0x001E0000)
    				Name (ONBV, 0x00)
    				Name (PICM, Package (0x04)
    				{
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x00, 
    						\_SB.PCI0.LNK5, 
    						0x00
    					},
    
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x01, 
    						\_SB.PCI0.LNK5, 
    						0x00
    					},
    
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x02, 
    						\_SB.PCI0.LNK5, 
    						0x00
    					},
    
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x03, 
    						\_SB.PCI0.LNK5, 
    						0x00
    					}
    				})
    				Name (APIC, Package (0x04)
    				{
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x00, 
    						\_SB.PCI0.APC5, 
    						0x00
    					},
    
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x01, 
    						\_SB.PCI0.APC5, 
    						0x00
    					},
    
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x02, 
    						\_SB.PCI0.APC5, 
    						0x00
    					},
    
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x03, 
    						\_SB.PCI0.APC5, 
    						0x00
    					}
    				})
    				Name (AGP0, Package (0x04)
    				{
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x00, 
    						\_SB.PCI0.LNK4, 
    						0x00
    					},
    
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x01, 
    						\_SB.PCI0.LNK4, 
    						0x00
    					},
    
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x02, 
    						\_SB.PCI0.LNK4, 
    						0x00
    					},
    
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x03, 
    						\_SB.PCI0.LNK4, 
    						0x00
    					}
    				})
    				Name (AGP1, Package (0x04)
    				{
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x00, 
    						\_SB.PCI0.APC4, 
    						0x00
    					},
    
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x01, 
    						\_SB.PCI0.APC4, 
    						0x00
    					},
    
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x02, 
    						\_SB.PCI0.APC4, 
    						0x00
    					},
    
    					Package (0x04)
    					{
    						0xFFFF, 
    						0x03, 
    						\_SB.PCI0.APC4, 
    						0x00
    					}
    				})
    				Method (_PRT, 0, NotSerialized)
    				{
    					If (LNot (PICF))
    					{
    						If (LEqual (ONBV, 0x01))
    						{
    							Return (PICM)
    						}
    						Else
    						{
    							Return (AGP0)
    						}
    					}
    					Else
    					{
    						If (LEqual (ONBV, 0x01))
    						{
    							Return (APIC)
    						}
    						Else
    						{
    							Return (AGP1)
    						}
    					}
    				}
    
    				Device (VGAG)
    				{
    					Name (_ADR, 0x00)
    				}
    			}
    Your BIOS might have been written a lot differently from this. And in that case a deeper understanding is needed to do it the right way. If you are really interested read the ACPI specifications. You can find them here -> http://www.acpi.info/
    I recommend you study the version of the ACPI spec of you system board's implementation. Just before you try this way, know you need to tell all the 4 possible devices under the AGP bus to get to the same IRQ.

    6 -> Save the edited DSDT ASL (ACPI Source Language) file and compile it. Save the edited file as DSDTNEW.dsl and compile it by executing the command:
    Code:
    iasl -sa -oa DSDTNEW.dsl
    This will generate a file named DSDT.aml

    NOTE: If iasl refuses to compile due to errors you didn't introduce, try Microsoft ASL Compiler. Grab it from here -> http://download.microsoft.com/download/2/c...iler-v4-0-0.msi
    In this case compile with:
    Code:
    asl DSDTNEW.dsl
    7 -> Put the compiled DSDT table back into the ACPITBL.BIN file. Open the ACPITBL.BIN file with an hex editor again. Select the DSDT table like it was explained in point 3. Open the file DSDT.aml with the HEX Editor on a new window. Select all bytes from the DSDT.aml file and select Copy. Now go to the ACPITBL.BIN HEX Editor Window and Paste replacing the old DSDT table. Save the edited ACPITBL.BIN with the same name.

    8 -> Replace the old ACPITBL.BIN module on the BIOS file with the new one. On the command prompt under your working folder execute:
    Code:
    cbrom biosfilename.bin /acpitbl release
    This will release the old ACPITBL.BIN module from the BIOS.
    To insert the new one execute:
    Code:
    cbrom biosfilename.bin /acpitbl ACPITBL.BIN
    9 -> Flash the BIOS file obtained like you normally do. And pray!

    NOTE: Make sure you can recover from a bad flash before trying this. In case anything goes wrong.

    GOOD LUCK!

    Here is a list of some BIOS files with this patch applied:

    Abit AN7 -> AGP -> Tested
    Click on "AQUI"
    Last edited: Mar 29, 2011
  2. artbio New Member

    Joined:
    Oct 23, 2009
    Messages:
    30 (0.02/day)
    Thanks Received:
    12
    Location:
    Portugal
    Guide updated with note on Microsoft ASL Compiler. Added list of patched BIOSes.
    Mussels and Cheeseball say thanks.
  3. Cheeseball

    Joined:
    Jan 2, 2009
    Messages:
    652 (0.34/day)
    Thanks Received:
    79
    Genius man. This is very useful to me and my HD 4650. :D
  4. kyky0007

    kyky0007 New Member

    Joined:
    Nov 11, 2009
    Messages:
    33 (0.02/day)
    Thanks Received:
    0
    Location:
    Timisoara/Romania
    need some help,please

    HI! i'm new around here and i'd like to ask ARTBIO a favor :)
    Can you please make for me all this things with acpitbl.bin... that you tould us above,i tried to do it,but i even cannot extract acpitbl.bin...that noob i am :shadedshu.
    i have a ASUS AH3450 512\64 and i can't install drivers because it remain stuck after windows logon screen (black screen).i've tried everything,all possible drivers,all windows 32bit versions,change irq's from bios,same result (xp-black screen/vista+win7-blue screen of death)

    please if you want to help me here are my pc specs. :toast:

    bios ver: 8i848pg_f5

    http://www.gigabyte.com.tw/Support/Motherboard/BIOS_Model.aspx?ProductID=1769

    MB : Gigabyte GA-8i848P-G
    CPU :Intel P4 2.4ghz oc.to 3.6ghz (prescott)
    DDR :2X1 Gb Kingstone
    GPU :AGP 8X AH 3450
    NB :Intel Breeds Hill i848P
    SB :Intel 82801EB ICH5
    DVD:ASUS DRW-2014S1T
    HDD:WD 80Gb-8Mb WD 500Gb-16Mb
    PSU:powre Line 530W Dual Rail (12v1-22A 12v2-20A)

    thanks in advance yahoo mess: kyky_hiphop
    mail: kyky_hiphop@yahoo.com
    sorry for my english,i'm from Romania
  5. artbio New Member

    Joined:
    Oct 23, 2009
    Messages:
    30 (0.02/day)
    Thanks Received:
    12
    Location:
    Portugal
    Yes I can try that as soon as I can. However my success here is limited to Award BIOS. The first and last AMI BIOS file I tried ended up on an unusable computer.
    What version do you want me to patch? F5?
  6. kyky0007

    kyky0007 New Member

    Joined:
    Nov 11, 2009
    Messages:
    33 (0.02/day)
    Thanks Received:
    0
    Location:
    Timisoara/Romania
    hi
    thank you very,very much for helping me :)

    i'd like you to try F5 ver. because it's the last one and i think it has some improvementrs.
    currently i have F5 ver. installed on my mobo but as i told you above...no succes with my drivers :(
    oh and don't worry,if will not work,i have a "backup" motherboard,an asrock (P4I65PG), with the latest bios ver.2.30,but i can't use it with my graphic card because it's not detected at all,no post,no image on agp card,but the onboard video card works.
    in bios is no agp\irq\pci settings,only boot screen settings (agp\pci\onboard) i had try all 3 combination with same result.so my video card it dose not work on this mobo.

    and don't worry,if will not work, i will use this mobo with onboard video

    thaks again for helping me :)

    kyky
  7. artbio New Member

    Joined:
    Oct 23, 2009
    Messages:
    30 (0.02/day)
    Thanks Received:
    12
    Location:
    Portugal
    Hi.

    There is a great chance that it will work. Since it is an Award BIOS. However I am unable to identify where in the DSDT is the problem. Since yours is very different from mine. So I need you to check one thing for me. I need the address of your AGP controller. Go to Windows Device Manager -> View -> Devices by connection. Then search for the device that your graphics card is under. Look for something like this: "PCI bus 0, device X, function Y". Tell me your X and Y. Please.
  8. artbio New Member

    Joined:
    Oct 23, 2009
    Messages:
    30 (0.02/day)
    Thanks Received:
    12
    Location:
    Portugal
    Also don't forget to check the IRQ your graphics card has right now. And report that value.
    Thanks.
  9. kyky0007

    kyky0007 New Member

    Joined:
    Nov 11, 2009
    Messages:
    33 (0.02/day)
    Thanks Received:
    0
    Location:
    Timisoara/Romania
    hi

    houston i think i have a problem :)
    i have 8 devices with name "ASUS AH3450 Series" all on IRQ (05) (with drivers installed but in safe mode)

    (1)ASUS AH3450 Series - PCI bus 1, device 0, function 0
    (2)ASUS AH3450 Series - PCI bus 1, device 0, function 1
    (3)ASUS AH3450 Series - PCI bus 1, device 0, function 2
    (4)ASUS AH3450 Series - PCI bus 1, device 0, function 3
    (5)ASUS AH3450 Series - PCI bus 1, device 0, function 4
    (6)ASUS AH3450 Series - PCI bus 1, device 0, function 5
    (7)ASUS AH3450 Series - PCI bus 1, device 0, function 6
    (8)ASUS AH3450 Series - PCI bus 1, device 0, function 7

    All PCI/IRQ settings in bios are set on auto,since if i change it has no effect for me
    Also in resources tab i have this conflicts (if will help you)
    All 8 devices had the same conflict
    Memory Range E0000000 - EFFFFFFF used by:
    ASUS AH3450 Series
    ASUS AH3450 Series
    ASUS AH3450 Series
    ASUS AH3450 Series
    ASUS AH3450 Series
    ASUS AH3450 Series
    ASUS AH3450 Series
    Input/Output Range 8C00 - 8CFF used by:
    ASUS AH3450 Series
    ASUS AH3450 Series
    ASUS AH3450 Series
    ASUS AH3450 Series
    ASUS AH3450 Series
    ASUS AH3450 Series
    ASUS AH3450 Series
    Memory Range F9070000 - F907FFFF used by:
    ASUS AH3450 Series
    ASUS AH3450 Series
    ASUS AH3450 Series
    ASUS AH3450 Series
    ASUS AH3450 Series
    ASUS AH3450 Series
    ASUS AH3450 Series

    Thanks again :) kyky
  10. artbio New Member

    Joined:
    Oct 23, 2009
    Messages:
    30 (0.02/day)
    Thanks Received:
    12
    Location:
    Portugal
    Although that information will help. That wasn't exactly what I was looking for. I mean the AH3450 is connected to a device, the AGP Controller. If you go to device manager.
    Settings -> Control Panel -> System -> Hardware -> Device Manager -> View -> Devices by connection you will be able to get that. Usually it is on PCI bus 0
  11. kyky0007

    kyky0007 New Member

    Joined:
    Nov 11, 2009
    Messages:
    33 (0.02/day)
    Thanks Received:
    0
    Location:
    Timisoara/Romania
    hi
    oh,sorry for that

    the only thing i found related to agp controller is:
    Intel 82865/PE/P/GV82848P Processor to AGP Controller - 2571

    Location: PCI bus 0, device 1, function 0

    i found this on: memory+PCI bus+intel...processor to agp controller.on next "+" will come the 8 AH3450


    hope this is the right thing :)

    thanks,kyky
  12. artbio New Member

    Joined:
    Oct 23, 2009
    Messages:
    30 (0.02/day)
    Thanks Received:
    12
    Location:
    Portugal
    Do you have devices with IRQ values above 15? Like 20,21 etc up to 23?
  13. kyky0007

    kyky0007 New Member

    Joined:
    Nov 11, 2009
    Messages:
    33 (0.02/day)
    Thanks Received:
    0
    Location:
    Timisoara/Romania
    hi,this is my IRQ list

    IRQ 0 System timer
    IRQ 1 Standard key or mouse
    IRQ 8 System CMOS/real timer clock
    IRQ 9 microsoft ACPI-compliant system
    IRQ 12 PS/2 Compatible Mouse
    IRQ 13 numeric data processor
    IRQ 14 primary IDE channel
    IRQ 15 secondary IDE channel
    IRQ 5 ASUS AH3450 Series
    IRQ 7 Intel 82801eb SMBus Controller - 24d3
    IRQ 7 Realtek AC'97
    IRQ 16 intel...usb universal host controller - 24d2
    IRQ 16 intel...usb universal host controller - 24de
    IRQ 18 intel...usb universal host controller - 24d7
    IRQ 18 Silicon Image Sil 3512 SATARaid controller
    IRQ 19 intel...usb universal host controller - 24d4
    IRQ 20 Marvell Yukon Ethernet
    IRQ 23 intel...usb universal host controller - 24dd

    i believe 10,17,21,22 are empty

    thanks kyky
  14. artbio New Member

    Joined:
    Oct 23, 2009
    Messages:
    30 (0.02/day)
    Thanks Received:
    12
    Location:
    Portugal
    OK.

    Your DSDT doesn't have an AGP section that describes IRQ routing, so I had to add one. I think this is kind of dangerous. I have never tried it. So you need to do a little experiment before I do any BIOS editing that could ruin your motherboard. Download Microsoft ASL Compiler from here -> http://download.microsoft.com/downl...e4bf7b65496/Microsoft_ASL_Compiler-v4-0-0.msi
    Install it. Now download the aml file I provide and copy it over to the directory where "asl.exe" is. Open a command prompt on that directory and load the aml file with the following command:

    Code:
    asl.exe /loadtable -v -d DSDT.aml
    
    Reboot your PC after that. Your PC might not boot into Windows. In that case I think you need to reinstall it. That's better than kill a motherboard for good. If it works than report back. Then I will incorporate the DSDT in the BIOS file and it's safe to flash it.

    Edit: Attachment removed.
    Last edited: Nov 15, 2009
  15. kyky0007

    kyky0007 New Member

    Joined:
    Nov 11, 2009
    Messages:
    33 (0.02/day)
    Thanks Received:
    0
    Location:
    Timisoara/Romania
    oky ill try it right now :)
  16. kyky0007

    kyky0007 New Member

    Joined:
    Nov 11, 2009
    Messages:
    33 (0.02/day)
    Thanks Received:
    0
    Location:
    Timisoara/Romania
    oky it works :) after installing Microsoft ASL complier, copy aml file in his folder.execute that command and resatrt. windows boot up normaly,i didn't notice any changes

    thanks kyky
  17. artbio New Member

    Joined:
    Oct 23, 2009
    Messages:
    30 (0.02/day)
    Thanks Received:
    12
    Location:
    Portugal
    It works how?
    What is your IRQ list now? Can you install drivers now?
  18. kyky0007

    kyky0007 New Member

    Joined:
    Nov 11, 2009
    Messages:
    33 (0.02/day)
    Thanks Received:
    0
    Location:
    Timisoara/Romania
    now i am installing drivers and i will tell you my IRQ list right away
    the windows works afther what i did so that's a good thing,no?
  19. kyky0007

    kyky0007 New Member

    Joined:
    Nov 11, 2009
    Messages:
    33 (0.02/day)
    Thanks Received:
    0
    Location:
    Timisoara/Romania
    oky i'vd install drivers and reboot,windows remain locked up after boot screen (like before)
    and i was not found changes in my IRQ list,here it is:

    IRQ 0 System timer
    IRQ 1 Standard key or mouse
    IRQ 8 System CMOS/real timer clock
    IRQ 9 microsoft ACPI-compliant system
    IRQ 12 PS/2 Compatible Mouse
    IRQ 13 numeric data processor
    IRQ 14 primary IDE channel
    IRQ 15 secondary IDE channel
    IRQ 5 ASUS AH3450 Series
    IRQ 7 Intel 82801eb SMBus Controller - 24d3
    IRQ 7 Realtek AC'97
    IRQ 16 intel...usb universal host controller - 24d2
    IRQ 16 intel...usb universal host controller - 24de
    IRQ 18 intel...usb universal host controller - 24d7
    IRQ 18 Silicon Image Sil 3512 SATARaid controller
    IRQ 19 intel...usb universal host controller - 24d4
    IRQ 20 Marvell Yukon Ethernet
    IRQ 23 intel...usb universal host controller - 24dd

    but windows didn't lock up like you say it probably will hapend

    i had compare the 2 lists and are the same :(
  20. artbio New Member

    Joined:
    Oct 23, 2009
    Messages:
    30 (0.02/day)
    Thanks Received:
    12
    Location:
    Portugal
    Yes that's good news.
    You should have two devices on IRQ 17 your AH3450 and an High Definition Audio Device. Just check that for me. If everything works fine, I will incorporate these modifications into your BIOS. And your problems should go away definitely. Before that please don't uninstall the Microsoft ASL Compiler. You will have to unload the DSDT again, before flashing your BIOS.
  21. artbio New Member

    Joined:
    Oct 23, 2009
    Messages:
    30 (0.02/day)
    Thanks Received:
    12
    Location:
    Portugal
    That shouldn't happen. I guess the DSDT wasn't loaded. The only way is BIOS flashing. Do you want to try that?
  22. kyky0007

    kyky0007 New Member

    Joined:
    Nov 11, 2009
    Messages:
    33 (0.02/day)
    Thanks Received:
    0
    Location:
    Timisoara/Romania
    if i have no option left,i will try it :)
  23. kyky0007

    kyky0007 New Member

    Joined:
    Nov 11, 2009
    Messages:
    33 (0.02/day)
    Thanks Received:
    0
    Location:
    Timisoara/Romania
    i think i was do it correctly because after "asl.exe /loadtable -v -d DSDT.aml" and hit "enter" it was telling me something but i don't memorize what.if ill do it again i will tell you what that numbers are
  24. artbio New Member

    Joined:
    Oct 23, 2009
    Messages:
    30 (0.02/day)
    Thanks Received:
    12
    Location:
    Portugal
    OK.

    Here it is.

    Edit: Deleted attached file.
    Last edited: Nov 16, 2009
  25. kyky0007

    kyky0007 New Member

    Joined:
    Nov 11, 2009
    Messages:
    33 (0.02/day)
    Thanks Received:
    0
    Location:
    Timisoara/Romania
    oky,after bios,shoud i reinstall my windows? to be a clean copy?

Currently Active Users Viewing This Thread: 1 (0 members and 1 guest)

Share This Page