R9 280X Mac Flash aber kein Bootscreen im 5.1

Barney Finch

Mitglied
Thread Starter
Dabei seit
28.11.2022
Beiträge
30
Reaktionspunkte
7
Moin Leute,

Ich habe mir frisch einen 2010er (Original 5.1) MP 12-Core und eine R9 280X mit Mac BIOS angeschafft.

Komischerweise bekomme ich keinen Bootscreen über den HDMI Port. Am HDMI Port ist ein alter 32 Zoll TV angeschlossen momentan.

Zudem wird mir die R9 nicht bei „über diesen Mac“ angezeigt. Ich habe mir jetzt einen DisplayPort Adapter bestellt und will mein Cinema Display 27 an dem DP Port anschließen.

Meint ihr das ich dann einen Bootscreen bekomme und die Grafikkarte wieder angezeigt bekomme?

Vielleicht hatte jemand das gleiche Problem.

Cheers
Barney
 

Anhänge

  • B83A8271-A2D2-414C-8BB9-4AD871BBA662.jpeg
    B83A8271-A2D2-414C-8BB9-4AD871BBA662.jpeg
    305,5 KB · Aufrufe: 69
Hatte die Karte von der das ROM stammt einen HDMI Ausgang?

Findest du die Karte in der Systeminformation?
Falls nicht, steht im ROM keine für MacOS bekannte Kennung.
 
Ich vermute mal, dass du den Bootscreen nur über einen der DVIs bekommst. Ich habe selbst eine HD7950, bei der ist das so, soweit ich mich erinnere. Und die sind ja recht nah verwandt.
 
Hatte die Karte von der das ROM stammt einen HDMI Ausgang?

Findest du die Karte in der Systeminformation?
Falls nicht, steht im ROM keine für MacOS bekannte Kennung.
Das weiß ich nicht. Die Karte war in einem 4.1 MP verbaut und hatte einen Bootscreen
 
Bei einigen Karten geht der HDMI nach dem Flash nicht mehr, ist ein bekanntes Problem.
 
so ist es. adapter von DVI auf HDMI probieren.

mit viel Fleiß kann man die Original Firmware suchen und ein Rom selber bauen. Dann geht vielleicht der HDMI.

Viele nehmen aus Faulheit oder Unwissen ein Rom einer änderen Karte der ähnlichen Bauart und dann gehen nicht mehr alle Ausgänge.

Ist aber keine Garantie. Bei einer Tahiti Karte die ich hier habe hat der HDMI nach Patch und Flash der Original Firmware funktioniert. Bei Anderen wieder nicht…
 
Es gibt Karten, bei denen weicht eine der IDs ab, das kann man nicht ändern (hardware-abhängig). Bei neueren Versionen der Karte kam diese Anpassung; solche Karten funktionieren unter OSX nur als PC-Karte vollständig.

Durch Anpassung könnte man möglicherweise den Bootscreen auf dem Port bekommen, aber unter OSX existiert keine passende Framebuffer-personality, jedenfalls nicht ohne Mods am Betriebssystem.
 
Guter Einwand, möglich dass dieses Mod OpenCoreLegacyPatcher mit einbaut und ich unter OC und Monterey getestet hab.

Ich hatte auch schon den Effekt: Bootscreen über HDMI und dann ab Treiber laden dunkel. Und auch als zweiter Monitor über HDMI ok wenn an DVI der Erste war. Das kann aber auch gut unter OC gewesen sein.
 
mit viel Fleiß kann man die Original Firmware suchen und ein Rom selber bauen. Dann geht vielleicht der HDMI.

Viele nehmen aus Faulheit oder Unwissen ein Rom einer änderen Karte der ähnlichen Bauart und dann gehen nicht mehr alle Ausgänge.
...wobei die Ausgänge an sich im Framebuffer des Treibers konfiguriert werden.

So habe ich z. B. bei meiner XFX HD 7950 durch Anpassung des Hamachi Framebuffers im AMD7000Controller.kext den zweiten DVI zum Laufen bekommen.

So sah der original aus...

Code:
00040000 04030000 00010101 00000000 12040501 00000000
00040000 04030000 00010201 00000000 22050402 00000000
04000000 14020000 00010300 00000000 00000306 00000000
00080000 04020000 00010400 00000000 11020104 00000000

...und so danach.

Code:
04000000 14020000 00010100 00000000 21030104 00000000
04000000 14020000 00010200 00000000 00000306 00000000
00040000 04030000 00010301 00000000 12040501 00000000
00080000 04020000 00010400 00000000 11020603 00000000

Ist halt „ein bißchen“ Gefummel. 😁

Hier noch die Erläuterung zu den Connector-Typen:

Code:
VGA             0 × 00000010 =     10 00 00 00        VGA, Analog
DVISL         0 × 00000200 =     00 02 00 00        Single Link DVI
DVIDL         0 × 00000004 =     04 00 00 00         Dual Link DVI
SV             0 × 00000080 =     80 00 00 00        S-Video
DP            0 × 00000400 =    00 04 00 00        Display Port
HDMI         0 × 00000800 =     00 08 00 00        HDMI
LVDS         0 × 00000002 =     02 00 00 00         Laptop Monitor

Für den Connector-Typ stehen die ersten vier Bytes, wobei das Ganze „word-flipped“ ist. Aus 00 00 00 04 für Dual Link DVI wird im tatsächlichen Frambuffer (Hex) dann also 04 00 00 00.

Im Prinzip muss man dann eigentlich „nur“ noch die richtigen Connector-Typen entsprechend den tatsächlich an der Karte vorhandenen Anschlüssen belegen. So hat die ungepatchte Version zweimal Display Port, einmal Dual Link DVI und einmal HDMI, die gepatchte zweimal Dual Link DVI, einmal Display Port und einmal HDMI (wobei leider nur einer der DVIs tatsächlich ein Dual Link Signal liefert).
 
Danke für Eure Ratschläge.

Ich habe jetzt eine ganz ganz einfache Lösung gefunden: Die Karte hat einen BIOS Schalter mit einer geflasheten HD7970 Firmware… und tada, siehe da, ein Bootscreen! :)

Nur weiterhin merkwürdig und unbefriedigend ist, dass sie mir nicht im MacOS Infofenster angezeigt wird sondern nur in der Hardwareübersicht.

Geekbench identifiziert sie weiterhin als R9 280X - was auch nicht unwahrscheinlich ist das es sich im Prinzip um die gleiche GPU handelt.

Vielleicht liegt es am gepatchten Monterey, ich weiß es nicht. Ich habe den Mac Pro so vorinstalliert bekommen und der Vorbesitzer auch 😂

Frühe hatte ich solche Baustellen nie mit diesen Maschinen…

Hat jemand dazu noch ne Idee?
 

Anhänge

  • CAA39DC3-93CC-4AE5-821C-D786B69F163B.jpeg
    CAA39DC3-93CC-4AE5-821C-D786B69F163B.jpeg
    222,2 KB · Aufrufe: 55
Nur weiterhin merkwürdig und unbefriedigend ist, dass sie mir nicht im MacOS Infofenster angezeigt wird sondern nur in der Hardwareübersicht.
Das ist nicht merkwürdig, die haben eine Kennung auf dem PCI Bus.
Guck da mal.
Meine ATI9800 damals hat sich da mit ATY irgendwas oder so gemeldet.
Wenn das OS jetzt den String nicht kennt im Treiber, dann ersetzt das den nicht durch einen Namen.
 
Zeig mal die ersten paar Zeilen von Open Core‘s config.plist damit man sieht welche Geschmacksrichtung der Patch ist.

Ist in der ESP.

Wie mounten?

am doofsten und einfachsten ist im Terminal

sudo diskutil mount disk0s1

das wiederholst du solange mit disk1s1 disk2s1 usw bis ein Volume EFI auf dem Desktop ist was einen Ordner OC enthält.

dann per diskutil list schauen auf welcher Platte/SSD die ESP ist. Das merkst und notierst du dir. Ist wichtig zu wissen. Und bei der Gelegenheit machst gleich ein Backup von der ESP die OpenCore enthält.
 
oder du machst zuerst

sudo diskutil list

und wählst die richtige EFI partitionnummer aus,
und gibts die dann so zum mounten ein:

sudo diskutil mount /dev/diskXsX

X = die gesuchte partitionnummer wie zB disk3s2
 
Er weiß ja wahrscheinlich nicht mal was installiert ist, was eine ESP ist und auf welcher Platte/SSD es drauf ist wenn er den Rechner so bekommen hat.

Deshalb das händische durchscannen ;-)
 
hab da mal ein Scripts gebaut was

1.) alle ESP die Auffindbar sind mit einem Tag File versieht mit dem Typ der SSD/HDD/USB Stick oder was auch immer. Zum Zuordnen.
2.) die ESP gemountet hält mit dem geblessten Bootlader. Oder falls nicht per Bless zuzuordnen die erste ESP mit Bootlader die gefunden wird

ESP=E)fi S)system P)artition

(in Script Editor kopieren und als App speichern)

example.png




AppleScript:
-- case sensitive

global big_sur -- and later
global my_password
global media_name

set my_password to "test"


try
    set boot_rom_version to last word of (do shell script "system_profiler SPHardwareDataType | grep -i \"Boot Rom Version\"")
  
    if (length of boot_rom_version is 7) and (character 1 of boot_rom_version is "1") then -- older Systems like Mavericks truncates the sn
        set boot_rom_version to boot_rom_version & ".0"
    end if
  
    set big_sur to false
  
  
  
on error --Big Sur
    set boot_rom_version to last word of (do shell script "system_profiler SPHardwareDataType | grep -i \"System Firmware Version\"")
    set big_sur to true
end try


try -- unmount all ESPs found
    set all_esp to do shell script "ls /Volumes | grep EFI"
  
    repeat with the_esp in every paragraph of all_esp
        try
            do shell script "diskutil unmount /Volumes/" & quoted form of the_esp
        end try
    end repeat
end try



try
    set EFI_List to do shell script "diskutil list | grep 'EFI EFI'"
on error --Monterey
    set EFI_List to do shell script "diskutil list | grep 'EFI'"
end try




-- is it blessed by /dev/disk?s1 ?

try
  
    set current_blessing to do shell script ("bless --getboot")
  
  
    if current_blessing ends with "s1" then
        do_shell_script_sudo("diskutil mount " & current_blessing)
        tag_esp(current_blessing) -- √
      
        tell application "Finder"
            activate
            try
                open disk "EFI"
                display dialog "blessed bootloader found at" & return & current_blessing
            on error
                display dialog "no bootloader found"
            end try
        end tell
        return -- end the script, we're done
    end if
  
  
on error
    set current_blessing to ""
    try
        set uuid_bless to do shell script ("Bless --getboot --verbose")
      
    on error uuid_bless -- verbose gives uuid of ESP
        --display dialog "error uuid_bless" & return & uuid_bless
    end try
  
end try




repeat with the_disk in every paragraph of EFI_List
  
    set disk_x_s_1 to (last word of (the_disk as string))
  
    try
        set uuid to ""
      
        set uuid_raw to (do shell script ("diskutil info " & disk_x_s_1 & " | grep 'Partition UUID'"))
              
        set uuid to ((word -5 of uuid_raw) & "-" & (word -4 of uuid_raw) & "-" & (word -3 of uuid_raw) & "-" & (word -2 of uuid_raw) & "-" & (word -1 of uuid_raw)) as text
      
      
      
      
      
      
        if uuid is in uuid_bless then -- it's wtf but uuid_bless needs my
            set current_blessing to "/dev/" & disk_x_s_1
            set esp_from_uuid to true
            do_shell_script_sudo("diskutil mount " & current_blessing)
            tag_esp(current_blessing)
            display dialog "blessed bootloader found at:" & return & current_blessing & return & return & "blessed by uuid:" & return & uuid
            tell application "Finder"
                activate
                try
                    open disk "EFI"
                on error
                    display dialog "no bootloader found by uuid method"
                end try
            end tell
            return -- end the script, we're done, found via disk uuid
        end if
      
      
    end try
  
end repeat






-- no blessed bootloader found, scan thru all ESPs I can find and check for OC, Refind(plus) or OCLP bootloaders



repeat with x in every paragraph of EFI_List
    set diskxsy to last word of x
  
    delay 1
  
  
    do_shell_script_sudo("diskutil mount " & diskxsy)
  
    repeat
        delay 0.1
        if folder_exists("/Volumes/EFI") then exit repeat -- wait for mounted EFI Volume
    end repeat
  
  
  
    tag_esp(diskxsy)
  
  
    set oc_diskxsy to ""
  
  
    if file_exists("/Volumes/EFI/EFI/BOOT/BOOTx64.efi") or file_exists("/Volumes/EFI/System/Library/CoreServices/boot.efi") then
        set oc_diskxsy to diskxsy     
        exit repeat
    else
        do_shell_script_sudo("diskutil unmount " & diskxsy)
    end if
end repeat





if oc_diskxsy is not "" then display dialog media_name & return & "has a Bootloader located at " & oc_diskxsy buttons {"OK"} giving up after 10

tell application "Finder"
    activate
    try
        open disk "EFI"
    on error
        display dialog "no bootloader found"
    end try
end tell



on file_exists(thEFIle) -- (String) as Boolean
    tell application "System Events"
        if exists file thEFIle then
            return true
        else
            return false
        end if
    end tell
end file_exists





on folder_exists(theFolder) -- (String) as Boolean
    tell application "System Events"
        if exists folder theFolder then
            return true
        else
            return false
        end if
    end tell
end folder_exists





on do_shell_script_sudo(the_text)
  
    if my_password is not "" then
      
        if big_sur then
            try -- if the password is wrong it runs into an error
                return do shell script "echo " & my_password & " | sudo -S " & the_text
            on error number errorNumber
                display dialog "do_shell_script_sudo: Error: " & (errorNumber as text) & return & the_text
                return do shell script the_text with administrator privileges
                -- and ask for the correct password
            end try
          
        else -- not big sur
            return do shell script the_text password my_password with administrator privileges
        end if
      
    else -- no password given
        return do shell script the_text with administrator privileges
    end if
  
end do_shell_script_sudo





on tag_esp(the_partition)
  
    set the_current_disk to (characters 1 thru -3 of the_partition) as string
  
  
  
    set media_name to do shell script "diskutil info " & the_current_disk & " | grep 'Media Name'"
  
  
    set AppleScript's text item delimiters to ":"
    set media_name to the last text item of media_name
  
    set AppleScript's text item delimiters to ""
  
  
    try
        do_shell_script_sudo("touch /Volumes/EFI/" & (quoted form of media_name)) -- make a tag
        return 1
    end try
    return 0
end tag_esp
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Barney Finch, Proinnsias, luxus13 und eine weitere Person
Wegen der falschen Kartenbezeichnung unter macOS: Wahrscheinlich kommt die von der Karte und ist rein kosmetisch; bei vielen für den Mac umgeflashten Karten wurde das netkas-Script verwendet, der Code sieht aber keine R9, sondern HDxxxx vor.
 
Besten Dank für den Script und für die Mühe an Macschrauber!

Ich habe jetzt aber eine radikale Lösung gefunden und einfach Mojave draufgespielt was für mich sinnvoller ist, da ich auch mal 32-Bit Audio Units arbeite.

Mojave hat zu dem auch W-LAN und Bluetooth Probleme behoben. Ich konnte mich nicht verbinden vorher trotz PRAM Reset und co. Der Vorbesitzer hat das Teil so zerhauen und dann verkauft 😂
 
Wegen der falschen Kartenbezeichnung unter macOS: Wahrscheinlich kommt die von der Karte und ist rein kosmetisch; bei vielen für den Mac umgeflashten Karten wurde das netkas-Script verwendet, der Code sieht aber keine R9, sondern HDxxxx vor.

Ja genau so ist es. Ich bekomme sie jetzt als HDxxxx angezeigt
 
Ich habe jetzt aber keinen Bootscreen mehr bei gedrückter ALT Taste. Entweder bootet er direkt in macOS oder der Bildschirm Bild schwarz. Ich verstehe es einfach nicht. Ich hatte bereits im Studio das gleiche setup in zweifacher Ausführung gehabt (Damals hab ich die R9 mit Mac BIOS für viel Geld beim Händler gekauft) und alles war tip top
 
Zurück
Oben Unten