Neste artigo iremos aprender como proceder com as tarefas mais comuns de configuração da Intel Edison. Caso deseje, utilize a seção de comentários, para sugerir outras operações a serem adicionadas no artigo. O computador Host que será utilizado nesse tutorial é um Ubuntu 14.04.
Você irá aprender a:
Conectar à internet pela interface USB
Instalação de pacotes adicionais
Adicionar um Script na Inicialização do Sistema
Você pode também construir a sua própria distribuição Linux embarcado do zero para a Edison.
Update do Firmware do Intel Edison Linux
No momento da escrita desse artigo o a versão mais recente liberada pela Intel é 2.1. Portanto iremos mostrar o procedimento de update de firmware da Intel Edison para esta versão usando o Flash Tool Lite.
Vamos fazer o download do firmware e instalação do Flash Tool Lite. Abra o terminal (Ctrl+Alt+T) e digite:
1 2 3 4 5 6 7 8 9 10 11 12 |
# Intalação dos pacotes necessários sudo apt-get install gdebi libncurses5:i386 libstdc++6:i386 # Download e descompactação da imagem wget http://downloadmirror.intel.com/24910/eng/edison-image-ww18-15.zip -P ~/Downloads unzip ~/Downloads/edison-image-ww18-15.zip -d ~/Downloads/edison-image-ww18-15 # Download e Instalação do Flash Tool Lite wget http://downloadmirror.intel.com/24910/eng/phoneflashtoollite_5.2.4.0_linux_x86_64.deb -P ~/Downloads sudo gdebi ~/Downloads/phoneflashtoollite_5.2.4.0_linux_x86_64.deb # Aceite a Intel Property License(IPL) |
Agora vamos executar o Flash Tool Lite pelo terminal:
1 |
phoneflashtoollite |
E teremos a seguinte tela:
Selecione o arquivo “~/Downloads/edison-image-ww18-15/FlashEdison.json” seguindo os passos enumerados na figura abaixo e no final pressione o botão “Start to flash”.
Posicione a chave SW1 próxima ao conector micro USB de acordo com a figura abaixo:
e conecte a Edison ao seu computador através do cabo micro USB:
A placa será energizada e o processo de gravação será iniciado. No final teremos a seguinte tela no Flash Tool Lite:
Pronto. Agora é só esperar alguns pouco minutos e a sua Intel Edison estará rodando o Linux mais recente.
Conectando a Intel Edison à internet pela interface USB
Para conectarmos a Intel Edison à internet através da interface USB teremos que conectá-la ao computador (que está conectado à internet) e compartilhar o seu acesso à rede mundial de computadores com a nossa placa.
Posicione a chave SW1 próxima ao conector micro USB de acordo com a figura abaixo:
e conecte a Intel Edison ao seu computador através do cabo micro USB:
Após algum tempo Linux da Edison irá subir e no seu computador irá aparecer uma conexão de rede nova. Abra o terminal (Ctrl+Alt+T) e digite:
1 |
ifconfig |
Teremos uma mensagem semelhante a essa:
1 2 3 4 5 6 7 8 |
usb0 Link encap:Ethernet HWaddr 56:7e:d3:3b:b7:fd inet addr:10.42.0.1 Bcast:10.42.0.255 Mask:255.255.255.0 inet6 addr: fe80::547e:d3ff:fe3b:b7fd/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:191 errors:0 dropped:0 overruns:0 frame:0 TX packets:3827 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:25544 (25.5 KB) TX bytes:804930 (804.9 KB) |
Note que existe a interface de rede “usb0”. Você deverá configurar o teu computador para compartilhar a internet nessa interface. Para isso siga as instruções desse artigo.
Agora iremos nos conectar à interface serial de console da Edison ao nosso computador:
Instale o aplicativo screen e abra a conexão com a placa:
1 2 |
sudo apt-get install screen sudo screen /dev/ttyUSB0 115200 |
O usuário padrão da placa é “root” e não possui senha.
Vamos configurar a placa para receber as configurações de rede do nosso computador. Digite os seguintes comandos:
1 2 3 4 |
mkdir -p /etc/network echo -e "auto usb0\niface usb0 inet dhcp" > /etc/network/interfaces echo -e "[Unit]\nDescription=Start ifup for %I\nAfter=network.target\n\n[Service]\nExecStart=/sbin/ifup %I\nExecStop=/sbin/ifdown %I\nRemainAfterExit=true\n\n[Install]\nWantedBy=multi-user.target" > /lib/systemd/system/if@usb0.service |
Criamos os arquivos “/etc/network/interfaces” e “/lib/systemd/system/[email protected]” com os seguintes conteúdos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/etc/network/interfaces: auto usb0 iface usb0 inet dhcp /lib/systemd/system/if@usb0.service: [Unit] Description=Start ifup for %I After=network.target [Service] ExecStart=/sbin/ifup %I ExecStop=/sbin/ifdown %I RemainAfterExit=true [Install] WantedBy=multi-user.target |
Agora iremos habilitar a interface usb0 e receber as configurações de rede com os seguintes comandos na placa:
1 2 |
systemctl enable if@usb0 systemctl start if@usb0 |
Toda vez que o sistema reiniciar ele irá receber as configurações de rede através do computador.
Vejamos como ficaram as configurações através dos comandos “ifconfig” e “route”:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:19 errors:0 dropped:0 overruns:0 frame:0 TX packets:19 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1698 (1.6 KiB) TX bytes:1698 (1.6 KiB) usb0 Link encap:Ethernet HWaddr 02:00:86:53:b9:f6 inet addr:10.42.0.29 Bcast:10.42.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4087 errors:0 dropped:0 overruns:0 frame:0 TX packets:195 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:620690 (606.1 KiB) TX bytes:37314 (36.4 KiB) |
1 2 3 4 5 |
route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 10.42.0.1 0.0.0.0 UG 0 0 0 usb0 10.42.0.0 * 255.255.255.0 U 0 0 0 usb0 |
Pronto agora vamos ver se realmente estamos conectados à internet através do comando “ping -c 5 www.google.com”:
1 2 3 4 5 6 7 8 9 10 11 |
ping -c 5 www.google.com PING www.google.com (216.58.219.68): 56 data bytes 64 bytes from 216.58.219.68: seq=0 ttl=50 time=141.415 ms 64 bytes from 216.58.219.68: seq=1 ttl=50 time=134.996 ms 64 bytes from 216.58.219.68: seq=2 ttl=50 time=136.824 ms 64 bytes from 216.58.219.68: seq=3 ttl=50 time=137.620 ms 64 bytes from 216.58.219.68: seq=4 ttl=50 time=138.438 ms --- www.google.com ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max = 134.996/137.858/141.415 ms |
Configuração da conexão Wireless da Intel Edison
A imagem Linux da Edison vem com um utilitário (“configure_edison”) que facilita a configuração da conexão wireless da placa. Para configurá-la realize as conexões USB descritas no tópico “Conectando a Intel Edison à internet pela interface USB“, e em seu computador abra o terminal (CTRL+Alt+T) e digite:
1 |
sudo screen /dev/ttyUSB0 115200 |
O usuário padrão da placa é “root” e não possui senha.
Vamos rodar o utilitário de configuração (“configure_edison –wifi”) na placa:
1 |
configure_edison --wifi |
E realizar as configurações necessárias. No final teremos algo semelhante a:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Configure Edison: WiFi Connection Scanning: 1 seconds left 0 : Rescan for networks 1 : Exit WiFi Setup 2 : Manually input a hidden SSID 3 : RodriguesCampinas 4 : Lucas 5 : DKM2 6 : DKM Enter 0 to rescan for networks. Enter 1 to exit. Enter 2 to input a hidden network SSID. Enter a number between 3 to 6 to choose one of the listed network SSIDs: 5 Is DKM2 correct? [Y or N]: Y Password must be between 8 and 63 characters. What is the network password?: ************* Initiating connection to DKM2. Please wait... Attempting to enable network access, please check 'wpa_cli status' after a minute to confirm. Done. Please connect your laptop or PC to the same network as this device and go to http://192.168.0.3 or http://edison.local in your browser. Warning: SSH is not yet enabled on the wireless interface. To enable SSH access to this device via wireless run configure_edison --password first. |
Conferindo as configurações através dos comandos “ifconfig” e “route”:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:19 errors:0 dropped:0 overruns:0 frame:0 TX packets:19 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1698 (1.6 KiB) TX bytes:1698 (1.6 KiB) usb0 Link encap:Ethernet HWaddr 02:00:86:53:b9:f6 inet addr:10.42.0.29 Bcast:10.42.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4418 errors:0 dropped:0 overruns:0 frame:0 TX packets:328 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:666454 (650.8 KiB) TX bytes:64273 (62.7 KiB) wlan0 Link encap:Ethernet HWaddr 78:4b:87:a9:5e:3c inet addr:10.0.0.108 Bcast:0.0.0.0 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2522 errors:0 dropped:0 overruns:0 frame:0 TX packets:8911 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:353628 (345.3 KiB) TX bytes:763966 (746.0 KiB) |
1 2 3 4 5 6 |
route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 10.0.0.1 0.0.0.0 UG 0 0 0 wlan0 10.0.0.0 * 255.255.255.0 U 0 0 0 wlan0 10.42.0.0 * 255.255.255.0 U 0 0 0 usb0 |
Instalação de pacotes adicionais no sistema
O gerenciador de pacotes presente na Edison é o opkg e recentemente AlexT criou um repositório de pacotes que você pode utilizar para instalação sem precisar compilá-los.
Vamos realizar as conexões USB descritas no tópico “Conectando a Intel Edison à internet pela interface USB“, e em seu computador abra o terminal (CTRL+Alt+T) e digite:
1 |
sudo screen /dev/ttyUSB0 115200 |
O usuário padrão da placa é “root” e não possui senha.
Para que a placa possa baixar e instalar os pacotes devemos configurar o arquivo “/etc/opkg/base-feeds.conf”. Para isso digite os seguintes comandos na placa:
1 2 |
echo -e "src/gz all http://repo.opkg.net/edison/repo/all\nsrc/gz edison http://repo.opkg.net/edison/repo/edison\nsrc/gz core2-32 http://repo.opkg.net/edison/repo/core2-32" > /etc/opkg/base-feeds.conf opkg update |
Ao final do processo teremos a seguinte mensagem na console:
1 2 3 4 5 6 7 8 9 10 11 |
Downloading http://repo.opkg.net/edison/repo/all/Packages.gz. Inflating http://repo.opkg.net/edison/repo/all/Packages.gz. Updated list of available packages in /var/lib/opkg/all. Downloading http://repo.opkg.net/edison/repo/edison/Packages.gz. Inflating http://repo.opkg.net/edison/repo/edison/Packages.gz. Updated list of available packages in /var/lib/opkg/edison. Downloading http://repo.opkg.net/edison/repo/core2-32/Packages.gz. Inflating http://repo.opkg.net/edison/repo/core2-32/Packages.gz. Updated list of available packages in /var/lib/opkg/core2-32. Downloading http://iotdk.intel.com/repos/1.1/intelgalactic/Packages. Updated list of available packages in /var/lib/opkg/iotkit. |
Agora você pode, por exemplo, instalar as aplicações do opencv com o seguinte comando:
1 |
opkg install opencv-apps |
Para conhecer os comandos disponíveis para o opkg acesse sua página de manual ou digite o comando “opkg –help” no terminal da placa.
Adicionando um script na inicialização do sistema
A maioria dos sistemas embarcados baseados em Linux usam o SysVinit como sistema de inicialização, porém na Intel Edison encontraremos o Systemd. Você pode conferir as principais diferenças entre ambos nesse link. Basicamente, no Systemd temos que adicionar arquivos “.service” para que nossos aplicativos sejam executados na inicialização.
Nesta seção apresentaremos como criar rapidamente um script de inicialização através do arquivo “rc.local”, que é muito utilizado em sistemas baseados no SysVinit porém é compatível com o Systemd.
Para isso realize as conexões USB descritas no tópico “Conectando a Intel Edison à internet pela interface USB“, e em seu computador abra o terminal (CTRL+Alt+T) e digite:
1 |
sudo screen /dev/ttyUSB0 115200 |
O usuário padrão da placa é “root” e não possui senha.
Vamos criar o arquivo “/etc/rc.local” e torná-lo executável digitando os seguintes comandos na placa:
1 2 |
echo -e "#! /bin/sh\ndate > /etc/rc.local chmod +x /etc/rc.local |
O arquivo “/etc/rc.local” terá o seguinte conteúdo:
1 2 |
#! /bin/sh date > ~/init-test |
Note que iremos escrever no arquivo “~/init-test” a data e hora em que o script foi executado, ou seja, na hora em que o sistema terminou de iniciar completamente, já que o “rc.local” será o último script a ser executado.
Vamos agora habilitá-lo e iniciá-lo:
1 2 |
systemctl enable rc-local systemctl start rc-local |
E vamos verificar o conteúdo do arquivo “~/init-test”:
1 2 |
cat ~/init-test Fri Jun 12 17:20:01 UTC 2015 |
Pronto, agora você pode lançar as suas aplicações e scripts automaticamente na inicialização através do “/etc/rc.local”.
Olá, Diego.
Primeiramente, quero dizer que o seu material é muito bom.
Estou seguindo seu tutorial mas tive um problema logo no início. Após todas as instalações o Flash Tool Lite dá o seguinte erro:
ERROR : [Port -1] Command
Wait for device with status dnx_fw on port -1
failedERROR : [Port -1] Flash failed (Command type: Device enumeration)
E então a gravação não é iniciada. Segui todos os passos que você descreveu.
Você poderia nos ajudar?
Obrigada!