Jump to content

Como se arreglan los USBs ?


WeBeRiO
 Share

24 posts in this topic

Recommended Posts

Muy buenas, no consigo reparar para que funcionen correctamente los puertos USB en El Capitan.

 

He mirado en tuto-fix para corregirlos pero no me queda claro y lo que hago no me funciona.

Algun amable puede explicar como poder hacerlo, se lo agradezco mucho, saludo.-

Link to comment
Share on other sites

Yo tuve que cambiar de iMac13,2 a Macmini6,2 porque los USB 2.0 no funcionaban. Como dicen en ese post que mencionás, ahora el kext IOUSBHostFamily gestiona el USB de manera diferente a como lo venía haciendo. Parece que ahora Apple define los puertos para cada modelo en el archivo Info.plist de ese kext por eso creo que hay que usar la SMBIOS que coincida con los puertos de tu PC o asignar los puertos de la misma manera a como están en el archivo Info.plist que supongo que se hace por DSDT pero como simplemente cambiando a Macmini6,2 pude solucionar mi problema no profundicé más en el tema pero seguro le voy a dar un repaso más adelante y si tengo información que pueda servir te aviso.

 

:)

  • Like 2
Link to comment
Share on other sites

es correcto lo que explica Fran.

 

prueba diferentes smbios dentro de la compatibilidad de tu micro, o has todas las correcciones del DSDT que indicas en el post.

 

yo por ejemplo debería usar imac 13.2, pero me va mejor macpro 5.1, comienza por macpro 3.1. 

 

puedes probar si quieres este kext que te dejo.

 

Archivo comprimido.zip

Link to comment
Share on other sites

El fix mas fácil es cambiar de nombre los dispositivos USB en el DSDT para que no coincidan con los de la Mac que emulas y así evitar la restricción de puertos. Lo único que debes hacer es cambiar los nombres EHC1, EHC2 y XHC1. En mi caso los renombre a EH01, EH02 y XHC. Y ten en cuenta que puedes necesitar renombrarlos en varios lugares, no solo en el dispositivo en sí.

 

Aquí esta el parche que se aplica con MaciASL:

into device label EHC1 set_label begin EH01 end;
into device label EHC2 set_label begin EH02 end;
into device label XHC1 set_label begin XHC end;
into_all all code_regex EHC1 replaceall_matched begin EH01 end;
into_all all code_regex EHC2 replaceall_matched begin EH02 end;
into_all all code_regex XHC1 replaceall_matched begin XHC end;

Lo extraje de este post que explica de manera mas sencilla los parches necesarios para activar los USB apropiadamente.

Edited by Maniac10
  • Like 3
Link to comment
Share on other sites

Entonces hay que hacer que en el DSDT los dispositivos USB no coincidan con los del modelo de Mac que estamos emulando? Pensé que era lo contrario pero pensándolo bien claro... en el archivo Info.plist Apple define para cada modelo la cantidad de puertos que tiene dicho modelo por eso si un iMac tiene solamente dos puertos nuestro hackintosh va a estar limitado a usar solo esos dos puertos no? Espero haber entendido bien.

 

Igual en mi caso sucede lo siguiente.

 

Usando iMac13,2 funcionan mis 2 puertos USB 3.0 pero no mis 2 puertos 2.0 que funcionan solo al cambiar a Macmini6,2.

 

Es raro porque en el Info.plist iMac13,2 y Macmini6,2 están de la misma manera:

 

post-1042363-0-03743500-1443905640_thumb.pngpost-1042363-0-54171300-1443905637_thumb.png

 

No entiendo por qué mis USB 2.0 solo funcionan con Macmini6,2 y no con iMac13,2 si en los dos modelos la estructura es EHC1 > PRT1 + EHC2 > PRT1 y en mi DSDT los dispositivos están como EHC1 y EHC2...

Link to comment
Share on other sites

Ahi actualice el link, no tengo idea porque estaba vacío…

 

No entiendo completamente la lógica del nuevo sistema USB, pero parece que hay 2 formas para habilitar todos los puertos en un hack:

  • Usar el nuevo sistema restricción de puertos de 10.11. Para esto debes modificar en el DSDT los nombres de tus puertos para que coincidan con los del modelo Mac emulado. En la mayoría de los casos la cantidad y dirección de los puertos no serán iguales a los de la Mac, así que deberás modificar el info.plist de AppleUSBEHCIPCI y AppleUSBXHCIPCI para que los puertos coincidan con los de tu hardware. Alternativamente se puede usar un inyector para sobre-escribir dicha info sin tocar los kexts originales.
  • Evitar el sistema de restricción de USB. Esto se consigue solo cambiando los nombres de los puertos desde el DSDT, lo que hace que se use un perfil "genérico" para los USB.

La única diferencia que he notado hasta ahora en mis pruebas es que por el sistema genérico no carga mi iPad. El resto parece funcionar igual.

 

Esta guía explica en detalle como funciona cada mecanismo. 

  • Like 1
Link to comment
Share on other sites

Estuve haciendo unas pruebas. A pesar de que el Info.plist del AppleUSBEHCIPCI tiene los mismos puertos para iMac13,2 y Macmini6,2 a mí usando iMac13,2 me deja uno de los tres cabezales USB 2.0 de mi mother sin funcionar. Por lo que la solución es usar Macmini6,2 en SMBIOS o cambiar EHC1 y EHC2 a EH01 y EH02 en el DSDT para que los tres cabezales funcionen con iMac13,2.

 

Los dos puertos USB 3.0 de mi mother funcionan sin tocar nada (en el DSDT el dispositivo lo tengo como XHC1). No tengo un bracket conectado al cabezal 3.0 pero supongo que tiene que funcionar. En mi caso no creo que sea necesario cambiar XCH1 a XHC porque en el Info.plist del AppleUSBXHCIPCI tanto iMac13,2 como Macmini6,2 tienen ocho puertos asignados y mi compu puede tener como máximo 4 puertos 3.0.

 

WeBeRiO, pudiste solucionarlo? Qué SMBIOS usás?

Link to comment
Share on other sites

No he podido mirar demasiado la verdad. Ahora mismo uso iMac15,1, por mi procesador.

No existe remedio para aplicarlo 'al vuelo' mediante clover? Tampoco uso DSDT.

Link to comment
Share on other sites

Si es posible hacerlo al vuelo con el parchador manual de DSDT. No estoy seguro si es correcto pero debería ser algo así:

		<key>DSDT</key>
		<dict>
			<key>Patches</key>
			<array>
				<dict>
					<key>Comment</key>
					<string>EHC1 a EH01</string>
					<key>Find</key>
					<data>
					RUhDMQ==
					</data>
					<key>Replace</key>
					<data>
					RUgwMQ==
					</data>
				</dict>
				<dict>
					<key>Comment</key>
					<string>EHC2 a EH02</string>
					<key>Find</key>
					<data>
					RUhDMg==
					</data>
					<key>Replace</key>
					<data>
					RUgwMg==
					</data>
				</dict>
				<dict>
					<key>Comment</key>
					<string>XHC1 a XH01</string>
					<key>Find</key>
					<data>
					WEhDMQ==
					</data>
					<key>Replace</key>
					<data>
					WEgwMQ==
					</data>
				</dict>
			</array>
		</dict>
	</dict>
  • Like 2
Link to comment
Share on other sites

Gracias Maniac10 por tu ajuste para Clover, funciona perfecto los EHC a EH0, pero si quiero cambiar de XHC como figura en tabla DSDT a XHC1 como pongo en la imagen, directamente no arranca :/

Lo ideal para q sea vanilla es dejarlo como esta dentro del Kext, en XHC1, pero no se deja.

post-471348-0-71990500-1444070873_thumb.png

Link to comment
Share on other sites

El problema con las funciones de find & replace es que ambos campos deben ser de la misma longitud, por lo que no podrías cambiar XHC a XHC1. De cualquier manera la idea es evitar XHC1, así que si el dispositivo ya se llama XHC no haría falta renombrarlo.

 

Y si quieres usar el sistema vanilla recuerda que debes editar la restricción de puertos.

  • Like 1
Link to comment
Share on other sites

Si el dispositivo en tu DSDT se llama XHC debería funcionar OOB. Sino tendrías que probar con un kext inyector para que use el sistema de restricciones pero eso ya es todo un trabajito. No tengo gran experiencia con eso pero dime si necesitas ayuda y probamos.

  • Like 1
Link to comment
Share on other sites

Por partes, en el DSDT que carga MaciASL figura como XHC, tal cual. Lo dejo así entonces según entiendo.

No así los EHCX, pero por suerte tengo el Renombrado a EH0X que pusiste para hacerlo al vuelo en Clover.

Siempre he tenido problemas con los USBs en El Capi, el funcionamiento es normal aunque lo muestra mal, me explico:

Mi placa z97-d3h tiene 2x3.0 delanteros, 4x3.0 traseros y 2x2.0 traseros. Si no cuento mal sería 6(3.0)+6(2.0)+2(2.0)=¿14 USBs?

Actualmente uso el inyector para 9 series, pero cambiando el SMBIOS del interior a iMac15,1 que es el que yo uso en mi caso.

Si miro en Información del Sistema > USB aparece 3 apartados: 2.0, 3.0 y 3.0. A pesar de tener conectado teclado Apple con Hubs en el 2.0, sale como conectado en uno de los 3.0.

Intentaré subir captura a la tarde si no queda claro.


EDITO:

Como podeis ver hay bastante lío, tanto en Yosemite como en El Capi no va fino del todo.
El que figura como USB3.0 Media Reader es un lector de tarjetas conectado en 3.0 y sale conectado en 2.0

post-471348-0-79463800-1444232843_thumb.png

post-471348-0-22887600-1444232857_thumb.png

post-471348-0-23270500-1444241769_thumb.png

Edited by WeBeRiO
Link to comment
Share on other sites

Aqui los tienes Maniac10, mil gracias por tu ayuda.

 

Lo pongo sin inyector, con el arreglo del EH0X en Clover.


Edito:

No estoy seguro, pero aquí veo algo raro. Esa ID en el XHC corresponde a USB 2.0

USB2.0  8cb1 - 0x0a
USB3.0  8cad - 0x1a

USB3.0  8ca6 - 0x1d

ioreg.zip

post-471348-0-04425800-1444330730_thumb.png

  • Like 1
Link to comment
Share on other sites

Por logica debo usar iMac15,1 por mi hard y no MP5,1/MP6,1 ?

He visto pruebas da mejor rendimiento, no se si USBs cambia ?
 

 

Reporte de Darwin en Yosemite.

Reporte de Darwin en El Capitan.

 

 

En el capitan DD me reporta:
YD8dK6T.png?1

 

Mil gracias :)

Adjuntos van los ioreg de IOJones:

yosemite.zip

ElCapitan.zip

Link to comment
Share on other sites

El trabajo de los USB puede cambiar si usas los perfiles predefinidos para el modelo de Mac, pero si renombras los dispositivos no debería afectar a los USB. Solo escoge el modelo que mas se parezca a tu CPU, el resto se puede trabajar.

 

 

No estoy seguro, pero aquí veo algo raro. Esa ID en el XHC corresponde a USB 2.0

USB2.0  8cb1 - 0x0a
USB3.0  8cad - 0x1a

USB3.0  8ca6 - 0x1d

 

Si te fijas en el reporte de DD en la sección LSPCI:

00:14.0 USB controller [0c03]: Intel Corporation 9 Series Chipset Family USB xHCI Controller [8086:8cb1] (prog-if 30 [XHCI])
00:1d.0 USB controller [0c03]: Intel Corporation 9 Series Chipset Family USB EHCI Controller #1 [8086:8ca6] (prog-if 20 [EHCI])
00:1a.0 USB controller [0c03]: Intel Corporation 9 Series Chipset Family USB EHCI Controller #2 [8086:8cad] (prog-if 20 [EHCI])

Los id son correctos, pero según veo en tu ioreg falta que se adjunten los kexts correspondientes al dispositivo XHC como en esta imagen de mi sistema (sin inyector):

 

post-158318-0-56368500-1444615318.png

 

Podrías probar habilitando el sistema de restricción de puertos para los XHCI solamente usando el inyector de wegface que mencionas antes. Para eso debes editar el info.plist y eliminar las entradas EH0x. Recuerda también cambiar el modelo de iMac en todos lados. Después quedaría descifrar el nombre de puerto y ADR de los XHC que usa tu sistema para luego rellenar la sección de IOProviderMergeProperties correctamente. Para esto debes seguir la guía de wegface. Es bastante gráfica pero si no la entiendes puedo intentar traducirla.

 

Veo también que Rehabman tiene una suerte de inyector para tu id de XHC (FakePCIID_XHCIMux.kext). Lo que hace es forzar que todo dispositivo USB2 conectado en un puerto XHCI sea manejado por los drivers USB2, lo que podría solucionar parcialmente tu problema.

Edited by Maniac10
  • Like 1
Link to comment
Share on other sites

@camaleon33. Según entiendo (puedo estar equivocado), el tema es una combinación de cosas para que funcionen bien los USB (2.0 y 3.0) integrados en la placa base. En sintesis, 1) una selección de perfil SMBios que sea acorde con tu configuración siempre es recomendable para la gestión de energía, 2) que la Bios o configuración ACPI (DSDT) sea compatible en el apartado de los puertos USB (de fábrica = sin renombrar), que no requiera ningún parche, es decir lo más cercano al hardware genuido de Apple. Y por supuesto, 3) que los IDs de dichos dispositivos sean reconocidos por los .kexts nativos del sistema, o en su defecto cubiertos y/o detectados por inyectores legacy (fake). Por lo tanto, debes tener un equipo que cumple con esas tres condiciones al menos. Es un tema complejo pero interesante, y lo más importante que tiene solución. Saludos.

Link to comment
Share on other sites

  • 2 weeks later...
Tengo entendido que el 10.11.1 cambió algunas cosas, ¿como sería el procedimiento entonces? Vi también que hay un USBinjectAll.kext que sirve para determinar que puertos están en uso.

Estoy un poco confundido de como comenzar. Agradeceria un poco ver que pasos seguir con un 10.11.1 instalado y sin inyectors ni renames en el clover, algo limpio.

Gracias desde ya.

Link to comment
Share on other sites

  • 1 year later...

Saludos yo he estado intentando instalar El Capitan ( tengo instalado Lion 10.7.5 y Yosemite 10.10.5 sin problemas de USB ( claro en Yosemite no tengo ni audio ni red todavia) pero ese es otro tema, el asunto es que instalar desde un pendrive, no pasaba de Bluetooth....... y ponia el signo prohibido y se borroneaba la pantalla, leyendo vi que El Capitan maneja diferente los USB, asi que decidi crear en mi disco duro 2 particiones una para UB y la otra para EL Capitan y por fin arrancó, pero al llegar al logo de El Capitan no logro pasar ya que los puertos USB estan muertos, no los reconoce ni mouse ni teclado he puesto en efi algunos kext de USB sugeridos y por clover he cambiado de nombre los  EHC a EH0 y la SMBIOS  (originalmente reconoce como iMac 11.1) a iMac 13.1 u otros y nada que reconoce no puedo avanzar a instalar El Capitan

 

Alguna sugerencia

Gracias

Link to comment
Share on other sites

 Share

×
×
  • Create New...