LEDE 17.01 en un Ubiquiti UniFi AC AP Lite: la guía definitiva

Hola!

Desde que Ubiquiti haya cerrado la posibilidad de usar firmware alternativo en los aparatos que distribuye (incluso violando la GPL una vez más al distribuir un U-Boot modificado sin 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. Piensa dos veces y guíate por el sentido común antes de hacer pasos peligrosos. 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.

Cómo instalar LEDE en el UniFi AC AP Lite

Necesitamos los siguientes archivos:

Ahora podemos empezar a trabajar.

Fase 0: Desbloqueando el firmware

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.

  1. Enciende el AP y conéctate. Si está ya configurado, debes resetearlo. De preferencia, el router no debe tener acceso a Internet ahora mismo.
  2. Conéctate al servicio ssh de la IP por defecto 192.168.1.20, con las credenciales ubnt/ubnt.
  3. Copia el fichero BZ.qca956x.v3.4.7.3284.150911.1650.bin a la carpeta /tmp del aparato, usando el nuevo nombre fwupdate.bin. Puedes hacerlo con un miniservidor http (python3 -m http.server 8080) o con scp.
  4. Luego de tener ya el archivo /tmp/fwupdate.bin, ejecuta syswrapper.sh upgrade2.
  5. Espera unos minutos a que el router se reinicie.

Fase 1: Instalando el firmware intermedio

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.

  1. Conéctate al AP por ssh. La vieja IP (192.168.1.20) y las credenciales ubnt/ubnt aún deberían servir.
  2. Copia el archivo lede-r3435-ubnt-unifiac-lite-enmaskarado-phase1.bin a la carpeta /tmp del AP.
  3. Ejecuta:
    1. mtd write /tmp/lede-r3435-ubnt-unifiac-lite-enmaskarado-phase1.bin kernel0
    2. mtd -r write /tmp/lede-r3435-ubnt-unifiac-lite-enmaskarado-phase1.bin kernel1
  4. 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.
  5. Ejecuta:
    1. insmod mtd-rw i_want_a_brick=1
  6. 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"
    
  7. Descarga al router el archivo UnifiAcApLite_mtd7_bs_kernel0.bin, en la carpeta /tmp.
  8. Vamos a sobreescribir esta partición bs, quizás quieras tener backups. Ahora ejecuta:
    1. mtd write /tmp/UnifiAcApLite_mtd7_bs_kernel0.bin bs

Fase 2: Instala el firmware final que desees

  1. No reinicies. Ahora sí, descarga el firmware LEDE que quieras usar (versión sysupgrade), y ejecuta:
    1. sysupgrade -n /tmp/lede-17.01.3-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin
  2. Si el aparato te pregunta reiniciar, dile que sí. Luego de ésto, ya tendrás LEDE en el AP.
  3. Fin.

Explicando los pasos

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í:

  • Por defecto los APs vienen con su firmware en kernel0.
  • Al desactualizar el aparato a la versión 3.4.7, éste firmware se carga en kernel1, y el bootloader de Ubiquiti se configura para bootear éste kernel1, modificando un byte en la partición bs.
  • LEDE espera estar en kernel0.
  • Por eso necesitamos instalar el firmware de fase 1 en ambas particiones:
    • si se copia sólo en kernel0, LEDE nunca se ejecutará.
    • Si se copia en sólo kernel1, LEDE arrancará bien su kernel, pero intentará montar los sistemas de archivos (la base squashfs y el jffs2) desde kernel0, donde obviamente no están: ésto genera un kernel panic, y por consiguiente, un soft brick.
  • Si copiamos nuestro firmware final a ambas particiones, puede funcionar, pero será un caos terrible intentar actualizarlo, etc. Es mejor corregir ésto.
  • Para arreglar éste desastre, copiamos el firmware de fase 1 a ambos bloques y corregimos la partición arrancable del bootloader, flasheando con mtd-rw una partición bs modificada.
  • Así el bootloader arrancará kernel0 y LEDE estará contento. Tareas como el sysupgrade volverán a funcionar.

Partición bs

  • ¿Qué significa bs? Quizás boot-selector, o algo así.
  • Ésta partición prácticamente no tiene datos propios del AP: en varios AP de un mismo batch, he verificado que no hay diferencias entre particiones bs, y que un sólo bs modificado sirve para todos.
  • El primer byte hexadecimal de la partición bs determina la partición a arrancar: un 0 significa kernel0, y un 8 significa kernel1.
  • Aquí tengo un bs que bootea kernel0 y otro bs que bootea kernel1, por si quieres ver las diferencias de ambos con hexdump.
  • Si estás seguro de que tu AP (sea un AC AP Lite o no) bootea su firmware oficial desde kernel0, puedes copiar su partición bs al principio, y luego restaurarla cuando necesites corregir el orden, teniendo LEDE ya.

 

Restringir canales Wi-Fi para el selector automático (ACS) en LEDE

Tengo un pequeño aparato Wi-Fi móvil (mi nodo móvil de LaOtraRed, AirBean). Lo llevo a todas partes, y a veces el canal Wi-Fi en el que está configurado no es el mejor (tiene más interferencia de otros routers, por ejemplo). Usando la función Automatic Channel Selection que hostapd expone, podemos hacer que OpenWrt o LEDE revisen velozmente la banda 2.4GHz y elijan el canal más limpio.

Como nota adicional, el único controlador inalámbrico que he visto que funciona más o menos bien con ACS es ath9k (con alguno que otro bug, especialmente si usas 2+ interfaces virtuales en LEDE 17.01.2), ya que éste sí tiene cosas como el detector de ruido ambiental en el canal Wi-Fi (noise floor). Los chips Ralink de los aparatos que tengo, no soportan ésto y ACS no funciona como debe.

El problema que me ocasiona es que ésta función tiende a ocupar el canal 13, que casi siempre está vacío, pero no todos los clientes Wi-Fi lo soportan, gracias a clientes y APs mal configurados alrededor (es una historia larga acerca de 802.11d y 802.11h). Gracias a ésto, la gran mayoría de clientes Wi-Fi usa las regulaciones US (de Estados Unidos), y por lo tanto, son ciegos y sordos a los canales 12 y 13.

Podría configurar mi router móvil con las regulaciones en US y así evitar esos dos canales, pero eso significaría contribuir más al desastre de 802.11d en mi ciudad. Configurando la opción country_ie se evitaría, pero sigo creyendo que no es la mejor solución.

Solucionando el problema

Resulta que hay una opción no documentada en OpenWrt (desde r47427 de trunk, en noviembre de 2015) y LEDE para poder restringir los canales de los que el ACS puede disponer, llamado el array channels:

config wifi-device 'radio0'
        #(...)
        option channel 'auto'
        list channels '1'
        list channels '6'
        list channels '11'

Funciona: puedes probar especificando algunos canales y el router escogerá alguno de ellos.

LEDE 17.01.1 en una Mikrotik RB750GL, sin brickear nada en el intento

Hola,
Algunos de uds. saben que estoy ayudando a montar una red de Internet en la carrera donde estudio (Informática-UMSA). Entre las compras, venía un RouterBOARD 750GL con instrucciones de instalar OpenWrt para nuestro propósito.

Instalar OpenWrt es sencillo (initramfs + wget2nand), pero ésto se ha vuelto más complicado con LEDE, y no sale a la primera. Pero tengo una guía para lograrlo a la primera (necesitarás un sistema GNU/Linux cualquiera, medianamente actualizado).

 

Primeros pasos

  • Vamos a tocar el sistema de archivos completo, así que es hora de hacer una copia de tu licencia RouterOS, si quieres volver a ése firmware sin romper nada. Abre WinBox -> System -> License -> Export Key.
  • No debes fiarte de una sola fuente de información, y no me responsabilizo si te equivocas. Debes seguir los pasos y leer mucha documentación para saber lo que estás haciendo. TEN MUCHO CUIDADO: aquí es muy fácil romper cosas. Ésta edición de RouterBOOT no habilita los pines serial TX-RX de la placa (y para colmo, la memoria es NAND), así que un hard-brick será casi imposible de solucionar.
  • Igual, debes saber que las RB750GL suelen tener cambios importantes de hardware sin ser mencionados (como el tamaño de la NAND). ¡Mucho ojo con brickear algo!

 

Para instalar LEDE, vamos a aprovechar una feature de RouterBOOT y utilizaremos una imagen initramfs que se cargará en la memoria RAM. Para ello, necesitamos configurar al router para que 1) bootee de la red una vez, y 2) que luego bootee de la NAND. Sí o sí necesitaremos WinBox para eso.

Volvé a Windows, conecta tu máquina a un puerto LAN cualquiera del router, y abre WinBox.

  1. System → Routerboard → Settings → Boot device: Try ethernet once then NAND
  2. System → Routerboard → Settings → Boot protocol: DHCP
  3. System → Routerboard → Settings → Force Backup Booter: Activar (¡importante!)

Guarda (“save”), y luego, apaga el router. No lo enciendas ahora.

 

Instalando LEDE 1/2

Ahora, inicia tu sistema GNU/Linux, andá a tu $HOME, creá una carpeta “mtikgl” y una carpeta “mtikglcc”

En la carpeta mtikgl descarga éstos archivos:

 

En la carpeta mtikglcc descarga éstos archivos:

Ahora, asigna a tu máquina la dirección 192.168.0.100/24 con iproute2 o con NetworkManager. Luego conecta tu máquina al router, al puerto 1 (WAN): NO LO ENCIENDAS AÚN.

 

Quizás, al encender el router luego, la interfaz se levante demasiado rápido y no te alcance a activar un comando. Tal vez haya flips, y las siguientes instrucciones no funcionen. Para estar seguros, conecta al medio de tu máquina y el router, un switch ethernet barato.

 

Ahora abre un terminal en la carpeta mtikgl y ejecuta:

sudo killall dnsmasq
sudo dnsmasq --no-daemon --port=0 --dhcp-range="192.168.0.50,192.168.0.150,12h" --enable-tftp \
    --bootp-dynamic --dhcp-boot="lede-17.01.1-ar71xx-mikrotik-vmlinux-initramfs.elf" \
    --tftp-root="$HOME/mtikgl"

Ahora, toma un palillo y presiona el botón de RESET, con el router apagado.

Mientras mantienes presionado RESET, ahora sí enciende el router. Espera al menos 15 segundos, y luego quita el palillo.

Podrás ver ahora en las lucecitas del switch bastante actividad, y en la ventana del terminal donde está dnsmasq, que alguien pidió una IP y descargó el initramfs.

 

Bien! Ahora LEDE está cargándose en la memoria RAM, y puedes cerrar el dnsmasq con un Ctrl-C. Conéctate al router usando cualquier puerto LAN (del 2 al 5) y asígnate la IP 192.168.1.100/24.

Ahora nos conectamos al router e instalaremos LEDE.

# Copiamos ahora mismo el firmware. Aquí uso el firmware para NANDs >=128, ojo.
scp lede-17.01.1-ar71xx-mikrotik-nand-large-squashfs-sysupgrade.bin 192.168.1.1:/tmp

ssh -l root 192.168.1.1
# ahora estamos dentro del router
cd /tmp
sysupgrade lede-17.01.1-ar71xx-mikrotik-nand-large-squashfs-sysupgrade.bin

 

Si todo va bien, el router aceptará el archivo y la sesión SSH se apagará de inmediato. Déjalo así unos 30 segundos.

Instalando LEDE 2/2

La instalación debería ser así de fácil, pero no funciona: el router no podrá bootear LEDE y entrará en un bootloop.

Al parecer, LEDE ahora guarda el kernel y el rootfs en la partición UBI de datos en mtd3, pero algunas ediciones de RouterBOOT sólo pueden bootear kernels en la partición mtd2, formateada con yaffs. Hasta donde sé, LEDE no soporta ya yaffs.

 

Gracias a nuestra configuración de RouterOS, el bootloop activa el booteo por DHCP y podremos arrancar otro initramfs.

Vamos a la carpeta mtikglcc y ejecutamos ésto:

sudo killall dnsmasq
sudo dnsmasq --no-daemon --port=0 --dhcp-range="192.168.0.50,192.168.0.150,12h" --enable-tftp \
    --bootp-dynamic --dhcp-boot="openwrt-ar71xx-mikrotik-vmlinux-initramfs.elf" \
    --tftp-root="$HOME/mtikglcc"

Nos conectamos con la IP 192.168.0.100/24 al router encendido (que está en bootloop ahora mismo) al puerto 1 (WAN). No suele ser necesario reiniciar, el router debería pedirte un initramfs desde ya.

 

Ahora, conéctate al router usando cualquier puerto LAN (del 2 al 5) y asígnate la IP 192.168.1.100/24

# Copiamos el kernel que falta
scp ../mtikgl/lede-17.01.1-ar71xx-mikrotik-vmlinux-lzma.elf 192.168.1.1:/tmp/

telnet 192.168.1.1
# ahora estamos dentro del router
cd /tmp
cat /proc/mtd
# debería aparecer la partición kernel como mtd1

mtd erase kernel
mount /dev/mtdblock1 /mnt
mv /tmp/lede-17.01.1-ar71xx-mikrotik-vmlinux-lzma.elf /mnt/kernel
chmod a+x /mnt/kernel
umount /mnt

 

Ahora sí puedes reiniciar, y al bootear de nuevo, LEDE debería estar funcionando.

 

Créditos

He tomado información de los siguentes enlaces:

  • https://wiki.openwrt.org/toh/mikrotik/common
  • https://www.mail-archive.com/lede-dev@lists.infradead.org/msg06759.html
  • http://lists.infradead.org/pipermail/lede-dev/2017-April/007005.html

TL-WA5210G vs OpenWRT

Por varias “causalidades” de la vida, tengo en mis manos un TL-WA5210G V1 (punto de acceso/repetidor/router Wi-Fi de largo alcance). Como ya pudieron leer en algún anterior post (…), casi todos los sistemas que manejo funcionan con firmware alternativo.

Revisando el aparato

Acá voy a contar lo que logré investigar. He logrado instalar al aparato OpenWRT Chaos Calmer (2015) luego de meses y meses de pelea, incluso teniendo que compilarme mi propio firmware. Si lo quieres lo puedes descargar. Lo explico mejor luego. (Ya existe firmware oficial)

Viendo cómo se puede mejorar la funcionalidad de este aparato, e investigando un poco, llegué a estas conclusiones:

  • Este aparato no usa Linux en absoluto: el firmware se basa en VxWorks. Detesto VxWorks.
  • Tenemos 16 MB de RAM, y 4 MB de ROM. El firmware sólo usa 2 MB de ROM.
  • Vx(dont)Works es bueno para tareas simples. Pero es bastante restrictivo, y es algo inestable. No esperes más de lo que ofrece.
  • No hay soporte de parte de DD-WRT para este aparato.
  • No hay soporte directo de parte de OpenWRT (a menos que quieras “ensuciarte las manos” compilando una versión vieja)
  • En este caso, no siempre es buena idea usar firmware basado en Linux. (16 MB es poco, y OpenWRT accede a sólo 13 MB; si quieres comodidad al administrar, funcionará muy lento)
  • Si insistes en usar OpenWRT, tienes que cambiar el “bootloader” de VxWorks por RedBoot.

(puse “bootloader” entrecomillado, ya que de “bootloader” no tiene nada: sólo es un descompresor)

Aquí la cosa se pone interesante: luego descubro que existe un port de AirOS para mi aparato TP-LINK…

Acerca del port de AirOS

  • Este firmware NO es crackeado ni ilegal.
    • El SDK de AirOS era software libre, pero por la “violación a su propiedad intelectual”, ya no lo es. (y con razón)
    • Este firmware se basa en ese SDK. Por las anteriores razones, no hay actualizaciones (la última versión salió en enero de 2013).
  • Este firmware NO es oficial.
  • Este firmware sólo soporta la versión V1 del hardware TP-LINK
  • La versión AirOS es 4.x (¿o 3.x?)
  • Este firmware es gratuito (pero no es software libre).
  • El programa instalador/flasheador es privativo, y exige pagar por cada dispositivo a flashear.
  • Este programa es esencial, ya que reemplaza casi todo el contenido de la ROM, incluyendo el “bootloader”. No se salva ninguna partición: incluso se modifica la MAC.
  • Si instalas AirOS, NO es posible volver al firmware VxWorks de TP-LINK.
  • Existen versiones pirata del software flasheador, pero que flashean los dispositivos con la misma MAC (peligroso)

Instalando el firmware AirOS

Tomando en cuenta lo que leíste arriba, vamos a empezar a trabajar.

La versión del TP-LINK Reprogrammer “5210G_beta2”, aunque funciona bien para flashear, tiene un bug de validación de licencia. Gracias a este bug es posible instalar AirOS sin tener que comprar una “licencia” a los autores de este hack.

Más detalles no te puedo dar: puedes empezar de acá. Busca la versión que indiqué arriba y usa esa. Ojo con la “mac legal” que incluya: no me acuerdo cuál usé, pero una sí te deja conservar la identidad de la MAC de tu aparato. Suerte.

Instalando el firmware OpenWRT

Necesitas descargar el firmware:

https://downloads.openwrt.org/chaos_calmer/15.05/ath25/generic/openwrt-15.05-ath25-ubnt2-squashfs.bin

Sólo necesitas actualizar desde la interfaz de AirOS y ya tienes OpenWRT en el aparato.

Nuevo video: Rochita tenías que ser (Adaptación)

Hoy les comparto un vídeo, producido por el gran Enmaskarado, con una temática únicamente de parodia:

Detalles del Video

  • Título: “Rochita tenías que ser (Adaptación)”
  • Categoría: Deviations, Video Triturado, Parodia
  • Autor: El Enmaskarado
  • Fecha de publicación inicial: 9 de Marzo, 2015
  • Licencia temporal: Todos los derechos reservados
  • Licencia: Creative Commons BY-NC-ND 4.0

Créditos y material utilizado

  • Omar Rocha asume como nuevo alcalde de La Paz [GIGAVISION]
  • Omar Rocha (…) [UNIVERSAL DE TELEVISION] [ASOCIACION TELEDIFUSORA BOLIVIANA]
  • Edgar Patana (…) [ERBOL]
  • Patrón Ratones y Dinero [123RF/EL ENMASKARADO]
  • La Alcaldía está que Arde [EL ENMASKARADO]
  • Fernando Román – Collita (lírica)
  • Rochita tenías que ser (Enmaskarado YouTube Edit) [EL ENMASKARADO/FREE]
  • ANONY-MOUSE TV [EL ENMASKARADO]
  • Cebras y burros bailan [EL ENMASKARADO]
  • Rocha Bailando [FREE]
  • Like de Cebra [GOBIERNO AUTÓNOMO MUNICIPAL DE LA PAZ]
  • Comunicado Oficial [GOBIERNO AUTÓNOMO MUNICIPAL DE LA PAZ]
  • Rocha DealWithIt Edit

Como siempre, producido con software libre (Kdenlive).

Mira el video:

Actualizando DD-WRT desde r24461

Un problema de DD-WRT, en las builds de la revisión r24461, es que la funcionalidad de actualizar a otra revisión nueva está dañada. Vamos a actualizar la versión de DD-WRT de otra manera. (en mi caso, utilizando un TL-WR941ND v3)

(podrías encontrar algo de información útil en el post oficial de la rev. r24461 en los foros de DD-WRT)

Paso 1: Volver al firmware de fábrica

Vamos a descargar la última versión del firmware privativo de TP-LINK: en mi caso, es este: TL-WR941NDv3 Firmware. Busca en Google tu modelo, y verifica bien tu versión de hardware.

Luego, hay que enviar este archivo al router: descomprime el firmware (si vino en un ZIP), y monta un servidor web temporal. Luego conéctate al router:

telnet 192.168.1.1

root@main:~# cd /tmp
root@main:/tmp# wget -O tplink.bin http://(...)

 

Antes de hacer nada más, revisa el nombre del archivo original: en mi caso “wr941nv3_en_3_13_9_up(120201).bin

Si el nombre de tu firmware NO contiene la palabra “boot”, continúa sin problemas, y ve directo al flasheado.

Si el nombre de tu firmware contiene la palabra “boot” (como éste: wr941nv4_en_3_9_17_up_boot(091118).bin) no puedes continuar: tu firmware tiene una actualización de pieza del bootloader y vas a brickear tu router si ignoras este paso.

Tenemos que eliminar los primeros 0x20200 bytes, según la wiki de OpenWRT para mi dispositivo (para el tuyo podría variar):

dd if=tplink.bin of=tplink_final.bin skip=257 bs=512
rm tplink.bin

Ahora sí, podemos continuar.

Flasheando el router

Ojo con este paso: el método varía entre dispositivos. Usualmente se debe usar mtd, pero los argumentos/particiones de sistema no son los mismos.

Busca tu modelo de router en la wiki de OpenWRT

En mi caso, voy a escribir

mtd -r write tplink.bin firmware

Si tuviste el problema del firmware “boot” hace un momento, recuerda asegurarte apuntar el comando mtd al archivo de firmware correcto.

Paso 2: Volver a DD-WRT, o probar otro firmware

Ahora volviste al firmware de fábrica. Puedes volver a flashear tu router con firmware alternativo siguiendo cualquier buen tutorial de Internet, o leyendo: Firmwares alternativos de router para novatos: DD-WRT y OpenWRT

Novedades en la producción…

Aquí les haré un resumen corto de las últimas novedades al martes 25 de marzo del año 2014.

  • Crazy People (ex Trolazo Show) [Luis Fernando Mita/Estrellas Estrelladas]

Proyecto suspendido indefinidamente.

  • Seventeen [Luis Fernando Mita/Estrellas Estrelladas]

Proyecto suspendido de forma temporal.

  • El Enmaskarado [Luis Fernando Mita] y [Luis Fernando Mita/Estrellas Estrelladas]

Se migra todo el trabajo actual al nuevo proyecto, junto a los Fantasmas Teatrales.

Se restaura el trabajo y continúa el proyecto

  • El Enmaskarado [Luis Fernando Mita/Fantasmas Teatrales]

Proyecto en suspenso.

Nuevo Evento: Transmisión en Vivo por Internet de la Clausura del Año Lectivo 2013 “COLEGIO GREGORIO REYNOLDS”

Hoy he tenido una idea: ya que este año es el último que estaré en el Colegio, he pensado en dar ayuda a las personas (e. g. padres o familiares) que quisieran asistir al evento de la Clausura del Año Lectivo pero no podrán por algún motivo, ayudarlos con transmitir todo el festival por Internet y luego hacerlo disponible en Internet, todo esto como recuerdo de este mi último año.

Leer másNuevo Evento: Transmisión en Vivo por Internet de la Clausura del Año Lectivo 2013 “COLEGIO GREGORIO REYNOLDS”