Tercer encuentro

Una vez que ya tenemos funcionando la lógica y la infraestructura para que el kernel sepa que nuestro driver es el que se ocupa de este dispositivo cada vez que alguien lo enchufa al bus USB, ahora nos toca cumplir la promesa, y efectivamente ocuparnos de él.

Durante este encuentro, nos dedicamos esencialmente a cargar el firmware en la placa, de modo que pueda efectivamente funcionar. Para eso, Christoph nos provee del archivo vt6656.fw, un montón de código binario que no sabemos qué hace (¡GRRR!), pero que debemos enviar al dongle en sucesivos mensajes de control. Para que request_firmware() pueda proveernos este firmware cuando inicializamos el driver, tenemos que poner el archivo en el directorio /lib/firmware.

Una vez que cargamos el firmware con éxito en la tarjeta, por fin podemos bootearla con otro mensaje de control, y tenemos ya una placa de red funcional. Ahora podemos preguntarle cosas como la versión de firmware, o la dirección MAC, o el contenido de la memoria EEPROM del dispositivo (en la que guarda datos persistentes) ¡y nos contesta! De hecho, podemos incluso escribir en la memoria EEPROM, y de esa manera cambiar la dirección MAC de la tarjeta de forma permanente.

Todavía nos falta inicializarla correctamente, configurarla y aprender a enviar y recibir datos antes de que podamos conectarnos a la red, y para que todo eso funcione tenemos que construir las estructuras de datos necesarias para poder pasar información de ida vuelta entre la pila mac80211 y el protocolo USB del firmware.

Explore posts in the same categories: Hacking

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s


Follow

Get every new post delivered to your Inbox.