EDUARDO MALTAURO NICKEL
WILLIAM KUHL SVOBODA MARQUES BESSA
SISTEMA EMBARCADO COM ACESSO SEM-FIO
Monografia apresentada à disciplina de Projeto de Graduação como requisito para a conclusão do Curso de Engenharia Elétrica, Setor de Tecnologia, Departamento de Engenharia Elétrica, Universidade Federal do Paraná. Orientador: Prof.° Eduardo Parente Ribeiro
CURITIBA 2010
SUMÁRIO
LISTA DE SIGLAS ........................................................................................... i
RESUMO .................................................................................................... iv
1 INTRODUÇÃO ........................................................................................... 1
1.1 Objetivo .................................................................................................... 1
2 FUNDAMENTAÇÃO ................................................................................... 3
2.1 Hardware .................................................................................................. 3
2.1.1 Microprocessador ............................................................................. 3
2.1.2 Memória RAM ................................................................................... 4
2.1.3 Memória Flash ................................................................................... 4
2.1.4 Interface USB ..................................................................................... 5
2.1.5 Interface Serial .................................................................................. 5
2.1.6 Interface Ethernet ............................................................................. 6
2.1.7 Rede Sem-Fio IEEE 802.11 ................................................................. 7
2.1.8 Mini PCI ............................................................................................. 7
2.1.9 SDIO ................................................................................................... 8
2.1.10 GPIO ................................................................................................. 8
2.2 Software ................................................................................................... 9
2.2.1 Linux .................................................................................................. 9
2.2.2 Distribuições Linux .......................................................................... 10
2.2.2.1 OpenWRT ................................................................................. 11
2.2.2.2 DD-WRT .................................................................................... 11
2.2.2.3 Tomato ..................................................................................... 12
2.2.3 Impressão ........................................................................................ 13
2.2.3.1 LPR ............................................................................................ 13
2.2.3.2 CUPS ......................................................................................... 13
2.2.4 Compartilhamento de Arquivos ...................................................... 14
2.2.4.1 Samba ....................................................................................... 14
2.2.5 Servidor Web ................................................................................... 14
2.2.5.1 httpd e BusyBox ....................................................................... 15
2.2.5.2 Lighttpd .................................................................................... 16
2.2.5.3 uhttpd ....................................................................................... 16
2.2.6 Gerenciadores de Transferência de arquivos ................................. 16
2.2.6.1 Ctorrent .................................................................................... 17
2.2.6.2 Transmission ............................................................................. 17
2.2.6.3 wget .......................................................................................... 18
2.2.6.4 Pure-FTPd ................................................................................. 18
2.2.7 Firewall ............................................................................................ 18
2.2.7.1 Iptables ..................................................................................... 19
3. METODOLOGIA...................................................................................... 20
3.1 Seleção do Hardware ............................................................................. 20
3.1.1 Ubiquiti RouterStation PRO ............................................................. 21
3.2 Seleção da Distribuição Linux ................................................................. 24
3.3 Funcionamento do sistema .................................................................... 24
3.4 Software ................................................................................................. 26
3.4.1 OpenWRT ........................................................................................ 26
3.4.2 Rede ................................................................................................. 27
3.4.2.1 Ethernet .................................................................................... 27
3.4.2.2 Rede Sem-Fio IEEE 802.11 ........................................................ 28
3.4.3 Firewall ............................................................................................ 29
3.2.4 Servidor Web ................................................................................... 29
3.2.5 Servidor FTP ..................................................................................... 29
3.2.6 Suporte a USB .................................................................................. 30
3.2.7 Armazenamento .............................................................................. 31
3.2.8 Câmera ............................................................................................ 31
3.2.9 BitTorrent ........................................................................................ 32
3.2.10 Samba ............................................................................................ 33
3.2.11 Impressão ...................................................................................... 33
3.2.12 GPIO ............................................................................................... 34
3.2.13 Interface Gráfica ............................................................................ 35
4. RESULTADOS ......................................................................................... 36
5. CONCLUSÃO .......................................................................................... 41
REFERÊNCIAS ............................................................................................ 43
i
LISTA DE SIGLAS
AC – Alternate Current – Corrente Alternada
ARM – Advanced RISC Machine – Máquina RISC Avançada
BSD – Berkeley Software Distribution – Distribuição de Software Berkeley
CGI – Common Gateway Interface – Interface de Gateway comum
CIFS – Common Internet File System – Sistema de arquivo comum da Internet
CPU – Central Processing Unit – Unidade de Processamento Central
CUPS – Common Unix Printing System– Sistema de Impressão Unix Comum
DC – Direct Current – Corrente Contínua
Daemon – Disk and Execution Monitor – Monitor de Disco e Execução
DDR – Double Data Rate – Taxa de Transferência Dobrada
DHCP – Dynamic Host Configuration Protocol – Protocolo de Configuração Dinâmica de
Endereços de Rede
DNS – Domain Name Service – Serviço de Nome de Domínios
EEPROM – Electrically-Erasable Programmable Read-Only Memory – Memória de
leitura programável e apagável eletricamente
EHCI – Extended Host Controller Interface – Interface Controladora do Host Estendido
EIA – Electronics Industries Association – Associação da Indústria Eletrônica
ESD – Electrostatic Discharge – Descarga Eletrostática
EXT3 – Third Extended File System – Sistema de Arquivo Extendido Três
Fast CGI– Fast Common Gateway Interface– Interface rápida de Gateway comum
FTP – File Transfer Protocol – Protocolo de Transferência de Arquivos
Gbps – Giga bits per second – Giga bits por segundo
GPIO – General Purpose Input / Output – Entrada/Saída de Finalidades Gerais
GPL – General Public License – Licença Pública Geral
GPS – Global Positioning system – Sistema de posicionamento global
HCI – Host Controller Interface – Interface Controladora do Computador
HD – Hard Drive – Disco Rígido
HTTP – Hypertext Transfer Protocol – Protocolo de Transferência de Hipertexto
IBM – Internacional Business Machines
IEEE – Institute of Electrical and Electronics Engineers – Instituto de Engenheiros
Eletricistas e Eletrônicos
IMAP – Internet Message Access Protocol – Protocolo de Acesso a mensagens da
Internet
IP – Internet Protocol – Protocolo Internet
JFFS2 – Journaling Flash File System – Sistema de Arquivo Flash Journaling
LAN – Local Area Network – Rede de Área Local
LPR – Line Printer Remote – Impressora Remota em Linha
ii
MAC – Media Access Control – Controle de Acesso ao Meio
MB – Mega Bytes – Mega Bytes
Mbps – Mega bits per second – Mega bits por segundo
MIPS – Microprocessor Without Interlocked Pipeline Stages – Microprocessador Sem
Estágios Interligados de Pipeline
MSC – Mass Storage Class – Classe de Armazenamento de Massa
NTFS – New Technology File System – Nova Tecnologia de Sistemas de Arquivo
OHCI – Open Host Contoller Interface – Interface Controladora do Host Aberta
OS – Operational System – Sistema Operacional
OSI – Open Systems Interconnection – Interconexão de Sistemas Abertos
PC – Personal Computer – Computador Pessoal
PCI – Peripheral Communication Interface – Interface de comunicação de periféricos
PDA – Personal Digital Assistant – Assistente Digital Pessoal
PHP – Hypertext Preprocessor – Pré–Processador de Hipertexto
POE – Power Over Ethernet – Energia Sobre Ethernet
RAM – Random Access Memory – Memória de Acesso Aleatório
RS-232 – Recommended Standard 232 – Padrão Recomendado 232
SD – Secure Digital – Digital Seguro
SDIO – Secure Digital Input / Output – Entrada/Saída Digital Segura
PLC – Power Line Communication – Comunicação por Linha de Energia
SMB – Server Message Block – Bloco de mensagem de servidor
SOHO – Small Office / Home Office – Pequeno Escritório / Escritório em Casa
SPI – Serial Peripheral Interface – Interface Serial de Periféricos
Spool – Simultaneous Peripheral Operation Online – Operação Simultânea de
Periféricos em Linha
SquashFS – Squash File System – Sistema de Arquivo Squash
SSH – Secure Shell – Shell Seguro
TB – Tera Byte – Tera Byte
TCP – Transmission Control Protocol – Protocolo de Controle de Transmissão
TELNET – Telecommunication Network – Rede de telecomunicação
TFTP – Trivial File Transfer Protocol – Protocolo de Transferência de arquivos trivial
UCI – Unified Configuration Interface – Interface de Configuração Unificada
UHCI – Universal Host Contoller Interface – Interface Controladora do Host Universal
UMS – Universal Mass Storage – Armazenamento de Massa Universal
URL – Uniform Resource Locator – Localizador Padrão de Recursos
USB – Universal Serial Bus – Barramento Serial Universal
UVC – USB Video Class – Classe de Vídeo USB
VFAT – Virtual File Allocation Table – Tabela de Alocação de Arquivos Virtual
VLAN – Virtual Local Area Network – Rede de Area Local Virtual
WAN – Wide Area Network – Rede de área alargada
Wi-Fi – Wireless Fidelity – Fidelidade Sem–Fio
iii
WNIC – Wireless Network Interface Card – Cartão de Interface à Rede Sem–Fio
WLAN – Wireless Local Area Network – Rede de Área Local Sem–Fio
WPA – Wi-Fi Protected Access – Acesso Protegido ao Wi-Fi
WRT – Wireless Receiver/Transmitter – Transmissor/Receptor Sem–fio
XHCI – Extensible Host Contoller Interface – Interface Controladora do Host Extensível
iv
RESUMO
Com a redução dos custos e da conseqüente popularização dos dispositivos
conectados em rede, torna-se interessante buscar novas possibilidades de
aproveitamento destes equipamentos para diversas funções. Este projeto visa
desenvolver, a partir de um hardware genérico de roteamento sem-fio, um
equipamento multifuncional para atender a diversas necessidades em um ambiente
residencial ou pequeno escritório. Para isso, foram implementadas as funções de
maior necessidade neste tipo de ambiente, como serviços de compartilhamento de
arquivos e impressoras, rede sem-fio, monitoramento com câmera, roteamento e
armazenamento de arquivos. No geral, a solução apresentada obteve resultados
satisfatórios dentro das possibilidades do equipamento, porém necessitando de
pequenas melhorias. Desta forma, verificou-se que este tipo de sistema foi capaz de
realizar todas as funções propostas, valorizando e aumentando a funcionalidade de um
sistema sem-fio embarcado.
1
1 INTRODUÇÃO
As redes sem-fio ou wireless, especialmente as redes baseadas no padrão IEEE
802.11, estão se tornando cada vez mais populares, principalmente devido à
popularização dos computadores portáteis como: notebooks, laptops, netbooks e
smartphones. Outro fator que ajuda a difundir ainda mais esse padrão de rede sem-fio
é a sua facilidade de instalação e configuração, que não necessita de cabos e demanda
menos equipamentos de infra-estrutura.
Sendo assim, os roteadores sem-fio, que são os equipamentos responsáveis
pelo funcionamento das redes wireless em uma LAN podem ser capazes de realizar
diversas tarefas que vão além de disponibilizar o sinal eletro-magnético e fazer o
roteamento dos pacotes IP (Internet Protocol). Esses equipamentos, usualmente, vêm
com recursos de hardware capazes de trabalhar com sistemas operacionais baseados
em Linux e com interfaces de comunicação que vão além do padrão Ethernet e do IEEE
802.11 (Wi-Fi). Os roteadores sem-fio, dependendo do fabricante e do modelo, muitas
vezes apresentam diversas conexões, como Serial, USB (Universal Serial Bus) e GPIO
(General Purpose Input/Output). Desta forma, contando com as conexões extras, com
um sistema operacional flexível e com recursos de hardware suficientes, é possível
aproveitar melhor o equipamento fazendo com que os rotadores wireless funcionem
como equipamentos multifuncionais, com capacidade para controlar os mais variados
dispositivos externos, mantendo a sua função original de roteador.
1.1 Objetivo
O objetivo principal deste projeto é demonstrar com o conceito de se utilizar
um sistema embarcado com acesso sem-fio e equipamentos multifuncionais,
procurando novas funções que esses dispositivos eletrônicos podem realizar.
Considerando isso, pretende-se desenvolver a partir de um equipamento comercial
que suporte o sistema operacional Linux embarcado, que tenha interfaces extras de
comunicação e requisitos de hardware, um roteador sem-fio multifuncional capaz
realizar as seguintes funções extras: servidor de arquivos para a rede local, servidor de
2
impressão, interface de configuração através de um navegador de Internet,
gerenciador de arquivos, streaming de mídia, servidor de transferência de arquivos
(downloads) e disponibilizar imagens a partir de uma câmera de vídeo (webcam).
Este trabalho está estruturado da seguinte forma. Primeiramente é
desenvolvida a fundamentação, onde estão embasadas as escolhas do hardware
(roteador comercial) e da distribuição do sistema operacional Linux embarcado. Em
seguida, está desenvolvida a metodologia do projeto, onde está explicado como
ocorreu o seu desenvolvimento e, também, é feita uma explicação geral do
funcionamento do sistema. Neste momento, verificam-se também os recursos
necessários e as configurações feitas para o seu desenvolvimento. A seguir, existe um
capítulo de resultados obtidos onde, a partir do que foi realizado na metodologia e na
fundamentação, são demonstrados os dados obtidos após o desenvolvimento do
dispositivo. Finalmente, a conclusão, onde são analisados os resultados, verificando-se
se eles condizem com o objetivo. Além disso, são analisadas as deficiências do projeto
e melhorias que podem ser feitas, conjuntamente com uma abordagem sobre futuros
projetos que podem ser realizados a partir dos estudos realizados neste projeto.
3
2 FUNDAMENTAÇÃO
Inicialmente, a realização deste projeto ocorre pela seleção dos seus sistemas
básicos: o roteador sem-fio propriamente dito (hardware) e a distribuição Linux que
será embarcada e desenvolvida (software) nesse roteador. Assim, deve-se levar em
consideração que o sistema embarcado tem requisitos básicos tanto de hardware
quanto de software para que ele possa ser desenvolvido [42], considerando, inclusive,
as novas funções propostas nesse projeto.
2.1 Hardware
A partir dessas considerações e outras pesquisas, foram determinadas as
necessidades de hardware para que o roteador sem-fio multifuncional funcione com
desempenho adequado. Então, estabeleceu-se que o sistema deveria ter os seguintes
requisitos básicos:
Microprocessador com freqüência de operação maior que 300 MHz;
Memória RAM (Random Access Memory) com capacidade superior a 32MB;
Memória Flash com 16 MB (Mega Bytes) ou mais;
Interfaces de Comunicação: USB, Ethernet, Serial (DB9), Mini PCI, Rede Sem-Fio
IEEE 802.11, SD Card e GPIO (General Purpose Input/Output).
2.1.1 Microprocessador
O microprocessador é um circuito integrado que é responsável pela execução
das instruções de cálculo e tomadas de decisões do sistema, de maneira que todos os
computadores e equipamentos eletrônicos o utilizam para executar suas funções [38].
Então, este é o principal componente do sistema de hardware, pois ele controla a
velocidade geral do sistema. Portanto, esse elemento do sistema é vital para que o
equipamento tenha um bom desempenho geral.
A escolha do parâmetro de freqüência de processamento acima de 300 MHz
se justifica devido à maior capacidade de processamento necessária para realizar as
4
funções extras. Em uma pesquisa feita, verificou-se que os roteadores sem-fio básicos
usualmente utilizam processadores da arquitetura MIPS (microprocessor without
interlocked pipeline stages) de 32 bits com freqüência entre 125 e 200 MHz. Sendo
assim, estimou-se que um processador de 300 MHz seria suficiente para atender a
demanda do sistema multifuncional.
2.1.2 Memória RAM
A memória RAM (Random Access Memory) é a memória volátil de um sistema
computadorizado, ou seja, ela preserva as informações gravadas enquanto estiver
sendo energizada [39]. Este tipo de memória permite que os dados gravados sejam
acessados em qualquer ordem (at random). Logo, a memória RAM é utilizada em
operações que necessitam de grande velocidade de leitura e escrita e que não
necessitam ser armazenadas no sistema após o seu desligamento.
O dimensionamento da memória RAM do sistema foi estabelecido com
quantidade superior a 32 MB, para que o sistema tenha a capacidade de gerenciar
todo o sistema operacional e os demais softwares necessários a partir da RAM, tendo
melhor desempenho.
2.1.3 Memória Flash
A memória Flash é um tipo específico de memória da família EEPROM
(Electrically-Erasable Programmable Read-Only Memory) desenvolvido pela Toshiba
[40]. Este tipo de memória pode ser escrita ou apagada eletricamente por diversas
vezes, preservando as informações mesmo sem estar ligada a uma fonte de
alimentação. O diferencial das memórias Flash é que elas são programadas em blocos
de dados, ganhando em velocidade de escrita e leitura. Então, justamente nesse
espaço de memória é que os sistemas embarcados armazenam seu sistema base, ou
sistema operacional.
A quantidade de memória Flash de 16 MB foi estimada como mínimo
necessário para que o sistema pudesse atender a todas as funções extras. Isso ocorre,
porque as distribuições Linux para sistemas embarcados existentes atualmente,
utilizam algo em torno de 8 MB de espaço. Desta forma, com o sistema sendo
5
multifuncional mais espaço seria necessário para que as novas aplicações fossem
instaladas e desenvolvidas. Vale lembrar que este tipo de memória também é utilizado
nos dispositivos de armazenamento portáteis, conhecidos como Flash Drive.
2.1.4 Interface USB
O padrão de comunicação USB (Universal Serial Bus) é um tipo de conexão
externa plug and play (ligar e usar), que estabelece a comunicação de um computador
com periféricos sem a necessidade de reinicializar o sistema [57]. O USB estabelece a
comunicação na forma serial, um bit de cada vez, e pode atingir velocidade de até 480
Mbps. Este padrão ficou muito popular, pois facilitou muito a configuração de
dispositivos externos ao computador, fazendo com que usuários sem experiência
fossem capazes de instalar um novo periférico no sistema sem maiores dificuldades.
Assim, é fundamental que o roteador sem-fio tenha seu controlador, com
pelo menos um conector físico USB para que seja possível fazer a comunicação com
dispositivos externos, como, por exemplo, uma câmera (webcam) ou um dispositivo de
armazenamento de informação. Desta forma, a conexão USB é quem influirá
indiretamente para que o roteador sem-fio se torne multifuncional.
2.1.5 Interface Serial
A interface serial ou porta serial, também conhecida como RS-232 é um
padrão de comunicação utilizado para conectar periféricos e outros equipamentos de
hardware a um computador [35]. No padrão serial, os bits são transferidos em série ou
sem fila, sendo um bit de dado transferido de cada vez. O RS-232 foi padronizado em
1969 pela EIA (Eletronics Industries Association), definindo principalmente as
características elétricas e mecânicas para que funcione a comunicação. Apesar deste
tipo de comunicação ser relativamente antigo, ele vem resistindo até os dias de hoje
devido à sua simplicidade e confiabilidade.
Definiu-se, então, que o hardware do sistema embarcado poderia ter esta
interface para que fosse possível ligar outros periféricos, aumentando a característica
multifuncional do equipamento. Além disso, esta interface pode ser utilizada para
6
fazer a comunicação via terminal, já que o terminal via interface serial facilita o
trabalho quando ocorrem erros de configuração no roteador.
2.1.6 Interface Ethernet
Ethernet é um padrão de comunicação para redes locais (LAN - Local Area
Network) baseado no envio de pacotes de dados [31]. O padrão define o tipo de
cabeamento e conectores, sinais elétricos para a camada física da rede, o formato de
pacotes e os protocolos para a camada de controle de acesso ao meio (MAC - Media
Access Control) do modelo OSI (Open Systems Interconnection). O Ethernet foi
normatizado pelo IEEE (Institute of Electrical and Electronic Engineers) como IEEE
802.3. Nos anos 90, o modelo IEEE 802.3 se tornou a tecnologia de redes de
computadores mais difundida no mundo.
Diversas normas regem o padrão IEEE 802.3. As normas mais utilizadas são a
IEEE 802.3u e IEEE 802.3ab. A norma 802.3u, ou Fast Ethernet, regula os links de
comunicação utilizando cabos de par trançado categoria 5 (CAT 5) à velocidade de 100
Mbit/s. O Gigabit Ethernet, ou 802.3ab, determina as especificações para a
comunicação através de cabos de par trançado à velocidade de 1000 Mbps (ou 1
Gbps). Vale lembrar, a norma IEEE 802.3af, também conhecida como POE (Power Over
Ethernet), que torna possível o fornecimento de até 25,5W de potência à até 48V em
corrente contínua através do cabo de par trançado categoria 5 ou superior [41].
Devido a sua popularidade, a maioria dos roteadores no mercado utiliza este
padrão de comunicação para redes locais, assim como os computadores. Então, para
este projeto, determinou-se que o roteador sem-fio tenha, pelo menos, uma interface
Ethernet para WAN (Wide Area Network) e duas LAN. A interface WAN é necessária,
pois é ela quem recebe e envia sinais (ou os pacotes IP) para outra rede como, por
exemplo, a Internet. As interfaces físicas LAN são necessárias para que os
computadores que não se comunicam pela rede sem-fio também possam ser
abrangidos.
7
2.1.7 Rede Sem-Fio IEEE 802.11
A norma IEEE 802.11, que define os padrões para comunicação sem-fio em
uma rede local (WLAN – Wireless Local Area Network), também é conhecida como Wi-
Fi (wireless fidelity) ou popularmente chamada de wireless [34]. A família 802.11 inclui
as técnicas de modulação que utilizam o mesmo protocolo básico para comunicação.
Os protocolos mais populares são o 802.11b, 802.11g e 802.11n. As diferenças entre
esses protocolos passam pelos tipos de modulação, largura de banda do canal e a
freqüência utilizada para estabelecer a comunicação entre os dispositivos da rede,
determinando a velocidade de conexão.
As velocidades máximas de conexão da norma IEEE 802.11 variam de acordo
com o padrão utilizado. Para os padrões IEEE 802.11a e IEEE 802.11g a velocidade
máxima de conexão é de 54 Mbps, operando à freqüência de 5 GHz e 2,4 GHz,
respectivamente. Já o padrão IEEE 802.11b opera à velocidade é de 11 Mbps e o IEEE
802.11n é opera em 150 Mbps, ambos à freqüência de 2,4 GHz.
As redes sem-fio, pelo fato de estarem abertas, necessitam do uso de
sistemas de segurança que controlam o acesso à rede. A segurança nas redes sem-fio é
feita utilizando canais de comunicação criptografados, que podem ser acessados
através de uma chave de criptografia escolhida pelo administrador da rede.
Neste projeto é fundamental a utilização da comunicação pela rede sem-fio
802.11, já que essa é a proposta principal de um roteador wireless. Então, é necessário
que o rádio que disponibiliza a rede sem-fio suporte protocolos de comunicação mais
populares, sendo eles o 802.11b e 802.11 g. Além disso, o rádio deve possuir protocolo
de criptografia de segurança da rede, utilizando protocolos de segurança confiáveis
como WPA (Wi-Fi Protected Access) e WPA2.
2.1.8 Mini PCI
A interface de comunicação Mini PCI [23] é uma implementação alternativa
do padrão PCI (Peripheral Component Interconnect). O padrão PCI é utilizado para
conectar periféricos em computadores baseados na arquitetura IBM PC. A
comunicação via PCI se dá na forma de barramento, ou seja, todos os dispositivos são
ligados no mesmo canal de comunicação. Além disso, o esta interface oferece taxas de
8
transferência de dados suficientemente grandes para uma grande variedade de
dispositivos. Então, como o próprio nome indica o Mini PCI é uma espécie de
miniaturização física do PCI, tendo as placas Mini PCI menores dimensões. O Mini PCI
surgiu para que este tipo de comunicação pudesse ser usado em dispositivos
eletrônicos de pequenas dimensões, como é o caso dos roteadores sem-fio.
No projeto do roteador sem-fio multifuncional, existem diversos dispositivos
que poderiam utilizar a conexão Mini PCI. A placa de rede sem-fio, ou WNIC (Wireless
Network Interface Card), é o dispositivo que certamente utilizará esta interface. A
vantagem de utilizar uma WNIC é que com ela pode-se escolher um modelo mais
específico de rádio, determinando-se, por exemplo, parâmetros como potência do
sinal emitido, tipos de modulação e outras opções do padrão de redes sem-fio IEEE
802.11.
2.1.9 SDIO
O cartão de memória SD (SD Card ou Secure Digital Card) é um formato de
memória não-volátil fabricado com memória do tipo Flash, desenvolvida
especificamente para o uso em dispositivos portáteis [55]. Este formato de
armazenamento é amplamente utilizado atualmente em câmeras digitais, netbooks,
PDAs, telefones celulares, aparelhos GPS e consoles de vídeo-game. Atualmente os
cartões SD tem capacidade de armazenamento entre alguns Mega Bytes até 2 Tera
Bytes, dependendo do tipo de cartão SD.
Para o sistema embarcado com acesso sem-fio, verificou-se que a necessidade
de uma interface SDIO (Secure Digital Input / Output). Contando com uma interface
SDIO, o dispositivo tem a vantagem de poder ler cartões de câmeras fotográficas
digitais, podendo disponibilizar essas informações para a rede. Além disso, é possível
utilizar um cartão SD como um “disco local” do roteador sem fio, ampliando o espaço
para armazenamento de programas e desocupando a interface USB.
2.1.10 GPIO
GPIO é o acrônimo de General Purpose Input/Output [2]. Esta interface é
utilizada em alguns dispositivos para que o microprocessador ou micro-controlador
9
tenha uma ou mais conexões para fazer o comando de dispositivos externos ou
periféricos. A GPIO pode funcionar como uma entrada, para ler sinais digitais de outros
circuitos, ou como saída, para controlar ou sinalizar outros dispositivos. Fisicamente, o
GPIO é freqüentemente arranjado em portas formadas por grupos de oito, que
normalmente possui pinos multipropósitos configuráveis como entradas ou saídas.
Para este projeto, é interessante que o dispositivo tenha interface GPIO. Esta
interface, como o próprio nome indica como sendo de “finalidades gerais”, seria muito
útil para fazer o acionamento de aparelhos externos ao roteador, podendo servir, por
exemplo, para fazer a automatização residencial.
2.2 Software
Após a determinação do hardware do sistema embarcado, pesquisou-se por
quais sistemas operacionais (ou firmwares) seriam compatíveis com o dispositivo
escolhido. Sendo assim, verificou-se que os sistemas operacionais para este tipo de
aplicação são baseados em núcleos GNU/Linux. Então, procurou-se uma distribuição
deste sistema operacional que fosse compatível com o hardware e que melhor se
adaptasse às necessidades do projeto.
2.2.1 Linux
O Linux é um núcleo ou kernel em que um sistema operacional é estruturado
[37]. O sistema operacional é um conjunto de programas que fazem interface entre o
usuário e o computador, sendo o responsável pelo gerenciamento de recursos e
periféricos (como memória, discos, arquivos, impressoras), interpretação de
mensagens e a execução de programas.
O sistema Linux foi desenvolvido em 1991, pelo então universitário finlandês
Linus Torvalds. O código fonte do Linux é aberto e está disponível sob licença GPL
(General Public License) para qualquer pessoa que o utilizar, estudar, modificar e
distribuir de acordo com os termos da licença. Desta forma, após a sua aparição,
devido à sua flexibilidade de desenvolvimento e por ser de código aberto, o Linux
passou a ter diversas distribuições, organizadas por diversos grupos pelo mundo.
10
Neste projeto, será utilizado um sistema operacional baseado em kernel Linux
para fazer o funcionamento do hardware. Após a realização de pesquisa na Internet,
várias distribuições Linux foram encontradas para sistemas embarcados.
2.2.2 Distribuições Linux
Uma Distribuição Linux (ou “distro”) é um sistema operacional baseado no
kernel Linux e um conjunto variável de outros aplicativos [37]. Esta coleção de
software livre e não-livre é criada e mantida por indivíduos, grupos e organizações de
todo o mundo, incluindo o grupo Linux. As distribuições do Linux ficaram populares na
segunda metade dos anos 90, como uma alternativa livre em relação aos sistemas
operacionais Microsoft Windows e Apple MacOS. Como o Linux e a maior parte dos
softwares incluídos em distribuições são livres, qualquer organização ou indivíduo
pode criar e disponibilizar a sua própria distribuição.
Para sistemas embarcados, existe uma infinidade de distribuições específicas.
O sitio DistroWatch indica algumas delas [5], sendo elas listadas a seguir:
• BlueCat Linux • DIET-PC • ELinOS • eLux • EMC • emKnoppix • iMedia • KaeilOS • KaufKauf Slim Linux • LEAF • LynxOS RTOS
• MediaBoxOS • Metrowerks • MontaVista Linux • OpenWrt • Pico/Linux • RTLinux • TimeSys • TinyOS • uClinux • Voyage Linux
Como uma das intenções deste projeto é fazer o desenvolvimento do sistema
embarcado utilizando um sistema Linux de código aberto, serão descritas aquelas
distribuições que são mais conhecidas e desenvolvidas para trabalhar com sistemas de
roteamento sem-fio. Então, a seguir são apresentadas as distribuições OpenWRT, DD-
WRT e Tomato.
11
2.2.2.1 OpenWRT
A distribuição Linux denominada OpenWRT é desenvolvida principalmente
para ser instalada em sistemas embarcados, especialmente em roteadores residenciais
[14]. O nome OpenWRT surgiu do WRT a partir do nome dos roteadores sem-fio da
Cisco da linha Linksys WRT54G. A sigla WRT é o acrônimo de Wireless Router
Technology (Tecnologia de Roteador Sem-Fio), e Open vêm do inglês e significa aberto.
Então, o nome OpenWRT significa algo como “Tecnologia de Roteador Sem-Fio
Aberta”. Ou seja, significa a abertura do sistema para o seu desenvolvimento livre, sem
depender do firmware desenvolvido pelo seu fabricante.
Sendo construído em cima de um kernel Linux, o OpenWRT atualmente
contém uma coleção em crescimento de diversos pacotes de software para
incrementar as suas funcionalidades. Para desenvolver o sistema, inicialmente utiliza-
se uma interface de linha de comando, via interface serial, SSH ou TELNET. Entretanto,
o OpenWRT também possibilita o desenvolvimento de interface gráfica GUI (Graphical
User Interface).
Atualmente, o projeto está com bom nível de desenvolvimento e trás muitas
possibilidades de aplicação, sendo apenas limitado pelas capacidades do hardware
onde o sistema está embarcado. Além disso, esta distribuição Linux suporta uma
grande variedade de roteadores e sistemas de desenvolvimento, com diversas
capacidades. A comunidade do projeto OpenWRT conta uma boa base de apoio
baseada em Fórums, Wiki e no próprio sitio.
Uma das principais vantagens da distribuição consiste na ferramenta opkg,
um leve sistema de gerenciamento de pacotes que possui um vasto repositório
mantido e disponibilizado pelo projeto OpenWRT e OpenEmbedded. Este repositório
que visa facilitar a aquisição e atualização de pacotes de softwares disponíveis para a
plataforma.
2.2.2.2 DD-WRT
O DD-WRT é outro projeto de desenvolvimento de um sistema operacional de
código aberto baseado em Linux, construído para uma grande variedade de roteadores
sem-fio e sistemas embarcados [9]. O nome DD-WRT também tem origem na sigla
12
WRT do nome do roteador WRT54G da Cisco, já que eles foram os primeiros
suportados pelo sistema. Não foi encontrado o significado oficial da sigla DD no nome
da distribuição.
A ênfase principal do DD-WRT é prover a maior facilidade de utilização e ao
mesmo tempo suportar uma grande quantidade de funcionalidades e plataformas de
hardware. Esta distribuição Linux já vem instalada com interface gráfica operada via
navegador Web que pode ser facilmente configurada. Além disso, o sistema é
desenvolvido com foco na sua velocidade e estabilidade. Aliado a isso, o DD-WRT
possibilita a adição de novos recursos que não são suportados originalmente pelo
firmware do fabricante do roteador.
A grande comunidade de usuários também dá suporte ao desenvolvimento do
DD-WRT. Graças a isso, os potencias problemas no sistema podem ser detectados
rapidamente e corrigidos no menor tempo possível. O DD-WRT também conta com
Fórum, Wiki e site próprio mantidos pela comunidade de desenvolvimento.
Apesar de se basear em código aberto, a comunidade DD-WRT também
disponibiliza plataformas para uso comercial que dependem de licença paga. As
versões comerciais possibilitam a configuração infra-estruturas de rede mais confiáveis
e poderosas.
2.2.2.3 Tomato
O firmware Tomato é uma distribuição baseada em Linux gratuita para
roteadores sem-fio [25]. Os modelos de roteadores suportados são aqueles fabricados
com chipset do fabricante Broadcom. A principal característica desta distribuição é o
fato dela ser leve e simples, estando direcionada para estabilidade, velocidade e
eficiência. A grande vantagem deste sistema operacional é o fato de ele ter uma
interface Web de fácil utilização, que conta com diversos controles extras para a rede,
como gráfico de controle de banda, controle de conexões e outras.
Entretanto, pelo fato da distribuição Tomato não contar com uma grande
variedade de roteadores suportados, ele não é muito popular. Portanto, não conta
com uma grande comunidade para auxiliar o seu desenvolvimento e dar suporte ao
projeto. Desta forma, a documentação para fazer o desenvolvimento desta
13
distribuição é limitada, assim como os pacotes de software para adicionar funções não
suportadas pelo firmware original dos roteadores.
Especificamente para o projeto de um sistema embarcado sem-fio com multi-
funções, esta distribuição não se apresenta como a mais indicada. Isso se deve,
principalmente, ao fato de que ela não conta com suporte ao armazenamento de
arquivos por interface USB e SDIO, que fazem parte da base deste projeto.
2.2.3 Impressão
Uma das propostas deste projeto é que o sistema embarcado sem-fio
funcione como um servidor se impressão. Sendo assim, a seguir estão descritos alguns
utilitários que serão necessários para desenvolver esta função.
2.2.3.1 LPR
O LPR é um protocolo de rede usado em muitos sistemas operacionais
baseados em sistemas Unix para enviar trabalhos para as filas de impressão [51]. O
nome LPR, que deriva do termo em inglês Line Printer Remote, se tornou muito
utilizado para uma variedade de impressoras. Assim, este protocolo permite o
gerenciamento de filas de impressão em rede, sendo utilizado para integrar sistemas
de impressão Linux/Microsoft.
O protocolo de rede LPR será útil neste projeto para fazer o
compartilhamento da impressora USB na rede, tornando possível qualquer
computador da rede, que tenha autorização, utilizar a impressora.
2.2.3.2 CUPS
O CUPS, acrônimo de Common Unix Printing System, é um sistema de
impressão para sistemas operacionais tipo Unix que torna possível que um
computador ligado em rede atue como um servidor de impressão [29]. Um
computador rodando o CUPS pode receber pedidos de impressão de computadores
clientes, processando esses pedidos em encaminhando para a impressora apropriada.
O CUPS é capaz de ser um spooler (armazenador de tarefas) de impressão,
um escalonador, um filtro que converte a informação a ser impressa para um formato
14
que a impressora compreenda. Também, ele envia as informações para o dispositivo
de impressão.
No sistema embarcado, o CUPS servirá para fazer o gerenciamento dos
trabalhos de impressão feitos pelos computadores ligados na rede.
2.2.4 Compartilhamento de Arquivos
Outro objetivo a ser alcançado neste projeto é fazer o compartilhamento de
arquivos na rede local. A intenção é fazer com que os arquivos gravados nos
dispositivos de armazenamento que estejam ligados no sistema sejam disponibilizados
para os computadores da rede. É necessário, portanto, utilizar um programa servidor
para fazer toda comunicação necessária para o compartilhamento dos arquivos.
2.2.4.1 Samba
O Samba é um software gratuito baseado no protocolo de comunicação de
rede SMB/CIFS (Server Message Block / Common Internet File System) [54]. Este
software proporciona serviços de compartilhamento de arquivos e impressoras em
uma rede do tipo LAN baseada em servidores UNIX, como o GNU/Linux, Solaris, MacOS
e outros. Além disso, o Samba é capaz de fazer o compartilhamento em rede com
maioria dos sistemas da Microsoft. Desta maneira, este programa é capaz fazer
trabalhar em rede integrando computadores com diversos sistemas operacionais.
Então, a utilização do Samba para realizar o compartilhamento dos arquivos é
fundamental para o projeto do sistema embarcado, pois com este programa será
possível compartilhar os arquivos dos dispositivos de armazenamento com toda rede,
com a vantagem fazer compartilhamento com a maioria dos sistemas operacionais
existentes do mercado. Desta forma, o sistema embarcado com acesso sem-fio pode
se tornar um servidor com muita versatilidade.
2.2.5 Servidor Web
Outra função do sistema embarcado é funcionar como um Servidor Web (Web
Server). Um Servidor Web, também chamado servidor http, pode ser referido como o
computador ou o programa que torna possível disponibilizar conteúdo na Internet
[43]. Muitas pessoas confundem um Web Server como sendo apenas o computador,
15
mas neste caso ele é um programa de computador que gerencia os pedidos de clientes
(geralmente navegadores) feitos através do protocolo HTTP (Hypertext Transfer
Protocol). O uso mais comum dos Servidores Web é fazer a hospedagem de páginas na
Internet, porém existem diversas outras aplicações.
Os Servidores Web usam o protocolo FastCGI (Fast Common Gateway
Interface) para fazer a comunicação com aplicativos externos. O protocolo FastCGI
define como as informações são passadas entre o servidor Web e um aplicativo
FastCGI externo, com o objetivo de otimizar a comunicação entre o Web Server e os
programas CGI, permitindo ao servidor trabalhar com mais pedidos de uma vez.
Então, para fazer o funcionamento da interface de configuração do sistema
embarcado (interface web), será necessário fazer a escolha de um programa servidor
web dentre os vários disponíveis.
2.2.5.1 httpd e BusyBox
O BusyBox é um pacote de aplicativos UNIX que combina versões reduzidas de
vários utilitários em um único arquivo executável, pelo fato de ser um arquivo binário
multi-chamadas [46]. Hoje o BusyBox é vastamente utilizado em dispositivos com
kernel Linux por sua flexibilidade e tamanho reduzido, podendo ser usado desde
pontos de acesso, computadores mais simples e até mesmo celulares.
O httpd é um programa de computador que funciona como servidor web,
sendo seu nome é o acrônimo de Hypertext Transfer Protocol Deamon [49]. O termo
Deamon é o acrônimo de Disk and Execution Monitor, e tem como função ser
aplicativo que roda em background, ou seja, sem ser controlado diretamente pelo
usuário, com o propósito de responder a requisições de rede, atividades de hardware,
ou outros programas. Portanto, o httpd é um interpretador de requisições HTTP
básico, que faz parte do BusyBox e foi desenvolvido para ter performance otimizada,
alta segurança e utilizar recursos mínimos do sistema em que está funcionando. Então,
o httpd é uma das possíveis soluções para fazer o servidor web funcionar no sistema
embarcado.
16
2.2.5.2 Lighttpd
Um programa alternativo para funcionar como Web Server é o Lighttpd. Este
software é de código aberto (gratuito), sendo otimizado para ambientes onde a
velocidade é mais importante, mas mantendo os padrões, segurança e flexibilidade
[36]. Sendo assim, este programa utiliza pouca memória e possui melhor
gerenciamento de CPU, se comparado às outras soluções.
Além disso, o Lighttpd possui opções de alto nível como CGI, FastCGI, PHP
(Hypertext Preprocessor), SSL(Secure Sockets Layer) e outras. Por isso, este programa é
concorrente direto de servidores consagrados como o Apache, sendo às vezes mais
eficiente e tornou-se muito popular. Sendo assim, o Lighttpd se torna umas das
melhores soluções para ser o servidor web do sistema embarcado.
2.2.5.3 uhttpd
O uhttpd (micro httpd) é um servidor HTTP muito pequeno, implementado em
cerca de 150 linhas de código [1]. Por ser muito simples, este programa apresenta
alguns problemas como baixo desempenho, poucos recursos e apresenta algumas
vulnerabilidades. Entretanto, ele realiza todas as funções básicas de um HTTP Server e
para páginas web com pouco tráfego ele se apresenta como uma solução razoável.
2.2.6 Gerenciadores de Transferência de arquivos
A transferência de arquivos, ou do Inglês download, em redes de
computadores envolve normalmente o acesso a sistemas de arquivos remotos,
existindo protocolos específicos para fazer essa operação. Assim, programas de
computadores específicos gerenciam as transferências de arquivos usando estes
protocolos, sendo os mais utilizados: FTP, HTTP e BitTorrent.
Para cada modo de transferência de arquivo existe uma infinidade de
utilitários que fazem o gerenciamento e a troca dos arquivos. Para o projeto do
sistema embarcado sem-fio, é fundamental ter programas que gerenciem o download
dos arquivos para os protocolos mais comuns, para que o sistema seja flexível.
17
2.2.6.1 Ctorrent
O BitTorrent é um protocolo de rede que permite ao usuário realizar
download de arquivos [28]. Esse protocolo introduziu o conceito de partilhar o que já
foi transferido, melhorando o desempenho. Na rede BitTorrent os arquivos são
fracionados em pedaços em ordem aleatória, que podem ser reconstituídos para
formar o arquivo final. O sistema aperfeiçoa o desempenho de rede, uma vez que
todos partilham pedaços entre si, não sobrecarregando um servidor central. De tal
modo que quanto mais utilizadores entram para descarregar um determinado arquivo,
mais largura de banda se torna disponível. Estima-se que o protocolo BitTorrent tenha
seja responsável por pelo menos 35% dos dados transferidos na Internet em todo o
mundo.
O CTorrent é um programa cliente para ambiente Linux da rede BitTorrent,
sendo desenvolvido em linguagem C++ para consumir poucos recursos do computador
ter alta performance [3]. Este cliente Torrent possui boa performance de download,
boa regulagem do uso de banda e realiza decisões estratégicas sobre os pedidos de
downloads. Entretanto, a sua interface com o usuário é difícil de usar e apresenta
alguns erros.
2.2.6.2 Transmission
O Transmission é outra opção de cliente da rede BitTorrent que tem suporte
na distribuição OpenWRT [44]. Este cliente da rede BitTorrent é um software com
licença livre e de código aberto. Este programa é leve e simples, com interface gráfica
intuitiva e muito funcional. O Transmission roda em sistemas Linux, Mac OS, Solaris e
FreeBSD.
Além de realizar as funções básicas de um cliente Torrent, o Transmission tem
a vantagem de ter suporte ao protocolo de criptografia, fazendo a transferência dos
arquivos de modo ofuscado na rede, não sendo detectado pelos servidores, evitando o
traffic shaping (controle de banda). Além disso, o Transmission faz uma interface web
própria, podendo ser controlado remotamente.
18
2.2.6.3 wget
O wget é um software livre que tem como função fazer a transferência de
arquivos através da Internet, utilizando o protocolo TCP/IP [45]. O seu nome surge de
world wide web e get. Este programa é um cliente que suporta os protocolos de
transferência de arquivo HTTP e FTP, que são os mais utilizados na Internet. Sendo
desenvolvido em linguagem C, o Wget funciona em qualquer sistema baseado em
UNIX.
2.2.6.4 Pure-FTPd
O FTP (File Transfer Protocol) é um protocolo de rede de computadores
padrão, utilizado para enviar arquivos de um computador para outro em uma rede
baseada em TCP/IP [33]. O protocolo FTP é construído na arquitetura cliente-servidor,
utilizando as conexões de controle e de dados separadamente na comunicação. Além
disso, o FTP pode fazer a autenticação de usuários. Apesar de inicialmente ter sido
utilizado através de linha de comando existem clientes FTP que são feitos com
interface gráfica.
O programa Pure-FTPd é um servidor FTP gratuito muito pequeno e de fácil
utilização. Ele foi desenvolvido para utilizar menos recursos do que outros servidores,
sendo menor e ao mesmo tempo muito seguro [53]. O Pure-FTPd suporta os
comandos e recursos mais usados do FTP, deixando de lado tudo que não é necessário
ou inseguro. Este servidor funciona em uma grande variedade de sistemas
operacionais baseados em UNIX, como Linux, OpenBSD, FreeBSD e outros.
2.2.7 Firewall
Um Firewall, em português muro contra-fogo, é a parte de um computador ou
rede que é desenvolvida para bloquear acessos não autorizados, comunicações
autorizadas [32]. O Firewall é um dispositivo configurado para permitir ou negar
transmissões de rede, baseado em uma lista de regras e outros critérios.
Um sistema de Firewall pode ser feito em hardware ou software, ou a
combinação de ambos, sendo freqüentemente utilizados para prevenir que usuários
não autorizados acessem as redes privadas ligadas à Internet, principalmente as
19
Intranets. Existem diversas técnicas para fazer um Firewall, que podem ser feitas por
filtro de pacotes IP, filtro de aplicações, filtro de protocolo de rede ou filtro de
mensagens (Proxy).
2.2.7.1 Iptables
O Iptables é um aplicativo que permite o administrador do sistema configurar
e controlar as tabelas do firewall do kernel Linux, suas categorias (chains) e regras que
estão armazenadas [50]. É importante dizer que no GNU/Linux a filtragem de pacotes
está desenvolvida diretamente no kernel.
Elevados privilégios são necessários para operar o Iptables no Linux, sendo
necessário o usuário root para funcionar. O Iptables é uma ferramenta de edição da
tabela de filtragem de pacotes, ou seja, com ele pode analisar o cabeçalho (header) do
pacote e tomar decisões sobre os seus destinos.
20
3. METODOLOGIA
3.1 Seleção do Hardware
A escolha da plataforma de hardware para o desenvolvimento do sistema
embarcado ocorreu levando em conta diversos fatores. Os principais fatores para fazer
a opção, entre os mais diversos modelos de roteadores sem-fio comerciais e
plataformas de desenvolvimento existentes no mercado, foram:
1. Compatibilidade da plataforma com as distribuições Linux;
2. Atendimento os requisitos mínimos de hardware;
3. Disponibilidade de compra do equipamento no mercado brasileiro.
Após realizar pesquisas na Internet por modelos de roteadores sem-fio
comerciais ou por plataformas de desenvolvimento, alguns modelos foram verificados
com possibilidade de atender as demandas tanto de software quanto de hardware.
Assim, os modelos que suportavam pelo menos uma distribuição Linux citada foram
organizados na Tabela 1, que avalia as características de hardware, o preço e a
disponibilidade no mercado nacional. A cotação do Dólar Americano (U$) utilizado
para obter o total em Real Brasileiro (R$) foi de R$ 1,77 (um real e setenta e sete
centavos) para cada Dólar Americano.
Tabela 1: Tabela para escolha do hardware para o projeto.
Plataforma Arquitetura Freqüência Memória
(MB) Acessórios Requisitos
Preço (U$)
FRETE (U$)
IMPOSTO (U$)
Total
ASUS
WL-500GP MIPS 266 MHz
08 Flash 32 RAM
2 USB; Mini PCI; 5 Ethernet; 802.11
a/b/g SD Card;
$ 65,00
$ 40,00
$ 80,00 R$
297,36
TP-LINK TL-
WR1043ND MIPS 400 MHz
08 Flash 32 RAM
1 USB; 5 Gigabit ; 802.11 b/g/n
SD Card $ -
$ -
$ - R$
210,00
* Compra direto no
Brasil
Ubiquiti RouterStation
MIPS 680 MHz 16 Flash 64 RAM
1 USB; 3 Mini PCI; 1 Ethernet
Fonte; Rádio 802.11
MiniPCI; SD Card;
$ -
$ -
$ - R$
215,00 * Compra direto no
Brasil
Ubiquiti
RouterStation PRO
MIPS 680 MHz 16 Flash 128 RAM
1 USB; 3 Mini PCI; 4 Gigabit; SD Card
DB9 (Serial);
Fonte; Rádio 802.11
Mini PCI.
$ -
$ -
$ - R$
230,00 * Compra direto no
Brasil
Beagle Board ARM 620 MHz 128 RAM 256 Flash
HDMI; S-Vídeo; Audio; USB;
PowerVR; DB9
Rádio 802.11 USB
$ 149,00
$ 30,00
$ 80,00 R$
506,93
Beagle Board
XM ARM 1 GHz
0 Flash 512 RAM
HDMI; SD/MMC; S-Vídeo; Audio;
DB9; USB.
Rádio 802.11 USB
$ 179,00
$ 30,00
$ 80,00 R$
591,89
21
O fator disponibilidade de compra do equipamento no Brasil foi muito
importante na escolha do equipamento. Isso ocorre porque quando é necessário fazer
a importação o preço final aumenta muito devido à carga tributária (Imposto de
Importação) que incide neste tipo de transação e o frete para o Brasil. Além disso, o
tempo necessário para o equipamento chegar também conta bastante.
Os modelos Beagle Board, Beagle Board XM, Asus WL-500GP ficaram caros
devido a não disponibilidade dos produtos no Brasil. Além do mais, o modelo da marca
Asus não atendia totalmente aos requisitos de hardware do projeto por ter 8 MB de
memória flash e 266 MHz de freqüência de processamento.
Dentre os modelos disponíveis no mercado nacional, RouterStation,
RouterStation PRO e o TP-LINK TL-WR1043ND, verificamos que o modelo da marca TP-
LINK não atendia ao requisito de quantidade de memória flash, contando com 8 Mega
Bytes. Também, este modelo não possui interface de comunicação Serial pronta (DB9)
e SD Card.
Portanto, a escolha ficou entre os modelos da plataforma de desenvolvimento
RouterStation. Comparando os dois modelos da Ubiquiti, verifica-se que o os dois
modelos tem o mesmo processador MIPS de 680 MHz e contam com a mesma
quantidade de memória flash. Também, os dois modelos contam com uma porta USB,
três slots Mini PCI e necessitam de um rádio compatível com IEEE 802.11 Mini PCI. Os
diferenciais do RouterStation PRO são o fato de ter 128 MB de memória RAM, 4 portas
Gigabit Ethernet (1000 Mbps), SDIO e conector para interface Serial DB9.
Levando em conta as características de hardware citadas e a pequena
diferença de preço entre os modelos da Ubiquiti, foi escolhido para fazer o
desenvolvimento do projeto o modelo Ubiquiti RouterStation PRO.
3.1.1 Ubiquiti RouterStation PRO
A seguir é feita uma descrição mais aprofundada do hardware da plataforma
de desenvolvimento selecionada para o projeto do sistema multifuncional embarcado.
As especificações técnicas do RouterStation PRO estão listadas, conforme segue:
Compatível com IEEE 802.3af 48V (POE - Power Over Ethernet);
4 Portas Gigabit Ethernet (Switch);
22
128 MB DDR RAM;
16 MB Flash SPI;
1 Porta USB 2.0;
Cartão de memória SD (SD Card) J6 – SDIO;
CPU MIPS® 24Kc™ 680 MHz, com opção para overclock à 800 MHz;
Proteção ESD (electrostatic - discharge) para aplicações industriais;
3 Slots (conexões) Mini PCI tipo IIIA;
Conector DB9/RS232 integrado;
Acesso fácil a todos os sinais GPIO;
Conector (Power Jack) 48V DC integrado (J502);
Vem de fábrica com OpenWRT Kamikaze;
Faixa de tensão de alimentação: 40V à 56V DC;
o Utilizar níveis de tensão altos é recomendável, já que utilizará
menos corrente;
o A potência típica consumida é de 3W com o sistema parado e
sem rádios 802.11, 5W com um rádio e 7W com tráfego de
1000 Mbps sendo processado;
o O conector RJ45 “J1” é para a WAN e compatível com o IEEE
802.3af (Power Over Ethernet);
o Suporta até 25W de potência pelo POE.
A figura 1 apresenta a imagem da visão superior da RouterStation PRO, onde
pode-se observar alguns conectores característicos como o DB9/RS-232, USB, conector
de alimentação (Power Jack), as portas Ethernet e dois slots Mini PCI.
23
Figura 1: Visão superior da Ubiquiti RouterStation PRO
Já a figura 2 apresenta a imagem da visão inferior (parte de baixo) da
RouterStation PRO, onde pode-se observar alguns conectores característicos como o
DB9/RS-232, SDIO e um slot Mini PCI. Também se observa os chips de memória,
processador e demais controladores do sistema.
Figura 2: Visão inferior (de parte de baixo) da Ubiquiti RouterStation PRO.
Na figura três está apresentada a imagem da visão do painel frontal da
RouterStation PRO, em que verificam-se os conectores externos do dispositivo, sendo
eles da esquerda para a direita: 4 portas Gigabit Ethernet, SDIO, Power Jack, USB 2.0 e
RS232/DB9.
24
Figura 3: Visão do painel frontal da Ubiquiti RouterStation PRO.
3.2 Seleção da Distribuição Linux
Feita a escolha do hardware para o desenvolvimento do projeto, verificou-se
que o modelo Ubiquiti RouterStation PRO não é compatível com a distribuição Linux
Tomato. Como visto anteriormente, o firmware Tomato suporta apenas sistemas com
processadores Broadcom, e o RouterStation PRO utiliza o processador da marca
Atheros. Além disso, o Tomato não suporta armazenamento pela interface USB e não
tem uma variedade de pacotes de software para realizar o objetivo deste projeto.
Assim, restaram as distribuições OpenWRT e DD-WRT, que são compatíveis
com a plataforma de desenvolvimento estabelecida. Vale ressaltar aqui que o
firmware DD-WRT é baseado no kernel do OpenWRT. Então, na verdade, o DD-WRT é
uma versão do OpenWRT com algumas melhorias, principalmente de interface gráfica,
para se tornar comercial. Desta forma, a distribuição DD-WRT acabou tendo um
desenvolvimento mais limitado, não tendo atualizações tão freqüentes se comparado
ao OpenWRT, devido a menor comunidade de desenvolvedores. A comunidade de
desenvolvedores do OpenWRT é maior e tem mais documentação disponível na
Internet a respeito do seu desenvolvimento em relação à outra distribuição. Também,
por ser de código totalmente aberto, pode-se dizer que o OpenWRT é mais
personalizável.
Levando em consideração os argumentos citados acima, a distribuição Linux
escolhida para ser utilizada no hardware do sistema embarcado de acesso sem-fio foi a
OpenWRT na sua versão mais recente, denominada OpenWRT 10.03 Backfire.
3.3 Funcionamento do sistema
O RouterStation PRO será alimentado através da rede elétrica (127/220V AC).
Um injetor POE, que converte a energia da rede elétrica para a tensão de 48V DC,
enviará a energia para o dispositivo através da interface WAN, utilizando Power Over
25
Ethernet. Também, através da interface WAN o sistema embarcado estará ligado a
uma rede externa, como por exemplo, a Internet.
A comunicação pela interface serial funcionará utilizando um cabo DB9
fêmea-fêmea que é ligado no conector DB9 do RouterStation PRO e no DB9 do
computador com suporte a esta interface. Se o computador não possuir a porta serial,
alternativamente, pode-se utilizando um conversor RS232 – USB.
Na interface SDIO o cartão de memória SD é ligado diretamente no slot. Já na
interface Mini PCI, é ligada placa com o Rádio com suporte ao IEEE 802.11 que se
comunicará com qualquer computador ou dispositivo móvel que tenham esta
interface. Através da interface LAN, também poderão ser ligados outros computadores
com suporte à Rede padrão Ethernet ou outros dispositivos de rede como Hubs e
Switches.
Pela porta USB, estarão ligados outros periféricos como Pen Drives, HD
externo, Impressora e Webcam. Para ligar todos estes dispositivos em uma única
porta, será utilizado um Hub USB, que é um concentrador que tem a função expandir o
número de portas USB.
A figura 4 mostra um diagrama de ligação das interfaces de comunicação do
RouterStation PRO.
Figura 4: Diagrama de ligação do RouterStation PRO
26
Desta maneira, verifica-se que para fazer o funcionamento do dispositivo são
necessários mais equipamentos, além do próprio RouterStation PRO. Abaixo, estão
listados os equipamentos necessários para funcionar o sistema.
Ubiquiti RouterStation PRO
Injetor POE
Hub USB 2.0
Rádio Mini PCI 802.11 a/b/g/n
Cabo serial Fêmea-Fêmea e/ou conversor RS232-USB
Pen Drive ou HD Externo (USB)
Webcam
Impressora
Cabos par trançado (Patch Cable EIA 568A-B) com conectores
Cartão SD
3.4 Software
3.4.1 OpenWRT
A instalação do OpenWRT pode ser dividia em duas etapas, a primeira para
obtenção da imagem e a segunda para a sua instalação no equipamento.
A obtenção da imagem apresenta três possibilidades: a obtenção de uma
imagem padrão já compilada em formato binário para o seu equipamento alvo, o uso
de um ambiente minimalista pré-compilado ou, então, a possibilidade de compilar a
imagem a partir do código fonte. Cada opção apresenta níveis diferentes de
customização que permitem adequar e reduzir o tamanho da imagem conforme a sua
necessidade.
A opção escolhida foi a de utilizar uma imagem já compilada para a
RouterStation PRO, pois permitiria uma maior segurança quanto ao funcionamento na
mesma, uma vez que esta imagem já esta aprovada pelo projeto OpenWRT. Também,
até este momento não eram de conhecimento todos os módulos necessários para o
desenvolvimento do sistema.
27
Desta maneira, foi efetuada a transferência do arquivo de imagem referente
ao modelo em uso na página da distribuição na Internet. Uma vez de posse da imagem
correta pode-se proceder para a etapa de transferência da imagem para o
equipamento.
Para isto, foi colocado o equipamento em modo de atualização, reiniciando o
aparelho com o botão Reset até que o LED RF permaneça aceso. Desta maneira, foi
possível enviar a imagem a ele utilizando o TFTP pela interface LAN.
Após alguns minutos os LEDs se estabilizam indicando fim do processo e
depois de reiniciado o aparelho, a instalação esta pronta para uso.
Para fazer a instalação dos programas necessários, foi utilizada a ferramenta
de gerenciamento de pacotes (espaço do usuário) e módulos (kernel) chamado opkg.
Este aplicativo é utilizado em linha de comando, através do seguinte formato:
# opkg [opção] [nome do pacote]
As opções de comando podem ser para instalar (install), remover (remove),
atualizar a lista de pacotes disponíveis (update), atualizar um pacote específico
(upgrade), listar os pacotes disponíveis (list) e os já instalados (list-installed). Por
exemplo, para instalar o pacote cups e listar os pacotes instalados no sistema, os
seguintes comandos podem ser utilizados:
# opkg install cups
# opkg list-installed
Vale ressaltar que quando se utiliza o opkg para instalar um pacote ou
módulo, ele obtém os dados para instalação da Internet através de um sistema de
repositório. Após obter as informações, o opkg instala o modulo (ou pacote) e o
configura no modo padrão. Dependendo do aplicativo que foi instalado o opkg já o
deixa habilitado por padrão, ou seja, inicia o serviço na inicialização do sistema.
3.4.2 Rede
3.4.2.1 Ethernet
As interfaces de rede foram detectadas automaticamente pelo kernel e, por
meio do aplicativo ifconfig foi possível verificar quais estão disponíveis. A configuração
das interfaces foi realizada através do arquivo /etc/config/network. Nele são
fornecidos os parâmetros de identificação da interface, o nome a ser atribuído a ela, o
28
esquema de endereçamento e suas variáveis, como por exemplo, se a mesma utiliza
DHCP ou então possui uma atribuição estática com valores de IP, gateway, mascara de
rede e DNS pré-definidos.
Abaixo um exemplo de configuração estática ilustrativa para a interface
externa com seus devidos parâmetros.
config 'interface' 'wan'
option 'ifname' 'eth0'
option 'proto' 'static'
option 'netmask' '255.255.255.224'
option 'ipaddr' '200.17.220.156'
option 'gateway' '200.17.220.158'
option 'dns' '200.17.220.129'
Exemplo de configuração de interface e suas variáveis.
Neste local também é possível expressar como elas se relacionam, definindo
VLANs e pontes.
Uma vez realizada a configuração, as mudanças são realizadas reiniciando a
interface através dos comandos ifdown e ifup ou, então, com o próprio ifconfig.
Caso seja optada por uma atribuição dinâmica (DHCP) a solicitação de
endereço é automaticamente feita ao reiniciar a interface, mas pode ser realizada
manualmente com o comando dhclient.
3.4.2.2 Rede Sem-Fio IEEE 802.11
As interfaces sem fio diferem das interfaces ethernet pelo fato de serem
configuradas em um arquivo aparte. Caso sejam detectadas pelo comando ifconfig, no
arquivo /etc/config/wireless é possível configurá-las juntamente com seus dispositivos
e definir todos os parâmetros necessários de rede e radio como modo, SSID,
criptografia, chaves, canais.
Abaixo um exemplo de configuração para um dispositivo em modo 802.11g /
802.11n e uma rede, que no caso esta em ponte com a interface LAN.
config 'wifi-device' 'radio0'
option 'type' 'mac80211'
option 'channel' '10'
option 'macaddr' '00:0c:42:64:a8:82'
option 'hwmode' '11ng'
option 'htmode' 'HT20'
option 'disabled' '0'
config 'wifi-iface'
option 'device' 'radio0'
option 'network' 'lan'
29
option 'mode' 'ap'
option 'ssid' 'Nickel&Bessa@Openwrt_Back'
option 'key' 'routerstation'
option 'encryption' 'psk2'
3.4.3 Firewall
Baseado em iptables o mesmo possui suas regras carregadas inicialmente
através de um script carregado na inicialização localizado em /etc/firewall.user . As
Alterações podem ser feitas por meio da interface gráfica, que permite ao usuário
definir politicas de acesso a outros usuários ou conteúdos, incluindo redirecionamento
de portas.
Nele também é realizado o compartilhamento da conexão através da função
mascaramento que pode ser expressa por:
/sbin/iptables -t nat -I POSTROUTING -o eth0 -j
MASQUERADE
3.2.4 Servidor Web
Uma vez que foi feita a opção pelo servidor Lighttpd devido a sua boa
flexibilidade e, também, pelo fato de permitir o uso do PHP em modo FastCGI, realiza-
se a sua configuração da seguinte maneira.
Instala-se o pacote lighttpd através do gerenciador opkg. A configuração do
servidor é feita no arquivo /etc/lighttpd/lighttpd.conf, onde pode-se definir a porta em
operação, o diretório de documentos bem como a configuração dos módulos, inclusive
do FastCGI e hospedeiros virtuais (vhosts).
É neste arquivo em que são concatenadas as configurações de páginas
adicionais inseridas pelo usuário através da interface gráfica.
$HTTP["host"] =~ "(^|\.)nixcraft\.com$" {
server.document-root = "/home/lighttpd/nixcraft.com/http"
server.errorlog = "/var/log/lighttpd/nixcraft/error.log"
accesslog.filename = "/var/log/lighttpd/nixcraft/access.log"
server.error-handler-404 = "/e404.php"
}
Exemplo de Vhost adicionado
3.2.5 Servidor FTP
Para fazer o suporte à transferência de arquivos pelo protocolo FTP é
necessário instalar um servidor, sendo assim, foi instalado o aplicativo Pure-FTPd. Para
30
fazer a sua instalação foi utilizando o gerenciador de pacotes opkg, através do pacote
de pure-ftpd.
Instalado o Pure-FTPd, a sua configuração pode ser feita através do arquivo de
configurações localizado em /etc/config/pure-ftpd. Neste arquivo podem ser
configurados parâmetros como a porta de funcionamento do serviço, fazer a
habilitação do servidor, senha, nome de usuário e outros. Um exemplo genérico de
configuração de ser vista a seguir:
config pure-ftpd
option port '21'
option noanonymous '1'
option chrooteveryone '1'
option maxclientsperip '10'
option maxclientsnumber '4'
option peruserlimits '3:4'
option umask '133:022'
option authentication 'unix'
option enabled '1'
3.2.6 Suporte a USB
O suporte ao barramento USB é realizado por diferentes módulos conforme a
implementação da interface do controlador (HCI).
São eles:
kmod-usb-core - Comum a todas as implementações.
kmod-usb-ohci - Compaq's Open Host Controller Interface. - USB1.0 / USB1.1
kmod-usb-uhci - Intel's Universal Host Controller Interface. - USB1.0 / USB1.1
kmod-usb2 - Extended Host Controller Interface - EHCI - USB2.0
Ambos podem ser instalados utilizando opkg conforme a necessidade dos
dispositivos a serem utilizados.
Tal desmembramento surge pelo fato do desenvolvimento de dois modelos
para o controlador USB nas versões 1.0 e 1.1. Um é proprietário oriundo da parceria
entre Intel e Via, visando um hardware mais simples porem com um driver mais
robusto chamado UHCI. O outro chamado OHCI, apoiado pela Compaq, Microsoft e
National Semicondutores, visa repassar maior parte do esforço para o controlador em
si, e não para a CPU através do driver. Tal divergência de modelos foi unificada com o
padrão EHCI para o padrão USB 2.0 e continua atualmente para o padrão USB 3.0 com
o modelo XHCI. Por ser experimental não esta disponível em repositórios para opkg o
31
modulo de suporte ao novo modelo, porem caso seja necessário, o suporte ainda
experimental a XHCI é disponível por meio da compilação das fontes do kernel 2.6.35
ou superiores disponível no sitio da distribuição.
Para averiguar o correto funcionamento foram utilizadas as ferramentas lsusb
para listar os dispositivos e dmesg para analisar as ocorrências.
3.2.7 Armazenamento
A instalação do suporte a mídia removível é realizada com o auxilio do módulo
kmod-usb-storage, responsável pelo USB mass storage device class, (USB
MSC ou UMS) conjunto de protocolos estipulados pelo USB Implementers Forum (USB
IF) para transferência de arquivos. Em geral, os dispositivos de armazenamento
utilizam sistemas de arquivos diferentes do utilizado pela partição do sistema da
RouterStation PRO (SquashFS ou JFFS2). Sendo assim, deve-se instalar o suporte aos
sistemas de arquivos mais populares, como o VFAT (kmod-fs-vfat), NTFS (kmod-fs-
ntfs), e EXT3 (kmod-fs-ext3).
Um detalhe importante foi eliminar os possíveis erros que poderiam impedir o
acesso aos dispositivos e arquivos devido a utilização de caracteres de línguas
estrangeiras por meio da instalação do suporte geral (kmod-nls-base), de caracteres
americanos (kmod-nls-cp437), europeus (kmod-nls-cp850) e um conjunto latino
(kmod-nls-iso8859-1).
A montagem dos dispositivos foi baseada na execução de montagem e
desmontagem do dispositivo pelo usuário a partir da interface gráfica. O comando que
faz a desmontagem do dispositivo conectado é o umount, enquanto o comando que
faz a montagem é o mount. Esta operação é realizada automaticamente na
inicialização devido a prévia inclusão dos comandos citados em um script de
inicialização disponível em /etc/init.d/fstab.
3.2.8 Câmera
Uma vez com o barramento USB operacional, o suporte a câmera é feito
através do módulo kmod-video-uvc, responsável pela implementação da USB video
device class (UVC). O UVC define padrões de leitura para dispositivos de vídeo e
32
permite que dispositivos de diferentes fabricantes com o mesmo identificador possam
ser utilizados da mesma forma, agindo de forma similar a um driver genérico.
A maioria das Webcams, atualmente, apresentam-se compatíveis com UVC
não só pela facilidade de uso, uma vez que não dependem de driver especifico, mas
também por ser um requisito para a obtenção de logos de compatibilidade como
exemplo para Windows Vista e 7.
A aplicação escolhida para a captura de imagem é o mjpg-streamer, que esta
disponível no opkg e tem como principais vantagens o seu tamanho reduzido, 69.507
bytes, a possibilidade de salvar as imagens ou então transmiti-las pela internet. Além
disso, o mjpg-streamer tem bom desempenho, não consumindo excessivamente CPU.
3.2.9 BitTorrent
Configuradas as interfaces de rede, já podem instalados e configurados os
aplicativos de transferência de arquivos. Para fazer a troca de arquivos com a rede
BitTorrent foi escolhido o aplicativo Transmission. Para instalá-lo foi utilizado o
repositório de arquivos opkg, sendo instalados os pacotes transmission-daemon e
transmission-web. O transmission-daemon é o pacote do aplicativo básico, enquanto
que o transmission-web adiciona o suporte à interface gráfica via navegador da
Internet.
O arquivo de configuração deste programa fica em /etc/config/transmission.
Neste arquivo, entre outros parâmetros, pode-se alterar os parâmetros de limites de
velocidade de recebimento e envio de arquivos, ativar criptografia, alterar o local onde
os arquivos serão gravados, número máximo de conexões e outros.
Para interagir com o Transmission, existe a interface via navegador de
Internet. Pode-se acessar esta interface colocando no número de IP do computador
onde ele está instalado, seguido da porta número 9091, por exemplo,
200.17.220.156:9091. Nesta interface gráfica, pode ser feita algumas configurações de
parâmetros e fazer a descarga dos arquivos, selecionando um arquivo de extensão
.torrent do computador ou colocando a URL (endereço) do arquivo na internet.
33
3.2.10 Samba
O compartilhamento de arquivos, assim como as demais funções, pode ser
desenvolvido no sistema através de pacotes, neste caso o samba3. Após ser instalado
utilizando o opkg, o sistema oferece duas opções de configuração.
A primeira é o arquivo /etc/config/samba que utiliza a notação padrão da
Unified Configuration Interface (UCI), um sistema de configuração que visa substituir
uma série de shell scripts independentes por um conjunto bem definido de parâmetros
organizados de forma hierárquica.
Já a segunda é o tradicional arquivo de configuração do samba em
/etc/samba/smb.conf. Neles devem ser indicados os parâmetros como o grupo de
trabalho, as definições dos compartilhamentos e o sistema de impressão caso seja
utilizado.
[HP3745]
comment = HP Deskjet 3745
printable = yes
path = /var/spool/cups
public= yes
guest ok= yes
printer admin= root
exemplo de compartilhamento de impressora no smb.conf
config sambashare
option 'name' 'pendrive'
option 'path' '/mnt/pendrive'
option 'read_only' 'no'
option 'guest_ok' 'yes'
option 'browseable' 'yes'
exemplo de compartilhamento de diretorio no
/etc/conf/samba
3.2.11 Impressão
Para o sistema de impressão ser reconhecido é necessário um módulo
chamado kmod-usb-printer, que é responsável por adicionar suporte a impressoras
USB no kernel. Uma vez instalado, foram utilizadas duas abordagens para o
gerenciamento de impressões.
A primeira, mais simples, é baseada em um daemon de impressão sem fila
com base no protocolo AppSocket, cuja função é repassar qualquer dado recebido em
sua porta de escuta para a porta de impressora correspondente. Esta solução pode ser
facilmente implementada através da instalação do pacote p910nd. Assim, para a sua
34
configuração é necessário apenas do endereço da impressora no arquivo
/etc/config/p910nd sob o item option device.
Já a segunda opção é utilizar o sistema CUPS, que é padrão em ambiente
Linux, que permite o uso de fila e também funciona como servidor de impressão. Para
sua instalação é utilizado o pacote cups e a configuração arquivo /etc/cups/cupsd.conf,
onde podemos definir as permissões. No arquivo localizado no caminho
/etc/cups/printers.conf são adicionadas as impressoras em si, através da criação de
uma seção do tipo printer e o parâmetro device-URI associado a ela.
Para utilizar as impressoras em máquinas clientes, pode-se simplesmente
instalar os dispositivos de impressão como impressoras locais, e após fornecer o
modelo e driver, endereçar para porta TCP/IP padrão número 9100 para o caso do
p910nd, ou então para o CUPS a “porta da Internet” número 631 com a respectiva URL
da impressora.
3.2.12 GPIO
Optou-se por fazer o uso do GPIO no espaço do usuário, o que torna sua
utilização mais prática, ao custo de uma maior limitação da freqüência de operação,
fato perfeitamente aceitável dada a aplicação. Para isto, foi utilizada a interface GPIO
SYSFS, cuja função é exportar um GPIO pré-definido, e não utilizado pelos drivers do
kernel para o sistema de arquivos, disponibilizando o mesmo no diretório
/sys/class/gpio.
O endereçamento dos pinos na RouterStation PRO é iniciado em 0 e estão
disponíveis para uso genérico das linhas de GPIO 0 a 7, exceto GPIO 2, que é utilizada
pelo sistema para o LED RF.
Para fazer a utilização desta porta é simples. Quando o sistema é inicializado
todos os pinos estão em posse do kernel, não sendo exibidos no sysfs. Para liberá-los é
necessário indicar o pino no pseudo-arquivo export. Isto irá resultar na criação do
pseudo-arquivo para o pino sob o diretório /sys/class/gpio/gpioN, onde N é o numero
do pino.
Em seguida define-se a direção, saída ou entrada, e valor, alto ou baixo. Pull-
ups e Pull-downs são definidos através de jumpers físicos paralelos a porta.
35
Terminando seu uso é possível liberar o pino novamente ao kernel com a
função unexport, fazendo que suas referências em /sys/class/gpio sejam removidas.
$ echo 9 > /sys/class/gpio/export
$ echo out > /sys/class/gpio/gpio16/direction
$ echo 1 > /sys/class/gpio/gpio16/value
$ echo 9 > /sys/class/gpio/unexport
Exemplo de uso do pino gpio 9
3.2.13 Interface Gráfica
Para fazer a interface de controle do sistema embarcado, optamos por
elaborar uma interface web, tendo como principal vantagem o fato de ser acessível de
qualquer dispositivo com navegador, seja ele computador, celular, televisor e outros.
Sua estrutura visual segue o modelo de roteadores para uso em pequenos escritórios e
residências (SOHO), atualmente comercializados.
A estruturação lógica consiste na divisão de partes do layout em diferentes
arquivos escritos em linguagem PHP, com um arquivo central representando a página
solicitada e fazendo a inclusão dos módulos referentes ao item solicitado, bem como
seus estilos pré-definidos.
template_config_wan.php
|- inclui: template_2_estilos_locais.php
| |-inclui: imgs/estilos.css
|- inclui: template_4_menu_superior.php
|- inclui: template_5_menu_lateral_config.php
|- < corpo da seção configuração wan >
|- inclui: template_6_barra_dir.php
|- inclui: template_7_footer.php
Exemplo de estruturação dos arquivos
Pelo fato do PHP ser uma linguagem interpretada no servidor, é possível se
construir páginas dinâmicas que expressam o estado das configurações atuais do
sistema embarcado, através de saídas HTML. Isto possibilita que as alterações feitas
pelo usuário sejam postadas novamente na página PHP, que as valida e repassa ao
sistema por meio de comandos em shell através das funções php_exec e shell_exec.
A parte dinâmica executada pelo cliente fica a cargo de scripts Java, e já que
são característicos de cada página não podem ser centralizados em um único arquivo
para serem inclusos.
36
4. RESULTADOS
A instalação do sistema operacional OpenWRT 10.03 Backfire ocorreu
normalmente. Na figura 5, visualiza-se a interface via terminal do sistema, com a
primeira de apresentação após a instalação, através do SSH.
Figura 5: Tela de apresentação inicial do terminal SSH do OpenWRT.
Após a configuração das interfaces de rede do sistema, verificou-se o
funcionamento da conexão com Internet e do dispositivo em rede sem-fio. Todas essas
interfaces funcionaram dentro das expectativas. Na figura 6, visualiza-se uma tela com
a rede sem-fio conectada em um computador com o sistema operacional Microsoft
Windows 7. Nesta imagem, podem ser notados os parâmetros da rede sem-fio, como:
SSID, Tipo de Rádio, Criptografia de segurança e nível de sinal.
Figura 6: Tela com parâmetros da conexão de rede sem-fio estabelecida.
37
Configurada a rede, foi feita a instalação do servidor FTP, que funcionou sem
maiores dificuldades. Na figura 7 pode-se visualizar uma conexão via terminal SSH ao
servidor FTP da RouterStation Pro, que está disponível pelo IP 200.17.220.156.
Figura 7: Conexão ao Servidor FTP.
A configuração da interface USB foi um sucesso, com os dispositivos
funcionando corretamente. Na figura 7, pode ser percebido o funcionamento da
interface com um dispositivo de memória Flash com capacidade de 3,8 GB conectado
no sistema em /dev/sdb1 e montado em /mnt/pendrive.
Figura 8: Dispositivo de armazenamento.
A transferência de arquivos via protocolo BitTorrent funcionou
adequadamente utilizando o aplicativo Transmission. A figura 7 mostra uma tela com a
interface gráfica em um navegador da Internet, recebendo um arquivo de outros
computadores da rede BitTorrent.
38
Figura 9: Interface Gráfica do Transmission.
O funcionamento do compartilhamento de arquivos na rede através do
Samba ocorreu dentro das expectativas, sendo compartilhado na rede o dispositivo de
armazenamento USB e a impressora. A figura 10 mostra um computador acessando os
compartilhamentos disponíveis no OpenWRT, através do sistema operacional
Windows 7.
Figura 10: Compartilhamento com o Samba visto em um PC com Windows 7.
A câmera ligada na interface USB funcionou utilizando o aplicativo mjpg-
streamer. A figura 9 mostra uma imagem capturada do dispositivo com a resolução de
640x480.
39
Figura 11: Imagem capturada da Câmera Ligada a interface USB.
As duas soluções para os serviços de impressão trouxeram resultados. A
solução pelo aplicativo pn910nd se apresentou funcional, com a desvantagem de não
funcionar como spool (fila) de impressão. Entretanto, a alternativa utilizando o CUPS
apresentou melhores resultados, com a vantagem do spool e gerenciamento da fila de
impressão. A imagem da figura 12 mostra uma tela capturada em um computador com
o sistema operacional Windows 7 detectando a impressora ligada na rede, via CUPS
no endereço http://200.17.220.156:631.
Figura 12: Imagem capturada com a impressora disponível para impressão na rede.
A interface do sistema via navegador web foi desenvolvida para o controle e
visualização dos seguintes itens:
Rede: WAN, LAN, WLAN, Storage, Web-Server, Samba, Torrent, Camera
e Firewall.
Media: Camera e Torrent
Tools: Terminal, Iptables e Boot
40
Status: Network Rules, Interfaces e System Summary
Os arquivos da página estão localizados no caminho /www. A imagem da
figura 13 mostra a página inicial da interface via navegador de Internet do sistema
embarcado.
Figura 13: Página inicial da interface via navegador de Internet do sistema embarcado
41
5. CONCLUSÃO
Neste trabalho ficou evidenciada toda a potencialidade e diversidade de
aplicações de um sistema embarcado baseado em um hardware genérico, utilizando
uma plataforma de código aberto.
As características que podem ser destacadas do sistema proposto são a
flexibilidade, podendo vir a atender às mais diversas necessidades. Também, o custo
do sistema é relativamente baixo, principalmente se for considerado os benefícios que
ele apresenta, agregado a o fato de utilizar softwares gratuitos. Além disso, para uma
grande variedade de aplicações, esta solução apresenta um melhor aproveitamento
energético, graças ao seu baixo consumo de energia, evitando problemas de
ociosidade e super-dimensionamento.
Entretanto, em algumas aplicações o sistema ainda apresenta algumas
limitações que necessitam de melhorias. A velocidade de acesso aos dispositivos de
armazenamento pode apresentar falta de desempenho para gravar os arquivos de
tamanho muito grande, especialmente no caso de transferência de arquivos como
BitTorrent. Também, o sistema apresentou compatibilidade limitada aos dispositivos
de impressão da marca HP, que é uma das utilizadas hoje em dia. Além disso, caso a
demanda por recursos das aplicações tenham um crescimento grande, a necessidade
de expansão pode vir a prejudicar o custo benefício da solução.
A interface gráfica pode ter seus recursos e usabilidade aperfeiçoados com
mais tempo de trabalho. O serviço de streaming de vídeo pode ser melhorado com
uma câmera com melhor suporte às funções de compactação de vídeo, permitindo
melhor desempenho e uma redução do consumo de processamento da CPU.
Como possibilidade a ser desenvolvida no futuro para este tipo de
abordagem, verificou-se que este tipo de sistema embarcado pode ser utilizado para
fazer a automatização residencial através da interface GPIO, combinada com a
comunicação PLC (Power Line Communication). Outra aplicação pode ser o
aproveitamento da baixa potência consumida pelo sistema para fazer estações de
42
repetição de redes sem-fio utilizando energia solar, especialmente para lugares de
difícil acesso.
Desta maneira, foi verificado neste projeto que as mais diversas funções
podem ser realizadas em um dispositivo desenvolvido. Além de funcionar como um
Roteador sem-fio convencional, este sistema demonstrou ser capaz de realizar todas
as funções propostas, valorizando e aumentando a funcionalidade do sistema
embarcado.
43
REFERÊNCIAS
[1] ACME Laboratories. micro_httpd. Disponível em: <http://www.acme.com/software/micro_httpd/>. Acesso em: 02 Dez. 2010 [2] Baryshkov,D. GPIO Interfaces. Disponível em: <http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=Documentation/gpio.txt;hb=HEAD>. Acesso em: 06 dez 2010 [3] Enhanced CTorrent, 2008. Enhanced CTorrent. Disponível em: <http://www.rahul.net/dholmes/ctorrent/>. Acesso em: 02 Dez. 2010 [4] Hacking Roomba. Low-cost On-board Linux, Vision, Wi-Fi, and more for the Roomba Robotics Base. Disponível em: <http://hackingroomba.com/wp-ontent/uploads/2007/01/fs09kurtt.pdf>. Acesso em: 02 dez. 2010 [5] Ladislav Bodnar, 2010. Embedded Linux Distributions. Disponível em: <http://distrowatch.com/dwres.php?resource=links#embed >. Acesso em: 02 Dez. 2010 [6] Macsat. Tutorials for OpenWrt and Olegs Firmware. Disponível em: <http://www.macsat.com/oldguides>. Acesso em: 02 dez. 2010 [7] Macsat. LIGHTTPD WITH PHP5 TUTORIAL. Disponível em: <http://www.macsat.com/oldguides/pdf/OpenWrt_Lighttpd.pdf>. Acesso em: 02 dez. 2010 [8] MIPS Technlogies, Inc.,2009. MIPS Linux Starter Kit for the RouterStation Pro Disponível em: <204.232.190.4/media/files/MD00686-2B-LINUX-GTS-01.00.pdf>. Acesso em: 02 dez. 2010 [9] NewMedia-NET. www.dd-wrt.com | Unleash Your Router. Disponível em: <http://www.dd-wrt.com/site/index>. Acesso em: 02 Dez. 2010 [10] OpenWRT. Dropbear configuration - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/uci/dropbear >. Acesso em: 02 dez. 2010 [11] OpenWRT. Fstab Configuration - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/uci/fstab>. Acesso em: 02 dez. 2010 [11] OpenWRT (Forum). HOWTO RouterStation Pro install wireless cards. Disponível em: <https://forum.openwrt.org/viewtopic.php?id=24682>. Acesso em: 02 dez. 2010
44
[13] OpenWRT. Network configuration - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/uci/network >. Acesso em: 02 dez. 2010 [14] OpenWRT. OpenWrt. Disponível em: <http://openwrt.org>. Acesso em: 02 dez. 2010 [15] OpenWRT. OpenWrt Wiki - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org>. Acesso em: 02 dez. 2010 [16] OpenWRT. Opkg package manager - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/techref/opkg>. Acesso em: 02 dez. 2010 [17] OpenWRT. Pure-FTPd Configuration- OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/uci/pure-ftpd>. Acesso em: 02 dez. 2010 [18] OpenWRT. Samba Configuration - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/uci/samba >. Acesso em: 02 dez. 2010 [19] OpenWRT. System configuration - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/uci/system>. Acesso em: 02 dez. 2010 [20] OpenWRT. Table of Hardware- OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/toh/start>>. Acesso em: 02 dez. 2010 [21] OpenWRT. Transmission configuration - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/uci/transmission>. Acesso em: 02 dez. 2010 [22] OpenWRT. Wireless configuration - OpenWrt Wiki. Disponível em: <http://wiki.openwrt.org/doc/uci/wireless>. Acesso em: 02 dez. 2010 [23] PCI-SIG. Mini-PCI. Disponível em: <http://www.pcisig.com/specifications/conventional/mini_pci/>. Acesso em: 03 dez. 2010 [24] Stoeveken,T. MJPG-Streamer. Disponível em: <http://www.sourceforge.net/projects/mjpg-streamer>. Acesso em: 06 dez. 2010 [25] Tomato. Tomato Firmware | polarcloud.com. Disponível em: <http://www.polarcloud.com/tomato>. Acesso em: 02 dez. 2010 [26] Ubiquiti Networks, Inc. RouterStation | Ubiquiti Networks, Inc.. Disponível em: <http://www.ubnt.com/routerstation>. Acesso em: 02 dez. 2010 [27] Ubiquiti Networks, Inc. RouterStation Pro | Ubiquiti Networks, Inc.. Disponível em: http://www.ubnt.com/rspro>. Acesso em: 02 dez. 2010
45
[28] Wikipédia. BitTorrent. Disponível em: <http://pt.wikipedia.org/wiki/BitTorrent>. Acesso em: 03 Dez. 2010 [29] Wikipédia. CUPS. Disponível em: <http://pt.wikipedia.org/wiki/CUPS>. Acesso em: 02 Dez. 2010 [30] Wikipédia. Daemon (aplicativo para computadores). Disponível em: <http://pt.wikipedia.org/wiki/Daemon_(aplicativo_para_computadores)>. Acesso em: 02 Dez. 2010 [31] Wikipédia. Ethernet. Disponível em: <http://pt.wikipedia.org/wiki/Ethernet>. Acesso em: 02 dez 2010 [32] Wikipédia. Firewall. Disponível em: <http://pt.wikipedia.org/wiki/Firewall >. Acesso em: 02 Dez. 2010 [33] Wikipédia. File Transfer Protocol. Disponível em: <http://pt.wikipedia.org/wiki/File_Transfer_Protocol>. Acesso em: 02 Dez. 2010 [34] Wikipédia. IEEE 802.11. Disponível em: <http://pt.wikipedia.org/wiki/IEEE_802.11>. Acesso em: 02 Dez. 2010 [35] Wikipédia. Interface serial. Disponível em: <http://pt.wikipedia.org/wiki/Interface_serial >. Acesso em: 02 dez 2010 [36] Wikipédia. lighttpd. Disponível em: < http://pt.wikipedia.org/wiki/Lighttpd>. Acesso em: 02 Dez. 2010 [37] Wikipédia. Linux. Disponível em: <http://pt.wikipedia.org/wiki/Linux>. Acesso em: 02 Dez. 2010 [38] Wikipédia. Microprocessador. Disponível em: <http://pt.wikipedia.org/wiki/Microprocessador>. Acesso em: 02 dez. 2010 [39] Wikipédia. Memória RAM. Disponível em: <http://pt.wikipedia.org/wiki/Memória_RAM>. Acesso em: 02 dez. 2010 [40] Wikipédia. Memória flash. Disponível em: <http://pt.wikipedia.org/wiki/Memória_flash>. Acesso em: 02 dez 2010 [41] Wikipédia. Power Over Ethernet. Disponível em: <http://pt.wikipedia.org/wiki/Power_Over_Ethernet>. Acesso em: 02 Dez. 2010 [42] Wikipédia. Sistema Embarcado. Disponível em: <http://pt.wikipedia.org/wiki/Sistema_embarcado>. Acesso em 03 Dez. 2010
46
[43] Wikipédia. Servidor web. Disponível em: <http://pt.wikipedia.org/wiki/Servidor_web>. Acesso em: 02 Dez. 2010 [44] Wikipédia. Transmission. Disponível em: < http://pt.wikipedia.org/wiki/Transmission>. Acesso em: 02 Dez. 2010 [45] Wikipédia. Wget. Disponível em: <http://pt.wikipedia.org/wiki/Wget>. Acesso em: 02 Dez. 2010 [46] Wikipedia. BusyBox. Disponível em: <http://en.wikipedia.org/wiki/BusyBox>. Acesso em: 04 Dez. 2010 [47] Wikipedia. DD-WRT. Disponível em: <http://en.wikipedia.org/wiki/DD-WRT>. Acesso em: 02 Dez. 2010 [48] Wikipedia. General Purpose Input/Output. Disponível em: <http://en.wikipedia.org/wiki/General_Purpose_Input/Output>. Acesso em: 02 Dez. 2010 [49] Wikipedia. Httpd. Disponível em: <http://en.wikipedia.org/wiki/Httpd>. Acesso em: 02 Dez. 2010 [50] Wikipedia. iptables. Disponível em: <http://en.wikipedia.org/wiki/Iptables>. Acesso em: 02 Dez. 2010 [51] Wikipedia. Line Printer Daemon protocol. Disponível em: <http://en.wikipedia.org/wiki/Line_Printer_Daemon_protocol >. Acesso em: 02 Dez. 2010 [52] Wikipedi. OpenWrt. Disponível em: <http://en.wikipedia.org/wiki/OpenWrt>. Acesso em: 02 Dez. 2010 [53] Wikipedia. Pure-FTPd. Disponível em: <http://en.wikipedia.org/wiki/Pure-FTPd>. Acesso em: 02 Dez. 2010 [54] Wikipedia. Samba (software). Disponível em: <http://en.wikipedia.org/wiki/Samba_(software)>. Acesso em: 02 Dez. 2010 [55] Wikipedia. Secure Digital. Disponível em: <http://en.wikipedia.org/wiki/Secure_Digital>. Acesso em: 02 Dez. 2010 [56] Wikipedia. Tomato (firmware). Disponível em: <http://en.wikipedia.org/wiki/Tomato_(firmware)>. Acesso em: 02 Dez. 2010 [57] Wikipedia. Universal Serial Bus. Disponível em: <http://en.wikipedia.org/wiki/Universal_Serial_Bus>. Acesso em: 02 dez 2010