Gnu-Radio ile yazılımla tanımlanabilinir telsiz(radio)

Yazılımla tanımlanabilinir telsiz, ya da yazılıma bağlı telsiz cağımızın en yeni konularından biri. Bundan 2 gün önce 4′üncü sınıf projemizi seçtik ve bizim üç kişilik ekip bu proje ile uğraşacak. Birazdan yazacaklarım, daha önce bunları hiç duymadıysanız kesinlikle ilginç gelecektir. Bu projenin temelini oluşturan yazılıma bağlı olan radyo’nun İngilizce ismi ise “Software Defined Radio”‘dir. Kısa adı SDR (bundan sonra yazımda SDR ile devam edeceğim. Telekom ile aşina olanlar bu terimi belki daha önce duymuşlardır.

SDR nedir?

Çağımızda’ki iletişim’lerin çoğu kablosuz olarak gerçekleşiyor. Örneğin cep telefonları ile 900Mhz ve 1800MHz frekanslarında konuşuyoruz, müziğimizi FM dalgaları ile 88-108MHz frekans yayın aralığında dinleriz, dizüstü bilgisayarımız ile 2.4Ghz ile wifi üzerinden İnternet’e giriyoruz, çatı’daki antenler sayesinde TV izleyebiliyoruz, GPS sistemi ile yönümüzü ve ona göre gideceğimiz yerleri an ve an takip edebiliyoruz.

Tüm bunlar on yıllardır mühendislerin ortaya çıkartığı bir takim radyo özellikleridir.(Radyo kelimesi her türlü veri-alış verişini yapabilen cihazlardır, yani aklınıza sadece FM radyo’su gelmesin, cep telefonu da bir radyo’dur) Her birinin kendine has özellikleri vardır ve genellikle bu teknoloji’yi çıkartanlar bu işte çok para kazanmışlardır. Neden para kazandılar ? Çünkü her frekans için özel bir donanım hazırladılar ve biz sadece bu donanım üzerinden iletişim kurabiliyorduk.

Görüldüğü gibi gündelik hayatta da her iletişim kanalı için ayrı bir cihaz kullanıyoruz ve her biri için ayrı para veriyoruz.

İşte burada SDR devreye giriyor. SDR’ın amacı, tamamen donanımdan bağımsız bir ortam geliştirmek ve mümkün olduğunca yazılımla anten kısmına kadar gelebilmek. Bu şu demek, elinizdeki bir cihaz’ın özellikleri artık donanım’a bağlı değil, aksine yazılıma bağlı.

SDR’nin avantajları nedir peki?

Dediğim gibi artık donanım’a bağlı değil, yazılıma bağlı. Bunu avantajları saymakla bitmiyor, sadece bir kaçı şu şekilde:

  • Anında değiştirilebilinir özelliklere sahip olacaklar. Öyle bir cihaz düşünün ki, istediğiniz zaman bir GPS alıcısı olacak, başka bir zaman wireless İnternet cihazı olacak, başka bir an telefon olacak, canınız sıkıldı FM alıcısı olacak. Tüm bunlar yazılıma bağlı olduğu için, tek tıklama ile bunlar olacak. Tüm bunları tek bir cihaz’ın yapabileceğini söyleyeyim tekrardan.
  • Yazılıma bağlı oldukları için, yeni teknolojilere adapte olma süreci kolay bir şekilde hal olabilecekler. Şöyle bir örnek verelim, şu an 3g destekleyen telefonlar var, bazılarında ise 3g desteği yok. 3g desteğinin olmamasının sebebi ise tamamen donanımsal bir olay. Fakat ellimizdeki cihaz bir SDR olsaydı, yeni bir yazılım ile 3g’ye adapte olabilecektik.
  • Aynı anda birden fazla kanalları dinleyebilecek ve konuşabilecek. Polislerin telsizleri mesela belirli bir frekans aralığında çalışır, askeri’yenin ise apayrı bir frekans aralığında çalışır. Eğer  SDR olsaydı polis ile askeriye kendi aralarında çok kolay bir şekilde iletişim kurabilecekler. Başka bir örnek, diz üstü bilgisayarınız var, wifi özelliği mevcut ve elinizde bluetooth destekleyen bir telefon var. Bluetooth’lu telefondan wireless’li diz üstü bilgisayarınıza bağlantı kurabileceksiniz.
  • Yazılıma bağlı olduğundan, doğanın donanımlara getirdiği bazı sınırlamalar ortadan kalkacaklar.Bu yüzden daha önce hiç görmediğimiz uygulamalar görmemiz mümkün olacaktır.

Peki Gnu Radio nedir ?

10 yıl önce Eric Blossom, açık kaynak kodlu SDR projesini ortaya attı. Bu projeyi daha fazla ileriye götürmek için, GNU kurucularından Richard Stallman’i de ikna ederek, GNU çatısı altına almaya başarmıştır. Gnu radio‘nun kendi altında 100′e yakın blok var. Her bir blok, telekom alanındaki bazı matematiksel özellikleri yapmayı yarıyor. Örneğin filtreleme, demodulation, modulation,vs.. Bu sayede, bazı fiziksel olayları yeni baştan yazmak yerine, Gnu radio’nun kütüphanelerini kullanmak mümkündür. Örneğin bu kütüphaneler ile kolayca bir FM alıcısı yapabilirsiniz.

Tabi bu yazılım çalışabilmesi için bir donanım yine gerekli. Günümüz dünyamızda her evde en az 2 çekirdekli bilgisayar artık olağan olmadığından, bu tarz yüksek işlemci hızı gerektiren işlemleri kolayca yapmamız mümkün. Masaüstü bilgisayarların işlemci güçleri gayet yeterli, fakat bunların alıcı kısmının dezavantajları var. Hava’dan gelen bir sinyali nasıl alacaksınız mesela? Bilgisayarlarımızda ses kartları aslında çok düşük fiyatları analog-to-digital çeviricileridir. Fakat bunlar 96KHz aralığında olduğundan, bizim diğer sinyaller için çok yetersiz olacaktır(örneğin FM frekansları 88MHz’den başlar, yani yaklaşık 10 katı daha fazla). Başka bir alternatif ise, yüksek hızlı PCI analog-to-digital ana kartları satın almak. Bunlar bizim işimizi görebilir, fakat normal bir masaüstü fiyatı kadar pahalı olacağından göz ardı edilebilinir.

Bu yüzdendir ki, Eric Blossom, USRP adında, SDR için özel geliştirilmiş bir ana kart geliştirdi.

USRP nedir ?

USRP’nin açılımı “Universal Software Radio Peripheral”‘dir. Bu genel amaçlı bir anakart. Üzerinde 4 tane yüksek hızlı analog-to-digital(ADC) çeviricileri, 4 tane digital-to-analog(DAC) çevirileri, bir tane FPGA ve bir kaç giriş ve çıkış girişleri var. GNU radio yazılımı doğrudan bu cihaz ile kolay bir şekilde iletişim kurabiliyor. Bu cihaz’a özel kütüphaneler var. O yüzden USRP ile SDR oluşturmak ve üzerinde çalışmak çok daha kolay. Tabi ki Gnu radio farklı platformlarda çalışacaktır, fakat USRP gibi özel bir donanım kadar performanslı ve efektif olmayacaktır. Aşağıda resimleri görebilirsiniz

gnur_01

gnur_02

Anakartın üzerinde bir takım kardeş-anakartlar yerleştirmek mümkün (bunlara daugtherboard deniliniyor). Bu kardeş anakartların her biri farklı frekans aralıklarındaki frekansları almayı ve göndermeyi becerebiliyor. Her birinin farklı yani. O yüzden geliştireceğiniz proje’ye göre, kardeş anakartları da farklı olacaktır. Eğer cep telefon sinyalleri ile uğraşacaksanız, 900MHz-1800MHz aralığındaki bir kardeş anakartı almanız gerekebilecek. USRP’nin üzerinde 4 tane bu tarz giriş var, yani 4 tane farklı kardeş anakart üzerine kurabiliyorsunuz. Bu yüzden farklı frekanslarından alabilir ve gönderebilirsiniz. Yukarıdaki resimde 4 tane farklı anakartın yerleştirildiğini görebilirsiniz.

Sonuç

4′üncü sınftaki bitirme projemiz, bir tane USRP üzerinde, şu an daha henüz belli olmayan bir alıcı ve verici düzeneği oluşturmaktır. Proje’nin detayları sonra belli olacak. Zamanla bunları burada yazacağım. Bu kadar yazdım, hiç mi dezavantajları yok bunun diyeceksiniz? Evet maalesef var.

Bu cihazı Amerika’dan 700 dolara getirebilirsiniz. Kardeş anakartlar ise 150-200 dolar arasında değişiyor. Ayrıca uzun mesafe’de çalışmak için iki tane anakart almak isteyeceksiniz. Oradan buraya kargo ücreti ise 150 dolar tutuyor. Bizim bölüm iki tane anakart bize tehsis edeceğinden bu yönde bir sıkıntı olmayacak(öyle denildi, umarım sorun çıkmaz bu konuda), kardeş anakartlar için ise kendimiz biraz para ayırmamız gerekecek herhalde. Sponsor bulursak tabi bunların hiç biri olmayacak. Türkiye gibi bir ülke’de bu konuda kesinlikle çok güzel araştırmalar yapabileceğine inanıyorum.

Kaynaklar:
http://www.ettus.com/
http://www.gnu.org/software/gnuradio/
http://en.wikipedia.org/wiki/Software-defined_radio
http://www.comsec.com/software-radio.html
http://dev.emcelettronica.com/gnu-radio-open-source-software-defined-radio

BackupPc yerelleştirmesi

Portakal Staj başvuru’sundaki üçüncü aşamam BackupPc’yi yerelleştirmek. Normalde .po dosyaları vardır bunlar kolayca yerelleştirebiliniyor.Birde belki bileniniz vardır, zamanında eklentiler.mozilla.org.tr‘de Türkçe eklentiler sunuyorduk(Bak bunu tamamen unutmuşum, CV’ye yazmam gerekiyor :) ). Gayet de başarılıydı. Bu iş ise zordu biraz, çünkü .xpi dosyaları açmak gerekiyordu içindeki dosyaları düzenlemek ise zor olabiliyordu bazen. Fakat sonrasında bir takım olaylar oldu ve sebepsiz yere yüzlerce hakarete varan mailler aldık. Neyse ki sonra Babelzilla platformu ortaya çıktı ve biz bu işleri buradan devam etmiştik. Ben çok devam edemedim zaten, şimdi kimler yerelleştirme ekibinde bilmiyorum.

BackupPc geri dönersek, arka planda çalışan bir uygulama olduğundan yerelleştirecek pek bir şey yok, fakat BackupPc’nin web arayüzü yerelleştirmeye gayet müsait. Bu sebepten dolayı BackupPc kullanıcıları listesine bir mail attım. Nasıl yapabileceğimi ve belirli prosedürler var mı diye sordum.

Gelen cevap ise şu şekildeydi:

You should look in lib/BackupPC/Lang. Each language has its own
file. You can copy copy en.pm (English) to tr.pm (Turkish) and
then edit it with the translation of each string. Don’t change
any of the html or variable names prefixed by “$” – just the
English text.

Ben de o zaman bu işe başlayacağım, bitirince size dosyayı yollarım diye cevap yazdım. Craig ise bana şu cevabı yazdı:

Sure. You can just send it to me and I will include it in CVS
and the next release.

Daha henüz başlamadım, fakat kısa zamanda başlayacağım. Gelişmeleri buradan takip edebilirsiniz.

Pardus’ta BackupPc kurulumu – 2

Dün birinci kısımda BackupPc’yi nasıl kuracağımız anlattım. Bu kısımda ise client(istemci) ve sunucu kısmında neler yapmamız gerektiğini söyleyeceğim. Mail listesinden aldığım cevaplar pek işe yaramadı çünkü hata başka yerdeymiş. Nmblookup komutunun çalışması için istemci’de samba kurulu olması gerekiyormuş. O yüzden istemci tarafında samba’yı kurmayı unutmayın.

BackupPc veri aktarımı için SSH kullanıyor. Bunu kullanabilmesi için sunucu’daki anahtarlarımızı istemci’ye aktarmamız lazım. Yani sunucu’ya bağlanmak isteyen her kişi’ye sunucu’da oluşturduğumuz anahtarları yollamamız lazım. Bu biraz zahmetli iş ama İnternet’te yaptığım araştırmalar sonucunda basit bir belge buldum. Şimdi sırayla şu işlemleri yapalım:

Okumaya devam edin »

Pardus’ta BackupPc kurulumu – 1

Portakal Teknoloji staj başvuru aşamasında bana verilen projelerden biri BackupPc idi. Pardus’ta bu uygulamanın paketini bulamadığım için elden kurmam gerekiyordu. Peki BackupPc nedir ? BackupPc bu kadar güzel ve önemli yapan nelerdir?

Birincisi BackupPc yüksek performanslı, kurumsal derecede çalışabilen, çoklu platform destekleyen ağ üzerinden çalışan yedekleme uygulamasıdır. Kendisi gerekli ayarlamaları yaptıktan sonra arka planda çalışıyor ve bu sayede belirli aralıklarda ağ üzerinden diğer bilgisayarların(Masaüstü ve Dizüstü) yedeğini alıyor. Yani bir sunucu uygulamasıdır kendisi.

Kendisi birleştirme özeliği ile veri yedeklerken belirli seviye’ye kadar veriyi azaltabiliyor ve sunucu’da daha az yer kaplamasını sağlıyor. Örneğin vermek gerekirse var sayalım şirketinizde 95 adet çalışan diz üstü bilgisayarı var. Bu bilgisayarların ortalama yedeklenecek veri büyüklüğü 3.6gb olsun. BackupPc ile normalde 1200Gb olması gereken veri, birleştirme ve sıkıştırma özelliği ile sadece 150Gb yer kaplıyor. (Eğer bir dosyanın aynısı başka bir bilgisayar’da varsa onu yedeğini almıyor mesela). Ayrıca sunucu tarafında BackupPc kurulması yeterli, istemci tarafında hiç bir şey kurulmasına gerek yok, Windows makinelerinde samba protokolü, linux makinelerinde ise ssh/rsh/nfs üzerinden tar ile yedek alabiliyor.

Şimdi sırayla nasıl kurulacağını anlatacağım.
Okumaya devam edin »

Gnuplot ile verilerden grafik oluşturmak

Benim gibi milimetrik kağıtlardan nefret ediyorsanız, eldeki verilerinizi o küçük noktalara yerleştirmek, onlardan bir eğri çıkartmak ve o eğrinin açısını hesaplamaktan sıkıldıysanız bu yazı tam size göre. Birazdan anlatacaklarım çok işinize yarayabilir.

Gnuplot açık kaynak kodlu grafik oluşturma uygulamasıdır. Grafik’ten kastım her türlü veri’yi görsel olarak sunmaktan bahsediyorum. Bu iki boyutlu kartesian koordinatları olabilir, üç boyutlu kök eğrileri olabilir ya da borsa’daki herhangi bir indeksin işlemleri de olabilir. Gnuplot’un kendine has bir kabuğu var, konsoldan gnuplot yazdığınızda doğrudan giriş yaparsanız. Kullanması da inanın çok kolay. Çok basit tasarlamışlar, ama çok zor işlerin üstünden de gelebiliyor(hastasıyım böyle yazılımların). Bir örnekle başlayalım. Örneğin:

gnuplot> plot sin(x)

yazdığınızda size bir tane sinus dalgası çıkartacak. Bu kadar basit. Şimdi gelelim bizim yapmak istediğimiz şeye.

Elimde bir çok veri var, şimdiki kullanacağım veri geçen hafta kontrol laboratuvarında ısı sensöründe aldığım verileriyle ilgili olacak. Veriler şu şekilde:

# X Y
0 297
30 299
60 303
90 310
120 310
150 312
180 316
210 318

Bu verileri “test.dat” olarak kayıt ediyoruz. Şimdi ilk kolon boş anlamına geliyor, ikinci kolon x ile başlıyor sonraki kolonları da tab ile ayrıştırıyoruz. Burada iki tane eksen için verilerimiz var şimdi bizim için. X ekseni bizim örneğimizde saniye’yi gösteriyor. Y ekseni de kelvin’deki sıcaklık değerini gösteriyor. Görüldüğü gibi zamanla sıcaklık artıyor. Gnuplot ile sonra şunları yazıyoruz

gnuplot> set xlabel “t (sec)”
gnuplot> set ylabel “temperature (kelvin”

Bu iki satır eksenleri adlandırmamızı sağlıyor. Ardından şu komutu yazdıyoruz:

gnuplot> plot “test.dat” using 1:2

Bu komut test.dat dosyasındaki birinci ve ikinci kolonların grafiğini bize çıkartıyor, kendisi şöyle bir şey:

gnuplot

Gördüğünüz gibi güzelce basit bir şekilde verileri yerlerine çıkartı. Şimdi genellikle bu noktaların ortasından geçen bir eğri’yi bulup, o eğrinin eğimini bulmamız bizim işimize yarayabiliyor. Birim zamandaki değişimi görmemizi sağlıyor, daha da önemlisi bu denklem bizim bulduğumuz verilerin denklemini oluşturacağından kolayca istediğimiz andaki veriyi elde edebileceğiz. Noktalardan geçen doğru’nun neye benzediğiniz Gnuplot’a söylemimiz lazım. Bu bir logaritmik fonksiyon olabileceği gibi trigonometrik fonksiyon da olabilir. Bunu biraz araştırdıktan sonra bir blog sayfasında buldum. Bizim örneğimizde basit bir eğri olduğundan fonksiyonumuz şu şekilde olacak:

gnuplot> f(x) = a*x + b

Kısaca y = ax +b olacak. Peki bizim a ve b değerlerimiz nelerdir ? Burada gnuplot devreye giriyor. Kendisi bizim test.dat’daki dosya’dan verileri alıyor ve hesaplama, yanılma yöntemiyle doğru sonucu buluyor(hata payı da var elbette). Onu da şu şekilde yapıyoruz:

gnuplot> fit f(x) “test.dat” via a,b

Bunu yazdığımızda uzun bir çıktı geliyor, altıncı denemeden sonra bize nihai sonuçları veriyor, ben sadece bizim işe yarar kısmı gösteriyorum size:

Final set of parameters Asymptotic Standard Error
======================= ==========================

a = 0.102778 +/- 0.008289 (8.065%)
b = 297.333 +/- 1.04 (0.3499%)

Gördüldüğü gibi a ve b değerli bulundu. Şimdi sadece şu satırı yazıyorum ve sonuçu elde ediyorum:

gnuplot> replot f(x)

Sonuç ise şu şekilde:

gnuplot1

a ve b değerlerinden oluşan denklemimiz ise y = 0.102x + 297.333 şeklide olacak. Denklemi de elde ettiğimize göre bu denklemden kolayca eğimi bulabiliyoruz. Hepsi bu kadar. Böyle uzun uzun yazıldığına bakmayın, topu topu 6-7 satırdan oluşuyor. Cetvele ve milimetrik kağıt ile uğraşmaktan hem daha zevkli hem daha güvenirli. Umarım yukarıda anlattıklarım işinize yaramıştır. Aşağıdaki bağlantılardan çok daha fazlasını bulabilirsiniz.

http://t16web.lanl.gov/Kawano/gnuplot/index-e.html
http://www.gnuplot.info/docs/gnuplot.html

Pandora’yı tek tıkla dinlemek

Başlık bulma konusunda pek iyi değilim, artık bu şekilde idare edin. Demek istediğim aslında şu, Pandora Türkiye’de dinlenemiyor, bir aralar oluyordu fakat kapattılar. Sonraları globalpandora diye bir şey çıktı fakat onun da sonu çabuk geldi. Proxy üzerinden dinleyebiliyoruz artık sadece. Bunun için de tarayıcımızdaki proxy ayarları değiştirmek lazım.

Bunun da  dezavantajları var, tüm şifreleriniz ve özel bilgileriniz proxy üzerinden iletileceği için pek güvenli sayılmayabilir. Ne yapabilirdik peki, site’ye özel proxy yapabilirdik, yani www.pandora.com sitesine girdiğimizde bizim proxy devre’ye girecekti. Bunu FoxyProxy ile yapabildiğini öğrendim. Sonra da bu şekilde kullandım, ama müzik dinlemek için Firefox’u açmak pek hoşuma gitmedi. Last.Fm gibi istemci olsa tadından yenmezdi.

Burada yapabileceğim bir şey var, oda Mozilla Prism kullanmaktı. Sayesinde web sitelerine uygulama gibi çalıştırabilecektik. Her ne kadar uygulama olmasa bile güzel bir şey bence. Benim yaptığım ise, Mozilla Prism’de proxy’ı devreye sokmaktı.  Şimdi aşağıda gördüğünüz gibi simge’ye tıkladığım an Pandora’yı dinleyebiliyorum

pandora

Tüm bunları şu şekilde yaptım:

  1. Mozilla Prism sayfasından, Prism’in standalone uygulamasını indiriyoruz
  2. Bu uygulamayı  /opt dizinine açıyoruz. Orada /opt/prism diye bir klasör oluşacak
  3. En son flash sürümünü indiriyoruz , içinden çıkan libflashplayer.so dosyasını /opt/prism/plugins klasörüne atıyoruz(eğer plugins klasörü yoksa oluşturuyoruz onu)
  4. İstediğiniz bir metin editörü ile /opt/prism/xulrunner/greprefs/all.js dosyasını açıyoruz ve aşağıdaki satırları

    pref(“network.proxy.type”, 0);
    pref(“network.proxy.autoconfig_url”, “”);

    şu şekile çeviriyoruz

    pref(“network.proxy.type”, 2);
    pref(“network.proxy.autoconfig_url”, “http://pac.byterelay.com/”);

    Bu satırlar 750′ini satırda ve birbirinden ayrı yerdeler, biraz aramanız gerekecek

  5. İşimiz bitti sayılır, şimdi konsoldan /opt/prism/prism açıyoruz ve www.pandora.com ve Desktop seçeneğini tıklıyoruz
  6. Başka adım yok :)

« Önceki sayfalarSonraki sayfalar »