Raspberry Pi Zero’ya doğrudan USB kablosu ile bağlanmak
Bugünkü yazımızda Raspberry Pi Zero’muza doğrudan USB kablosu ile bağlanıp SSH erişimi sağlayacağız, ardından da mevcut internetimizi Raspberry Pi ile paylaşacağız.
Bu sayede, klavye, mouse vs. olmadan Raspberry Pi’ye bağlanabilecek, SSH bağlantısı yapabilecek, hatta kurulum ardından ethernet bağlantısı bile yapabileceğiz. İhtiyacımız olan tek şey bir adet mikro usb kablo!
Bu yazı maalesef sadece Raspberry Pi Zero için geçerli, çünkü Raspberry Pi ailesinde sadece Zero’nun USB portları doğrudan İşlemciye bağlı. Diğer Raspberry Pi modüllerinde Ağ paylaşıcı çipe gittiğinden çalışmayacaktır.
(Raspberry Pi Zero şu an yerel stoklarda yok, durum için distribütör SAMM’ın sayfasından ürün linkini takip edebilirsiniz.)
Güncelleme : Pi Zero Wireless modülü ile satışta ve stoklarda!
Daha önceden benzer bir yazımız olmuştu bu konu hakkında, ama o ethernet kablosu gerektiriyordu, ve de yeni model Pi Zero’larda da doğal olarak çalışmayacak.
Ben şu an bu yazıyı hazırlarken Pi Zero’mu dizüstü bilgisayarımda doğrudan internete bağlayıp paket güncellemesi alıyorum 🙂
(Resimdeki kullandığım aparatın linki, aslında bir mikro usb kablonun sadece uç kısımları, ürün silinirse referans resim).
Güncelleme: SAMM yazı ardından ürünü getirmiş.
Yapılacaklar:
Raspberry Pi’ye Erişim
İlk olarak Raspberry Pi’yi USB kablo kullanarak SSH, VNC, RDP veya benzer bir protokolden erişilebilir kılacağız.
Eğer temiz başlayacaksak en güncel Raspbian imajını Raspberry Pi’mize yüklemeliyiz. Eğer sadece SSH bağlantısı yeterli olacaksa Lite sürümü, eğer VNC gibi grafik arayüzü açacaksanız da Pixel yüklü tam sürümü kurmanızı öneririm.
SD karta kurulum ardından SD kartı çıkartıp bilgisayarınıza yeniden bağlayın. fat dosya biçiminde olan /boot bölümünün içinde birkaç dosya düzenleyeceğiz şimdi.
Öncelikle config.txt dosyasını açıp içine en alta şu satırları ekleyin:
# usb den baglanma icin # raspi-tr.com dtoverlay=dwc2
Şunun gibi gözükmeli:
Ardından cmdline.txt dosyasını açıyoruz. Bu tek satırlık dosyada “rootwait” kelimesi ardından şu kodu giriyoruz:
modules-load=dwc2,g_ether
Eğer rootwait’ten sonra komut varsa ona dikkat etmeyi unutmayın. Komutların aralarında boşluk karakteri olmalı.
Şunun gibi gözükmeli komut düzenlendikten sonra:
Ardından SSH erişimini açmamız lazım. Bunun için şu yazımıza bakabilirsiniz. Kısaca bu config.txt ve cmdline.txt metin dosyalarının olduğu yere uzantısız bir “ssh” isminde boş bir dosya eklemeliyiz.
Ardından SD kartı bilgisayarınıza bağlayın ve de 1 dakika kadar cihazın açılmasını bekleyin.
Sadece Windows için birkaç adım daha lazım
Eğer Windows kullanıyorsanız bu aşamadan sonra erişmek için Bonjour Service’i de kurmanız lazım. Güncel iTunes’u kurarak, veya iTunes kurmak istemiyorsanız buraya tıklayarak Windows için Bonjour’u Apple’ın sitesinden doğrudan indirebilirsiniz.
Bu aşamada Windows, Raspberry Pi’yi tıpkı bir flash disk gibi algılayacak; ama sürücüyü kuramayacak. Şimdi de RNDIS (Remote Network Driver Interface Specification) sürücüsünü kurmamız lazım.
Başlat / Ayarlar / Aygıt Yöneticisi’ne gidince yeni bir donanım olarak göreceksiniz. Sürücüsü yüklenmemiş RNDIS cihazı’na sağ tıklayıp “Sürücü Güncelle” demelisiniz:
Resim: circuitbasics.com
Ardından çıkan menüde otomatik kurulum değil, “Sürücü için Bilgisayara gözat” gibi (özür, tam türkçe bu olmayabilir), ikinci seçeneği seçmeliyiz:
Resim: circuitbasics.com
Ardından çıkan yerden “Sürücüyü ben seçeceğim” gibi olan diğer seçeneği seçmeliyiz:
Resim: circuitbasics.com
Şimdi açılan kategoriden “Ağ aygıtları” (özür, Türkçesi tam böyle olmayabilir, İngilizcesi “Network Adapters”) olan seçeneği seçmeliyiz:
Resim: circuitbasics.com
Ardından açılan yerden sol sekmeden üretici olarak “Microsoft”, sağ sekmeden de cihaz olarak “Uzak Ağ Sürücüsü Arayüz Spesifikasyonu Uyumlu Cihaz” (özür, Türkçe Windows’um yok maalesef, İngilizcesi “Remote NDIS Compatible Device”) seçmelisiniz.
Resim: circuitbasics.com
Ardından bir uyarı gelecek. Windows cihazı tam olarak tanıyamadığından kurmakta emin olmadığından bahsedecek. Bu aşamada onaylayıp kuruluma devam etmelisiniz.
Bu aşamadan sonra Windows üzerinde cihazınız kuruluma ve kullanıma hazır!
Bu aşamalardan sonra istediğiniz bir SSH bağlantı programı (putty, cygwin shell, bash on windows, platform destekliyorsa doğrudan SSH) ile “raspberrypi.local” adresine bağlanmalıyız. Raspberry Pi’ye erişim için örnek terminal komutu:
ssh pi@raspberrypi.local
Bu komutla doğrudan sanki bir ağdaymış gibi USB kablodan bağlı Raspberry Pi’mize bağlanabiliyor olacağız.
Bu aşamaların sonunda sadece USB kablo kullanarak Raspberry Pi’nize bağlanabilir, eğer tam arayüz kurduysanız tightvncserver, xrdp gibi programları çok basit komutlarla kurarak grafik arayüzüne bağlanabilir, VNC, RDP uzaktan masaüstü gibi arayüzlere erişebilirsiniz.
İnternet Erişimi Sağlamak
Aslında bunu ayrı bir yazıda değinecektim, ama bu yazıda her şeye değinmek istedim.
Bu aşamadan önce USB’den bağlı cihazınıza SSH vb. bir protokolden erişilebilir olduğundan emin olun.
Bu aşamaların ardından USB ile bağlandığımız Raspberry Pi Zero’ya internet erişimi sağlayacağız!
Eğer İşletim Sisteminiz MacOS ise
Ayarlar (System Preferences) sayfasından Paylaşım (Sharing) sekmesine gelin:
Ardından açılan sayfa şunun gibi olacak:
Burada yapmanız gereken şey öncelikle sağ kısmı ayarlamak.
Ben bu resimde WiFi’den gelen internetimi RNDIS Cihazı (Raspberry Pi) ile paylaştım. From olarak WiFi, To computers olarak da RNDIS’i seçtim. Bu ayarları yaptıktan sonra soldan Internet Sharing’i aktif ettim, ve de çıkan kutuyu onayladım. Ardından Raspberry Pi’den ping atabiliyordum!
Gördüğünüz gibi, USB’den bağlı Raspberry Pi’me raspberrypi.local adresinden bağlanıp Google’a ping attım ve gelen cevaptan online olduğumu görebilirsiniz!
Eğer İşletim Sisteminiz Windows İse
Windows tarafında işler biraz daha karışık.
Öncelikle Ağ ve Paylaşım merkezlerinden Aygıtların listesine erişmeniz lazım. Bunun için başlat / çalıştır sekmesinden ya da başlat kısayoluna “ncpa.cpl” yazabilirsiniz. Şunun gibi bir sayfa açılacak (Network Connections sayfası aslında):
Burada hangi ağda olduğunu bilmeniz lazım. Ben “Ethernet” teki (seçili eleman) internetimi (WiFi’dan bağlıysanız WiFi ikonu olacak mesela bu, İnternet’e bağlı olduğunuz ağ aygıtı bu) tahmin edeceğiniz gibi RNDIS aygıtı olan “Ethernet 4” ile paylaşacağım bu resimde.
Bunun için “Ethernet”‘e Sağ tıklayıp “Özellikler” dedim, şunun gibi bir arayüz karşıladı beni.
Bunun ardından ikinci sekme olan “Sharing” (Paylaşım)’a tıkladım, şunun gibi bir sayfa açıldı:
Burada gördüğünüz üzere ilk satırdaki tikten Bu ağdaki internetin paylaşılmasına izin verdim, ikinci sekmeden hangi ağda paylaşılacağını seçtim. Örneğimizde bu değer “Ethernet 4” (RNDIS aygıtı). Sizde rakamı farklı olabilir. Alttaki tikten de kontrol edebilmesini, yeri gelince paylaşımı kapatabilmesini onayladım (internet erişimi için bu lazım). Ardından Tamam diyip kaydettim.
Kısa bir bekleme ardından Raspberry Pi’nize internet erişimi gelecek 🙂
Eğer İşletim Sisteminiz GNU/Linux ise
Dağıtımdan dağıtıma değişiyor bunun yolu, elimde hali hazırda masaüstü ortamı kurulu bir yerel GNU/Linux yüklü lakin örneğin Ubuntu’da MacOS’a yakın bir paylaşım arayüzü olmalı, ve de oradan yapabilmeniz gerekmekte. GNU/Linux host makinede deneme yapanlar paylaşırlarsa aslında memnun olurum.
Bilgim çerçevesinde; “avahi-daemon” kurulu olmalı, ve de bundan sonra atanmış ip adresi veya raspberrypi.local diyerek bağlanabiliyor olmanız lazım.
Ubuntu’da RNDIS için kendi elemanı olan (kablolu ağ 2 diyelim) ağ özelliklerinden ipv4 sekmesinden “Link-Local only” (sadece yereli bağla?) seçeneğini seçerek bağlanabilirsiniz.
Eğer böyle bağlanmazsa ipv6 da deneyebilirsiniz:
avahi-daemon yüklüyken;
avahi-browse -art
diyip usb0 (veya usb1, 2..) cihazının ipv6 adresini alıp, terminalde;
ssh -6 pi@ipv6:adresi:buraya:gelecek%usb0
gibi bir komutla bağlanabiliyor olmanız lazım.
Eğer İşletim Sisteminiz Android ise
Bunun da yolu çok basit. Bir USB OTG kablosu ile (ki durumumuzda hemen hemen tüm Android cihazlar için 2 ucu da erkek mikro usb kablo oluyor olmalı, bunun için de kapak resminin altındaki aparatla bir micro usb otg kabloyu beraber kullanmanız lazım) cihazı USB’den bağladıktan sonra Ayarlar / Daha fazlası altından Tethering / Hotspot menüsü altından USB tethering’i aktif etmelisiniz. Ardından Fing ismindeki uygulama ile Android cihazınıza bağlı olan Raspberry Pi’nin IP adresini öğrenebilirsiniz ve SSH bağlantısı gerçekleştirebilirsiniz. Ben SSH bağlantısı için Android’de JuiceSSH‘ı öneriyorum. Alternatif olarak ConnectBot‘u da kullanabilirsiniz. Burası biraz kişisel tercih oluyor.
Windows Bonus: Eğer Ki Bağlanmıyorsa
Burada ben birkaç sefer bağlanamama sorunu yaşadım, bu yüzden sizlerle paylaşmak istedim.
Bazı durumlarda paylaşmayı denediğiniz zaman “IP adresi zaten tanımlı, atayamıyoruz” gibisinden bir hata mesajı alabilirsiniz.
Bunun birden fazla sebebi var. Bunların başında bazı VPN prtokollerinin (cyberghost vs.) RNDIS in kullanacağı dahili ip’nin aynısını rezerve ettiklerinden onların ip lerini değiştirmeli veya iptal etmelisiniz. Bunun için DHCP yerine manuel IP vermeyi deneyebilirsiniz. Ben şunun gibi bir IP vererek durumu aşabildim (192.168.137.* ip adresini tercih ediyor cihaz, 192.168.137.1 verdim ben de, 2, 3, …x deneyebilirsiniz):
Başarı ile paylaşım yaptıktan sonra hala internet erişimi yapamıyorsanız bunun bir diğer sebebi de yüklü olan Antivirüs / Firewall programınız olabilir. Örneğin Kaspersky Internet Security son sürümü bende Windows’ta deneme yaparken bu sorunu doğurdu.
Bunun için Güvenlik Duvarı Ayarlarından Raspberry Pi ağını public ağ’dan yerel/lokal ağa çekmeliyiz.
Bunun için Kaspersky Internet Security’i açıp, Firewall sekmesine gelin. Ardından Firewall Ayarlarından Networks sekmesine tıklayın. Şunun gibi bir liste gelecek:
Burada yapmanız gereken Bağlı olan RNDIS aygıtını (bende örnekte iki tane var hatırlanan, biri bağlı biri değil) sol alttaki butondan edit diyip ağ tipini Public’ten lokal’e çekmelisiniz. Resimdeki işaretli satırdaki public 2. satırdaki gibi local olmalı.