Jump to content

[Aiuto] ati mobility radeon 4xxx


David23
 Share

56 posts in this topic

Recommended Posts

In questo topic della sezione internazionale si parla delle mobility 4xxx con le novità portate dai kext presi da Lion e sembra che alcuni utenti siano riusciti a farle funzionare perfettamente, soprattutto kizwan che ha scritto praticamente una guida al post 120 per i 32bit e in seguito per i 64bit (anche se mi interessa poco che sia 32 o 64bit).

Il problema è che non sono riuscito a capire molto, ho scaricato ioregistryexplorer e adesso provo a estrarre il bios della mia scheda video, ma non ho capito cosa bisogna fare per seguire quella guida, sono praticamente tutti numeri, qualcuno riesce a spiegarmi brevemente cosa devo provare a fare?

Link to comment
Share on other sites

In questo topic della sezione internazionale si parla delle mobility 4xxx con le novità portate dai kext presi da Lion e sembra che alcuni utenti siano riusciti a farle funzionare perfettamente, soprattutto kizwan che ha scritto praticamente una guida al post 120 per i 32bit e in seguito per i 64bit (anche se mi interessa poco che sia 32 o 64bit).

Il problema è che non sono riuscito a capire molto, ho scaricato ioregistryexplorer e adesso provo a estrarre il bios della mia scheda video, ma non ho capito cosa bisogna fare per seguire quella guida, sono praticamente tutti numeri, qualcuno riesce a spiegarmi brevemente cosa devo provare a fare?

 

Non ho letto tutto il topic da te suggerito.

 

se hai la scheda funzionante con la procedura descritta, posta il tuo IOREG vediamo di estrarre i dati, sempre che sia "li" la soluzione...

 

Fabio

Link to comment
Share on other sites

Ok, adesso sono su windows, lo posto fra 5 minuti

 

EDIT: eccolo allegato

ok scaricato...

 

Domanda.

 

Che tu sappia con che framebuffer dovrebbe lavorare la tua 4xxx?

 

Fabio

Link to comment
Share on other sites

Penso con Vervet, ma ne hanno usato un'altro in quel topic

 

EDIT: trovato il post, dicono di usare Birds http://www.insanelymac.com/forum/index.php...p;#entry1655182

 

LOL :(

 

E' "tosta" la modifica...

 

Ci devo spremere le idee un po...

stasera(...notte...) ci metto mano...

se risolvi prima avvisa...

 

Fabio

 

Intanto riesci a fare un dump del BIOS della tua scheda grafica???

Se sei a 32 bit non è difficile... guarda qui... su project Video Bios Dumps

 

e postalo pls.

Link to comment
Share on other sites

Ok, grazie mille Fabio.

 

P.S. piccolo problema, non riesco ad estrarre il bios della scheda video con radeondump perchè mi dice can't find atom bios o una cosa del genere, nel caso posto l'errore; va bene anche il bios di una mobility 4570 qualsiasi o serve proprio quello del mio portatile (che sarà difficile da ottenere mi sa)?

 

EDIT: provo il metodo di project

 

EDIT2: il metodo di project per fortuna funziona XD ecco la rom allegata

VBIOS_2.zip

VBIOS_2.zip

Link to comment
Share on other sites

Ok, grazie mille Fabio.

 

P.S. piccolo problema, non riesco ad estrarre il bios della scheda video con radeondump perchè mi dice can't find atom bios o una cosa del genere, nel caso posto l'errore; va bene anche il bios di una mobility 4570 qualsiasi o serve proprio quello del mio portatile (che sarà difficile da ottenere mi sa)?

 

EDIT: provo il metodo di project

 

EDIT2: il metodo di project per fortuna funziona XD ecco la rom allegata

 

ok...

la tua sarebbe questa???

9553.0301.00E0.vga.rom

 

Fabio

Link to comment
Share on other sites

bcc9 ha davvero dato il via al sacro graal per le mobility su LVDS. Ho fatto felice un amico. E il bello è che il metodo in teoria DEVE funzionare su TUTTE le mobility. E' stupefacente. Creati il tuo custom framebuffer, ne godrai.

 

Cerca però di lavorarci tu, che sensazione goduriosa avresti se lavorasse fabio per te.

btw good luck :wacko:

Link to comment
Share on other sites

bcc9 ha davvero dato il via al sacro graal per le mobility su LVDS. Ho fatto felice un amico. E il bello è che il metodo in teoria DEVE funzionare su TUTTE le mobility. E' stupefacente. Creati il tuo custom framebuffer, ne godrai.

 

Cerca però di lavorarci tu, che sensazione goduriosa avresti se lavorasse fabio per te.

btw good luck :wacko:

 

Ha ragione Smith@@

La goduria sarebbe farsi la pappa da soli...

 

Ad ogni modo io una ATI non la possiedo...

 

Ti do una piccola dritta...

- Fai il dump da OS X con il tool trovato su Project

- Scarica il Secondo tool di bbc9. occhio che si chiama allo stesso modo!!

- da terminale ho trovato questo..

bash-3.2# ./RadeonDump < 9553.0301.00E0.vga.rom
ATOM BIOS Rom: 
SubsystemVendorID: 0x1025 SubsystemID: 0x0212
IOBaseAddress: 0x5000
Filename: BR34582.001 
BIOS Bootup Message: 
BR34582.001 M92 DDR2 64bit 680e/500m                                        

Connector at index 0 type: LVDS (7)
Connector's i2cid: 96
Connector at index 1 type: VGA (1)
Connector's i2cid: 90
bash-3.2# ./RadeonDump < 9553.0301.00E0.vga.rom > connector.txt
bash-3.2# 

ho fatto una seconda prova con una ROM sempre della tua gfx scaricata dal web (4570???)

bash-3.2# ./RadeonDump < ATI.MobilityHD4570.0.090219.bin
ATOM BIOS Rom: 
SubsystemVendorID: 0x1002 SubsystemID: 0x9553
IOBaseAddress: 0x0000
Filename: BR32059.001 
BIOS Bootup Message: 
Acer_B796_M92M2_XT_DDR2 M92 DDR2 64bit 680e/500m                            

Connector at index 0 type: LVDS (7)
Connector's i2cid: 94
Connector at index 1 type: VGA (1)
Connector's i2cid: 95
Connector at index 2 type: HDMI-A (11)
Connector's i2cid: 90
Connector at index 3 type: DisplayPort (10)
Connector's i2cid: 91

- Ora le differenze ci sono quindi è importante che il dump sia della tua!

 

:(

 

Fabio

Link to comment
Share on other sites

Primo dubbio: per poter utilizzare otools mi devo scaricare tutto il dvd developer tools?

L'ho trovato e sono 751,17 MB e se devo scaricarlo tutto ci vuole un bel pò....

 

Ma quale strada stai seguendo?

 

ho corretto un passaggio che ti postai ieri... (era "sbagliato")

 

./RadeonDump connector.TXT

 

In questo modo legge la rom e il risultato lo salva nel file connector.txt

 

Fabio

Link to comment
Share on other sites

Non sono ancora sicuro su quale metodo seguire....

stavo vedendo un pò le varie guide per vedere quale fosse la più semplice, credo che sia quella mucha forse.

Tu quale mi consigli di seguire?

Per adesso le ho lette tutte e tre, quella di mucha, quella di bcc9 e quella di kizwan.

Quella di kizwan mi sembra più specifica per la mobility 4350, quindi sono più improntato verso le altre.

Adesso devo decidere quale seguire e probabilmente provo a fare una traduzione per comprendere meglio tutti i passaggi

Link to comment
Share on other sites

Non sono ancora sicuro su quale metodo seguire....

stavo vedendo un pò le varie guide per vedere quale fosse la più semplice, credo che sia quella mucha forse.

Tu quale mi consigli di seguire?

Per adesso le ho lette tutte e tre, quella di mucha, quella di bcc9 e quella di kizwan.

Quella di kizwan mi sembra più specifica per la mobility 4350, quindi sono più improntato verso le altre.

Adesso devo decidere quale seguire e probabilmente provo a fare una traduzione per comprendere meglio tutti i passaggi

 

Io sceglierei la strada dove non devo compilare nulla...

Ho letto velocemente quella di mucha, ma se vuoi capire il procedimento e le sue varianti studiati bene quella di bbc9...

 

Io da qui no posso andare oltre alla lettura del dump... non ho una ATI

 

Magari potrebbe essere una buona occasione per farne una guida Italiana...

 

Fabio

Link to comment
Share on other sites

sto traducendo la guida di bbc9, così ci capisco qualcosa in più e può essere utile anche ad altri.

EDIT: traduzione completata con qualche riga dove sono incerto, qualcuno se ha tempo può dare un'occhiata e vedere se ho tradotto bene o ho sbagliato ad interpretare qualcosa?

 

inizio traduzione

Prerequisiti:

Installazione di OSX Developer tools (per fare le modifiche con otools)

Somewhat working install of ATI radeon HD[45]xx card with Kabyl's chameleon branch: http://www.insanelymac.com/forum/index.php?showtopic=231768

Capire l’hex editing

Saper usare ioregistry, capire come testare le modifiche ATI usando ATIConfig

Attualmente ci sono 26 ATI framebuffer nel info.plist del kext ATIFramebuffer.

Alcuni di essi contengono delle informazioni codificate sull’hardware della scheda video. Una parte de esse è la chiave per far riconoscere il connettore del display, è conosciuta come ConnectorInfo all’interno dei driver ATI.

La struttura del ConnectorInfo è diversa per ogni periferica che può essere collegata alla scheda video. (Due porte DVI ports hanno un solo ConnectorInfo). Ogni framebuffer ha una tabella propria della struttura dei ConnectorInfo.

 

Essa può essere rappresentata come la struttura di 16 byte seguente scritta in C:

typedef struct {
		int ConnectorType;	/* known values below */
	#define CONNECTORTYPE_LVDS 0x00000002	/* Ie internal Low Voltage display,
							  such as laptop */
	#define CONNECTORTYPE_DVI  0x00000004
	#define CONNECTORTYPE_DP   0x00000400	/* Displayport */
	#define CONNECTORTYPE_HDMI 0x00000800
		int flags;
		int features;
		byte link_i2cid;	/* Bits 0-3: i2cid
				   Bits 4-7: link transmitter link */
		byte dac_digidx;	/* Bits 0-3: link encoder number
				   Bits 4-7: link dac number */
		byte hotplugid;
		byte senseid;	/* Sense line is bits 0-3
				  Use hw i2c flag is bit 4 */
		/* i2cid = (senseid & 0xf-1)+0x90 */
		/* senseid = (i2cid & 0xf) +1*/
	} ConnectorInfo;

 

I numeri interi sono rappresentati in intel little-endian byte order, e il bit 0 è il LSB.

(Inglese - Italiano - little-endian

computer dotato di memoria che salva il byte meno significante di una serie nell'indirizzo più basso (e il byte più significante nell'indirizzo più alto)

 

Guardiamo il codice dei driver a 32-bit per impostare il ConnectorInfo.

otool -arch i386 -vt ATIFramebuffer | c++filt | grep createInfo

Questo comando vi da la lista dei 26 framebuffer.

Per ogni modifica, l’initialization routine mette un contatore ed un indicatore a in un ordine statico nel ConnectorInfo.

 

Ho scritto uno script che analizzerà le initialization routines e calcolerà l’effettivo indirizzo della tabella del ConnectorInfo e il numero di voci della tabella. Lo script attualmente fornisce informazioni per tutti i framebuffer trovati in ATIFramebuffer.kext.

usate:

perl ati-personality.pl

per avere le informazioni del kext a 32-bit, o

perl ati-personality.pl -x

per quelle a 64bit

 

Guardate parsing-assembly.txt nel file zip allegato per avere delle istruzioni se volete calcolare il vostro vero valore personalmente a mano.

 

Per esempio guardiamo la parte del kext di 10.6.6 a 32-bit, e il uakari ConnectorInfo. Da ati-personality.pl otteniamo:

Personality: Uakari															
ConnectorInfo count in decimal: 4											  
Effective address for ConnectorInfo table in hex: 111c0

Poi dovremo convertire questo indirizzo di memoria virtuale in un offset del file per perché è più facile da vedere e modificare.

1. lipo -detailed_info ATIFramebuffer

riporta gli offset per il FAT binary. Nel campo del offset sull’architettura i386, vediamo 155648 (decimal)

2. otool -arch i386 -l ATIFramebuffer

Trovare la parte che il cui indirizzo+dimensione include i seguenti indirizzi virtuali nel suo campo (111c0). In questo caso abbiamo un segmento di dati che inizia a 111c0 esattamente. otool riporta un file offset di 70904 (decimal) per quel segmento.

3. Quindi l’indirizo nel disco per questo indirizo virtual è:

offset_in_file = start_offset_for_architecture + offset_for_segment + virtual_address - start_address_for_segment

 

dove start_offset_for_architecture come riportato da lipo sopra

start_address_for_segment, offset_for_segment come riportato da otool sopra

virtual_address è l’indirizzo ottenuto dalle istruzioni addl.

 

Numericalmente, l’indirizzo sul disco è:

 

155648+70904+0x111c0-0x111c0=226552

4.

Adesso guardiamo all’interno del ConnectorInfo. Siccome ci sono 4 connectori per questo framebuffer, dobbiamo guardare i 64 bytes:

 dd if=ATIFramebuffer of=/tmp/uakari bs=1 skip=226552 count=64
		 od -Ax -tx1 /tmp/uakari
		 000000 00 04 00 00 00 04 00 00 00 01 00 00 12 04 04 01
		 000010 04 00 00 00 14 00 00 00 00 01 00 00 01 12 01 03
		 000020 00 02 00 00 14 00 00 00 00 01 00 00 00 00 06 05
		 000030 00 08 00 00 00 02 00 00 00 01 00 00 22 05 05 04
		 000040

Quindi per questo framebuffer abbiamo

connector-type 0x0400=displayport at port 0

connector-type 0x0004=DVI at port 1

connector-type 0x0002=?? at port 2

connector-type 0x0800=HDMI at port 3

Bootando col chameleon di kabyl con branch sulla mia Sapphire Radeon 5670 con questo framebuffer funzionano DVI e HDMI (senza audio). Questo denota che c’è un errore nel codice, principalmente il framebuffer Baboon (di default con 3 connectori) in Uakari risultano 3 stringhe iniettate e non 4. Quindi delle porte hardware della 5670 corrispondono solo le prime 3 stringhe nella tabella di uakari.

 

Guardando in ioregistry, si può vedere che le uscite 1&2 corrispondono e l’uscita 0 no. (ATY_ActiveFlags != 1 quando l’uscita corrisponde).

Quindi la mia uscita HDMI corrisponde ma con il connettore sbagliato (0x0002). Questo è la causa del non funzionamento dell’audio nel HDMI.

Per correggerlo ho sovrascritto bytes 0 thru 15 of port 2's table entry with port 3's.

Si può fare usando il vostro hex-editor preferito. Io ho usato emacs, seguendo l’ascii editing, followed by xxd -r is probably a less awkard choice.

 

La tabella risultante con la 3° riga cambiata:

 od -Ax -tx1 /tmp/uakari
		 000000 00 04 00 00 00 04 00 00 00 01 00 00 12 04 04 01
		 000010 04 00 00 00 14 00 00 00 00 01 00 00 01 12 01 03
		 000020 00 08 00 00 00 02 00 00 00 01 00 00 22 05 05 05
		 000030 00 08 00 00 00 02 00 00 00 01 00 00 22 05 05 04
		 000040

Adesso la mia uscita audio HDMI è riconosciuta di tipo 0x0800, con le normali flag HDMI, ma con la linea giusta (0x05). E viola, l’audio HDMI adesso funziona!

 

Dopo, la mia Sapphire radeon 5670 ha tre uscite - HDMI, DVI e l’uscita del display, e, ahimè, questa modifica funziona solo con due di loro, anche se la modifica non include l’uscita del connettore del display. Fortunatamente sono stato capace di trovare un framebuffer diverso con il quale ha funzionato la porta del display, il framebuffer di Vervet.

 

Usando la procedura sopra, ho trovato le ConnectorInfo di Vervet

0x11200, with 4 connectors. On disk:

155648+70904+0x11200-0x111c0=226616

 

 dd if=ATIFramebuffer of=/tmp/vervet bs=1 skip=226616 count=64
		 od -Ax -tx1 /tmp/vervet
		 000000 00 04 00 00 00 04 00 00 00 01 00 00 12 04 04 02
		 000010 04 00 00 00 14 00 00 00 00 01 00 00 01 12 01 04
		 000020 00 02 00 00 14 00 00 00 00 01 00 00 00 00 06 03
		 000030 00 08 00 00 00 02 00 00 00 01 00 00 22 05 05 01
		 000040

Nella mia scheda infatti ora corrisponde l’uscita 0 della porta del display, come si vede in ioregistry.

Quindi copiato il senseid funzionante field dal framebuffer vervet ad Uakari (sostituendo lo 0x01 al byte 15 della prima riga con 0x02).

Viola, tutte e tre le uscite adesso funzionano sulla mia scheda video...

fine traduzione

 

non mi prende lo spoiler il post è un pò lungo così accidenti...

 

P.S. se qualcuno ha i developer tools installati mi può dire quanto pesa otools da solo e se si può avere senza scaricare l'intero dvd?

Link to comment
Share on other sites

Allora, arriva il primo problema reale...

Vi allego i comandi che ho dato, come da guida di bbc9 per ottenere (l'indirizzo del framebuffer?) bisogna sommare questi valori: offset_in_file = start_offset_for_architecture + offset_for_segment + virtual_address - start_address_for_segment

where start_offset_for_architecture as reported by lipo above

start_address_for_segment, offset_for_segment as reported by otool above

virtual_address is the address obtained from the addl instruction

 

adesso però non so quali sono i valori giusti, quello riportato da lipo immagino sia 155648, ma di quello riportato da otool non riesco a capire quale devo mettere.

Penso che sia 155648+57472+0x11200-0x0000dd48 provando con Vervet ma il risultato qual'è? Non ci capisco niente di hex o quasi niente...

terminale.rtf

Link to comment
Share on other sites

Penso che sia 155648+57472+0x11200-0x0000dd48 provando con Vervet ma il risultato qual'è? Non ci capisco niente di hex o quasi niente...

 

 

Ho provato a fare il calcolo con la calcolatrice in modo Esadecimale

55648+57472+0x11200-0x0000dd48

 

= 0x1AFF72

 

Per il resto non saprei.

 

Fabio

Link to comment
Share on other sites

dd if=ATIFramebuffer of=/tmp/vervet bs=1 skip=1769330 count=64
 od -Ax -tx1 /tmp/vervet

e la risposta è dd: count: illegal numeric value

che cosa vuol dire??

 

EDIT: ho chiesto nella sezione internazionale e wmarsh mi ha messo il mio bios dump esattamente come il post 10 di Fabio e detto:

"Use the 10.6.6 kexts

Download kizwan's ATIFramebuffer.kext posted above (fin qui ci sono)

open the binary

Peregrine is at offset 37278 and at 10f60

Edit the last digit of the each to your sensid

 

If you need more detailed directions, reread mucha's guide until it makes sense."

 

Qualcuno riesce a spiegarmi come funziona sto sensid?

Link to comment
Share on other sites

dd if=ATIFramebuffer of=/tmp/vervet bs=1 skip=1769330 count=64
 od -Ax -tx1 /tmp/vervet

e la risposta è dd: count: illegal numeric value

che cosa vuol dire??

 

EDIT: ho chiesto nella sezione internazionale e wmarsh mi ha messo il mio bios dump esattamente come il post 10 di Fabio e detto:

"Use the 10.6.6 kexts

Download kizwan's ATIFramebuffer.kext posted above (fin qui ci sono)

open the binary

Peregrine is at offset 37278 and at 10f60

Edit the last digit of the each to your sensid

 

If you need more detailed directions, reread mucha's guide until it makes sense."

 

Qualcuno riesce a spiegarmi come funziona sto sensid?

 

 

Qualche risultato aprendo il binario con un editor esadecimale? come 0xED (gratuito)

 

Fabio

Link to comment
Share on other sites

Lo so Fabio, ci ho già provato su windows con neo hex editor, ma una volta che vado a quel offset non ho capito come avere il sens id

Desktop Mucha$ ./radeondump < 1002_9480.rom

ATOM BIOS Rom:

SubsystemVendorID: 0x103c SubsystemID: 0x3629

IOBaseAddress: 0x7000

Filename: br33507.001

BIOS Bootup Message:

HP_Quanta_Jones_Cujo_M96M_DDR3 M96 DDR3 128bit 550e/667m

 

Connector at index 0 type: LVDS (7)

Connector's i2cid: 96

Connector at index 1 type: VGA (1)

Connector's i2cid: 95

Connector at index 2 type: HDMI-A (11)

Connector's i2cid: 90

-------------------------------------------------------------------------------

which means

 

port0 > LVDS=0x00000002 - ControlFlag=0x0040 - Features = 0x09-------------------------HotplugId=0x00 - i2cid=96 > SenseLine = 0x07

port1 > VGA =0x00000010 - ControlFlag=0x0010 - Features = 0x00 ------------------------ HotplugId=0x01 - i2cid=95 > SenseLine = 0x06

port2 > HDMI=0x00000800 - ControlFlag=0x0200 - Features = 0x00 -------------------------HotplugId=0x02 - i2cid=90 > SenseLine = 0x02

come fa a dire ad esempio che qui è 0x07?

Link to comment
Share on other sites

Sono interessato anch' io alle ati mobility, non è che potreste ricapitolare?

Bisogna "compilare" i driver da soli su alcune linee?

Bisogna sostituire questo senseid con quello del proprio connettore del monitor con un hex editor, ma non ho capito bene come si trova esattamente sto benedetto id, deriva dal report di radeondump ma non ho capito esattamente come si fa....

Allego anche il kext Atiframebuffer.kext da usare, bisogna aprire il file atiframebuffer in contents/mac osx e sostituire sto coso..

 

EDIT: ho trovato anche questo nella guida di mucha se può essere utile:

8- SenseID;

/* SenseLine = (i2cid & 0xf) +1 ,you get i2cid from bbc9 radeondump */

Bits 0-3: Sense Line

Bit 4: Use hw i2c flag

ATIFramebuffer.kext.zip

Link to comment
Share on other sites

Il SenseID si trova con questo criterio (i2cid & 0xf) +1 cioè ad esempio su un dump del genere:

 

Connector at index 0 type: LVDS (7)

Connector's i2cid: 96

Connector at index 1 type: VGA (1)

Connector's i2cid: 95

Connector at index 2 type: HDMI-A (11)

Connector's i2cid: 90

 

 

il senseid per LVDS è (96 + 0xf) +1 = 0x07

per la VGA è (95 + 0xf) +1 = 0x06

per l' HDMI è (90 + 0xf) +1 = 0x01

 

 

P.S. i dump vanno fatti con questo tool

radeondump.0.2.zip

Link to comment
Share on other sites

 Share

×
×
  • Create New...