Desde que Ubiquiti ha cerrado la posibilidad de usar firmware alternativo en los aparatos que distribuye (incluso violando la GPL al distribuir un U-Boot modificado sin su código fuente), se ha vuelto más difícil intentar instalar OpenWrt o LEDE. Pero, gracias a la experiencia obtenida en algunas tareas, he podido armar esta guía para hacerlo (mas una explicación al final). Quizás haya contenido que no necesariamente aplica a tu aparato. De todas maneras, si arruinas el proceso, los routers Ubiquiti te permiten cargar firmware (oficial) por TFTP y así poder volver a empezar. Igualmente, sería bueno que hagas copias de los bloques /dev/mtdblock* en el firmware original y los saques a tu máquina con scp, para estar más protegido, por si acaso.
Necesitamos los siguientes archivos:
Ahora podemos empezar a trabajar.
Por defecto los APs con los que trabajé venían con la versión 3.4.14 del firmware oficial. Como éste ya implementa verificación de las firmas digitales para el firmware de Ubiquiti, tenemos que hacer un downgrade (desactualizar) a la versión 3.4.7, que no implementa ésta restricción.
Ubiquiti usa un formato un poco extraño para el firmware de sus APs, y gracias a éso, no podremos instalar OpenWrt/LEDE así nada más, ya que tratará de ejecutar el firmware desde una partición no esperada. Usaremos un firmware intermedio para corregir éso.
Conéctate al AP por ssh. La vieja IP (192.168.1.20) y las credenciales ubnt/ubnt aún deberían servir.
Copia el archivo lede-r3435-ubnt-unifiac-lite-enmaskarado-phase1.bin a la carpeta /tmp del AP.
Ejecuta:
mtd write /tmp/lede-r3435-ubnt-unifiac-lite-enmaskarado-phase1.bin kernel0
mtd -r write /tmp/lede-r3435-ubnt-unifiac-lite-enmaskarado-phase1.bin kernel1
El aparato se reiniciará, y luego de unos minutos, el firmware de primera fase estará funcionando. Deberías tener acceso por ssh a la IP 192.168.1.1, sin credenciales.
Ejecuta:
Ahora todas las particiones se han desbloqueado y habilitado como lectura/escritura. Revisa la estructura del chip SPI, para identificar a la partición bs (que en nuestro caso, está en mtd7).
root@n16p1:~# cat /proc/mtd dev: size erasesize name mtd0: 00060000 00010000 "u-boot" mtd1: 00010000 00010000 "u-boot-env" mtd2: 00790000 00010000 "firmware" mtd3: 00140000 00010000 "kernel" mtd4: 00650000 00010000 "rootfs" mtd5: 002a0000 00010000 "rootfs_data" mtd6: 00790000 00010000 "ubnt-airos" mtd7: 00020000 00010000 "bs" mtd8: 00040000 00010000 "cfg" mtd9: 00010000 00010000 "EEPROM"
Descarga al router el archivo _UnifiAcApLite_mtd7_bs_kernel0.bin_, en la carpeta /tmp.
Vamos a sobreescribir esta partición bs, quizás quieras tener backups. Ahora ejecuta:
No reinicies. Ahora sí, descarga el firmware LEDE que quieras usar (versión sysupgrade), y ejecuta:
Si el aparato te pregunta reiniciar, dile que sí. Luego de ésto, ya tendrás LEDE en el AP.
Fin.
Ubiquiti maneja una estructura de la memoria en sus APs un poco rara, pero que cada vez es más común en entornos profesionales y alguno doméstico: dos particiones para el firmware. Así, estos aparatos se pueden actualizar automáticamente y de forma masiva, sin riesgos. Si una actualización falla, el antiguo firmware puede ejecutarse de nuevo y minimizar el tiempo de no-actividad del AP. LEDE se conforma bien con tomar la primera partición, pero el proceso de instalación de Ubiquiti no le garantiza que sea así: