Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 11/23/2021 in all areas

  1. Arrivato anch'io da BigSur dopo aver risolto i problemi di IO80211Catalina.kext, con Monterey la gestione della I225-v è decisamente migliorata, adesso è istantanea all'avvio a differenza di BigSur dove c'era da attendere una trentina di secondi dall'avvio prima che la connessione fosse efficace.
    2 points
  2. Lo scopo di questa guida è quello di configurare il nostro hack in un modo ancora migliore, senza usare UsbInjectall (escluso per metodo Rehabman) e nessuna patch per port limit attenendoci a ciò che Apple fa e vuole…. Ossia un massimo di 15 porte disponibili e utilizzabili Decisamente molto più qualitativo. …. 😉 Occorrente: IORegistryExplorer.app MaciAsl (lo trovate in download) Procuriamoci una usb sia 2.0 che 3.0 Aggiungiamo la patch per aumentare il port limit sul config Aggiungiamo usbinjectall.kext nella EFI Riavviamo.... Iniziamo con la mappatura… Apriamo IOReg, scorriamo fino a trovare XHC o nel caso XHCI Nota:Nel caso le nostre usb fossero nominate XHC1 vanno rinominate tramite una patch sul config Adesso inseriamo ed espelliamo prima una pendrive usb 2.0 e poi una pendrive 3.0 Nota: Questo procedimento dovrà essere eseguito senza chiudere IOReg e ripetuto su ogni singola porta usb del nostro hack…mobo e case.. Una volta terminato ci ritroveremo ad un esempio di questo tipo Le usb verranno mostrate in rosso dopo averle scollegate Adesso ipotizziamo di aver terminato e basiamoci sulla foto precedente Annotiamoci le porte non usate..per esempio HS02-HS04 Ovviamente questo è un esempio…potreste averne molte di più…con porte SSPx La differenza tra le due nominazioni è: HSxx = USB 2.0 SSPx = USB 3.0 A questo punto è necessario un ssdt per disabilitare le porte non usate Metodo Basato su SSDT generico fatto da Rehabman Apriamo ssdt con MaciASL Adesso dobbiamo eliminare le porte che non usiamo, questo perché ssdt comprende tutte le porte possibili e utilizzabili della scheda madre Per rimuovere le vostre porte non in uso vi basterà rimuovere la parte che vi ho evidenziato…ovviamente è solo un esempio e non è detto che quella specifica porta non sia usata nel vostro hack. Una volta aver rimosso le porte, all’inizio del ssdt definiamo i l numero di porte in uso "port-count", Buffer() { 26, 0, 0, 0 }, 26 è il numero di porte totali disponibili su schede madri Skylake e successivi… ma su osx il limite imposto è per 15 porte al massimo Noi dobbiamo cambiare 26 con il numero delle porte che usiamo e deve essere inferiore o uguale a 15…ma non superiore. Adesso passiamo alla parte "UsbConnector" In questa parte dobbiamo definire il “tipo di porta” .. quindi se è 2.0, 3.0 e se è una usb interna Guardate questo esempio Quindi le usb 2.0 avrà "UsbConnector", 0, la usb 3.0 avrà "UsbConnector", 3, Mentre le usb interne dovranno avere "UsbConnector", 255, ( 0xFF) CREDITS: @ Apple @ ACPICA @ Pokenguyen (primo che all’inizio di El Capitan ha fatto presente l’aggiunta da parte di Apple del limite di porte in uso) @ PJalm @ Piker @ Rehabman Metodo Alternativo Basato sulle proprie ACPI compatibile da Skylake e successivi Questo è il metodo che preferisco e che uso da anni nei miei hack o di amici stretti… Lo ritengo migliore, per il mio modesto parere, perché andiamo a usare e lavorare sul nostro proprio ssdt, senza usarne di aggiuntivi Estrazione ACPI Clover Estraiamo le nostre acpi tramite clover (il dump richiede che sia installato nella ESP) Premiamo F4 quando siamo nella GUI,per sicurezza che il dump sia corretto aspettiamo una trentina di secondi prima di avviare. Montiamo la partizione EFI del dispositivo usato per il boot Rechiamoci in EFI/Clover/acpi/origin Troveremo varie tabelle, noi dobbiamo andare a cercare ed esaminare SSDT in special modo quello che gestisce le usb Nella stragrande maggioranza dei casi sarà la tabella nominata xh_rvp08, xh_rvp10 etc... ma può essere anche semplicemente per esempio SSDT-3.aml oppure SSDT-AMI.aml OpenCore: Per estrarre le proprie acpi con questo bootloader abbiamo bisogno dei bianri in versione Debug Quindi se per esempio avessimo la versione 0.6.1, andremo a scaricare la stessa versione con dicitura DEBUG. Prendiamo poi il file bootx64.efi che troviamo in EFI/BOOT e OpenCore.efi che troviamo in EFI/OC. Sostituiamoli nelle stesse posizioni nella nostra EFI. Modifichiamo il config in Misc/Debug/SysReport mettendo YES. Salviamo e riavviamo. Troveremo le nostre acpi dentro una cartella nella root della partizione EFI. Troveremo varie tabelle, noi dobbiamo andare a cercare ed esaminare SSDT in special modo quello che gestisce le usb Nella stragrande maggioranza dei casi sarà la tabella nominata xh_rvp08, xh_rvp10 etc... ma può essere anche semplicemente per esempio SSDT-3.aml oppure SSDT-AMI.aml Nota: il Nome del relativo ssdt contenente le usb può cambiare da mobo a mobo, quindi dovrete voi controllare le vostre acpi e trovare quello contenente XHC Apriamola con MaciASL Adesso visualizzeremo le porte usb disponibili per la mobo Soffermiamoci su questa parte di codice…ovviamente partiamo dalla prima usb HS01 Scope (\_SB.PCI0.XHC.RHUB.HS01) { Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities { Return (GUPC (One)). } Method (_PLD, 0, NotSerialized) // _PLD: Physical Location of Device { Return (GPLD (One, 0x02)) } } Bene adesso l’operazione è molto semplice One in questo caso vuol dire Vero/Abilitato La parte di codice da modificare per ogni singola usb è: Return (GUPC (One)) Quindi porta abilitata lasceremo One Porta disabilitata cambieremo sostituendo One con Zero Tornando all’esempio sopra… Il codice rispettivamente per ogni porta disabilitata sarà: Scope (\_SB.PCI0.XHC.RHUB.HS01) { Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities { Return (GUPC (Zero)) } Method (_PLD, 0, NotSerialized) // _PLD: Physical Location of Device { Return (GPLD (One, 0x02)) } } Nota: Anche il codice relativo può essere diverso, quindi potresti anche avere una cosa di questo tipo: Scope (\_SB.PCI0.XHC.RHUB.HS01) { Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities { If (LEqual (H1TC, Zero)) { Return (GUPC (H1CN)) } Else { Return (\_SB.UBTC.RUCC (H1CR, One)) } } in questo caso la parte interessata sarà contenuta all'interno della prima condizione, quindi avremo la solita sostituzione Scope (\_SB.PCI0.XHC.RHUB.HS01) { Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities { If (LEqual (H1TC, Zero)) { Return (GUPC (One)) // << ----- } Else { Return (\_SB.UBTC.RUCC (H1CR, One)) } } Finito di cambiare il valore per ogni porta basandoci sulla nostra mappatura non ci resta che compilare e salvare Parte finale Collochiamo il nostro SSDT in EFI/Clover/acpi/patched Questo però non sarà sufficiente perché la tabella originale (OEM) verrà sempre caricata e quindi il nostro ssdt non avrà alcun effetto Quindi dobbiamo “Droppare” la relativa tabella OEM Cosa vuol dire? Significa bloccare il caricamento della stessa per permettere al nostro ssdt di lavorare Apriamo il config.plist, rechiamoci nella parte ACPI/Drop Tables Clicchiamo sul simbolo + Selezioniamo SSDT —> TableId ed accanto scriviamo il nome esatto della tabella da bloccare…esempio xh_rvp08 Il risultato sarà questo Come possiamo essere sicuri del corretto TableId? Ecco spiegato nell'imagine sottostante: Nota: Qualora trovassimo per esempio " AMI " questo non dovrà essere usato perchè nel caso del drop usando appunto il TableID, questo deve essere unico per tale ssdt e non uguale su più ssdt. In questo caso dovrete usare Lenght per droppare la tabella. Quindi seguite la relativa spiegazione nella parte della guida inerente a X299. Rimuoviamo o disabilitiamo la patch per port limit e salviamo Rimuoviamo usbinjectall.kext dalla relativa cartella kext in EFI Riavviamo Aprendo ioreg, cercando XHC noteremo che verrano visualizzate solo le porte in uso Questo è l’esempio del mio hack Perfezionamento: Definizione dei connettori. In download, nella sezione ACPI troverete una mia patch. Scaricatela, aprite il file txt copiate e incollate il contenuto nella finestra patch di MaciAsl. Applicate la patch sul relativo ssdt. Adesso possiamo Abilitare/Disabilitare la porta modificando il primo valore mentre con il secondo valore andremo a definire la tipologia del connettore usb. Quindi andiamo nella relativa porta e scriviamo/sostituiamo il contenuto del metodo _UPC con: Return (GENG (One, 0x03)) Esempio: One ovviamente renderà la porta attiva, qualora volessimo disattivarla e vogliamo usare questo metodo, basterà mettere Zero al suo posto. Nota: Per la disattivazione va ugualmente bene il metodo elencato sopra. Seconda parte: 0x03 va a definire la relativa porta come semplice Usb 3.0 Nella mia patch sono elencati i vari connettori che possono essere usati, in primo luogo troviamo diciamo quelli più "comuni" e successivamente quelli diciamo opzionali. Quindi con questa unica patch potete fare di tutto, abilitare/disabilitare e definire... Spero che vi possa aiutare e spero anche che venga apprezzato e non solo copiato senza un credits come già è accaduto! Vii invito a leggere, anche giusto per informazione, questo topic che ha vari riferimenti Buon Hack !
    1 point
  3. FINAL UPDATE: Now you just need to patch the offending executables, no more libfakeintel, no more plists to preload... just direct patching where needed. Post the requested files of the requested app and a patched executable will be released: replace and recodesign it, done! QUICK UPDATE: Put the libfakeintel.dylib in your Application folder, put environment.plist in your $HOME/Library/LaunchAgents, overwrite libiomp5.dylib in Contents/Frameworks into AE CC 2020/2021 application with the one provided and we have the best working solution available for all actual adobe's products. Premiere Pro works with this method until CC 2020 version 14.3.1. AE CC 2021 18.4 works by replacing even libmkl_intel_thread.1.dylib with the one provided. UPDATE: Premiere Pro CC 2021 15.4 works by manually patching AEFilterStabilizer and AEFilterMorphCut binaries inside the respective bundles, as dylib injection doesn't seem to work inside macOS bundles. Details in my last post. Need to generalize it for versions between 14.4 - 15.4 and up. Hi everybody! Trying to solve the remaining issues of running macOS with AMD cpus when certain apps expect strict intel code (Adobe Suite, Discord, Matlab and some older DaVinci Resolve versions) I randomly came reading this article: https://danieldk.eu/Posts/2020-08-31-MKL-Zen.html This works perfectly in Linux in order to run optimized x86_64 Intel code but with AMD cpus... but can we port this to macOS I asked myself? We could solve the compatibility issues I've talked about earlier. I'm a real rookie in programming but I managed to get some interesting results anyway!!! At first I installed brew, a real bridge between Linux and macOS, just issue this command in terminal: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" Then I installed GCC using brew and this mini-guide: https://discussions.apple.com/thread/8336714 Then I compiled as a dylib (dynamic library) for macOS this little trivial C program with gcc: int mkl_serv_intel_cpu_true() { return 1; } I used this command, fakeintel.c is the file in which I typed and saved the above code: gcc -dynamiclib /Users/tomnic/Desktop/fakeintel.c -o libfakeintel.dylib ...so I got the libfakeintel.dylib I attach. To get the code injecting effect in macOS you need to use the environmental variable DYLD_INSERT_LIBRARIES, same effects of the Linux counterpart LD_PRELOAD (http://web.archive.org/web/20121108142727/https://blogs.oracle.com/DatabaseEmporium/entry/where_is_ld_preload_under). We can inject automatically this library with each unix executable using this command: launchctl setenv DYLD_INSERT_LIBRARIES /Users/tomnic/Desktop/libfakeintel.dylib As you can infer, I put the injected library on my desktop, change your path according to your needs 😉 Experimenting with Adobe After Effects with camera tracking function (older tricks no longer work) I got these results: 1. Without injecting libfakeintel.dylib analysis stops at 0%, then AE stops; 2. With libfakeintel.dylib injected tracking starts and completes at 100% but then AE crashes with this error: <1641966> <Tracciatore videocamera 3D Profile Data> <5> Analysis Started (Tutorial - Tracking.mov) selector.max_count: 500.000000 selector.spacing: 29.000000 selector.half_winx: 15.000000 selector.half_winy: 15.000000 selector.border: 12.000000 selector.threshold: 0.010000 selector.min_eig: 1.000000 selector.max_eig: 6000.000000 selector.presmoothing: 1.000000 selector.presmooth_factor: 0.100000 selector.eig_ratio_threshold: 15.000000 selector.down_sample_factor: 1.000000 tracker.max_iterations: 25.000000 tracker.tolerance_translation: 0.100000 tracker.tolerance_affine: 0.050000 tracker.pyramidal_levels: 5.000000 tracker.half_win_x: 15.000000 tracker.half_win_y: 15.000000 tracker.color_correction_translation: 0.000000 tracker.color_correction_affine: 2.000000 tracker.affine_verification: 1.000000 tracker.tolerance_color_lambda: 0.050000 tracker.tolerance_color_delta: 1.000000 tracker.tolerance_min_correlation: 0.700000 tracker.tolerance_primary_color_threshold: 5.000000 tracker.kill_tracks_shorter_than: 5.000000 <1641966> <StateBinaryConverter> <5> solveCompleteB = 0 <1642537> <StateBinaryConverter> <5> solveCompleteB = 0 <1641966> <AnalyzerServer> <5> Create Temp Project: /var/folders/qw/wdfjy1tx0z3569g9v0gygxw80000gn/T/tmpAEProject-569fa6b4-c9fb-43f2-a2a4-5ea9f85fde5b.aep <1641966> <AnalyzerServer> <5> Start 7fa4a8b1-fb7a-4570-b4f7-fc33bfce2803 <1641966> <Tracciatore videocamera 3D Profile Data> <5> Analysis Time (seconds) : 5,22 (Tutorial - Tracking.mov) <1641966> <AnalyzerServer> <5> End 7fa4a8b1-fb7a-4570-b4f7-fc33bfce2803 <1641966> <AnalyzerServer> <5> Delete Temp Project: /var/folders/qw/wdfjy1tx0z3569g9v0gygxw80000gn/T/tmpAEProject-569fa6b4-c9fb-43f2-a2a4-5ea9f85fde5b.aep <1642537> <StateBinaryConverter> <5> solveCompleteB = 0 [19817:1642194:20210530,203115.482236:WARNING process_memory_mac.cc:93] mach_vm_read(0x7ffeefbff000, 0x2000): (os/kern) invalid address (1) [19817:1642194:20210530,203115.593841:WARNING mach_o_image_segment_reader.cc:173] section.segname incorrect in segment __TEXT, section ??? ??? ??? ???, ??? ??? ??? ??? 0/11, load command 0x19 0/22, module /Applications/Adobe After Effects 2021/Adobe After Effects 2021.app/Contents/Frameworks/LogSession.framework/Versions/A/Resources/libConfigurer64.dylib, address 0x12f534000 LaunchHeadlightsCrashProcessor result: -11 [19817:1642194:20210530,203119.056962:WARNING crash_report_exception_handler.cc:346] UniversalExceptionRaise: (os/kern) failure (5) [1] + illegal hardware instruction DYLD_INSERT_LIBRARIES=/Users/tomnic/Desktop/libfakeintel.dylib ...help me finding out why 😉 Instead in Adobe Photoshop everything seems to work happily, since the name of this thread (by now). To revert everything back just reboot! 1.mov libfakeintel.dylib.zip environment.plist.zip libiomp5.dylib.zip libmkl_intel_thread.1.dylib.zip AEFilterMorphCut.bundle.zip AEFilterStabilizer.bundle.zip
    1 point
  4. Update X299 La procedura alla fine è la stessa per Skylake e successivi con alcune ulteriori attenzioni e modifiche Estraiamo le tabelle acpi premendo F4 nella gui di clover, rechiamoci in origin e cerchiamo ssdt relativo alle usb Nel mio esempio è SSDT-2-AMI.aml una volta aperto troviamo a partire dalla prima usb Scope (\_SB.PC00.XHCI.RHUB.HS01) { Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities { Return (GUPC (0x01)) } Come per l'altri casi dobbiamo modificare GUPC (0x01) in GUPC (Zero) Da ripetere per ogni porta da disattivare quindi il codice finale sarà Scope (\_SB.PC00.XHCI.RHUB.HS01) { Method (_UPC, 0, NotSerialized) // _UPC: USB Port Capabilities { Return (GUPC (Zero)) } finito di disattivare le nostre porte non in uso su X299 bisogna fare altre modifiche Avendo PC00 finito originalmente nelle acpi, x299 deve e usa un rename acpi sul config PC00 to PCI0 Quale è il problema? Se noi collochiamo il nostro ssdt in patched questo non verrà poi caricato anche se droppata la tabella oem originale perchè "tutte" le acpi hanno a quel punto, grazie al rename di clover PCI0 La nostra tabella patchata e reiniettata invece avrà sempre PC00 e questo non va bene.... quindi Nel nostro compilatore andiamo su Find, mettiamola spunta su "Replace" e modifichiamo il tutto da PC00 in PCI0 come da immagine sottostante Clicchiamo su " All " Compiliamo e salviamo. Collochiamola in EFI/Clover/acpi/Patched Adesso dobbiamo modificare il config e droppare la tabella OEM originale in questo caso ho usato " Length " invece di " table" perchè ci sono altre tabelle con stesso "nome" e quindi usando questo bloccherei non solo la tabella delle usb ma tutte quelle con stesso nome Da dove si ricava Lenght? Lo trovate All'inizio della tabella ssdt su cui lavorate Usando clover configurator per modificare il config, prendete direttamente il valore contenuto dentro le parentesi come evidenziato nell' immagine Adesso sempre dovuto ai rename che si usando su X299 ed a altro occorre diciamo definire un ordine di caricamento delle tabelle evitando così vari problemi Per questo usiamo " SortedOrder " Qui scriviamo il nome esatto della tabella trovata in origin su cui abbiamo lavorato Rimuoviamo o disabilitiamo la patch per port limit Salviamo, riavviamo... Adesso se avete eseguito tutto correttamente avrete attivate solo le usb che usate... NOTA: se dovete in caso rimuove il vostro ssdt da patched ricordate di rimuovere anche il relativo Drop Tables Altrimenti potresti aver problemi al boot oppure nessuna usb funzionante.. perchè ovviamente come detto prima quella funzione blocca il caricamento della tabella OEM e quindi questa tabella non verra mai caricata perchè mancante anche da patched.. NOTA-2: Potete rinominare tale ssdt messo in patched.. per esempio SSDT_DisableUSB.aml Però ricordate che in SortedOrder il nome dovrà essere il medesimo Quindi come cambiate nome al ssdt cambiate anche li... Buon Hack! empticons_thu
    1 point
  5. Metodo Per Serie 8/9 (Haswell) Un altro metodo per questa serie di hardware è quello di apportare alcune modifiche direttamente sul dsdt poiché le usb sono qui definite Il tutto viene eseguito tramite _UPC modificando ed aggiungendo questa parte di codice Name (_UPC, Package (0x04) // _UPC: USB Port Capabilities { Zero, 0xFF, //Connector type (N/A for non-visible ports) Zero, Zero }) La modifica manuale e la relativa aggiunta può non essere facile per tutti, per questo ho scritto una patch per aiutarvi La patch è scritta con impostata, di default, la prima porta usb2 quindi HS01 Quindi dovrete modificare questa patch per ogni porta da disattivare cambiando su di essa HS01 con HS03 o SSP3 per esempio e quindi applicarla nuovamente Nota:la patch potrebbe funzionare anche su altre serie ma non l'ho personalmente testata, quindi questo è il motivo per cui ho definito per haswell in caso ..come anche in caso di problemi..fate sapere allegando le vostre tabelle acpi pulite! UPDATE SSDT PER DISABILITARE LE PORTE SU HASWELL Dopo aver mappato le porte , aprite questo ssdt SSDT-DisableUSB-Haswell-9Series.dsl.zip dovete togliere il commento ossia // riguardante la usb da disattivare Prestate attenzione questo dovrà essere fatto per sia la usb corrispondente sia per il relativo "External" Esempio di disattivazione della porta HS01 Immagine di esempio una volta eseguito per tutto le vostre porte da disattivare...compilate e salvate in .aml Collocate ssdt in patched e rimuovete la patch per port limit Nota è stato scritto in base ad alcune acpi...quindi potrebbero esserci da fare in caso degli "aggiustamenti" in caso... Fatelo presente sul topic e cercherò di aggiornare tale ssdt oppure di scriverlo e allegarlo un altro Disable_USB.txt.zip Disable_USB_Haswell_8series.zip
    1 point
  6. hai visto ? EDIT_ neanche lui è uno spingitore solerte :-DDD
    0 points
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.