Skip to content

BeagleNet

rlrosa edited this page May 11, 2012 · 10 revisions

Ethernet con IP estática

La idea es configurar al beagle para que utilice un IP estático, y que decirle como llegar al router, permitiendo así el acceso desde una PC cualquiera.

NOTA: Todos los comandos se siguen se ejecutan en una consola en PC.

  1. Obtener el gateway de tu red local, y el rango de direcciones IP con el que trabaja. Para esto hacer:route -n
rrosa@evo-00050106:~/work/uquad/scripts$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.22.0.0       0.0.0.0         255.255.0.0     U     1      0        0 eth0
10.22.0.0       0.0.0.0         255.255.0.0     U     2      0        0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         10.22.0.1       0.0.0.0         UG    0      0        0 eth0

En este ejemplo:

  • El IP para el gateway es 10.22.0.1
  • El IP a asignarle al beagle debe ser de la forma 10.22.xxx.xxx. Esto se deduce del rango de dirreciones IP accesibles mediante la interfaz de red cableada (eth0: 10.22.0.0) y el wireless (wlan0: 10.22.0.0). El genmask de 255.255.0.0 indica que lo últimos 16 bits del IP son IPs de la red local. En una casa problablemente sean menos, 8 en general (255.255.255.0).
  1. Poner la tarjeta microSD en una computadora.

  2. La interfaz a la que se conecta el cable de red se llama usb0 (no es eth0). Editar la sección correspondiente a la interfaz usb0 el archivo /media/Angstrom/etc/network/interfaces:

    # Ethernet/RNDIS gadget (g_ether) or LAN9514
    auto usb0
    iface usb0 inet static
    address 10.22.12.230
    netmask 255.255.0.0
    gateway 10.22.0.1
    
    La elección de 10.22.12.230 como IP para el beagle es arbitraria, siempre que caiga dentro de tu red local. En este caso, es equivalente a decir que tiene que empezar con 10.22.xxx.xxx
  • Conectar el cable de red desde el beagle al router y prender el beagle. Un par de minutos después el beagle debería estar listo para comunicarse. Para verificar que todo está en orden hacer:
    ping 10.22.12.230
    Si esto no anda, entonces no vale la pena seguir. Algo quedó mal...
  1. Para conectarse al beagle hacer:
    ssh -l root 10.22.12.230
    La clave es nada, o sea, apretar enter.

Configuración de DNS con IP Estática

Actualización: Lo que explico a continuación es la forma complicada y no feliz de hacer las cosas.

La forma feliz de configurar el servidor DNS:

Agregar una linea de la forma

dns-nameservers {IP del servidor DNS}

en la configuración de la interface en el archivo /etc/network/interfaces

La forma complicada:

Cuando se trabaja con IP dinámica generalmente los problemas relacionados por DNS se resuelven automáticamente por medio del servidor DHCP. Esto es lo que sucede en el laboratorio de medidas, y por eso OPKG da problemas si se setea IP estática y se está conectado a la red de la parte de adelante del laboratorio (que usa DHCP), ya que de esta forma la Beagleboard no sabe encontrar el servidor DNS (no hay nadie que le diga dónde están), y por ende no puede "encontrar" cosas en internet.

Si se setea la Beagleboard xM con una IP estática es necesario también indicar los donde están los servidores DNS, para que el sistema pueda "llegar" a las cosas que quiere bajar. Para esto es necesario editar el archivo /etc/resolv.conf e incluir ahí los distintos servidores DNS. Para cada servidor DNS se debe agregar una línea con el siguiente formato al archivo:

nameserver {dirección IP del DNS}

Una vez seteado esto de forma correcta entonces la Beagleboard xM podrá encontrar los servidores DNS. Si se desactiva la IP estática y se vuelve a activar la IP dinámica (con DHCP), el servidor DHCP sobreescribirá el archivo /etc/resolv.conf, por lo cual será necesario volver a editarlo si se quiere volver a setear IP estática después de eso. Cuando el archivo es generado en forma automática por el servidor DHCP en el mismo aparece una línea de la forma:

# Generated by NetworkManager

Es evidente que, en un a red con DHCP, si no concemos la IP del servidor DNS la podemos conocer configurando una conexión con IP dinámica y revisando el archivo /etc/solv.conf.

Dongle USB WiFi

Esta sección explica como hacer andar un dongle USB Wi-Fi Belkin F5D7050 en una Beagleboard xM rev-C

Lo bueno es que no hay que cambiar el kernel para hacer funcionar el Wi-Fi en la Beagle. Angstrom soporta Wi-Fi por defecto. Lo único que hay que hacer es copiar un archivo a un directorio determinado, descargar unas cosas de la red y tocar el famoso archivo interfaces.


⚠ IMPORTANTE: No conectar el Wi-Fi hasta después de terminados los preimeros 2 pasos. Es más, si se conecta antes de prender la BB puede llegar incluso a no butiar.


Entonces lo dividimos en 3 pasos:

  1. Enchufamos la SD a la compu (obviamente tmb se puede hacer por ssh) y Copiamos el archivo rt73.bin al directorio /Angstrom/lib/firmware

  2. Ahora a descargar e instalar un par de cosas. Conectamos la Beagle por ssh como se indica en la wiki correspondiente y ejecutamos

opkg update
opkg install kernel-module-rt73usb rt73-firmware
 

Ahora podemos enchufar el Wi-Fi para ir corroborando cosas. Al enchufarlo deberíamos ver por el puerto serial algún mensaje que diga que el dongle es reconocido, por ejemplo

new high speed USB device
New USB device found, idVendor=050d, idProduct=705a
Product: Belkin 54g USB Network Adapter
Registered led device: rt73usb-phy0::radio
Registered led device: rt73usb-phy0::assoc
Registered led device: rt73usb-phy0::quality
usbcore: registered new interface driver rt73usb

Ahora al correr el comando iwconfig deberíamos ver la interfaz wlan0 (probablemente, o sinó wlanX) que debería decir algo como:

wlan0
     IEEE 802.11bg mode:Managed  Access Point: Not-Associated   
          Tx-Pݕ�=0 dBm   
          Retry  �˝ limit:7   RTS thr:off   Fragment thr:off
          Encrypton key:off
          Power Management:on 

Si se logra este paso solamente falta configurar la red, ya estaría todo lo necesario para que ande el Wi-Fi. Antes del paso 2 al enchufar el Wi-Fi ni siquiera levantaba la interfaz wlan0.

  1. Configurar la red de alguna de las formas que se indican a continuación, según se desee tener una red con Access Point o una red Ad-Hoc.

Algunas cosas para probar antes de la tercer etapa (o después) es ver si al conectar el Wi-Fi se ejecuta el módulo rt73usb. Para eso se puede correr el comando

dmesg |grep rt
y ver que aparezca el módulo mencionado. Ese comando muestra exactamente cuáles archivos está cargando.

Otro comando que puede ser útil es lsmod que muestra los módulos del kernel que están cargados.

Configuración de una red inalámbrica

Repetir el siguiente procedimiento para tanto wlan0 como wlan1, de manera de poder utilizar cualquiera de los dongles, ya que la beagle le asigna distintos nombres a cada dongle (capaz es 1 por MAC, ni idea).

Red inalámbrica con un Access Point

El archivo Interfaces que se encuentra en /etc/network/interfaces debe incluir las siguientes líneas

# Wi-Fi con IP dinámica
auto wlan0
iface wlan0 inet dhcp
	wireless-key MI_CLAVE_HEXA
    wireless-essid NOMBRE_RED 

Lo que pongo en mayúsculas es para sustituir. En mi caso NOMBRE_RED es TailaNet y MI_CLAVE_HEXA es C481...

Ahora al correr el comando iwconfig se puede ver que el Access Point está asociado y todo anda de maravilla.

wlan0     IEEE 802.11bg  ESSID:"TailaNet"  
          Mode:Managed  Frequency:2.462 GHz  Access Point: 00:25:9C:2F:28:70  
          Bit Rate=54 Mb/s   Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key: MI_CLAVE_HEXA
          Power Management:on
          Link Quality=48/70  Signal level=-62 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Obviamente para verificar que todo anda se puede hacer un ping. Por ejemplo:

root@beagleboard:~# ping www.google.com
PING www.google.com (74.125.113.99): 56 data bytes
64 bytes from 74.125.113.99: seq=0 ttl=54 time=273.802 ms
64 bytes from 74.125.113.99: seq=1 ttl=54 time=294.403 ms
64 bytes from 74.125.113.99: seq=2 ttl=54 time=214.661 ms
^C
--- www.google.com ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 214.661/260.955/294.403 ms

Red Ad-Hoc

El primer paso para configurar una red Ad-Hoc es conocer la IP que se auto-asigna la PC que levanta la red. Para ello, levantar una red Ad-Hoc en la PC, y luego usar el comando ifconfig. Este nos devolverá información de todas las interfaces disponibes. En particular nos interesa la interfaz inalámbrica wlan0:

wlan0     Link encap:Ethernet  direcciónHW 8c:a9:82:98:ff:96  
          Direc. inet:10.42.43.1  Difus.:10.42.43.255  Másc:255.255.255.0
          Dirección inet6: fe80::8ea9:82ff:fe98:ff96/64 Alcance:Enlace
          ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST  MTU:1500  Métrica:1
          Paquetes RX:21 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:185 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:1000 
          Bytes RX:2609 (2.6 KB)  TX bytes:39877 (39.8 KB)

En este ejemplo, la máquina que levanta la red Ad-Hoc se asignó la IP 10.42.43.1, teniendo por máscara de red 255.255.255.0. Hasta donde hemos podido comprobar, las próximas veces que se levante la red, la máquina se asignará siempre la misma IP.

Con estos datos procederemos a editar el archivo /etc/network/interfaces en la SD de la Beagleboard y modificamos de la siguiente forma:

auto wlan0
iface wlan0 inet static
address 10.42.43.2
netmask 255.255.255.0
wireless-mode ad-hoc
wireless-essid uquad
wireless-key s:uquaduquad123

Debe destacarse que se ha optado por una IP estática (iface wlan0 inet static), con una dirección dentro de la subred establecida por la PC (address 10.42.43.2,netmask 255.255.255.0). Adicionalmente, se ha seteado el modo de red en Ad-Hoc (wireless-mode ad-hoc).

En este caso uquad es el nombre de la red que crearemos en la PC, y uquaduquad123 es la clave de la misma. Es importante que el tipo de clave seleccionada sea Clave WEP40/128-bit(Hexadecimal o ASCII).

En la linea wireless-key s:uquaduquad123 la s implica que se trata de una clave ASCII, por lo cual el largo de la misma deberá ser de 13 caracteres. Se opta por esta opción por considerarse más sencilla.

También podría utilizarse una clave hexadecimal, que deberá contar con 26 números hexadecimales (esto es 0-9,a-f), en cuyo caso la linea donde se establece la clave deberá ser wireless-key CLAVE_DE_26_CARACTERES_HEXA.

Una vez modificado este archivo se procede a reiniciar la Beagleboard y se crea una red inalámbrica nueva en Ubuntu, cuyo nombre será uquad y con una contraseña WEP40/128-bit uquaduquad123.

Para probar la conexión basta hacer ping a la dirección asignada a la Beagleboard. En este caso eso sería:

ping 10.42.43.2

Si se verifica que la PC es capaz de alcanzar a la Beagleboard a través de la interfaz WiFi entonces puede establecerse una conexión SSH con la Beagleboard mediante:

ssh -l root 10.42.43.2

Finalmente, cabe destacar que tener esta interface configurada no interfiere con el resto de las interfaces de la Beagleboard. De esta forma, si la Beagleboard está en la misma red WAN que nuestra Pc y, a su vez, se ha configurado correctamente la conexión WiFi, tendremos dos vias de comunicación PC-Beagleboard, pudiéndose usar ambas en forma indistinta y/o simultánea.

Configuración del proxy

Si se trabaja a través de un proxy el mismo puede ser configurado desde el terminal de Angstrom mediante el comando export, especificando además que proxy se desea setear.

De esta forma, existen 4 variables a setear para configurar el proxy completamente: HTTP_PROXY -----> Proxy para HTTP HTTPS_PROXY -----> Proxy para HTTPS FTP_PROXY -----> Proxy para FTP SOCKS_PROXY -----> Servidor socks

Para setear alguna de ellas usamos el comando de la siguiente forma:

export {VARIABLE}='{Proxy Server IP}'

Si se desea setear, por ejemplo, el servidor HTTP con el proxy del laboratorio de medidas del IIE, el comando sería:

export HTTP_PROXY='httpproxy.fing.edu.uy:3128'

Configuración automática de proxy

NOTA:Esto todavía no fue probado, lo estoy agregando para dejarlo registrado y probarlo en cuanto pueda. Esta sección fue armada en base a diversas fuentes encontradas en internet. También se tuvo en cuenta como se configura el proxy para OPKG (próxima sección) para ello.

Para que el proxy quede correctamente seteado al inicio (sin necesidad de introducir los comandos en el terminal de Angstrom) puede modificarse el archivo /etc/network/options.conf y agregar lineas de la forma

option {tipo de proxy} {protocolo}://{Proxy Server IP}:{Port}/

Por ejemplo, se podría configurar el proxy HTTP del laboratorio con la línea:

option http_proxy http://httpproxy.fing.edu.uy:3128/

Configurar el gestor de paquetes OPKG para trabajar a través de un proxy

Para lograr que el gestor de paquetes OPKG trabaje a través de un proxy basta con agregar al archivo /etc/opkg/arch.conf una línea con el siguiente contenido:

option http_proxy http://{Proxy Server IP}:{Port}/

Si el proxy necesitara, además, usuario y contraseña, utilizamos:

option http_proxy http://{username}:{password}@<{Proxy Server IP}:{Port}/

En el caso del proxy de la Facultad, la línea a agregar sería:

option http_proxy http://httpproxy.fing.edu.uy:3128/

Si querés hacerlo por el puerto serie, usar un editor es una patada voladora en la patria, mejor hacer:

echo "option http_proxy http://httpproxy.fing.edu.uy:3128/" >> /etc/opkg/arch.conf
NOTE: No te olvides que son dos >>, sino borrás todo lo otro que había en ese archivo.

ssh key

Para no tener que ponerle la clave (apretar enter) nunca más, agregar tu clave pública a las que conoce la beagle. Tu clave pública está en tu pc en /.ssh/id_rsa.pub, y tenés que agregarla (tal cual) a /.ssh/authorized_keys en la beagle.

Troubleshooting

No se puede hacer ping a nada

Si no podés ni hacer ping, y te pasa que

root@beagleboard:~# ping www.google.com
ping: bad address 'www.google.com'

Entonces puede haber problemas con el archivo /etc/resolv.conf. Una vuelta, por algún motivo era un link simbólico algo que no existía.

Si tu computadora está conectada a la misma red que la beagle, entonces copiale lo mismo que hay en tu pc.

Un ejemplo, que debería andar en el lab de medidas:

rrosa@rrosa-X220:~$ cat /etc/resolv.conf
# Generated by NetworkManager
domain lm.iie.edu.uy
search lm.iie.edu.uy
nameserver 172.16.0.250