Vídeo: media.ccc.de / CC BY 4.0
Category
🤖
TecnologíaTranscripción
00:00El paso de la tecnología
00:15Así que, todos lo saben
00:17¿Quién de ustedes sabe sobre la recuperación de desastres?
00:21Oh, no lo esperaba
00:24Lo esperaba mucho más
00:26Así que, cuando cosas salen mal
00:28Tienes la opción de tener tu trabajo preparado y, por lo tanto, tienes un plan de recuperación de desastres.
00:35Hay objetivos de tiempo de recuperación, objetivos de punto de recuperación,
00:40pero básicamente deberías tener una idea de recuperación cuando cosas van mal.
00:45Se llama recuperación de desastres.
00:47Pero la recuperación de desastres en tu centro de datos es como un poco de lo común.
00:52Hoy tenemos, digamos, una recuperación de desastres un año después
00:57y, en este caso, cuando el desastre... ¿cuántos?
01:01¡Diez años después!
01:02Y, en este caso, cuando la recuperación de desastres golpea la ciencia de la roqueta, Piston Maker.
01:08Gracias.
01:17Bien, gracias por venir.
01:19Voy a intentar contarles una pequeña historia
01:22sobre cómo tratar de salvar un satélite muerto
01:25de convertirlo en basura espacial
01:27con algunos truques de hackeo de firmware.
01:30Muy brevemente, ¿quién soy yo?
01:32Soy estudiante de Ciencias Computadoras de TU Berlín
01:35y juego a CDF a veces, donde más o menos hago retrasos
01:38y también hago mods para videojuegos.
01:40Pero lo importante es que no soy ingeniero de aerospacio.
01:42Así que una pregunta de seguimiento lógica podría ser
01:45¿de dónde obtengo un satélite?
01:47Bueno, resulta que mi universidad tiene muchos de estos.
01:50Han lanzado 30.
01:51Y lo interesante es que la forma en que se financian estos
01:53es que se financian para ser construidos y luego lanzados
01:56y luego se operan por, como, un año.
01:59Pero la cosa es que muchos de ellos, en realidad,
02:01duran ese tiempo de vida de un año.
02:03Entonces, ¿qué haces con ellos después de ese tiempo de vida de un año?
02:06Y entonces, la universidad vino con algo que se llama...
02:08Hicieron una clase, básicamente, que enseña a los estudiantes
02:11cómo operar un satélite.
02:12Y una vez que pasas la clase, puedes usar el antiguo satélite,
02:15que ya no tiene financiamiento, para seguir haciendo más ciencia.
02:18Y así que tomé esta clase en el 2022 y trabajé en un satélite
02:20llamado Bizat-9.
02:21Pero, en realidad, hoy vamos a hablar de un satélite mucho más antiguo
02:24llamado Bizat-1.
02:26Este es un cubo nuevo, 10x10x10 centímetros
02:29y pesa 1 kilogramos.
02:30Y es como un factor de forma estandarizado, básicamente.
02:33Y en ese momento era un factor de forma bastante nuevo.
02:35Este era como el 33º de esos en el espacio.
02:38De hecho, fue el primer cubo de la universidad
02:40con un equipo nuevo, todo diseñado desde cero
02:42en un presupuesto bastante bajo.
02:43Así que, aparentemente, un proyecto bastante aventuroso,
02:45me dijeron.
02:46Estaba en la escuela primaria.
02:47Y hoy en día hay como 4.000 de estas cosas en el espacio.
02:52Hubo como una misión primaria de un año
02:54y lo completaron con éxito.
02:55Y lo que lo hace interesante es que
02:57está en una órbita tan alta
02:59que va a tomar más de 20 años para volver a la Tierra.
03:02Así que tenemos 20 años para usar esta cosa.
03:04Un problema.
03:05En 2011, después de la misión primaria,
03:08empezó a regresar datos invalidados.
03:10Así que nada útil.
03:11Y así que hicieron una diagnóstica sobre esto
03:13y determinaron que tal vez esto es como una falla relacionada con la radiación.
03:17Porque en el espacio hay más radiación,
03:19así que a veces las partes fallan.
03:20Así que lo que hicieron fue cambiar los computadores.
03:22Así que tenían dos computadores en bordo,
03:23por redundancia, precisamente por esta razón,
03:25y los cambiaron a los otros.
03:27Y funcionó de nuevo.
03:28Perfecto.
03:29Luego sucedió de nuevo en 2013
03:30y fueron fuera de los computadores.
03:32Desafortunadamente.
03:34Así que, en algún punto,
03:35yo sabía de esto
03:36y de repente conocí al líder del proyecto
03:37en una fiesta en la universidad.
03:38Y discutimos esto un poco
03:40y hicimos algunas teorías sobre los síntomas precisos.
03:42Y de repente decidimos
03:44que realmente no parecía una falla de hardware.
03:46Parecía más como una falla de software.
03:48Y así que tal vez actualmente tenemos la oportunidad
03:50de volver esto a la vida.
03:52Así que, aquí está el plan.
03:54Vamos a descubrir cómo funciona un satélite.
03:56Muy brevemente.
03:57Luego vamos a descubrir cuál es el problema.
03:58Luego vamos a arreglar el problema.
03:59Y luego tenemos un nuevo satélite.
04:01Así que, este es un satélite.
04:03No tenemos tiempo para ir por todo esto en detalle.
04:05Lo que quiero destacar es que hay muchas componentes duplicadas
04:08y se organizan en estos diferentes subsistemas,
04:10en estas diferentes cajas.
04:11Y los subsistemas en este satélite
04:13están conectados juntos por dos buses CAN
04:15para la redundancia.
04:16Y el CAN es un tipo de protocolo de buses automóviles
04:18y se ha convertido en una aplicación a bajo costo
04:21pero necesitas reliabilidad y tal.
04:23Pero vamos a hablar sobre estos dos.
04:25El sistema de comunicación y el computador de bordo.
04:27Porque eso es lo que hace la telemetría.
04:29El sistema de comunicación consiste en
04:31dos cadenas idénticas, básicamente,
04:33para la redundancia.
04:34Y cada cadena consiste en una antena,
04:36bastante explanatoria, creo yo,
04:38un transceiver, que es básicamente como una radio,
04:40que recibe.
04:41Y luego hay algo llamado un controlador terminal.
04:43Y esto es como el microcontrolador que conecta al CAN bus
04:45y conecta la conexión a la radio.
04:47Y esto encodea y modula la telemetría,
04:49que es la cosa que envías del avión a la tierra,
04:52y recibe y luego decodea los comandos,
04:55que son los comandos que envías al avión.
04:58Y lo que esto te da es comunicación duplica.
05:00Y así, duplica en este caso significa
05:02que solo puedes hacer uno a la vez.
05:05No puedes enviar ambos comandos y
05:07enviar la telemetría al mismo tiempo.
05:09Así que hay una especie de multiplex entre estos dos
05:11y hablaremos de cómo se hace en un segundo.
05:13La siguiente cosa es el computador en modo activo
05:15y esto es realmente el comienzo del show.
05:17Así que esto hace todo, ¿verdad?
05:19Escribe, hace todo el algoritmo,
05:21colecciona los sensores, hace la telemetría,
05:23procesa los comandos y controla todo.
05:25Y esto es basado en un ARM7 TDMI Core
05:27que funciona a unos 16 MHz.
05:29En términos de poder computativo,
05:31creo que es equivalente a algo entre un Game Boy Advance
05:33y un Nintendo DS.
05:35Así que no es una gran cantidad, pero no necesitas tanto.
05:37Tienes 16 MHz de SRAM,
05:39entonces no es una gran cantidad.
05:41Luego tienes dos chips de flash.
05:43Tienes 16 Mb para software,
05:45así que es firmware y configuración.
05:47Y luego tienes un chip de flash de telemetría
05:49y eso es usado para almacenar datos de telemetría.
05:51Así que se ve así.
05:53Estos componentes se integran
05:55en estos PCBs de 10 cm x 10 cm.
05:57Y puedes ver la simetría entre ambos lados.
05:59Este es el computador en modo activo
06:01y tienes uno a la izquierda y uno a la derecha
06:03y se ven idénticos.
06:05Y si lo descargas,
06:07se montan así
06:09para formar un cubo.
06:11Y luego pones un montón de paneles solares
06:15y tienes un nuevo satélite.
06:17Lo pones en un rocket
06:19y lo pones en el espacio.
06:21¿Dónde está en el espacio?
06:23Está ubicado
06:25en una órbita de 700 km
06:27alrededor de la Tierra.
06:29Así que está 700 km sobre la superficie de la Tierra
06:31y se mueve alrededor de 7,5 km por segundo.
06:33Esto significa que se realiza
06:35una revolución completa alrededor de la Tierra
06:37cada 100 minutos o así.
06:39Puedes ver esto como un gráfico
06:41mirando hacia el norte.
06:43Y se hace en el norte hacia el sur.
06:45Y la Tierra, en Magdeburg,
06:47donde está la estación de tierra de TU Berlin,
06:49se mueve por debajo de eso
06:51y tienes dos lugares
06:53en la rotación de la Tierra
06:55donde la estación de tierra y el satélite
06:57están alineados.
06:59Uno en la mañana y otro en la noche.
07:01Si tienes esa alineación
07:03y el satélite pasa por delante,
07:05entonces tienes una línea de vista
07:07y puedes hablar con el satélite.
07:09Estos pasos son 10 a 15 minutos
07:11y puedes tener 3 a 4 de estos en la mañana
07:13y 3 a 4 en la noche.
07:15Y es la única vez que puedes hablar
07:17con tu satélite, al menos en este tipo de órbita.
07:19¿Qué haces en estos pasos?
07:21Tratas de comandar tu satélite.
07:23Por default, el satélite
07:25no está transmitiendo telemetría,
07:27solo está escuchando.
07:29El satélite está esperando los comandos
07:31y una vez que recibe un comando,
07:33se convierte en modo activo.
07:35Y lo que hace es transmitir
07:37estas explosiones de telemetría
07:39cada 3 segundos o así.
07:41Y la razón por la que está haciendo esto
07:43en este patrón de explosiones
07:45es que tiene que dejar espacios
07:47para que puedas enviar más comandos.
07:49Entonces, entre esos espacios de telemetría
07:51puedes enviar más comandos.
07:53Y si pasan 60 segundos sin recibir
07:55ningún comando,
07:57el satélite deja de transmitir
07:59y vuelve a modo activo.
08:01Una pregunta que podrías preguntar es
08:03si solo recibimos 15 minutos
08:058 veces al día,
08:07¿qué hacemos con los restantes 22 horas
08:09o minutos?
08:11Hay un concepto llamado telemetría oficina
08:13y esto es común en los espacios,
08:15pero cada espacio es diferente.
08:17Entonces, cada 90 segundos
08:19el satélite
08:21toma el telemetría actual
08:23y lo envía a Flash.
08:25Las condiciones que hablamos de,
08:27estas imágenes,
08:29se componen de un par de telemetrías
08:31de ahora mismo
08:33y tres pares de la telemetría
08:35grabada anteriormente.
08:37Así que, en cada paso,
08:39recuerdas lo que sucedió
08:41durante el día
08:43para obtener una imagen completa
08:45de lo que está pasando
08:47en tu espacio en cualquier momento.
08:49Bueno, eso termina el pequeño curso.
08:51Ahora vamos a ver qué está pasando.
08:53Antes de obtener datos en las imágenes
08:55de telemetría,
08:57obtuvimos imágenes vacías.
08:59Vamos a ver lo que significa vacía en un segundo.
09:01Pero lo curioso es que no terminó transmitiendo
09:03después de ese tiempo de 60 segundos
09:05que acabamos de hablar.
09:07Vamos a ver exactamente lo que significa vacía.
09:09La telemetría es una cosa estandarizada.
09:11Hay un comité llamado
09:13el Comité Consultativo para los Sistemas de Data de Espacio
09:15y estandarizan cómo puede ver la telemetría.
09:17BESAT sigue la estandaridad.
09:19Todo verde y abajo en el slide sigue la estandaridad.
09:21La cosa de los cuatro volantes
09:23es como una cosa estandarizada.
09:25Básicamente, tenemos estos cuadros
09:27o cuadros maestros,
09:29y cada cuadro maestro contiene cuatro cuadros de transferencia.
09:31Es como la caja de transporte en una red.
09:33Y debajo de eso hay paquetes de fuente
09:35y eso es como un paquete de UDP
09:37en la caja de abajo.
09:39El primero de estos cuadros de transferencia
09:41es dedicado a la telemetría en vivo,
09:43y los últimos tres son dedicados
09:45a la telemetría de grabación de antes.
09:47Ahora, no voy a molestarte con todos los detalles
09:49de TCSDS porque es un estándar muy largo y aburrido,
09:51pero voy a ir por algunos de los detalles.
09:53Este es uno de los cuadros de transferencia
09:55que queda a la izquierda,
09:57y lo que tienes es un número mágico al principio,
09:59que es el ASM, o Marca de Atajo de Sincronización.
10:01Luego tienes un identificador de canal virtual
10:03o VCID, y básicamente te muestra
10:05el contexto de la telemetría,
10:07porque puedes tener la misma telemetría
10:09en vivo, o puede ser una telemetría grabada
10:11de horas atrás.
10:13Tienes un cuadro maestro de canal
10:15o MCFC,
10:17y aquí tienes un pequeño estándar
10:19que se apaga cada vez que se envía un cuadro.
10:21Esto es útil porque puedes
10:23verificar el estándar, y si hay un espacio
10:25en ese estándar, sabes que has perdido un cuadro.
10:27Luego tienes un APIT,
10:29y esto determina el tipo de telemetría
10:31y el formato de telemetría enviada.
10:33Puede ser telemetría de casa normal,
10:35o un estándar de flashes,
10:37o, no sé, datos de imágenes.
10:39Luego tienes el field de datos de paquetes,
10:41y ese es el dato de usuario actual,
10:43formado según ese APIT.
10:45Este es un cuadro completo,
10:47con los componentes diferentes.
10:49Quiero ilustrar que esto es lo que normalmente
10:51se ve, y este es lo que se ve después de la anomalía.
10:53Tienes un montón de ceros,
10:55pero aún tienes algo que ver,
10:57así que voy a pasarlo para ti.
10:59Ese ASM, ese número mágico,
11:01está correcto.
11:03Ese pequeño estándar, está correcto.
11:05Pero aparte de eso, los cuadros de transferencia
11:07en línea con la telemetría en vivo son completamente ceros.
11:09Y el cuadro de transferencia en línea
11:11con la histórica telemetría,
11:13dice que intenté obtener la telemetría en línea,
11:15pero no había nada guardado.
11:17Interesante.
11:19Estos son todos los síntomas que obtenemos.
11:21Y ahora tenemos que descubrir qué es el problema.
11:23Para hacerlo, vamos a ver muy rápidamente
11:25un flowchart de cómo el computador
11:27genera
11:29esta telemetría.
11:31Hay dos tareas.
11:33La primera genera la telemetría.
11:35La segunda la transmite.
11:37Esta es la tarea de asamblea.
11:39Asamblea los cuadros de transferencia individuales,
11:41así que hay un pequeño estándar en la parte superior
11:43llamado tiempo de asamblea.
11:45Y este es el estándar de 90 segundos
11:47que hablamos de,
11:49que genera un cuadro cada 90 segundos
11:51para salvarlo a Flash.
11:53Y también puede ir a un nivel más bajo
11:55cuando la telemetría está en vivo.
11:57El tiempo de asamblea es un parámetro configurable
11:59que se encuentra en Flash,
12:01así que es un estándar.
12:03Pero normalmente está establecido para 90 segundos.
12:05Así que cuando el tiempo de 90 segundos se desvanece,
12:07genera un nuevo cuadro de transferencia
12:09para asamblea en vivo
12:11y también lo pone en un estándar en vivo
12:13para asamblea en vivo.
12:15Luego tenemos la tasa de transferencia
12:17y esta es la cosa responsable
12:19de enviar la telemetría.
12:21Primero tenemos un estándar de 3 segundos
12:23en la parte izquierda
12:25y esto es para fortalecer
12:27los espacios entre los cuadros
12:29en los que podemos enviar comandos.
12:31Así que está esperando hasta que pasen los 3 segundos
12:33desde el último cuadro.
12:35Luego vamos a ver el estándar de 60 segundos
12:37y luego vamos a construir el estándar de maestro
12:39y vamos a sacar el estándar de transferencia
12:41de SRAM,
12:43y vamos a leer 3 estándares de transferencia
12:45desde Flash para jugar la telemetría.
12:47Luego vamos a conectar
12:49ese número mágico y el estándar
12:51y lo enviamos a la com.
12:53Ahora lo que podemos hacer
12:55es que podemos
12:57destacar y colorear todas estas cosas
12:59y si funcionan o no,
13:01basado en lo que hemos observado.
13:03Por ejemplo, ese estándar de 3 segundos
13:05era normal, incluso con la telemetría vacía.
13:07También sabemos que
13:09el ASM y el MCFC
13:11todavía estaban escribidos, así que esos también son normales.
13:13Pero al revés, ese estándar de 60 segundos
13:15ya no funcionaba
13:17y también no tenemos evidencia de que
13:19ninguna telemetría estaba escribida para Flash
13:21porque el marco dijo que no había datos de Flash.
13:23Así que ahora la pregunta es
13:25¿cuál es la comodidad entre todas estas cosas?
13:27Y si piensas en esto por un segundo
13:29te das cuenta de que
13:31cada cosa que se rompe es controlada
13:33por los parámetros de tiempo.
13:35Si el parámetro de tiempo de HTC fue realmente grande
13:37pareciera que nunca se estima
13:39pero en realidad se estima después de un tiempo muy largo.
13:41Y si el parámetro de tiempo de asamblea fue realmente grande
13:43pareciera que nunca genera telemetría
13:45pero en realidad sólo lo hace cada 50 días o algo así.
13:47Entonces,
13:49¿de dónde vienen estos parámetros?
13:51Están guardados en Flash externo
13:53junto con el software, así que es un chip de Flash compartido.
13:55Hay 3 imágenes de software
13:57en la primera parte del Flash
13:59y en la parte de atrás del Flash
14:01hay 1 página por subsistema
14:03de la computadora de encendido
14:05para los parámetros.
14:07Y tienes imágenes diferentes
14:09porque quieres protegerte contra los bitflips inundados por la radiación
14:11para que si una imagen se rompe,
14:13puedas usar otra.
14:15Por eso hay múltiples imágenes de software.
14:17Entonces, ¿qué podría romper estos parámetros en Flash?
14:19Literalmente solo hice ctrl-f para Flash.write
14:21y vamos a ir por todo lo que escribe Flash
14:23porque en realidad no es una lista enorme
14:25porque se supone que esto es principalmente estable.
14:27La primera cosa
14:29es que puedes hacerlo a través de un comando.
14:31Hay un comando que te permite cambiar un setting
14:33y ajustarlo así.
14:35Pero no enviamos ningún comando
14:37en el momento en que esta anomalía ocurrió
14:39así que podemos romper eso.
14:41La segunda cosa que escribe Flash
14:43es algo que se llama Launch in Early Orbit Phase
14:45y esto tiene que ver con
14:47todo el despliegue y todo lo que sucede
14:49justo después de que el satélite salga del avión
14:51porque está configurando cosas allí.
14:53Sin embargo, eso fue hecho en 2009
14:55así que podemos romper eso también.
14:57La última cosa que escribe Flash
14:59durante las operaciones normales
15:01es la cuenta de despliegue del computador.
15:03Cada vez que despliegue, incrementa un pequeño cuenta
15:05que dice
15:07que se ha despliegado tantas veces
15:09y eso sucede en cada despliegue
15:11y eso es lo único que debería estar funcionando.
15:13Una cosa muy interesante que notas
15:15es que la cuenta de despliegue
15:17no está en la sección de parámetros del sistema telemático.
15:19Tuvieron que ponerlo en algún lugar
15:21así que decidieron ponerlo allí.
15:23Lo que sucede en cada despliegue es
15:25que leerán el datos de parámetros de Flash
15:27y leerán toda la página de Flash
15:29y lo modifican
15:31para incrementar esa cuenta
15:33y luego despliegan toda la página de Flash
15:35y luego la reescriben.
15:37Ahora, podrías estar preguntando
15:39¿por qué lo hacen de esta manera convolutada
15:41y no la reescriben directamente?
15:43Eso tiene que ver con cómo funciona Flash.
15:45En memoria de Flash, o en este tipo de memoria de Flash
15:47no puedes programar un 0 individual
15:49de vuelta a un 1.
15:51Si quieres cambiar un 0 individual de vuelta a un 1
15:53despliegas toda la página
15:55para convertirla en un estado de 1
15:57y luego devuelves todas las parámetros que deseas
15:59de vuelta a 0.
16:01Por lo tanto, tienen que hacer esta danza
16:03si quieren hacer un 0.
16:05Pero el problema es que hay una ventana de tiempo
16:07entre cuando esa página se despliega
16:09y cuando esa página se reprograma
16:11cuando toda la página se despliega.
16:13Y si en este momento inútil
16:15tienes un despliegue del avión
16:17debido a alguna razón, como una pérdida de poder o lo que sea
16:19entonces vas a terminar con que esa página
16:21se despliegue completamente en todos los 1s.
16:23Y porque estos parámetros son íntegros desplazados
16:25todos los 1s son el valor máximo
16:27así que el espacio sólo va a generar telemetría
16:29cada 50 días.
16:31Desafortunadamente eso es demasiado lento para ver.
16:33Entonces tenemos una teoría de lo que podría ser malo.
16:35Ahora es el momento de probar la teoría.
16:37Podemos hacerlo
16:39porque hay un telecomandante
16:41que temporalmente nos permite ajustar
16:43esta variable de tiempo de asamblea
16:45y así podemos intentar cambiarlo de vuelta
16:47y ver si eso ayuda.
16:49Ahora no tenemos los otros parámetros de esa sección
16:51desafortunadamente
16:53pero podemos cambiar ese
16:55y eso debería ser suficiente para obtener telemetría al menos.
16:57Así que esto es lo que
16:59la página de telemetría se ve cuando operas
17:01el avión espacial y es esta cosa clásica
17:03con texto negro, texto verde
17:05y esto es lo que normalmente se vería
17:07cuando operas el avión espacial porque
17:09tienes todos estos 0s y no hay paquetes válidos
17:11y ahora usamos este comandante mágico
17:13y ¿no lo sabías?
17:15Podemos obtener telemetría de vuelta
17:17por primera vez en más de 10 años.
17:27Y así resulta que esta cosa
17:29es completamente funcional, ¿verdad?
17:31Toda la telemetría dice que es exactamente
17:33en el mismo estado que tenía
17:3510 años atrás, en 2013.
17:37También conseguí encontrar un telecomandante
17:39que nos permite directamente descargar contenidos flash
17:41que nunca había usado antes, no sé por qué.
17:43Pero resulta que
17:45podemos descargar esto y eso nos confirma
17:47que la sección está descargada.
17:49La cosa es que tenemos la telemetría descargada
17:51pero no podemos operar el avión espacial
17:53así porque hay un montón de funciones
17:55que aún están rompidas.
17:57Esa página de parámetros contiene mucho más
17:59que ese único parámetro y entonces hay un montón
18:01de volúmenes que están equivocados porque la configuración
18:03está equivocada, así que necesitamos
18:05permanentemente arreglar esto de alguna manera.
18:07Pero antes de hacerlo, dejemos de arreglar
18:09el avión espacial real y intentemos arreglar
18:11uno en el suelo porque si arreglamos algo
18:13no tendríamos nada que arreglar, por desgracia.
18:15Necesitamos una configuración de desarrollo.
18:17La manera en que se hace esto es que construyes
18:19múltiples unidades de tu satélite
18:21y luego tienes uno que envías al espacio
18:23y se llama el modelo de vuelo
18:25y luego tienes que mantener uno en el suelo
18:27para hacer todos tus pruebas.
18:29Entonces te pruebas en el suelo antes de enviarlo al espacio
18:31y se llama un modelo de ingeniería.
18:33El problema es que esta cosa estaba rompida por 10 años
18:35y necesitaban partes para algo más.
18:37Desmantelaron ese modelo de desarrollo
18:39así que no existía.
18:41En la serie BZ9, que trabajé en clase,
18:43tomamos uno de los modelos de satélite más tarde
18:45y luego cambiamos los componentes
18:47para hacer un BZ1 de Frankenstein.
18:49Y resulta así.
18:51Es una versión de satélite
18:53sin la piel externa.
18:55Tienes un pequeño panel adicional
18:57en el medio con LEDs
18:59que te muestran qué está en y qué está fuera.
19:01Y tienes un montón de cosas detrás.
19:03Tienes un adaptador JTAG
19:05y eso es el transciendente
19:07en la parte superior derecha.
19:09El problema es que nadie
19:11que trabajaba en los aviones
19:13trabajaba en la universidad.
19:15Pero por desgracia,
19:17tuve ese contacto
19:19con el líder de ese proyecto
19:21y con eso
19:23conseguimos unir
19:25el conjunto
19:27de binarios
19:29y código de fuente.
19:31El problema es que teníamos binarios
19:33y código de fuente
19:35pero no teníamos mapas simbólicos
19:37para el código de fuente.
19:39Por desgracia, tuve que desmontar
19:41las imágenes y añadir
19:43todos los símbolos.
19:45No es muy difícil porque tienes el código de fuente
19:47y no hay ingeniería reversa,
19:49pero es molesto.
19:51Ahora vamos a tratar de arreglar el problema.
19:53Lo primero que podrías preguntar
19:55es si podemos usar un comando
19:57para reescribir ese área de Flash.
19:59Como mencioné, hay un comando para hacerlo
20:01y se llama command.writeDword.
20:03El problema es que solo funciona
20:05en esa región de parámetros
20:07y lo primero que hace es leer
20:09un campo de tamaño de 16 bits para ese subsistema.
20:11Por desgracia, ese campo de tamaño
20:13está erradicado, así que va a leer
20:1564 kilobytes.
20:17El máximo de tamaño de una página de parámetros
20:19es de 8 kilobytes. Esto no va a ir bien.
20:21Lo siguiente que hace es leer
20:23ese dato en un buffer de SRAM
20:25de tamaño de 8 kilobytes.
20:27Así que va a superar el buffer.
20:29Vamos a asumir que eso funciona bien
20:31porque todo detrás de la memoria no es importante.
20:33Luego va a erradicar la página de Flash
20:35para intentar reescribirlo en un segundo.
20:37Va a modificar el buffer en SRAM
20:39según el comando y luego va a intentar
20:41reescribir ese buffer de 64 kilobytes
20:43en 8 kilobytes de Flash.
20:45Y aquí es donde finalmente tienen un cheque de baile
20:47que lo evita de suceder.
20:49Y lo que te resulta es que
20:51una vez que una página ha sido erradicada completamente,
20:53nunca más puedes leerla
20:55usando el software de OnBot.
20:57La terminología que acabamos de usar es
20:59un poco ardiente.
21:01Necesitamos mejorar el software de OnBot.
21:03Necesitamos la capacidad de software.
21:05El problema es que este espacio
21:07no apoya el upload de software.
21:09Vamos a tener que ser un poco creativos.
21:11Lo primero que vamos a hacer es
21:13hacer un upload de software extraño
21:15y vamos a agregar la funcionalidad
21:17del upload de software
21:19para que podamos hacer un upload de software
21:21correcto más tarde.
21:23La cosa genial es que los parámetros y los usuarios
21:25de software están en el mismo chip de Flash
21:27y el upload de software nos permite
21:29escribir la sección de parámetros
21:31para que podamos arreglar los errores
21:33y arreglarlos directamente.
21:35El primer paso para hacer un software es
21:37obtener código en memoria.
21:39La primera opción es
21:41hacerlo en SRAM.
21:43Sería apetitoso porque SRAM es muy seguro
21:45y se va después del próximo reset,
21:47así que si lo rompes es un cambio no permanente.
21:49El problema es que
21:51no tenemos suficiente tiempo para hacerlo.
21:53Obtenemos 15 minutos por pasada
21:55y el espacio, por desgracia, es bastante instable
21:57para que después de un paso puede
21:59resetar y limpiar todo eso.
22:01Así que no podíamos asemblar
22:03un payload en SRAM.
22:05La otra cosa es que no hay una funcionalidad
22:07para escribir en SRAM, así que tendríamos que hacer
22:09algo extraño, como usar parámetros de telecomandos
22:11para que aparezca algo, o abusar de una funcionalidad.
22:13Podríamos hacerlo, pero no es deseable.
22:15Así que la única otra forma
22:17de poner un nuevo código en memoria
22:19es el Flash.
22:21La única cosa que podemos usar para escribir en Flash
22:23es este comando,
22:25y eso solo puede escribir en el espacio de parámetros.
22:27Pero eso parece bien,
22:29porque es todo un gran chip de Flash
22:31y las permisiones están en cualquier lugar,
22:33así que podemos ejecutarlo de cualquier lugar,
22:35así que podemos poner un nuevo código como datos de parámetros
22:37en esa sección de parámetros.
22:39Eso viene con algunos caveatos.
22:41Primero, tenemos este riesgo de limpieza.
22:43Si una de estas resetas inoportunas ocurre
22:45y limpia la página,
22:47bueno, ahora hemos limpiado todos los parámetros en esa página.
22:49Y hay datos de configuración bastante importantes.
22:51Fuemos un poco afortunados de que la sección de telemetría
22:53fue la que se limpió,
22:55porque si la sección de coms se limpiara,
22:57no sería tan bueno.
22:59Afortunadamente, hay una sola sección de parámetros
23:01que no se utiliza y que podemos usar para esto.
23:03Y eso nos da 8 kilobytes de espacio
23:05donde podemos poner un nuevo código.
23:07De hecho, solo tenemos 4 kilobytes de espacio
23:09porque tienen un bug en su código,
23:11lo que significa que la parte superior está cerrada,
23:13así que solo la mitad inferior es accesible.
23:15Bueno, de hecho, solo tenemos 2 kilobytes de espacio
23:17porque tenemos otro bug inrelacionado
23:19que significa...
23:21Así que esto no es suficiente
23:23para una imagen de software de 300 kilobytes,
23:25como sucede.
23:27Así que tenemos que dejar de existir
23:29la sección de software de OnMod
23:31y enriquecerla.
23:33¿Cómo vamos a hacerlo?
23:35Lo primero que vamos a necesitar es
23:37obtener una ejecución de código,
23:39obtener una ejecución de nuestro código.
23:41Eso parece ser la parte fácil,
23:43porque hay este comando de telecomandos
23:45llamado Jump to Image,
23:47que se intende para cambiar entre las 3 imágenes de software
23:49y podemos usarlo para ir a cualquier otro lugar.
23:51Esto se intende para ser
23:53un transferimiento permanente de control,
23:55pero en realidad
23:57se implementa usando un C Function Pointer Core
23:59y así podemos volver a esto
24:01y dejar de existir la sección de software de OnMod.
24:03Reacciona un poco raro,
24:05pero resulta que está bien,
24:07así que podemos hacerlo.
24:09Así que esto nos da una ejecución de código
24:11y deja de existir la sección de software de OnMod,
24:13pero ahora la pregunta es, ¿cómo podemos
24:15perseguirnos para seguir corriendo después de eso?
24:17Tenemos que cambiar la sección de software de OnMod
24:19de alguna manera, pero no podemos cambiar el flash.
24:21Uno, porque estamos saliendo de ella,
24:23así que habría un conflicto bancario,
24:25no podemos leer y escribir de ella,
24:27pero incluso si salimos por SRAM
24:29o algo así, sería muy arriesgado,
24:31porque, de nuevo, tenemos que hacer esta cosa
24:33de erasar y reescribir, y si erasamos una página
24:35de la sección de software de OnMod
24:37y luego intentamos reescribirla
24:39y la reescribimos, podríamos acabar rompiendo
24:41la sección de software de OnMod, lo que no sería tan genial.
24:43Así que la pregunta ahora es,
24:45¿cómo podemos modificar la sección de software de OnMod
24:47sin modificar el flash?
24:49Podemos usar un truco para esto.
24:51Podemos usar algo llamado C++ Virtual Function Tables.
24:53C++ es la lengua en la que está escrito
24:55la sección de software de OnMod,
24:57y eso apoya la herencia.
24:59Así que puedes tener una clase base,
25:01una clase derivada, y puedes reescribir métodos.
25:03Pero el compilador, cuando le llamas
25:05una función a un objeto de la clase base,
25:07el compilador no sabe qué tipo de objeto tiene.
25:09Es polimórfico, esa es la idea.
25:11Así que la pregunta es,
25:13¿cómo puede el compilador saber
25:15cuál implementación llamar si es de tipo polimórfico?
25:17Y lo que hace el compilador es,
25:19en cada objeto que tiene una función virtual
25:21o se deriva de algo,
25:23tienes un campo escondido al principio,
25:25siempre de 0.
25:27No mucho, pero normalmente es de 0.
25:29Y esto, básicamente, apunta a una tabla
25:31en Flash que dice,
25:33para mi objeto, para mi tipo,
25:35estas son las funciones correctas para llamar.
25:37Ahora, lo bueno es que es en SRAM,
25:39porque es
25:41parte de las variables de los objetos.
25:43Y C++ se utiliza bastante
25:45en el software de OnBot.
25:47Y específicamente lo que hacen es,
25:49para cada parte del software de OnBot,
25:51tienen estas estructuras de interfaz de comandos.
25:53Tienen una interfaz de comandos
25:55para los comandos de poder,
25:57y otra para los comandos de control de actitud.
25:59Pero estas son variables globales,
26:01así que están ubicadas en adreces fijas en SRAM,
26:03y podemos encontrar esas adreces
26:05desarmando las imágenes de firmware.
26:07Así que lo que podemos hacer es,
26:09apuntar a nuestra propia implementación
26:11y desarmar el control de actitud en ese punto específicamente,
26:13y podemos reutilizar todo el código
26:15para el pasaje de comandos
26:17desde el software de OnBot sin tener que hacerlo nosotros mismos.
26:19Vamos a ver cómo se ve.
26:21Este es un código de ejemplo,
26:23es un paráfraso,
26:25pero este es lo que hace el computador de OnBot
26:27cuando recibe el comando.
26:29Así que va a decir,
26:31¿este es el subsistema de loader?
26:33o ¿este es el subsistema de PCU?
26:35Y a base de eso, va a llamar la función de ejecución
26:37y dice que es un comandante de loader.
26:39Así que, porque el comandante de loader
26:41es uno de estos tipos polimórficos,
26:43va a mirar en memoria, en SRAM,
26:45ese punto de tabla de función virtual.
26:47Ese punto de tabla
26:49va a apuntar a una tabla de función virtual
26:51en Flash nuevamente,
26:53y eso va a tener el punto de ejecución
26:55para ese tipo.
26:57Y entonces el compilador puede decir,
26:59ok, voy a desarmar el punto de tabla y llamarlo.
27:01Ahora lo que podemos hacer es,
27:03podemos interceptar la ejecución aquí.
27:05Así que podemos reescribir este punto de tabla
27:07en SRAM, para apuntarlo
27:09en lugar de la tabla de Flash,
27:11donde colocamos nuestro nuevo payload
27:13que hemos diseñado.
27:15Así que podemos dar nuestro propio punto de tabla
27:17que es compatible con el existente punto de tabla,
27:19y apuntarlo a nuestra propia función de ejecución.
27:21Lo que podemos hacer aquí es ver
27:23si el código de comando es uno de los nuevos telecomandos
27:25que queremos añadir.
27:27Y si es así, podemos manejarlo.
27:29Y si no, la otra parte,
27:31podemos pasar directamente al código de ejecución
27:33y pasar completamente a la tabla de V.
27:35Y así, para todos los comandos existentes,
27:37podemos usar el software existente de OnMod.
27:39Así que no tenemos que reimplementar ningún código
27:41del software existente de OnMod.
27:43Podemos implementar solo nuestro nuevo código,
27:45y esto ayuda mucho en mantener
27:47esta frontera de tamaño de 2 kilobytes.
27:49Todo eso funciona, y es genial.
27:51El problema que tenemos es el de la banda.
27:53Vamos a hacer alguna matemática.
27:55Una imagen de software es 300 kilobytes grande,
27:57y desafortunadamente está limitada
27:59a 4 bytes de payload por telecomando.
28:01Esta es una limitación que podemos cambiar
28:03en el sistema de telecomandos.
28:05Y hay otra limitación en el sistema de telecomandos
28:07que dice que solo podemos hacer un comando por segundo,
28:09porque se intende hacer un comando por uno de estos espacios.
28:11Obtenemos 15 minutos por cada paso del satélite,
28:13y obtenemos 6 pasos al día.
28:15Muy optimisticamente,
28:17podríamos tener al menos 2 semanas para un software update,
28:19lo cual es bastante.
28:21Y realmente va a ser como 5 veces tan largo,
28:23probablemente, porque no va de esa manera.
28:25Y podríamos querer hacer más de un software update también.
28:27Así que la pregunta es, ¿podemos hacerlo mejor?
28:29Porque, de hecho, los diseñadores de BZ
28:31originalmente querían hacer un software update,
28:33así que añadieron apoyo para más telecomandos.
28:35Empezaron con un embandado,
28:37así que el sistema Chrome lo apoya, perfecto.
28:39El OBS lo apoya también.
28:41Desafortunadamente, no apoya la misma versión del protocolo,
28:43así que hay una incompatibilidad
28:45y no se aceptan.
28:47Así que tenemos que arreglar eso.
28:49Este es el problema.
28:51Vamos a comenzar desde el fondo esta vez.
28:53Cada uno de estos rectángulos es un mensaje enviado
28:55en el CAN bus con 8 bytes de payload.
28:57La manera en que funcionan estas transacciones en el CAN bus es
28:59que quieres enviar más de 8 bytes, tienes múltiples mensajes.
29:01Tienes un mensaje de comienzo en el fondo izquierdo
29:03con ese número de control, que contiene
29:05un número de control random de estudio.
29:07Luego tienes un montón de mensajes de datos
29:09y luego tienes un mensaje de pausa.
29:11Y el mensaje de pausa contiene
29:13ese número de control nuevamente, y eso es comparado
29:15para asegurarse de que no tuvieras
29:17dos transacciones clasheando entre sí.
29:19Y también tienes una suma de datos que se enviaron
29:21en esa transacción.
29:23El problema es que el sistema Chrome agrega
29:25ese último mensaje de datos,
29:27y lo que sucede es que cuando la OBC recibe
29:29el mensaje del sistema Chrome,
29:31reinterpreta ese último mensaje de datos
29:33del CAN
29:35como el mensaje de pausa.
29:37Y intentará usarlo como el número de control
29:39y verificarlo. Y por supuesto,
29:41eso no va a funcionar.
29:45Sí, eso no va a funcionar
29:47porque va a malinterpretar los números.
29:49Entonces, ¿qué hacemos con eso?
29:51Lo que podemos hacer es
29:53hijar el control de interrupción
29:55del software de ONMODE.
29:57Hay un control de interrupción que se llama
29:59cuando el mensaje de CAN se recibe,
30:01y podemos reescribirlo con nuestro propio código custom.
30:03Y eso no es mucho código para reproducir,
30:05así que simplemente podemos copiar el código existente
30:07y añadir nuestro propio.
30:09Y lo que podemos hacer es escuchar
30:11ese mensaje de datos N++1, y si llega,
30:13simplemente lo guardamos en el lugar correcto
30:15en SRAM, y luego lo descargamos.
30:17De esa manera, el software de ONMODE
30:19nunca recibe ese mensaje de pausa
30:21Entonces vamos a esperar por ese mensaje de pausa,
30:23y vamos a usar el datos que guardamos
30:25para modificar la suma de pruebas
30:27para que parezca correcto,
30:29porque esa suma de pruebas incluye
30:31ese mensaje de datos N++1,
30:33así que tenemos que sacarlo de ahí para que funcione.
30:35Y luego lo enviamos
30:39al software principal de ONMODE.
30:41Perfecto.
30:43Tenemos un plan, lo probamos en el modelo laboratorio,
30:45funciona genial.
30:47Es tiempo de hacerlo en el espacio.
30:49Tuvimos un pequeño plan.
30:51Tenemos que conseguir esta imagen de 2KB
30:53en el espacio, y el riesgo que tenemos
30:55es el riesgo de reset.
30:57Si hay un accidente de reset,
30:59podríamos quemar
31:01una página inutilizada, y nos quedamos sin páginas inutilizadas.
31:03Así que tuvimos un plan de tres pasos
31:05para hacerlo.
31:07Primero tenemos una imagen de seguridad,
31:09y son solo cuatro instrucciones.
31:11Y lo ponemos, no en la sección inutilizada,
31:13sino en la sección menos importante.
31:15Así que si eso se rompe durante
31:172KB de upload, el espacio
31:19va a estar bien. Va a perder alguna funcionalidad,
31:21pero va a estar bien.
31:23Todo lo que hace esa imagen de seguridad
31:25es llamar a un flashwrite
31:27para resetar el riesgo de reset de la página inutilizada
31:29y quemarlo. Así podemos usarlo
31:31para escribir de nuevo. Esto nos da seguridad
31:33de que incluso si quemamos una página,
31:35podemos recuperarnos de eso.
31:37La siguiente cosa que tenemos
31:39es una imagen de cargador,
31:41y son solo algunas funciones de conveniencia.
31:43Porque en realidad tarda bastante tiempo
31:45para una imagen de cargador,
31:47y son solo piezas de 4KB.
31:49Así que incluimos algunas funciones de conveniencia,
31:51como reparar el sistema de telemetría temporalmente,
31:53para recuperar el telemetría,
31:55y también hicimos un timer de 60 segundos
31:57para que no tengamos que preocuparnos
31:59de que se envíe por 70 minutos o algo así.
32:01Y finalmente vamos a
32:03uploadar la imagen principal de software.
32:05Y eso contiene todas las funciones
32:07que habíamos hablado de.
32:09Al final son solo unos 600 comandos,
32:11lo que tarda un rato.
32:13Pero bien, empecemos.
32:15Empezamos con la imagen de seguridad,
32:17la uploadamos, todo salió bien,
32:19no tuvimos que usarla todavía.
32:21Luego instalamos la imagen de cargador,
32:23y eso también funcionó,
32:25y obtuvimos el telemetría,
32:27y las reparaciones temporales parecieron funcionar perfectamente.
32:29Mientras estaba uploadando la imagen principal,
32:31noté algo interesante.
32:33Esta es la página principal del interruptor,
32:35que contiene todos los interruptores
32:37en el avión y nos dice qué está en y qué está fuera.
32:39Y me gustaría llamar la atención
32:41de que estaba haciendo esto,
32:43y luego en algún momento envié un comando flash dump,
32:45ese comando inutilizado que habíamos hablado de,
32:47para ver cuántos de los comandos
32:49que había enviado se habían recibido
32:51y cuáles no se habían recibido
32:53correctamente, para saber cuáles estaban abiertos.
32:55Y resulta que después de hacer eso,
32:57la cámara se encendió,
32:59lo que es interesante, porque no había encomendado
33:01que la cámara se encendiera.
33:03Estaba un poco preocupado en ese momento,
33:05pero finalmente encontré el bug.
33:07Este es el exceso del código.
33:10Ellos olvidaron una declaración de interrumpir,
33:14así que cuando haces un comando flash dump,
33:17también mandas a un vendedor
33:19para tomar una foto.
33:24Lo hicimos bastante, en realidad.
33:29Ahora, lo bueno es que hablé con el líder del proyecto
33:31y me dijo que la cámara
33:33en realidad era incompleta.
33:35Nunca ha funcionado, nunca han tomado una imagen
33:37y es un poco triste.
33:39Todo lo que va a hacer es que va a encender
33:41por default después de 60 segundos
33:43y en ese tiempo consumirá 60 mA.
33:45Lo cual está bien.
33:47Podemos lidiar con eso.
33:49Y la otra cosa es que realmente no había alternativa.
33:51Necesitamos ese comando para dumplizar el flash dump.
33:53Así que vamos a continuar hacia arriba y hacia abajo.
33:55¿Listos?
33:57Uploadamos todo.
33:59Tomó nueve pasos para uploadar
34:01toda la imagen.
34:03Luego enviamos el mágico telecomando
34:05a la sección de parámetros
34:07para dar el trabajo de valor adecuado.
34:09Y por primera vez en, bueno, todavía 10 años,
34:11tuvimos la telemetría completa encendida,
34:13incluyendo todos los voladores y todo.
34:15Y ahora hemos restaurado el avión
34:17de vuelta al estado de la fábrica
34:19antes de que sucediera en 2013.
34:31Ahora es el momento de mi capítulo favorito.
34:33Puedo molestarte con un montón de cosas.
34:35Primero, ¿qué tienes que hacer ahora?
34:37Tienes que recomisionar el avión.
34:39Tienes que ir por cada sistema
34:41y comprobar todo.
34:43Puedo hacerlo y es un poco aburrido.
34:45El spoiler es que todo está bien.
34:47Pero lo que realmente quiero enfocar
34:49es en la cámara.
34:51Porque un satélite que no toma fotos,
34:53¿sabes?
34:55La software de cámaras es incompleta,
34:57lo hemos aprendido.
34:59Pero nadie me podría decir exactamente
35:01qué es lo que pasa aquí.
35:03El problema es que, por desgracia,
35:05rompí la cámara de laboratorio
35:07porque lo que sucedió fue que,
35:09si recuerdas, tratamos de asemblar
35:11un nuevo diseño de desarrollo
35:13de partes de Frankenstein.
35:15Usé el PCB correcto, pero el resistente
35:17en el PCB estaba en el lugar equivocado.
35:19Entonces, en vez de conectar la cámara
35:21al computador, conecté la cámara
35:23a un interruptor de poder.
35:25La cámara no estaba muy contenta con eso,
35:27creo. No he intentado volverla.
35:29Ahora está generando 25,
35:31muy brevemente a 80 mA,
35:33y ahora está generando 25 mA.
35:35Creo que eso es un mal signo.
35:37Además, ya no se vende,
35:39excepto para el equivocado turco
35:41de eBay Kleinanstein,
35:43que no puedo llegar a.
35:45Si tienes uno y no lo necesitas,
35:47déjame saber.
35:49Por desgracia, descubrimos antes
35:51que la cámara de laboratorio
35:53genera 60 mA, como debería,
35:55así que parece funcional.
35:57Podemos usar el comando
35:59FlashDump
36:01para descargar de SRAM en lugar.
36:03Es solo una copia de mem,
36:05como resulta.
36:07Podemos hacer una foto
36:09mientras estamos grabando
36:11y así funciona.
36:13Podemos hacerlo, así que lo hice.
36:15Esta es una de las transacciones
36:17de la cámara a la OBCI Trace.
36:19Si miras la data de la cámara,
36:21dice que tomé una imagen de 9,5 kilobytes
36:23y estoy listo para descargarla a ti.
36:25Interesante.
36:27Pensé que no iba a funcionar.
36:29¿Qué pasa si pongo el botón de descarga?
36:31¡Funciona!
36:41No puedo decir si en los últimos 10 años
36:43ha empezado a funcionar
36:45o si siempre ha funcionado.
36:47Para explicar la imagen,
36:49en la izquierda superior es la Tierra,
36:51pero la autoexplosión se ha movido
36:53muy lejos porque resulta que
36:55obtener la autoexplosión correcta
36:57en algo que es el 50% negro
36:59y el 50% puro brillante es muy difícil.
37:01Como dije, en la izquierda inferior
37:03es la luz del sol.
37:05Pero con un poco de práctica
37:07podemos obtener el control de la actitud
37:09y ponerla en la Tierra
37:11y tomar unas fotos geniales.
37:13No es la mejor calidad de la cámara,
37:15seamos honestos.
37:17Es 640 x 480.
37:19También notarán que en la izquierda inferior
37:21no es correcta.
37:23Es porque alguien escribió
37:25menos que, en lugar de menos iguales.
37:27Tenemos unas buenas fotos.
37:29Esto es Polonia.
37:31Esa pequeña estrella.
37:33No sé si se puede ver,
37:35pero hay una estrella allí.
37:37Si miras en Google Maps,
37:39es Warsaw.
37:41Esta es Hungría.
37:43En la derecha superior
37:45es Argentina.
37:47En la izquierda inferior es Hamburgo.
37:49En la derecha inferior es Budapest.
37:51Este es el problema más grande
37:53de mi talento.
37:55He tratado mucho
37:57para obtener una foto de Hamburgo,
37:59pero durante el último mes
38:01ha sido lluviosa
38:03en Europa.
38:05Lo mejor que puedo hacer es esto.
38:07La izquierda inferior
38:09es Hamburgo.
38:11En la derecha inferior
38:13es Budapest.
38:15En la izquierda inferior
38:17es Hamburgo, te prometo.
38:19Finalmente podemos obtener
38:21una buena foto del sol.
38:23Estoy muy contento de presentar
38:25el primer resultado de investigación
38:27de la Universidad de Biza
38:29en los últimos 10 años.
38:31La Tierra es en realidad ronda.
38:33Esto es donde estamos hoy.
38:35Todo lo verde lo hemos probado
38:37y está funcionando.
38:39Todo lo azul lo hemos probado
38:41y no lo hemos probado.
38:43Lo único que no está funcionando
38:45es que hay un sensor
38:47que está generando 20 mA
38:49más de lo que debería,
38:51pero sigue funcionando.
38:53Esta cosa es prácticamente nueva.
38:55Lo cual es genial.
38:57Estoy un poco antes de la hora,
38:59pero quiero cerrar
39:01con un pequeño dato sobre la reliabilidad.
39:03Este es un plato de papel
39:05que muestra la reliabilidad del cubo
39:07con el tiempo.
39:09Este es 2 años,
39:11y este es la reliabilidad.
39:13Lo primero que notas es que
39:15este plato no comienza con 1,
39:17sino con 0.8.
39:19El 20% de estas cosas
39:21se llaman muertos de llegada.
39:23Nunca funcionan.
39:25Después de 2 años,
39:27se baja al 60% de la reliabilidad.
39:29Hemos estado trabajando desde hace 15 años
39:31y esta cosa es prácticamente nueva.
39:33Hemos divertido a los desarrolladores
39:35un poco con el código,
39:37y les agradezco a todo el equipo de BESAT-1
39:39por hacer este maravilloso espacio que sigue funcionando
39:41después de 15 años.
39:51Y me gustaría agradecer a algunas personas
39:53de la universidad,
39:55a mi consejero de física que me permitió
39:57hacer mi física de doctorado,
39:59y a otras personas.
40:01Y con eso, estoy terminado,
40:03y me gustaría preguntar si tienen alguna pregunta.
40:07¡Increíble!
40:11Muchas gracias.
40:13Eso fue increíble.
40:15Nadie puede decirme que la ingeniería de software
40:17no es creativa. Eso fue muy guay.
40:19Entonces,
40:21muchachos, señoras y señoras,
40:23gente de la Tierra,
40:25si tienen preguntas,
40:27si tienen preguntas,
40:29por favor, pónganlas en línea.
40:31Hay micrófonos, y también
40:33tenemos a Signal Angels,
40:35que están leyendo
40:37sus preguntas desde Internet.
40:39Y mientras se preparan,
40:41también tengo una pregunta,
40:43que probablemente también se les ha preguntado.
40:45Has capturado
40:47un vehículo en el espacio.
40:49¿Te considerarías
40:51un pirata espacial?
40:53Haces un muy buen punto.
40:55Técnicamente tenía permiso,
40:57lo que creo que significa que no es piracía técnicamente,
40:59pero técnicamente también la persona a la que le pregunté
41:01no proponía el avión espacial.
41:03Verdad, verdad.
41:05Entonces, tal vez por proxy.
41:07Voy a recordarlo, lo voy a descubrir.
41:09Sí, muchas gracias.
41:11Y luego veo que también
41:13ya tenemos a la gente con los micrófonos.
41:15Empezaré con el micrófono número uno aquí.
41:17Pregunta, por favor.
41:19Sí, gracias, buen comentario.
41:21Nos dijiste
41:23que básicamente
41:25has fijado el computador número dos.
41:27¿Has considerado
41:29el computador número uno también?
41:31Buena pregunta.
41:33Tengo un slide para eso.
41:35Entonces,
41:37fijé el computador número uno,
41:39porque fue el más activo después del fallo de 2013.
41:41Finalmente, en realidad, encontré los logos
41:43de 2011, porque se migraron
41:45a un sistema diferente, así que no los tenía.
41:47Al parecer, es bastante interesante.
41:49Todos los síntomas se revirtieron.
41:51En lugar de enviar indefinidamente,
41:53el satélite envía un frame
41:55y luego se detiene inmediatamente.
41:57Y en lugar de no contener datos, los frames contienen datos,
41:59pero son basura.
42:01Tengo una teoría sobre esto.
42:03Finalmente, en la data de la batería,
42:05lo que sucede es
42:07que hay algo que se llama preprogramación,
42:09que es que no quieres erasar
42:11los mismos bits de uno a uno
42:13de nuevo y de nuevo, por lo que entiendo.
42:15Entonces, lo que haces es programar
42:17todo a ceros antes de programarlo a uno.
42:19Y lo que creo que sucedió es que este reset,
42:21en este caso, en el PC número cero,
42:23interrumpió ese paso de preprogramación.
42:25Entonces, en lugar de que todos los parámetros estén muy altos,
42:27todos están a cero.
42:29Y eso es completamente contrario a los síntomas.
42:31Entonces, es una teoría.
42:33Probablemente no vamos a cambiar el computador de ONMOD
42:35porque hay un riesgo de que en los últimos 10 años se rompió.
42:37Así que no hay...
42:39Me gustaría, pero no hay nada que ganar por ello,
42:41así que es difícil justificarlo.
42:43Pero en algún punto, obviamente, el número uno podría fallar
42:45y si eso sucede, tendremos que...
42:47Pero parece... Creo que es la misma malfunción,
42:49aunque parezca diferente.
42:51Gracias.
42:53The Interwebs tiene una pregunta.
42:55Sí, hay varias preguntas.
42:57Empecemos con...
42:59¿Cómo es que se logra esto?
43:01¿Es solo el código de la fuente?
43:03¿O tienes otra documentación
43:05para verlo?
43:07Así que...
43:09Es esparse, ¿verdad?
43:11Porque hoy en día lo hacen mejor,
43:13pero en ese momento,
43:15era bastante temprano,
43:17y no había mucho archivo.
43:19Así que tuvimos que hacer esta cosa
43:21de enviar mensajes a la gente para obtener las imágenes del software.
43:23Y para algunas imágenes del software,
43:25no sabes si es la correcta,
43:27a menos que obtengas la garantía.
43:29La razón por la que llegué a esto es porque
43:31estaba trabajando en BZ9,
43:33y tenía el código de la fuente para eso.
43:35Y descubrí un domingo a la noche, a las 1 de la mañana,
43:37que si te fuiste bastante lejos en la historia de Git,
43:39podías llegar a BZ1.
43:41Y así que estuve aburrido una noche de sábado
43:43y pensé, ok, veamos si podemos lograrlo.
43:45Y resulta que sí, podemos.
43:47Pero la documentación es bastante esparsa.
43:49Mucho del trabajo que hice
43:51duró un tiempo,
43:53pero mucho de eso fue solo caminar y obtener
43:55la documentación correcta de la gente.
43:57Pero tengo un conjunto bastante completo ahora,
43:59pero algunas componentes todavía no la tengo.
44:01Pero por las que necesité, la tengo.
44:03Tuve mucha ayuda de la gente en mi universidad,
44:05porque todavía operan satélites.
44:07Por ejemplo, tuvimos que arreglar la estación de tierra,
44:09porque la estación de tierra
44:11no era para operar con satélites.
44:13Habían mejorado ya,
44:15así que tuvimos que descargar todo eso
44:17para que funcionara la estación de tierra.
44:19Fue mucho trabajo humano,
44:21caminar y hablar con las personas involucradas.
44:23Pero todos fueron superayudantes
44:25y nos dieron su tiempo.
44:27Creo que este es el satélite más antiguo
44:29que Tú Belén todavía controla.
44:31Es como un mascote, creo.
44:33Todos querían ayudar, lo que es genial.
44:35Gracias.
44:37Sí, y luego hay otra pregunta
44:39en el micrófono número 3, por favor.
44:41Muchas gracias por la conversación.
44:43Desde que empezaste
44:45a arreglar bug,
44:47¿continuarás
44:49con el sistema de cámaras también?
44:51Sí, la pregunta es
44:53¿qué haces con eso ahora?
44:55Hubo alguna consideración.
44:57Si tomas el código
44:59de los satélites modernos
45:01y descargas todo,
45:03el problema es que algunos hardware
45:05se han cambiado,
45:07así que es difícil.
45:09Creo que quiero hacer
45:11más actualizaciones para esto.
45:13Es como un testbed en este momento.
45:15Quiero cambiar la luz de la cámara.
45:17Me gustaría tener video,
45:19porque sería genial.
45:21Pero podría ser un poco difícil.
45:23La misión principal es
45:25mantenerlo vivo lo más posible,
45:27porque va a desaparecer en 2047,
45:29es la proyección.
45:31Si sigue en 2047,
45:33estaré feliz.
45:35Pero sí.
45:37Increíble, gracias.
45:39La internet tiene otra pregunta.
45:41¿Cuántas veces se reboota
45:43y es un comportamiento normal?
45:45Es una buena pregunta.
45:47Se reboota bastante frecuentemente,
45:49pero es porque hay un bug
45:51que hace que en modo seguro
45:53se rebootea cada 15 minutos o así.
45:55Pero todavía sería
45:57una gran coincidencia
45:59que se rebootee
46:01en el momento correcto,
46:03en ese paso entre
46:05el descargar y el rebootear.
46:07Así que hay...
46:09Este es uno de los códigos
46:11que hace eso.
46:13Descargan la página
46:15y eso toma un poco de tiempo.
46:17Tienen una función de descarga
46:19que espera hasta que se descargue.
46:21A veces, en el flashchip,
46:23la descarga falla.
46:25Tienen un descargador
46:27para retratarlo.
46:29Pero si miran este código,
46:31verán que es un poco desagradable.
46:33Lo que querían escribir
46:35era que mientras no se descarga
46:37y el tiempo de descarga
46:39no estaba terminado,
46:41o esperaban 300 milisegundos más,
46:43esperaban indefinidamente.
46:45Lo que sucede es que
46:47esto se vuelve infinito
46:49en caso de un descargador
46:51y luego hay un descargador
46:53que no se descarga
46:55y eso rebootea el satélite
46:57por sí mismo.
46:59Así que hay un bug
47:01que puede llevar a que se reboote
47:03precisamente en ese momento
47:05y eso es lo que lo hace más probable.
47:07Una pregunta.
47:09¿Por qué no la página de parámetros
47:11o la sección de parámetros
47:13de los flashchips se guarda
47:15múltiples veces como la firma?
47:17Porque es una práctica común
47:19para cosas como los
47:21SafeStates de NES.
47:23Cuando hablé primero
47:25de esto con el líder del proyecto,
47:27tenían un diseño que decía
47:29que estas páginas de parámetros
47:31eran protegidas por sumas.
47:33Así que en caso de una falla de sumas
47:35o una falla en múltiples veces,
47:37eso lo protegía.
47:39El problema es que esta es la única línea
47:41que menciona estas sumas de parámetros
47:43que nunca se han revisado
47:45o escrito en ningún lugar.
47:47Así que probablemente planificaron esto
47:49pero no tuvieron tiempo para hacerlo
47:51porque tenían un plan de lanzamiento
47:53bastante hectico, como entiendo.
47:55Así que intentaron hacerlo
47:57pero no tuvieron tiempo para hacerlo.
47:59Creo que Internet tiene una pregunta adicional.
48:01Sí, hay una pregunta.
48:03¿Cuándo no estás estudiando
48:05en el TUB,
48:07¿tienes alguna idea sobre eso?
48:09Y otra pregunta,
48:11si eres un pirata permitido,
48:13¿eres un privateer espacial?
48:17¡Oh!
48:19¿Cómo te involucras en esto?
48:21Sí, es un poco complicado.
48:25TUB Berlin tiene esta cosa,
48:27es una clase que hicieron.
48:29Imagino que otras universidades
48:31tienen el mismo problema de tener
48:33espacios espaciales que pueden operar
48:35porque creo que son fundados igualmente.
48:37Creo que hay otra universidad
48:39que tiene, creo que Flying Laptop,
48:41que es otra...
48:43¡Stuttgart, gracias!
48:45Estaba mirando a ti.
48:47Tienen a un estudiante similar
48:49o algo así, así que quizás
48:51chequen si la universidad tiene
48:53algunos satélites antiguos que no necesitan.
48:55Podrían, ¿sabes?
48:57Más allá de eso,
48:59creo que mi universidad tenía esto.
49:01Así que tuve suerte porque
49:03tuve que tomar esta clase.
49:05Pero chequen su universidad,
49:07porque tal vez tengan algo.
49:09O si no, quizás pueden preguntar
49:11si sus antiguos satélites no son fundados.
49:15Gracias.
49:17¿Algunas preguntas adicionales?
49:21Veo al menos un micrófono
49:23número cuatro.
49:25¿Es posible
49:27obtener el sinal
49:29del satélite
49:31por nosotros mismos?
49:33Sí.
49:35Bizart está en la banda de radio
49:37amateur.
49:39Es de 45.95 MHz.
49:41Si estás en Europa,
49:43puedes recibirlo en esa banda
49:45y decodarlo tú mismo.
49:47Y porque es radio amateur,
49:49toda la documentación y el código
49:51es público.
49:53Así que puedes
49:55recibirlo tú mismo.
49:57No es siempre transmitido en Europa,
49:59solo cuando lo comandamos.
50:01Pero si tienes un pasaje de mañana
50:03y lo has intentado un par de veces,
50:05puedes tener suerte y recibirlo.
50:07O te voy a enviar un mensaje y lo activaré.
50:09También hay...
50:19También, porque es un satélite de radio amateur,
50:21también tiene un servicio de radio amateur.
50:23Hay un formato en el que puedes enviar
50:25mensajes tú mismo
50:27y relajarlos.
50:29Si estás en Berlín y lo conectas,
50:31lo puedes ver en todas partes.
50:33El satélite tiene una señal,
50:35así que puedes enviarlo.
50:39Muchas gracias.
50:41Otra pregunta.
50:43Hola. Gracias por tu trabajo.
50:45Parece un proyecto genial.
50:47¿Sabes
50:49qué tipo de
50:51software está funcionando en BSAT-1?
50:53Creo que uno o dos
50:55de mis antiguos profesores
50:57podrían estar involucrados
50:59en ese proyecto antes de que se mudaran
51:01a Würzburg.
51:03¿Estás en contacto con el Profesor Montenegro?
51:05Tal vez.
51:07Creo que sé de las operaciones en real-time.
51:09Estás hablando de Rodos, ¿verdad?
51:11Sí, está funcionando en Rodos.
51:13Desafortunadamente... No, no debería decir eso.
51:17Estoy seguro de que se ha ido mucho mejor después de esto.
51:19¡Oh, no! De hecho, estoy equivocado.
51:21¿No está funcionando en BOSS o algo así?
51:23Todo después de BSAT-2
51:25está funcionando en Rodos.
51:27BSAT-1 está funcionando en algo más.
51:29BSAT-1 está funcionando en algo que se llama Tiny BOSS.
51:31Y eso es una cosa custom.
51:33Pero creo que eso también es de Würzburg,
51:35para ser honesto. No estoy seguro.
51:37Pero no estoy en contacto con ellos,
51:39porque todo esto fue antes de mi tiempo.
51:41Estoy haciendo arqueología en estas cosas
51:43en vez de desarrollarlas.
51:45Si quieres,
51:47puedes contactarme con el Profesor Monti.
51:49No los conozco, pero pídeme un mensaje
51:51después y podemos hablar.
51:53Sí, sí, no hay problema. Gracias por tu trabajo.
51:55Sí, por supuesto.
51:57Gracias. Me imagino estas e-mails complicadas
51:59pidiendo, ¿podrías decirme algo
52:01sobre esta tecnología antigua?
52:03Es bastante útil, de hecho.
52:05Suena así.
52:07El micrófono número uno tiene una pregunta.
52:09Sí, sobre la retención de datos del chip de luz.
52:11¿Fue un número proporcionado por la manufactura?
52:13Así que hice la matemática sobre esto.
52:15Creo que la retención...
52:17la retención es cuántos ciclos
52:19y cuánto tiempo se mantiene.
52:21Así que hice la matemática sobre esto
52:23y si tenemos que preocuparnos
52:25en el tiempo de vida del satélite.
52:27Es valorado por 1 millón de ciclos
52:29y 10 años de retención.
52:31No soy un experto en esto,
52:33pero la retención se espera por la temperatura máxima
52:35y es 70 grados.
52:37Típicamente, en el espacio,
52:39reciclamos entre 20 y menos 10 grados.
52:41Así que encontré una fórmula que dice
52:43cuántos ciclos se mantienen
52:45y cuánto tiempo se mantiene.
52:47Así que creo que estaremos bien con eso,
52:49afortunadamente.
52:51Gracias.
52:53El micrófono número 3
52:55es nuestra siguiente pregunta.
52:57Sí, gracias por el gran discurso.
52:59Fue muy bueno.
53:01Mi pregunta es,
53:03¿hay alguna seguridad construida
53:05en los comandos telemáticos
53:07para evitar que la gente
53:09deje el satélite
53:11y hay una excepción
53:13en el estándar de radio
53:15para la encryptación de telemáticos?
53:17No puedo hablar exactamente
53:19de lo que hacen en BZ1.
53:21En general,
53:23CCSDS estandariza
53:25telemáticos y comandos telemáticos
53:27y hay un estándar para encryptar
53:29en ambas direcciones.
53:31Se llama Transport Layer Security.
53:33Así que esto soporta AES, GCM,
53:35Counter Mode y HMAC, creo.
53:37Pero no puedo decir exactamente
53:39por qué.
53:41Gracias.
53:43Preguntas adicionales de Internet.
53:45¿Te ayudaría a volar
53:47en el camino del satélite
53:49para tener más tiempo
53:51para subir tu código?
53:53Vamos a ver.
53:55¿Cuánto tiempo se mueve
53:57un avión en comparación
53:59con 7,5 kilómetros por segundo?
54:01Una de las cosas que ayuda
54:03es poner tu estación de viaje
54:05en un lugar diferente.
54:07No en el norte, pero en Svalbard
54:09y cerca del sur.
54:11Y por la rotación norte-sur,
54:13el más al norte de tu estación,
54:15más tiempo tienes para subir y bajar.
54:17Pero también tuvimos que cambiar
54:19la estación de viajes
54:21para hacerla compatible,
54:23así que no usamos la estación de viajes
54:25para esto.
54:27Para lo que hicimos ahora,
54:29no hicimos un software completo todavía.
54:31Solo hicimos esto y fue posible
54:33en unos 10 pasos.
54:35Si tienes una mejor estación de viajes,
54:37eso te ayuda, ¿verdad?
54:39Dijiste algo sobre BZ...
54:41Bueno, si hay un BZ-1,
54:43debería haber un BZ-2.
54:45¿Qué tal usar estos como proxies?
54:47La cosa interesante es que hay
54:49BZ-1 y hay 2-13.
54:51Este es el gráfico de un satélite muy largo,
54:53pero lo triste es que
54:55el BZ-1 está en una órbita de 7,5 kilómetros
54:57y la altura de la órbita
54:59correleja directamente con
55:01cuánto tiempo queda en el espacio.
55:03El BZ-1 es el primero
55:05y el BZ-2 será el último.
55:07Desafortunadamente no podemos usarlos
55:09para testar más.
55:11Pero fue útil porque
55:13podemos comparar algunas cosas
55:15porque el hardware es similar en algunos casos.
55:17Por ejemplo, porque no tenemos
55:19un modelo laboratorio para los sensores del sol,
55:21para algunos de los componentes,
55:23podemos ver los datos históricos
55:25de uno de los diferentes BZ
55:27y ver si los datos están en línea
55:29con lo que esperábamos.
55:31Este es el BZ-9,
55:33que es similar en construcción
55:35al BZ-1, así que tuvimos un comienzo
55:37y aprendimos cómo operarlo.
55:39Así que ha ayudado un poco,
55:41pero por desgracia ya se han ido.
55:43Estamos muy triste por eso.
55:45Puedo imaginar que no sucede
55:47tan a menudo que un satélite
55:49se pierda en el espacio,
55:51pero en caso de que lo hiciera,
55:53¿tienes algo en mente?
55:55¿Hay un satélite en el que deseas
55:57jugar un poco?
55:59La cosa es que la gente no te dice
56:01si un satélite se pierde o no.
56:03Hay otro satélite de TU Berlín
56:05que quiero ver.
56:07No está fallando, pero hay
56:09otra cosa que está sucediendo allí.
56:11Si tienes uno que se ha rompido
56:13y crees que puede ser arreglable,
56:15por favor contáctame.
56:17Me gustaría.
56:19Desgraciadamente es muy difícil
56:21de llegar.
56:23¿No lo dices?
56:25No lo sé.
56:27Es muy interesante.
56:29Gracias.
56:45Todavía tenemos un poco de tiempo
56:47para preguntas de Internet.
56:49Hay una pregunta.
56:51¿Por qué enviaría un satélite
56:53en órbita
56:55y no un satélite de TU Berlín?
56:57Es una buena pregunta.
56:59Mencioné que BZ1 es
57:01el 33º satélite en el espacio.
57:03El satélite actual no es la cámara.
57:05Fue una misión de demostración
57:07para demostrar componentes miniaturizados.
57:09Puedes conseguir todas estas cosas
57:11en un pequeño factor de forma.
57:13Este es el segundo satélite
57:15que voló con ruedas de reacción libre.
57:17El satélite actual
57:19son las ruedas de reacción.
57:21Es como un sistema para poner el satélite
57:23en órbita.
57:25La cámara es como una carga dummy
57:27para demostrar que puedes tener
57:29una carga.
57:31Pero la carga actual es la rueda de reacción.
57:33Y funcionó bien.
57:35Gracias.
57:37Estamos casi al final
57:39de nuestro tiempo.
57:41Me gustaría preguntarte
57:43si tendrías tiempo después
57:45para un breve Q&A
57:47o si serías disponible para que
57:49otras personas te contacten.
57:51Si tienes más preguntas,
57:53por favor,
57:55acompáñanos.
57:57Gracias por tu interesante
57:59conversación y tu creatividad.
58:01Piston Miner.
58:03Muchas gracias.