segunda-feira, 10 de julho de 2017

Redes de Sensores Sem Fio com Protocolo Radiuino Emulada no Arduino

Introdução

O Radiuino pode ser definido como um protocolo de comunicação para Redes de Sensores Sem Fio, que implementa um pacote de comunicação de 52 bytes. Ele é estruturado em uma pilha de protocolos com 5 camadas: Física, MAC, Rede, Transporte e Aplicação, esta estrutura é conceitualmente equivalente à pilha TCP/IP.

Existem duas bibliotecas para serem utilizadas no Arduino, a primeira é a biblioteca Radiuino, que apresenta os Firmwares de maneira transparente, permitindo ao usuário entender todo o processo de comunicação dos protocolos em cada camada. Isso permite que o usuário construa redes de comunicação sem fio customizadas para cada situação e ambiente, além de permitir aos estudantes alterar parâmetros diversos no ambiente e acompanhar o comportamento da rede, comparando os conhecimentos teóricos, com a prática.

A segunda biblioteca é o Radiuino4App, cujo objetivo é facilitar a utilização de aplicações em redes de sensores sem fio, para os usuários que não tem interesse em entender como a rede funciona, ou precisam de um ambiente de demonstração de conceito, por exemplo, onde a uma rede básica atende a demanda. Nessa biblioteca os Firmwares apresentam apenas configurações básica, ocultando o restante das opções. Nesse cenário, é criada automaticamente uma rede estrela, onde um computador envia um pacote de 52 bytes e o nó sensor devolve um pacote de 52 bytes. É possível colocar até 255 sensores nessa rede. Permitindo aos usuários focaram na aplicação sem se aprofundarem nas questões de rede.

O que é RSSI?

A sigla RSSI significa Received Signal Strength Indicator, se traduzirmos seria algo como a indicação de força/intensidade do sinal recebido, esse valor é muito importante para quem está olhando para a rede de sensores sem fio, pois a intensidade do sinal vai interferir diretamente na perda ou não de pacotes, o que dependendo do cenário e da aplicação, pode ser um problema a curto, médio ou longo prazo. A taxa de perda de pacotes - PER (Packet Error Rate) é o primeiro parâmetro que o responsável por uma rede de sensores sem fio irá consultar.

Objetivo

O objetivo é possuir uma rede de sensor sem fio emulada, utilizando o protocolo de comunicação Radiuino.

O Conceito de Repetidor

Quando possuímos necessidades como alcançar distâncias maiores, locais sem visada direta, ou mesmo criar uma extensão da rede, e não desejamos ou não temos condições de realizar a troca de equipamentos de rádio, podemos utilizar um repetidor. A base envia o sinal ao repetidor, que recebe e processa o sinal, e, em seguida, envia os pacotes ao seu destino final.

Porque Utilizar uma Rede Emulada?

Montar e calibrar uma rede de sensores sem fio real, realizar os testes e desmontá-la, a cada nova rodada de testes pode ser uma tarefa árdua. Para muitos assuntos que estudamos em redes de comunicação de dados como, por exemplo, técnicas de roteamento, softwares de monitoramento, e etc; Não é preciso montar uma rede real, uma rede emulada atende perfeitamente a fase de desenvolvimento e testes. Uma vez validado o cenário no ambiente emulado, partimos para os testes em ambiente real.

Material Necessário

O Ambiente Emulado

Como pode ser observado na figura 01, teremos uma base que se comunica com um repetidor, que repassa os dados para o sensor de destino, o número de sensores é definido no Script Python. Em cada sensor coletaremos os dados: Temperatura, Umidade e Luminosidade. Além da RSSI de UpLink e DownLink de cada enlace.
Figura 01
A figura 02 detalha o fluxo de dados em cada etapa do processo.
Figura 02
Exemplo de Coleta dos dados no terminal
Coleta de Dados no Terminal
Exemplo de Coleta dos dados na ferramenta de Gerencia de Redes Zabbix
Mapa da Rede de Sensores sem Fio Representada no Zabbix

Arquivos Fonte

Todos os arquivos, incluindo a parte do Zabbix, estão disponíveis aqui.

Agradecimentos


Queria agradecer ao meu Orientador Prof. Dr. Omar C. Branquinho por todo o conhecimento que vem compartilhando comigo desde a nossa primeira conversa, quando eu não entendia absolutamente nada de redes de sensores sem fio.
Ao meus amigos Eng. Raphael Montali da Assumpção e Eng. Guilherme Lopes por todas as dicas, conversas e troca de idéias, e nesse post específico ao Guilherme por ter revisado o conteúdo.
Não posso esquece também do meu amigo Douglas Esteves, que me ajudou a entrar no "universo das plaquinhas", como eu sempre brinco, aprendi muita coisa com ele, as dicas dele foram essenciais no começo dessa caminhada.
E finalmente, mas não menos importante, ao meu amigo Matheus Bernardes, meu oráculo do Python, eu copio código dos projetos dele, peço ajuda, etc. E ele sempre me ajuda com a maior boa vontade!

terça-feira, 6 de junho de 2017

Personalizando o Idioma da Interface Gráfica do Zabbix

Introdução

Demonstrarei nesse post como realizar a alteração do idioma do Zabbix. Pode-se alterar apenas alguns termos ou todos os termos.

Objetivo

O objetivo desse post é ser uma Prova de Conceito, é fazer com que as pessoas pensem fora da caixa. O Zabbix é uma ferramenta fantástica, que permite coletar dados, exibi-los em forma de gráficos e mapas, reagir às métricas coletadas, seja alterando um ícone no gráfico, enviando uma notificação, executando um comando, etc.

O problema é que as pessoas pensam no Zabbix apenas para redes Ethernet e Aplicações! Há algum tempo vemos algumas iniciativas, como do Luciano Alves (Unirede) expandindo isso para uma visão de negócios, o Norberto Rozas (Syspro) que propôs a ideia de usar o Zabbix como supervisório de redes industriais, O Luiz Sales com seus monitoramentos nada convencionais, etc.

No começo do ano eu iniciei o mestrado em Engenharia Elétrica, trabalhando com Redes de Sensores Sem Fio (RSSF), e claro minha proposta foi a de utilizar o Zabbix como ferramenta para o gerenciamento dessas redes, mas conforme as ideias foram surgindo, fui lendo os artigos, conversando com meu orientador, eu fui percebendo um imenso aumento do uso de conceitos como IoT, Smart Cities, Smart Campus, etc. E com isso novos interesses foram sendo despertados.

O Zabbix pode ser usado como Interface para os usuários finais, independente da área de atuação, porém será preciso fazer algumas modificações, pois cada área possui seu conjunto de jargões, sua definição de ícones, de interface, etc. Personalizar o Zabbix para que o usuário tenha uma visão que lhe seja familiar, é essencial. O que estou propondo é utilizar o que o Zabbix tem de melhor, e adaptar o que for necessário para que o usuário se sinta motivado a utilizá-lo.

O que essa solução é

Um Hack: Tenha isso em mente, o que estou fazendo não servirá para qualquer um, em qualquer ambiente, não é suportado pela Zabbix SIA e pode nem ser interessante no seu ponto de vista.
Uma Prova de Conceito: Esse post está longe de ser a palavra final sobre o assunto, eu tinha uma necessidade, achei uma maneira de executá-la e estou compartilhando com vocês.

O que essa solução não é

Prática: A cada nova versão da ferramenta, será preciso reaplicar o hack.
Universal: Veja que essa solução é ideal para ambientes, onde um ou dois idiomas são utilizados, mas não atende uma empresa global, também não atende dezenas de segmentos ao mesmo tempo.

Entendendo como funcionam os idiomas no Zabbix

Consultando a documentação oficial descobrimos que eles utilizam o GNU/gettext e o conceito de locales, que envolve uma série de normas internacionais e vai muito além da simples tradução de textos. Por isso é muito provável que esse hack nunca seja absorvido oficialmente pela Zabbix SIA.

Entendendo os os arquivos que controlam o idioma que é exibido na Interface Gráfica

Vamos analizar o diretório com o idioma do Brasil (pt_BR):
# ls -l /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/
total 940
-rw-r--r-- 1 zabbix zabbix 309122 Mai 30 17:26 frontend.mo
-rw-r--r-- 1 zabbix zabbix 649043 Mai 30 17:20 frontend.po

Enquanto o arquivo frontend.mo é um arquivo com uma codificação especial, descrita na documentação como uma "foto". E repleto de caracteres especiais:
# head -3 /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.mo
▒gGl▒▒▒/▒▒9▒5F [|▒▒▒!▒▒▒▒▒%▒,
3>Z
cn


O arquivo frontend.po é descrito na documentação como um arquivo texto, editável e utilizado para a tradução.
# head -3 /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.po
msgid ""
msgstr ""
"Project-Id-Version: Zabbix 3.2\n"


Observe esse trecho do arquivo frontend.po:
   4592 #: include/actions.inc.php:660 include/actions.inc.php:1061
   4593 msgid "Disable host"
   4594 msgstr "Desativar host"
   4595
   4596 #: include/views/configuration.host.list.php:116
   4597 msgid "Disable host?"
   4598 msgstr "Desabilitar host?"
   4599
   4600 #: app/views/administration.proxy.list.php:154
   4601 #: include/views/configuration.hostgroups.list.php:150
   4602 msgid "Disable hosts"
   4603 msgstr "Desativar hosts"
   4604
   4605 #: include/views/configuration.hostgroups.list.php:151
   4606 msgid "Disable hosts in the selected host groups?"
   4607 msgstr "Desabilitar os hosts nos grupos selecionados?"


Ele contém as strings que desejamos alterar, o problema é que alterar esse arquivo não surte efeito algum na interface gráfica. Pois se observarmos o arquivo que é chamado na linha 4596, por exemplo:
# vi /var/www/html/zabbix/include/views/configuration.host.list.php +116
                $confirm_message = _('Disable host?');


Verificamos que ele busca como referência a frase original, e, então aplica a tradução.

Observe esse trecho "^@Desabilitar host^@D" da linha 523 do arquivo /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.mo

Veja o que acontece se eu troco a frase por outra com o mesmo número de caracteres:
"^@Desabilitar sens^@D"

E reinicio o apache:
# systemctl restart httpd
Hack 01 no arquivo frontend.mo
Agora veja o que acontece e eu troco a frase por outra com um número diferente de caracteres:
"^@Desabilitar sensor^@D"

E reinicio o apache:
# systemctl restart httpd

Hack 02 no arquivo frontend.mo
Lembra que a documentação diz que o arquivo .mo é como uma foto? É nesse sentido. A mensagem aparece correta, mas todo o resto da formatação da interface gráfica se perdeu.

Basta voltar o arquivo ao normal e reiniciar o apache, que a interface gráfica também volta ao normal.
Interface Gráfica intacta após a remoção do Hack

Conclusões Iniciais

Devemos utilizar o arquivo frontend.po para gerar um arquivo frontend.mo atualizado. Mas como?

Observando o diretório /var/www/html/zabbix/locale temos um README e três scripts:
# ls -l *.sh README
-rwxr-xr-x 1 zabbix zabbix  385 Dez 21 05:08 add_new_language.sh
-rwxr-xr-x 1 zabbix zabbix  164 Mai 30 17:29 make_mo.sh
-rw-r--r-- 1 zabbix zabbix  957 Dez 21 05:08 README
-rwxr-xr-x 1 zabbix zabbix 1434 Dez 21 05:08 update_po.sh


No arquivo README encontramos a seguinte instrução:
If you want to update po files with new strings in the sourcefile, run update_po.sh . It will gather translatable strings from all files that end with ".php"

Maravilha é exatamente o que pretendemos fazer!

Vou mover o arquivo frontend.mo para o /root:
# mv /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.mo /root

E editar o arquivo frontend.po:
# vi /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.po
Alteramos as linhas 4592 até 4607, alterando as ocorrências de "host" para "sensor" e  de "hosts" para "sensores", e executamos o script:
# sh update_po.sh
Generating translation template...
Merging new strings in po files...
.
.
.
pt_BR
............................................................................................................................................................................................................................................................................................................................................. feito.
.
.
.
pt_BR/LC_MESSAGES/frontend.po   3316 mensagens traduzidas, 5 mensagens não traduzidas.
.
.
.


Mas... Não gerou um novo arquivo .mo:
# ls -l  /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.*
-rw-r--r-- 1 zabbix zabbix 649043 Mai 31 09:59 /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.po


Sem ele, mesmo com o idioma setado para Português (pt_BR)
Idioma setado como pt_BR
A interface gráfica fica em Inglês.
Interface Gráfica em Inglês

Basta trazer o arquivo de volta e reiniciar o apache:
# mv /root/frontend.mo /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/
# systemctl restart httpd


Que a interface gráfica volta ao normal.
Intreface Gráfica em pt_BR

Teste 02: Vamos rodar o update_po.sh e ver se ele atualiza o arquivo frontend.mo

# ls -l /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.mo
-rw-r--r-- 1 zabbix zabbix 309122 Mai 31 09:53 /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.mo
 

# sh update_po.sh
 

# ls -l /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.mo
-rw-r--r-- 1 zabbix zabbix 309122 Mai 31 09:53 /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.mo


E nada :-(

Teste 03: Vamos ver o que esse script faz ;-)

E na última instrução temos:
        # setting output file to /dev/null so that unneeded messages.mo file
        # is not created
        msgfmt --use-fuzzy -c --statistics -o /dev/null $translation

Achei!!! Esse script realmente não cria os arquivos.mo. Agora eu vou alterar ele para gerar os arquivos:
        #msgfmt --use-fuzzy -c --statistics -o /dev/null $translation
        msgfmt --use-fuzzy -c --statistics -o /root/$translation/frontend.mo $translation


Eu fiz a menor alteração possível, apenas substituindo "/dev/null" por "/root/$translation/frontend.mo". Isso poderia ficar bem mais elegante, mas preferi ser didático.

Vou criar apenas o diretório pt_BR, que será utilizado pela variável "$translation", os outros idiomas vão dar erro, mas nesse momento não tem problema:
# mkdir -p /root/pt_BR/LC_MESSAGES/frontend.po/

Vou guardar o antigo frontend.mo no /root
# mv /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/frontend.mo /root/

E rodar o script de update novamente:
# sh update_po.sh
Generating translation template...
Merging new strings in po files...
.
.
.
pt_BR
............................................................................................................................................................................................................................................................................................................................................. feito.
.
.
.
bg/LC_MESSAGES/frontend.po      msgfmt: erro ao abrir o arquivo "/root/bg/LC_MESSAGES/frontend.po/frontend.mo" para gravação: Arquivo ou diretório não encontrado
2052 mensagens traduzidas, 56 traduções aproximadas (fuzzy), 1213 mensagens não traduzidas.
.
.
.
pt_BR/LC_MESSAGES/frontend.po   3316 mensagens traduzidas, 5 mensagens não traduzidas.
.
.
.


E agora vamos colocar o novo frontend.mo na interface gráfica do Zabbix:
# cp /root/pt_BR/LC_MESSAGES/frontend.po/frontend.mo /var/www/html/zabbix/locale/pt_BR/LC_MESSAGES/

Reiniciar o apache
# systemctl restart httpd

E Voilà:

Interface Gráfica com a mensagem alterada
Volte o arquivo que você salvou no /root e reinicie o apache. Pois agora vamos fazer o trabalho, de verdade, vamos ter o Zabbix em Português com a interface intacta, e mais 3 variações do Português aplicado à nichos específicos.

Primeiro vamos criar a estrutura de diretórios para os idiomas Italiano (it), Francês (fr) e Russo (ru):
# mkdir -p /root/{it,fr,ru}/LC_MESSAGES/frontend.po/

Abaixo uma pequena cola, das alterações que vamos fazer:
pt_br - Hosts / Itens - Administrador da Rede Ethernet
it - Sensores / Métricas - Administrador da Rede de Sensores
fr - Plantas / Características - Usuário da Rede de Sensores - Ramo Agrícola
ru - Pacientes / Sinais Vitais - Usuário da Rede de Sensores - Ramo Medicina

Vamos copiar o arquivo frontend.po de pt_BR para os idiomas que vamos alterar:
# cd /var/www/html/zabbix/locale

# cp pt_BR/LC_MESSAGES/frontend.po it/LC_MESSAGES/frontend.po
cp: sobrescrever “it/LC_MESSAGES/frontend.po”? y

# cp pt_BR/LC_MESSAGES/frontend.po fr/LC_MESSAGES/frontend.po
cp: sobrescrever “fr/LC_MESSAGES/frontend.po”? y

# cp pt_BR/LC_MESSAGES/frontend.po ru/LC_MESSAGES/frontend.po
cp: sobrescrever “ru/LC_MESSAGES/frontend.po”? y


Primeiro vamos trabalhar no idioma Italiano e trocar todas as ocorrências de hosts por sensores e depois de host por sensor:
# sed -i -e ':g;/^msgstr/s/hosts/sensores/g' /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/host/sensor/g' /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Hosts/Sensores/g' /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Host/Sensor/g' /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.po


Agora vamos trocar todas as ocorrências de itens por métricas e depois de item por métrica:
# sed -i -e ':g;/^msgstr/s/itens/métricas/g' /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/item/métrica/g' /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Itens/Métricas/g' /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Item/Métrica/g' /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.po


Agora vamos ao idioma Francês, vamos trocar todas as ocorrências de hosts por plantas e depois de host por planta:
# sed -i -e ':g;/^msgstr/s/hosts/plantas/g' /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/host/planta/g' /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Hosts/Plantas/g' /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Host/Planta/g' /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.po


Agora vamos trocar todas as ocorrências de itens por características e depois de item por característica:
# sed -i -e ':g;/^msgstr/s/itens/características/g' /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/item/característica/g'  /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Itens/Características/g' /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Item/Característica/g' /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.po


E finalmente vamos ao idioma Russo, vamos trocar todas as ocorrências de hosts por pacientes e depois de host por paciente:
# sed -i -e ':g;/^msgstr/s/hosts/pacientes/g' /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/host/paciente/g' /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Hosts/Pacientes/g' /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Host/Paciente/g' /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.po


Agora vamos trocar todas as ocorrências de itens por sinais vitais e depois de item por sinal vital:
# sed -i -e ':g;/^msgstr/s/itens/sinais vitais/g' /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/item/sinal vital/g' /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Itens/Sinais Vitais/g' /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.po

# sed -i -e ':g;/^msgstr/s/Item/Sinal Vital/g' /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.po


Eentão gerar os nossos arquivos frontend.mo atualizados:
# sh update_po.sh

E coloca-los na interface gráfica do Zabbix:
# cp /root/fr/LC_MESSAGES/frontend.po/frontend.mo /var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.mo
cp: sobrescrever “/var/www/html/zabbix/locale/fr/LC_MESSAGES/frontend.mo”? y

# cp /root/it/LC_MESSAGES/frontend.po/frontend.mo /var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.mo
cp: sobrescrever “/var/www/html/zabbix/locale/it/LC_MESSAGES/frontend.mo”? y

# cp /root/ru/LC_MESSAGES/frontend.po/frontend.mo /var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.mo
cp: sobrescrever “/var/www/html/zabbix/locale/ru/LC_MESSAGES/frontend.mo”? y


Reiniciar o Apache
# systemctl restart httpd

E pronto:
Interface Gráfica com o Hack Aplicado

Conclusão:

Esse é apenas um pequeno exemplo de que com um pouco de criatividade e algum esforço, podemos levar o Zabbix a outros nichos e ampliar a nossa área de atuação, seja ela pessoal, acadêmica ou profissional.

segunda-feira, 9 de janeiro de 2017

Configurando um IP fixo na interface eth0 do BeagleBone Black

Introdução

Ao conectar o BBB (BeagleBone Black) no computador e instalar os drivers necessários, ele automaticamente cria uma conexão usb0 com o IP 192.168.7.2. Mas ele possui uma interface de rede, a eth0, e nem sempre estamos em um ambiente com DHCP.

O Ambiente

Estou usando a imagem Debian 8.6 2016-11-06 4GB SD LXQT

O Problema

Configurar um IP para essa interface deveria ser uma tarefa simples, bastaria editar o arquivo /etc/network/interfaces e configurar de acordo com sua necessidade:
# vi /etc/network/interfaces
auto eth0
 iface eth0 inet static
    address 10.0.1.100
    netmask 255.255.255.0
    network 10.0.1.0
    gateway 10.0.1.1
    dns-nameservers 8.8.8.8



Só que isso simplesmente não funciona! Você reinicia ele e nada.

A Solução

Depois muito pesquisar achei a solução em uma lista de discussão:
Primeiro vamos descobrir o identificador da interface
# connmanctl services
*AO Wired                ethernet_d05fb8ed4f78_cable


Depois vamos usar o comando connmanctl config para configurar as opções da interface
# connmanctl config ethernet_d05fb8ed4f78_cable --ipv4 manual 10.0.1.100 255.255.255.0 10.0.1.1 --nameservers 8.8.8.8
E agora já podemos visualizar os novos parâmetros da interface através do comando ip
# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,DYNAMIC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether d0:5f:b8:ed:4f:78 brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.100/24 brd 10.0.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::d25f:b8ff:feed:4f78/64 scope link
       valid_lft forever preferred_lft forever


E pronto você já pode executar um ping www.google.com por exemplo, para validar sua conexão com a internet.

Se você quiser reverter, e usar novamente a interface eth0 como DHCP, basta executar o comando
# connmanctl config ethernet_d05fb8ed4f78_cable --ipv4 dhcp

Fonte:

Google Groups BeagleBoard