David23 Posted March 18, 2011 Share Posted March 18, 2011 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 More sharing options...
ErmaC Posted March 18, 2011 Share Posted March 18, 2011 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 More sharing options...
David23 Posted March 18, 2011 Author Share Posted March 18, 2011 Ok, adesso sono su windows, lo posto fra 5 minuti EDIT: eccolo allegato ioreg.zip Link to comment Share on other sites More sharing options...
ErmaC Posted March 18, 2011 Share Posted March 18, 2011 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 More sharing options...
David23 Posted March 18, 2011 Author Share Posted March 18, 2011 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 Link to comment Share on other sites More sharing options...
ErmaC Posted March 18, 2011 Share Posted March 18, 2011 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 More sharing options...
David23 Posted March 18, 2011 Author Share Posted March 18, 2011 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 More sharing options...
ErmaC Posted March 18, 2011 Share Posted March 18, 2011 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 More sharing options...
Smith@@™ Posted March 18, 2011 Share Posted March 18, 2011 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 Link to comment Share on other sites More sharing options...
ErmaC Posted March 18, 2011 Share Posted March 18, 2011 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 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 More sharing options...
David23 Posted March 19, 2011 Author Share Posted March 19, 2011 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ò.... Link to comment Share on other sites More sharing options...
ErmaC Posted March 19, 2011 Share Posted March 19, 2011 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 More sharing options...
David23 Posted March 19, 2011 Author Share Posted March 19, 2011 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 More sharing options...
ErmaC Posted March 19, 2011 Share Posted March 19, 2011 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 More sharing options...
David23 Posted March 20, 2011 Author Share Posted March 20, 2011 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 More sharing options...
David23 Posted March 20, 2011 Author Share Posted March 20, 2011 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 More sharing options...
ErmaC Posted March 20, 2011 Share Posted March 20, 2011 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 More sharing options...
David23 Posted March 20, 2011 Author Share Posted March 20, 2011 Sarebbe dovuto uscire un numero intero ci capisco meno di prima.... EDIT: convertito viene 1769330 Link to comment Share on other sites More sharing options...
ErmaC Posted March 20, 2011 Share Posted March 20, 2011 Sarebbe dovuto uscire un numero intero ci capisco meno di prima.... (hex) 0x1AFF72 (10) 1769330 basta cambiare la base con la calcolatrice... Fabio Link to comment Share on other sites More sharing options...
David23 Posted March 20, 2011 Author Share Posted March 20, 2011 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 More sharing options...
ErmaC Posted March 21, 2011 Share Posted March 21, 2011 dd if=ATIFramebuffer of=/tmp/vervet bs=1 skip=1769330 count=64 od -Ax -tx1 /tmp/vervete 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 More sharing options...
David23 Posted March 21, 2011 Author Share Posted March 21, 2011 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 More sharing options...
Fra_gt Posted March 21, 2011 Share Posted March 21, 2011 Sono interessato anch' io alle ati mobility, non è che potreste ricapitolare? Bisogna "compilare" i driver da soli su alcune linee? Link to comment Share on other sites More sharing options...
David23 Posted March 21, 2011 Author Share Posted March 21, 2011 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 More sharing options...
moob Posted March 21, 2011 Share Posted March 21, 2011 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 More sharing options...
Recommended Posts