Raspberry Pi – headless + wireless

Objectivo: utilizar um Raspbery Pi sem teclado nem monitor nem cabo de rede em momento algum.

Nota: as instruções são para quem usa Ubuntu e deverão servir para a generalidade dos Linuxes mas não para Windows.

Download do Raspbian (neste momento a versão mais recente é a ‘2014-01-07-wheezy-raspbian.zip’) e extrair a imagem (‘2014-01-07-wheezy-raspbian.img’).

Inserir um SD card com pelo menos 4 GB e lançar a aplicação “Disks” (gnome-disks). Seleccionar o SD Card, no meu caso o SD Card é visto como “8 GB Block Device (/dev/mmcblk0)” e carregar em “More Options” (o botão no canto superior direito) e escolher  “Restore Disk Image…”

Escolher o ficheiro com a imagem Raspbian (2014-01-07-wheezy-raspbian.img) e esperar alguns minutos que a operação termine. Ficam 2 partições no SD Card:

  • BOOT
  • 2.9 GB Volume

A segunda partição será utilizada como “/” pelo Raspbian e tem uma estrutura semelhante à do Ubuntu (ambos são baseados em Debian).

Basta editar 3 ficheiros:

  • […]/etc/hostname
  • […]/etc/network/interfaces
  • […]/etc/wpa_supplicant/wpa_supplicant.conf
$sudo nano [...]/etc/hostname

A ideia é ter um nome distinto e reconhecível para podermos depois encontrar o nosso dispositivo no router wireless. Substituí o ‘raspberrypi’ que vem de origem por ‘pitagoras’.

$sudo nano [...]/etc/network/interfaces

Aqui bastou acrescentar uma linha (post-up…) para desactivar a ligação por cabo quando a ligação wi-fi estiver funcional:

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
    post-up ifdown eth0
iface default inet dhcp

Assume-se IP dinâmico tanto para ligação por cabo como wireless mas pode-se determinar um endereço IP estático (não o fiz ainda por pura preguiça).

$sudo nano [...]/etc/wpa_supplicant/wpa_supplicant.conf

Neste ficheiro apenas estavam presentes as duas primerias linhas, o resto foi acrescentado.

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="ID da rede Wi-Fi"
    psk="Preshared Key da rede Wi-Fi"
    id_str="Descritivo opcional"
}

Com um Wi-Pi para a ligação wireless funcionou à primeira (não testei ainda outros dispositivos mas pelo menos o D-Link DWA-131 deverá funcionar, está a funcionar noutro projecto). Para saber o endereço IP bastou ir ao router ver os devices ligados:

00:0f:13:38:1e:38    192.168.1.123    0 dia 0 hora 01 minuto    pitagoras

Para aceder remotamente por ssh:

ssh pi@192.168.1.123

E pronto (no Raspbian a password de origem de ‘pi’ é ‘raspberry’)

pi@pitagoras ~ $