Wi-Fi Fenvi vuelve a funcionar en Sonoma

Muchos usuarios entre los que me incluyo hemos utilizado las tarjetas PCI-express Fenvi T919 o Fenvi HB1200 (combo Wi-Fi + Bluetooth) que han funcionado desde al menos High Sierra sin necesidad de controladores adicionales, instaladas automáticamente por macOS y reconocidas como Airdrop y Bluetooth de Apple. Las 2 Fenvi llevan el chipset Wi-Fi BCM4360 por lo que han dejado de funcionar en macOS Sonoma. La parte Bluetooth funciona bien, como en Ventura y anteriores. Esto puede ser un serio inconveniente para muchos usuarios porque se pierden las prestaciones asociadas al ecosistema Apple: Airdrop, Continuity, cámara del iPhone…

Julio de 2024: macOS 15 Sequoia anula el parche de OCLP

El parche de OCLP dejó de funcionar en macOS 15 Sequoia. El equipo de OCLP tiene una solución que le permite recuperar Fenvi Wi-Fi en Sequoia, con algunas diferencia respecto a la que usábamos en Sonoma:

  • Coge la versión 1.4.1 de AMFIPass desde aquí
  • Coge la versión 1.2.0 de IOSkyWalkFamily desde aquí
  • Coge la versión beta 1.6.0 o más nueva de OCLP desde aquí (OpenCore-Patcher.pkg).

El resto de ajustes es como antes.

Febrero de 2024: macOS Sonoma anula el parche de OCLP

En macOS 14.4, Apple ha modificado partes del sistema Wi-Fi de manera que el parche de OCLP ha dejado de funcionar, por lo que las Wi-Fi Fenvi y Broadcom ya no pueden utilizarse. Sin embargo, los desarrolladores de OCLP han sacado una solución para volver a utilizarlasi. Se requieren 2 cambios:

  • OCLP 1.4.2 o más reciente
  • IOSkywalkFamily.kext 1.1.0 que ha de reemplazar a la versión actual 1.0.0. La puedes descargar desde el sitio GitHub de OCLP >> carpeta payloads >> carpeta Kexts >> carpeta Wifi >> Enlace.

El proceso para hacer los cambios es así:

  • reemplaza IOSkywalkFamily.kext, revierte el parche de OCLP y reinicia
  • aplica el parche de OCLP.

El resto de ajustes no cambian.


Introducción

Apple ha eliminado de Sonoma los controladores de chipsets Wi-Fi Broadcom utilizados en los Mac anteriores a 2017:

Dependientes de AirPortBrcmNIC.kext (plugin de IO80211FamilyLegacy.kext)

  • device-id pci12e4,43ba >> BCM43602
  • device-id pci12e4,43e3 >> BCM4350
  • device-id pci12e4,43a0 >> BCM4360

Dependientes de AirPortBrcm4360.kext (plugin de IO80211Family.kext)

  • device-id pci12e4,4331 >> BCM94331
  • device-id pci12e4,4353 >> BCM943224.

Como información extra, los Mac que pueden actualizar oficialmente a Sonoma llevan estas Wi-Fi Broadcom:

  • 2017 iMacPro1,1 / 2018/2019 MacBookAir8,x -> BCM4355 (pci14e4,43dc)
  • 2018 MacMini8,1 / 2018/2019 MacBookPro15,x / 2019 iMac19,x / 2019 MacPro7,1 / 2019/2020 MacBookPro16,x / 2020 iMac20,x -> BCM4364 (pci14e4,4464)
  • 2020 MacBookAir9,1 -> BCM4377b (pci14e4,4488).

Son chipsets soldados en la placa que no se venden sueltos en el mercado y no podemos disponer de ellos para instalar en nuestro Hack una Wi-Fi compatible con Sonoma.

Recuperar la Wi-Fi Fenvi en Sonoma

Los desarrolladores de OCLP han estado trabajando en este problema y han integrado la solución a partir de la versión OCLP 1.0.0, lo que hace que la Wi-Fi vuelva funcionar como lo hacía en Ventura. Sé que no es la situación ideal, muchos de nosotros queremos tener el sistema lo más parecido posible a un Mac y OCLP tiene que aplicar parches (root patches) que obligan a funcionar relajando algunas medidas de seguridad de macOS. Pero lo que ha logrado el equipo de OCLP es un avance muy grande.

En resumen, esto es lo que hay que hacer:

  • System Integrity Protection deshabilitada: csr-active-config = 03080000
  • AMFI deshabilitada: boot-args = amfi=0x80
  • Secure Boot Model = Disabled
  • Bloquear com.apple.iokit.IOSkywalkFamily, ajustando MinKernel a 23.0.0 para asegurar que el parche se aplica sólo en Sonoma
  • Inyectar 3 extensiones (carpeta Kexts y config.plist): IOSkywalk.kext, IO80211FamilyLegacy.kext y AirPortBrcmNIC.kext (plugin de IO80211FamilyLegacy.kext) en este orden, ajustando MinKernel a 23.0.0 para asegurar que son inyectadas sólo en Sonoma
  • Reinicia y aplica root patch de OCLP (Modern Wireless Network).

No olvides habilitar (Enabled=True) las 3 extensiones añadidas y la extensión bloqueada.

Importante: el bloqueo de com.apple.iokit.IOSkywalkFamily debe tener Enabled=True y Strategy=Exclude. De lo contrario, puedes tener kernel panic en el arranque.

Mi Wi-Fi es Fenvi T919 así que he probado esta versión preliminar de OCLP 0.6.9. He seguido AL PIE DE LA LETRA las instrucciones y han funcionado bien. Tengo Wi-Fi con Airdrop en Sonoma. Ten en cuenta que las instrucciones de khronokernel deben seguirse EXACTAMENTE. En resumen, esta versión de OCLP 0.6.9 beta funciona, al menos para mí.

Las actualizaciones incrementales se pierden con esta configuración, las actualizaciones se pueden obtener desde Actualización de Software pero se descarga el paquete de instalación completo y no el paquete delta que solo contiene los cambios desde la versión anterior. Para obtener actualizaciones incrementales hay que revertir root patch y reiniciar pero se pierde la wifi, tenlo en cuenta por si dependes de ella para tener acceso a Internet, en este caso no reviertas root patch antes de proceder a la actualización.

Nota: Después de actualizar el sistema operativo, SIEMPRE hay que volver a aplicar root patch ya que macOS sobrescribe los archivos modificados por el parche, instalando las versiones originales.

Nota: OCLP ha añadido soporte (por medio de AirportBrcmFixup) para chipsets Broadcom que nunca han sido integrados en Mac oficiales pero sí utilizados en Hacks:

  • device-id pci12e4,4357 >> BCM43225
  • device-id pci12e4,43B1 >> BCM4352
  • device-id pci12e4,43B2 >> BCM4352 (2.4 GHz).

AMFI y AMFIpass.kext

AMFI (Apple Mobile File Integrity) nació originalmente en iOS pero migró a macOS en 10.12 Sierra, posiblemente en 2012 cuando se introdujo GateKeeper y el código firmado digitalmente. En resumen, es una tecnología que bloquea la ejecución de código no firmado digitalmente. Consta de 2 componentes:

  • el servicio /usr/libexec/amfid ejecutado como root desde /System/Library/LaunchDaemons/com.apple.MobileFileIntegrity.plist
  • la extensión /System/Library/Extensions/AppleMobileFileIntegrity.kext.

AMFI debe estar habilitada para otorgar a las aplicaciones de terceros acceso a servicios y/o periféricos relevantes para la privacidad, como cámaras y micrófonos externos. Pero, con SIP y/o AMFI deshabilitados (condición necesaria para aplicar root patches de OCLP) el cuadro de diálogo para otorgar acceso a esas aplicaciones no se muestra al usuario por lo que simplemente no se pueden utilizar esos periféricos en aplicaciones como Zoom o MS Teams, por ejemplo.

AMFI está habilitada habitualmente pero ya se ha visto que los parches (root patches) de OCLP requieren deshabilitar AMFI y SIP para poder ser aplicados. Para evitar el problema de los periféricos que no funcionan con aplicaciones de terceros, el equipo de OCLP ha desarrollado la extensión AMFIPass.kext que permite habilitar AMFI cuando el sistema debe funcionar con AMFI y SIP deshabilitadas, como sucede al usar OCLP o aplicar sus parches. De esta forma se arregla el problema de los permisos y OCLP puede aplicar los parches como si AMFI estuviese deshabilitada.

Si macOS ya ha dado previamente permisos a estas aplicaciones de terceros y después se deshabilita AMFI y/o SIP, estos permisos son transferidos y el nuevo sistema los mantiene. Pero en una instalación limpia no existen. Este es el problema principal que intenta solucionar AMFIPass.kext. Poder aplicar root patches de OCLP con AMFI habilitada es sólo un efecto secundario positivo.

En resumen, al aplicar parches de OCLP se puede actuar de 2 formas diferentes:

  • con el argumento de arranque amfi=0x80 sin AMFIPass.kext. amfi=0x80 es una máscara de bits (bitmask) que deshabilita AMFI por completo. El valor 0x80 equivale a AMFI_ALLOW_EVERYTHING
  • con AMFIPass.kext quitando el argumento de arranque amfi=0x80.

Yo utilizo AMFIPass.kext, quitando amfi=0x80. Si la aplicación de los parches de OCLP falla debido a esta configuración, deshabilito temporalmente AMFI con el argumento de arranque amfi=0x80, aplico los parches, reinicio, quito amfi=0x80 y reinicio otra vez.

El argumento de arranque -amfipassbeta es proporcionado por AMFIPass.kext para anular la verificación de la versión del kernel, para que la extensión se cargue independientemente de la versión de macOS. De esta forma AMFIPass puede funcionar en macOS beta para los que la extensión todavía no tiene soporte. Su uso es necesario con AMFIPAss.kext 1.3.0. A partir de AMFIPass.kext versión 1.4.0 ya no es necesario para Sonoma.

En caso de duda, puedes comprobar qué extensiones están cargadas ejecutando
kextstat | grep -v com.apple

Deja un comentario