sunnuntai 14. syyskuuta 2008

DNA nettitikku (Huawei E169) ja Ubuntu 8.04

Huawei E169 toimii sekä massamuistilaitteena että langattomana tiedonsiirtimenä. Valitettavasti tämä monitoimisuus tuntuu myös vaikeuttavan käyttöä, sillä laite jää massamuistitilaan ellei sitä erikseen pyydetä siirtymään tiedonsiirtotilaan. Laitteen sisäinen muisti sisältää Windows-laiteohjaimen, jonka asennus alkaa automaattisesti, kun laite liitetään USB-porttiin. Kun ohjain on asennettu, se lähettää laitteelle ohjauskomennon, joka käskee laitetta käynnistämään tiedonsiirtotilan.

Linuxille valmistaja ei toimita ohjaimia, joten Linuxin käyttäjien on pärjättävä omillaan. Onneksi Josua Dietze on tehnyt usb_modeswitch-ohjelman, jolla tarvittava ohjauskomento voidaan lähettää. Tärkeä on myös usb_modeswitchiin liittyvä asetustiedosto usb_modeswitch.conf, jossa on ohjelman tarvitsemat asetukset useille laitteille. Ilman usb_modeswitchiä laite ei näy /dev-hakemistossa. Kun usb_modeswitch suoritetaan, /dev-hakemistoon pitäisi ilmestyä neljä ttyUSBn-laitetiedostoa. Näistä ensimmäinen on modeemi. 

usb_modeswitchin kääntäminen vaatii libusb- ja libusb-dev -kirjastot. Lisäksi vaaditaan tietysti build-essential-paketti. Ohjelma käännetään yksinkertaisesti komennolla gcc -l usb -o usb_modeswitch usb_modeswitch.c. Tämän jälkeen asetustiedostosta tulee poistaa kommentit riveiltä, jotka liittyvät laitteeseen, joka on käytössä. Esimerkiksi Huawei E169:ää käytettäessä tulee seuraavien rivien näyttää tältä:

########################################################
# Huawei E169
#
# Contributor: Dale Lane

DefaultVendor= 0x12d1;
DefaultProduct= 0x1001

# choose one of these:
DetachStorageOnly=1
;HuaweiMode=1
Tietysti kuten kommentissa kerrotaankin, voidaan valita jompikumpi, DetachStorageOnly tai HuaweiMode. Muut laitteet voidaan kommentoida pois #- tai ;-merkeillä. Asetustiedosto kopioidaan /etc-hakemistoon. Kun asetustiedosto on paikallaan, ohjelma suoritetaan komennolla ./usb_modeswitch, jos työhakemisto on hakemisto, jossa ohjelma sijaitsee. Kun ohjelma on suoritettu, /dev-hakemistossa pitäisi näkyä ttyUSBx-tiedostoja.

Kun laitetiedostot näkyvät, voi alkaa virittää verkkoyhteyttä. Ensinnä tulee asentaa komentosarjat ja asetustiedostot, joilla yhteys muodostetaan. Nämä ja asennusohjeet saa sivulta http://wiki.ubuntu-fi.org/Matkapuhelin_modeemina. Sivulla on myös linkit eri operaattoreiden liittymissä toimiviin asetustiedostoihin. pon-komento ei mene ilman lisäsäätöä taustalle, joten komentorivi, jolta pon käynnistetään, jää odottamaan ponin päättymistä.

Kun pon onnistuu ottamaan yhteyden, se tulostaa likimain seuraavaa:

$ pon dna
AT
OK
ATH
OK
ATE1
OK
AT+CGDCONT=1,"IP","internet","0.0.0.0",0,0
OK
ATD*99#
CONNECT
Serial connection established.
using channel 15
Using interface ppp0
Connect: ppp0 <--> /dev/ttyUSB0
sent [LCP ConfReq id=0x1 ]
rcvd [LCP ConfReq id=0x2c ]
sent [LCP ConfRej id=0x2c ]
rcvd [LCP ConfAck id=0x1 ]
rcvd [LCP ConfReq id=0x2d ]
sent [LCP ConfNak id=0x2d ]
rcvd [LCP ConfReq id=0x2e ]
sent [LCP ConfAck id=0x2e ]
sent [PAP AuthReq id=0x1 user="hp" password=""]
rcvd [LCP DiscReq id=0x2f magic=0x358a3d3]
rcvd [PAP AuthAck id=0x1 ""]
PAP authentication succeeded
sent [IPCP ConfReq id=0x1 ]
rcvd [IPCP ConfNak id=0x1 ]
sent [IPCP ConfReq id=0x2 ]
rcvd [IPCP ConfReq id=0x12]
sent [IPCP ConfNak id=0x12 ]
rcvd [IPCP ConfNak id=0x2 ]
sent [IPCP ConfReq id=0x3 ]
rcvd [IPCP ConfReq id=0x13]
sent [IPCP ConfAck id=0x13]
rcvd [IPCP ConfAck id=0x3 ]
Could not determine remote IP address: defaulting to 10.64.64.64
Cannot determine ethernet address for proxy ARP
local IP address xxx.xxx.xxx.xxx
remote IP address 10.64.64.64
Script /etc/ppp/ip-up started (pid 30389)
Script /etc/ppp/ip-up finished (pid 30389), status = 0x0
Jos Linux käyttää oletusreittinä esimerkiksi eth0:aa, ei yhteys nettitikun kautta välttämättä toimi. Linuxille pitää kertoa, että nettiin tulee reitittää ppp0:n kautta. Reititystaulun voi tulostaa komennolla route -n. Esimerkiksi seuraava reititystaulu 
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.64.64.64 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0
näyttäisi toimivan. Jotta pon korvaisi mahdollisen oletusreitin ppp0-reitillä, voi yhteysasetustiedostoon /etc/ppp/peers/ joutua lisäämään asetuksen replacedefaultroute. 

Nimipalvelimet voi Ubunnussa säätää -kuvakkeella, joka avaa Verkon asetukset -ikkunan, jolla on DNS-välilehti. DNA:n nimipalvelimet ovat 217.78.192.22 ja 217.78.192.78. DNA ei kerro palvelimien osoitteita Nettikaistan tilaajalle, koska ehkä olettaa, että tilaajan ei tarvitse edes tietää niitä, koska yhteysohjelma osaa hakea ne itse. Wvdial näyttäisikin hakevan ne, mutta yllä esitetty pon-komentosarja ei.

Palomuuri saattaa myös estää ppp-yhteyttä toimimasta. Firestarter-palomuuri on lisäksi oletusarvoisesti säädetty käynnistymään uudestaan aina, kun ppp-yhteys avataan. Jos yhteys ei toimi, vaikka pon toimisikin, kannattaa siis varmistaa, ettei palomuuri ole päällä.

Keskeytystilakin saattaa sekoittaa nettitikun. Ainakin jos kone laitetaan keskeytystilaan, kun tikku on kytkettynä, mutta käynnistetään, kun tikku ei ole kytkettynä, saattaa käydä, että tikku näkyy vain yhtenä ttyUSBn-laitteena. Tällöin pon ei toimi, vaan sanoo, että "Connect script failed". Ongelma saattaa ratketa laittamalla kone kerran keskeytystilaan ja käynnistämällä tikun ollessa koko ajan kiinni koneessa.

Ei kommentteja: