4.05.2009

Ubuntu'da bluetooth ile GPRS bağlantısı

Geniş bant internet bağlantı alternatiflerinin çoğalmasıyla çevirmeli ağ bağlantısı gibi yavaş bağlantı çeşitlerine ihtiyacım kalmadığını düşünüyordum. Ama ne kablolu ne de kablosuz internet bulamayacağım bir noktada (PCMCIA kartım veya 3G destekleyen hattım yok) bu tek seçenek olarak karşıma çıktı. Uzun zamandır göz ardı ettiğim bu yöntemi kullanabilmek biraz Google'lama yaptım. Ve sonuca şu adımlar sonrasında ulaştım (ben Ubuntu 8.10 Interpid Ibex x86 kullanıyorum):

Öncelikle sistemde bluez-utils, blues-pin ve ppp paketlerinin kurulu olduğundan emin olmak gerekiyor (blues-pin bende kurulu değildi, repo'larda da böyle bir paket bulamadım)

$sudo apt-get install bluez-utils
$sudo apt-get install blues-pin
$sudo apt-get install ppp
Bundan sonra bilgisayardan, çevresindeki bluetooth cihazları aratmamız gerek. Bunu grafik arayüzle değil, komut satırından yapacağız. hcitool aracını kullanarak bir tarama yapalım. Tam bu noktada bluetooth hizmetini kullanacağınız telefonun bluetooth'unu açmayı unutmayın.

$hcitool scan
Bunun sonucunda şuna benzer bir çıktı alacağız.

Scanning ...
00:07:3A:08:EE:74       Genius
00:18:13:50:0C:EB       musica
Diyelim ki yukarıdaki musica sizin telefonunuz. Yanında yazan numarayı kopyalayın - daha sonra lazım olacak. İlk iş olarak telefonla bilgisayarınızı eşleştirelim (pairing). Bunu yine hcitool ile yapacağız. Aşağıda her adımda yazan 00:18:13:50:0C:EB'yi sizin telefonunuzun MAC adresi ile değiştirmeyi unutmayın.

$sudo hcitool cc 00:18:13:50:0C:EB

Eşleştirmeyi tamamlamak için bir de şu komutu vermek gerekecek:

$sudo hcitool auth 00:18:13:50:0C:EB
Sıra telefonunuzun sunduğu hizmetleri sorgulamaya geldi. Bunu yapmak için Service Discovery Protocol (SDP) aracı olan sdptool'u kullanacağız. Aşağıdaki adımın sonucunu bir dosyaya yönlendirerek dosya üzerinde çalışmayı deneyebilirsiniz. Ama shell penceresinden de istediğiniz işlemleri yapabilirsiniz.
$sdptool browse 00:18:13:50:0C:EB
Bunun sonucunda şuna benzer uzuuun bir çıktı alacaksınız.
Browsing 00:18:13:50:0C:EB ... Service Description: Sony Ericsson K750 Service RecHandle: 0x10000 Service Class ID List: "PnP Information" (0x1200) Service Name: Dial-up Networking Service RecHandle: 0x10001 Service Class ID List: "Dialup Networking" (0x1103) "Generic Networking" (0x1201) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 1 Profile Descriptor List: "Dialup Networking" (0x1103) Version: 0x0100 Service Name: Serial Port Service RecHandle: 0x10002 Service Class ID List: "Serial Port" (0x1101) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 2 ...
Tüm çıkış yerine bizi ilgilendirecek birkaç satırı yazdım. Daha da önemli yerleri kırmızı olarak işaretledim. Bluetooth üzerinden GPRS bağlantısı Dial-up bir bağlantı olduğundan bu çıkışın içindeki Dial-up Networking kısmını bulmamız gerekiyor. Bu kısmın en altında yazan Channel numarasını da kaydetmemiz gerek. Yani bizim durumumuzda bu kırmızı ile belirtilen 1 numaralı kanal olacak.

Bu adımdan sonra /etc/bluetooth/rfcomm.conf dosyasını root yetkileriyle açarak içine şu satırları ekledim:

rfcomm0 { bind yes; device 00:18:13:50:0C:EB; channel 1; comment "PPP connect"; }
Bundan sonra bluetooth servisini tekrar başlattım (kaynak dökümanda bluez-utils'i tekrar başlatmam söyleniyordu ama benim makinamda bu yoktu)
$sudo /etc/init.d/bluetooth restart
Bir tek bir PPP bağlantısı yaratmak kaldı. Onu yaratmak için önce /etc/ppp/peers/bluetoothconn dosyası yaratarak (root yetkileriyle) içine şu satırları yazdım.
debug noauth connect "/usr/sbin/chat -v -f /etc/chatscripts/bluetoothconn" usepeerdns /dev/rfcomm0 115200 defaultroute crtscts lcp-echo-failure 0
Daha sonra da /etc/chatscripts/bluetoothconn dosyasını yaratarak şu satırları ekleyin:
TIMEOUT 35 ECHO ON ABORT 'nBUSYr' ABORT 'nERRORr' ABORT 'nNO ANSWERr' ABORT 'nNO CARRIERr' ABORT 'nNO DIALTONEr' ABORT 'nRINGINGrnrnRINGINGr' '' rAT OK 'AT+CGDCONT=1,"IP","internet"' OK ATD*99# CONNECT ""
Ben Turkcell kullandığım için kırmızı ile yazılmış satırları kendi hattıma göre yaptım. Bunlardan ilki, Windows'da bluetooth modem'in extra initialization string kısmına yazdığım değerlerdi. İkincisi ise bir dial-up bağlantı yarattığımda çevrilecek numara. Bu numara kısmına bazen *99***1# veya *99***2# olabilir, siz kendi durumunuza göre deneme yapabilirsiniz.

Nihayet herşey hazır. Şimdi şu komutla bağlantınızı yapabilirsiniz.
$sudo pon bluetoothconn
Bağlantınızın yapıldığından emin olmak için ifconfig komutunu yazarak ppp arayüzünün GSM operatörünüzden bir IP adresi alıp almadığını deneyebilirsiniz. Benim bilgisayarımda şöyle bir çıktı verdi:
# ifconfig eth0 ... eth1 ... lo ... ppp0 Link encap:Point-to-Point Protocol inet addr:213.43.65.1 P-t-P:10.6.6.6 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:64 (64.0 B) TX bytes:97 (97.0 B)

Buradan da görüleceği gibi ppp0 arayüzü 213.43.65.1 adresini almış. Bu durumda sorun yok. Bunu, telefonunuzun ekranında aktif bir bluetooth bağlantısı simgesi olduğunu görerek de anlayabilirsiniz.

Bağlantınızı sonlandırmak için de şu komutu kullanabilirsiniz:

$sudo poff Bluetoothconn
Kaynak: http://www.spiration.co.uk/post/1307/Ubuntu Linux Bluetooth and GPRS dialup connection

Hiç yorum yok: