-
Notifications
You must be signed in to change notification settings - Fork 14
BeagleNet
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.
- 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 de255.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
).
-
Poner la tarjeta microSD en una computadora.
-
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
:La elección de# 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
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 con10.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:Si esto no anda, entonces no vale la pena seguir. Algo quedó mal...
ping 10.22.12.230
- Para conectarse al beagle hacer:La clave es nada, o sea, apretar enter.
ssh -l root 10.22.12.230
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
.
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:
-
Enchufamos la SD a la compu (obviamente tmb se puede hacer por
ssh
) y Copiamos el archivort73.bin
al directorio/Angstrom/lib/firmware
-
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.
- 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
Otro comando que puede ser útil es lsmod
que muestra los módulos del kernel que están cargados.
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).
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
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.
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'
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/
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
>>
, sino borrás todo lo otro que había en ese archivo.
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
, y tenés que agregarla (tal cual) a /.ssh/id_rsa.pub/.ssh/authorized_keys
en la beagle.
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