WiFi Direct Raspberry Pi

, , 1 Comment

Kita tentu tahu dan paham bagaimana terkoneksi secara remote dengan Raspberry Pi, baik dengan SSH ataupun VNC, atau yang umum dikenal sebagai headless connection. Salah satu persyaratan koneksi tersebut adalah dengan adanya jaringan WIFI dimana PC dan Raspberry Pi berada jaringan WIFI yang sama. Hal tersebut tidak begitu masalah jika kita bekerja didalam rumah. Namun terkadang, kita berada diluar ruangan tanpa WIFI. Ya memang kita bisa menciptakan WIFI network dengan portable modem atau portable hotspot dari HP sehingga kita bisa mengkontrol Raspbery Pi. Itu juga yang sering saya lakukan. Tapi saya bosan karena terlalu ribet karena untuk mengkontrol Raspberry Pi saja saya harus establish dulu WIFI networknya.

Saya sering menggunakan Raspberry Pi diluar ruangan dan betapa ribetnya proses itu. Saya tertarik dengan WiFi direct yang ada di HP Android atau Smart TV. Misalnya SmartTV yang broadcast Access Point, tinggal pilih AP nya dan sambungan terjadi. Saya inginkan hal seperti itu.

Ada banyak tutorial yang bisa memfungsikan WiFi Raspberry Pi menjadi router, tapi kita tidak bisa konek ke router itu dengan SSH atau VNC dan bekerja headless seperti biasa. Yang saya butuhkan adalah koneksi antara PC/HP ke Raspberry Pi melalui WiFi Direct, kemudian saya bisa login dan mengendalikan Raspberry Pi, tidak hanya SSH tapi juga VNC.

Setelah mencari beberapa waktu digoogle saya menemukan satu blog yang bisa jadi jawaban. Lihat alamat aslinya di bagian akhir tulisan ini. Berikut ini tahapan-tahapannya dan berhasil saya terapkan di Raspberry Pi Zero W dan tulisan ini saya buat diwaktu yang sama saya mencoba menerapkan untuk Raspberry Pi 3, dan berhasil juga.

Untuk melakukan setup dibawah ini, kita butuh koneksi internet.

Pertama, lakukan update dan upgrade terlebih dahulu dan instalasi package

sudo apt-get update

sudo apt-get upgrade

Setelah itu, install hostapd dan dnsmasq

sudo apt-get install hostapd
hostapd
sudo apt-get install dnsmasq
dnsmasq

Installer hostapd dan dnsmasq akan juga menginstall program agar berjalan saat Raspberry Pi starting. Dalam setup ini, kita perlu mendisable autorun tersebut selama proses instalasi.

sudo systemctl disable hostapd

sudo systemctl disable dnsmasq
disable hostapd dan dnsmasq

Tahap kedua berikut adalah untuk setting hotspot, username dan password

Buat sebuah file baru bernama hostapd.conf. Karena baru, maka saat file terbuat maka file kosong.

sudo nano /etc/hostapd/hostapd.conf

Lakukan copy-paste script dibawah ini

interface=wlan0
driver=nl80211
ssid=AP_PI3_HOTSPOT
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=raspberrypi
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
hostapd.conf

Sedikit penjelasan. Interface kita adalah wlan0. Driver n180211 ini sebenarnya driver yang bisa dijadikan access point. Tidak semua wifi dongle bisa dijadikan wifi router. Untungnya driver n180211 ini kompatibel dengan chip wifi onbard dari Pi Zero W dan Raspberry Pi 3. Nama SSID adalah AP_PI3_HOTSPOT, silahkan dirubah sesuai keinginan. wpa_passphrase adalah password yang harus diisi dengan minimum 8 karakter. Setelah itu save dengan Ctrl-X dan Y.

Setelah itu, kita edit file default ke file konfigurasi yang baru saja dibuat

sudo nano /etc/default/hostapd

tambahakan “/etc/hostapd/hostapd.conf” dan hilangkan tanda comment(#) sebelum DAEMON_CONF. Lihat gambar dibawah ini untuk perubahan file yang dimaksud. Setelah itu tekan Ctrl-X dan Y untuk save file.

pointing ke konfigurasi access point

Tahap ketiga adalah setup dnsmasq agar Raspberry Pi menjadi router dan dapat mengeluarkan sebuah IP Address

sudo nano /etc/dnsmasq.conf

Copy-paste script berikut dan letakkan dibaris paling bawah dari file. Jika sudah tekan Ctrl-X lalu Y

#AP_PI3_HOTSPOT Config
#stop DNSmasq from using resolv.conf
no-resolv
#Interface to use
interface=wlan0
bind-interfaces
dhcp-range=10.0.0.3,10.0.0.20,12h
dnsmasq.conf

Sampai di tahap ini kita sudah melakukan konfigurasi hotspot dan router dari Raspberry Pi. Selanjutnya kita melakukan deteksi apakah home network ada atau tidak.

sudo nano /etc/network/interfaces

tampilan awal yang muncul akan seperti berikut:

 

original

Lakukan perubahan seperti pada gambar dibawah ini lalu save dengan Ctrl-X dan Y.

updated

 

Tahap keempat, terakhir. Membuat startup script

Tahap terakhir ini adalah membuat startup script dengan systemd. Jika kita sudah mengupdate sistem sebelumnya, maka kita mungkin mendapati bawa sudah ada wifi tools yang terinstall. Untuk memastikan ketikkan perintah berikut:

dpkg -s iw

jika belum terinstall, lakukan instalasi dengan perintah berikut.

sudo apt-get install iw

Selanjutnya buatlah file scriptnya dengan perintah berikut

sudo nano /usr/bin/autohotspot

dan copy-paste script berikut

#!/bin/bash
#
#Wifi config - if no prefered Wifi generate a hotspot
#enter required ssids: ssids=('ssid1' 'ssid2')
ssids=('mySSID1' 'mySSID2')

#Main script
createAdHocNetwork()
{
    ip link set dev wlan0 down
    ip a add 10.0.0.5/24 dev wlan0
    ip link set dev wlan0 up
    systemctl start dnsmasq
    systemctl start hostapd
}
connected=false
for ssid in "${ssids[@]}"
do
    if iw dev wlan0 scan ap-force | grep "$ssid" > /dev/null
    then
        wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf > /dev/null 2>&1
        if dhclient -1 wlan0
        then
            connected=true
            break
        else
            wpa_cli terminate
            break
        fi
    else
        echo "Not in range, WiFi with SSID:" $ssid
    fi
done

if ! $connected; then
    createAdHocNetwork
fi

Pada ssids=(‘mySSID1’ ‘mySSID2’), mySSID1 adalah home network kita. Ganti “mySSID1” dengan nama home network kita. Jika mySSID1 tidak ada, maka script ini akan mencari jaringan pada urutan berikutnya. Apabila semua SSID yang ditulis dalam script tidak ada, maka AP_PI3_HOTSPOT akan dicreate. Artinya, apabila kita juga ingin mengestablish WIFI Direct bahkan didalam rumah (saat home network ada), maka isilah jangan pernah memasukkan SSID home network pada line ssids. Biarkan script tersebut apa adanya. Script ini akan membuat IP static 10.0.0.5. Setelah copy-paste, maka save dengan Ctrl-X dan Y.

Selanjutnya kita buat autohotspot menjadi executable

sudo chmod +x /usr/bin/autohotspot

Selanjutnya kita menambahkan service ke system

sudo nano /etc/systemd/system/autohotspot.service

Copy-paste script berikut. Lalu save

[Unit]
Description=Generates a non-internet Hotspot for ssh when a listed ssid is not in range.
After=network-online.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/autohotspot

[Install]
WantedBy=multi-user.target

Tahap paling akhir adalah mengaktifkan hotspot dengan perintah berikut:

sudo systemctl enable autohotspot.service

Restart Raspberry Pi dan selesai.

Testing

Untuk melakukan testing, apabila kita menuliskan home network pada script autohotspot, maka kita perlu menon-aktifkan home network sehingga Raspberry Pi akan membuat hotspot. Namun jika tidak maka AP_PI3_HOTSPOT akan otomatis terlihat. Dari PC atau smartphone, hotspot AP_PI3_HOTSPOT akan terdeteksi. Perlu diingat bahwa koneksi ini tanpa internet karena jaringan yang dibuat hanya antara laptop/HP dengan Raspberry Pi.

hotspot yang telah dibuat terlihat

Untuk terhubung dengan Raspberry Pi, klik AP_PI3_HOTSPOT dan masukkan password yang disetup sebelumnya.

Connect ke Raspberry Pi

Setelah terhubung, maka kita bisa melakukan hal-hal yang biasa kita lakukan remotely seperti SSH ataupun koneksi via VNC dengan memasukkan IP Address yang kita assign sebelumnya yaitu 10.0.0.5

koneksi SSH dari PC ke Raspberry Pi

Atau koneksi ke lingkungan desktop melalui VNC

VNC Connection ke 10.0.05

Inilah yang saya harapkan sejak lama, kemampuan WiFi direct tanpa campur tangan dari portable hotspot dari modem atau handphone lainnya. Cukup menggunakan WiFi Raspberry Pi yang dibroadcast. Beberapa kemudahan dengan proses ini adalah:

  1. Streaming data sensor dari HP (GPS, accelerometer, gyro, etc.) ke Raspberry Pi langsung tanpa perantara
  2. Streaming video atau photo dari Pi Camera Raspberry Pi Zero W ke VLC Player di HP langsung tanpa perantara dan gangguan
  3. Fungsi Shairplay (AirPlay) langsung dari HP ke Raspberry Pi
  4. Koneksi laptop siswa dengan Raspberry Pi mereka dalam kelas kursus juga langsung tanpa harus konek ke Wifi kelas.
  5. …. masih banyak lagi contoh…

Semoga bermanfaat. Silahkan memberikan komentar, masukan di kolom comment dibawah ini.

Source:

http://www.raspberryconnect.com/network/item/315-rpi3-auto-wifi-hotspot-if-no-internet

Facebook Comments
 

One Response

Leave a Reply