Mina förutsättningar:
* Sony Ericsson m600i 3g-telefon
* Abbonnemang från Tre till telefonen
* Fujitsu Siemens Amilo Pro V3205 laptop, inbyggd bluetooth-mojäng
* Ubuntu 7.04
Det finns miljarders med sidor på nätet som förklarar hur du sätter upp mobilt bredband mot din telefon via bluetooth, men många av dem gör det onödigt krångligt, med små PAN som delar ut ipadress till telefonen och natar i datorn och annat skit. Jättekrångligt, som vanligt, i framtiden. Jag har en SE m600i, så chansen är stor att det funkar rakt av på andra SE-telefoner. För andra tillverkare måste nog en del saker tweakas lite. Jag har försökt att nämna det vid partier som är berörda.
Börja med att installera bluetooth-paketen och ppp:
root@mamba# apt-get install bluez-utils ppp
Se till att din dator ser din bluetooth-mojäng:
root@mamba# lsusb
Bus 003 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Fint, datorn ser min bluetooth-mojäng. Syns den inte får du kolla så din kernel har stöd för den.
Kolla vilka bluetooth-grejer som finns på den:
root@mamba# hcitool dev
Devices:
hci0 00:11:E2:FC:B0:13
Min har som synes bara en adapter.
Kolla vilket mode din adapter är i:
root@mamba# hciconfig
hci0: Type: USB
BD Address: 00:11:E2:FC:B0:13 ACL MTU: 384:8 SCO MTU: 64:8
UP RUNNING PSCAN
RX bytes:66629 acl:520 sco:0 events:670 errors:0
TX bytes:39969 acl:546 sco:0 commands:49 errors:0
När modulen laddas sätts devicen i enbart PSCAN mode som default. Det betyder att den är "connectable" men osynlig. Det tog en stund innan jag upptäckte att datorn måste vara i PSCAN+ISCAN-mode (ISCAN = synlig) för att datorn ska kunna paira sig med telefonen. Är datorn i enbart PSCAN-mode fungerade det inte för mig. Kan vara en bugg i mjukvaran, grottade inte mer i det.
Sätt din bluetooth-adapter i piscan-mode:
root@mamba# hciconfig hci0 piscan
root@mamba# hciconfig
hci0: Type: USB
BD Address: 00:11:E2:FC:B0:13 ACL MTU: 384:8 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:66694 acl:520 sco:0 events:680 errors:0
TX bytes:40004 acl:546 sco:0 commands:59 errors:0
Gott. Nu ska ta vi ta fram information om telefonen, slå på bluetooth på telefonen om det inte redan är gjort:
root@mamba# hcitool scan
Scanning ...
00:12:EE:B1:D1:15 Telefon
Min telefon har det fantastiskt fantasifulla namnet "Telefon" och har MAC-adress 00:12:EE:B1:D1:15.
När vi tagit reda på MAC-adressen för telefonen behöver du ta reda på vilken kanal som modem-tjänsten finns på. Det gör du så här:
root@mamba# sdptool search --bdaddr 00:12:EE:B1:D1:15 dun
Searching for dun on 00:12:EE:B1:D1:15 ...
Service Name: Dial-up Networking
Service Description: Symbian OS,UIQ phone
Service Provider: Sony Ericsson
Service RecHandle: 0x1003c
Service Class ID List:
"Dialup Networking" (0x1103)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 7
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100
På min telefon har modem-tjänsten kanal 7.
Protocol Descriptor List:
Channel: 7
Nu ska vi confa bluetooth i datorn så den vet vilken enhet och kanal den ska prata med.
Det görs med filerna /etc/bluetooth/hcid.conf och /etc/bluetooth/rfcomm.conf.
Så här ser min hcid.conf ut:
# HCId options
options {
autoinit yes;
security auto;
pairing multi;
passkey "abcd";
}
# Default settings for HCI devices
device {
name "%h-%d";
class 0x3e0100;
iscan enable; pscan enable;
lm accept;
lp rswitch,hold,sniff,park;
}
Det du behöver ändra är raden passkey, vilket är pin-koden till datorn. Den är valfri, 4 tecken. Mer än 4 tecken ska tydligen funka, men inte med min telefon. Med Nokia går det, enligt forumen.
rfcomm0 {
bind yes;
device 00:12:EE:B1:D1:15;
channel 7;
comment "Bluetooth modem device";
}
Rfcomm.conf specificerar vilka bluetooth-devices som ska användas och vilken kanal de använder.
I rfcomm.conf behöver du primärt ändra två saker, vilket device som ska användas (MAC-adressen) och vilken kanal som ska användas. Ändra raden device så telefonens MAC-adress står där, samt kanalen som din telefon använder tilll modem-tjänsten.
Har du fler tjänster som du vill använda i din telefon, tex filöverföring, lägger du till de i rfcomm.conf-filen under första devicen:
rfcomm1 {
bind yes;
device 00:12:EE:B1:D1:15;
channel 4;
comment "Bluetooth file transfer device";
}
Hur du för över filer från datorn till telefonen går jag inte in på här.
Raskt vidare!
Vi har ändrat i config-filer, så vi behöver starta om tjänsterna som använder dem:
root@mamba# /etc/init.d/bluetooth restart
* Restarting Bluetooth services
...done.
Nu testar vi om vår conf funkar:
(releasea först, så inga eventuella kopplingar finns kvar)
root@mamba# rfcomm release all
root@mamba# rfcomm connect 0
Connected /dev/rfcomm0 to 00:12:EE:B1:D1:15 on channel 7
Press CTRL-C for hangup
Disconnected
Ok, det funkade ju!
Rfcomm connect 0 säger åt rfcomm att connecta device 0 (som vi specificerade i rfcomm.conf). Om det funkar så säger den Connected /dev/rfcomm0 to 00:12:EE:B1:D1:15 on channel 7. Det stämmer ju, vi specificerade ju kanal 7 på devicen med MAC-adress 00:12:EE:B1:D1:15. Tryck ctrl-c för att avbryta.
Grymt, nu kan vi koppla datorn till telefonen via bluetooth. Nu ska vi sätta upp ppp för uppringt internet. Låter så old school att säga "uppringt internet", men det är precis vad vi gör. Det var första gången på säkert 7 år som jag satte upp en modemkoppling i Linux, så det tog en stund att få det fungerande.
Först använde jag wvdial, som en del andra har använt till Huaweis 3g-modem, men jag fick inte wvdial att spela med min telefon, och efter en del fipplande utan framgång sket jag i det och skrev ett eget ppp-script. Det är möjligt att det går att få det fungerandes med wvdial, posta gärna hur du gjorde här då.
Gå till /etc/ppp. Skapa katalogen peers, om den inte redan finns. Skapa en fil med valfritt namn i katalogen peers, min heter "tre".
root@mamba# vim tre
I den står det följande:
defaultroute
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/tre"
debug
/dev/rfcomm0
115200
updetach
usepeerdns
Spara och avsluta.
Jag tänker inte gå in på vad scriptet gör mer än att den kallar på ett chat-program (nej, inte ett sånt chat-program

Nu ska vi fixa "confen" som scriptet kallar på.
Gå till /etc. Skapa katalogen chatscripts, om den inte redan finns. Skapa en fil med valfritt namn i katalogen chatscripts, min heter "tre".
root@mamba# vim tre
I den står det följande:
ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT DELAYED
'' ATZ
OK ATE1
OK 'AT+cgdcont=1,"IP","data.tre.se"'
OK-AT-OK "ATDT*99***1#"
CONNECT ''
Spara och avsluta.
Jag tänker återigen inte gå in mer på vad scriptet gör mer än att det först sätter lite variablar på vad den ska avbryta på, och senare specificerar hur den ska prata med mottagande part och vad mottagande part heter, samt "ringer upp".
Det du behöver ändra på är raden OK 'AT+cgdcont=1,"IP","data.tre.se"' om du har en annan operatör än tre och raden under om du har en annan telefon än SE. Nokia har *99#, om jag inte minns fel. Tele2 har internet.tele2.se tror jag, du får kolla. Det ser du genom att öppna en anslutning till modemet (beskrivit tidigare (rfcomm connect 0)) och skriva "at+cgdcont?".
Nu är det klart. För att ringa upp skriver du:
root@mamba# pon tre (eller vad du nu valde för filnamn på din fil i /etc/ppp/peers)
Serial connection established.
using channel 4
Using interface ppp0
Connect: ppp0 <--> /dev/rfcomm0
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x66b259f4> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x2 <auth chap MD5> <accomp> <pcomp> <asyncmap 0x0> <magic 0x582a1363>]
sent [LCP ConfNak id=0x2 <auth pap>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x66b259f4> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x3 <auth pap> <accomp> <pcomp> <asyncmap 0x0> <magic 0x582a1363>]
sent [LCP ConfAck id=0x3 <auth pap> <accomp> <pcomp> <asyncmap 0x0> <magic 0x582a1363>]
sent [LCP EchoReq id=0x0 magic=0x66b259f4]
sent [PAP AuthReq id=0x1 user="mamba" password=<hidden>]
rcvd [LCP EchoRep id=0x0 magic=0x582a1363]
rcvd [PAP AuthAck id=0x1 "Congratulations!"]
Remote message: Congratulations!
PAP authentication succeeded
sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
rcvd [LCP ProtRej id=0x1 80 fd 01 01 00 0f 1a 04 78 00 18 04 78 00 15 03 2f]
Protocol-Reject for 'Compression Control Protocol' (0x80fd) received
rcvd [IPCP ConfReq id=0x1]
sent [IPCP ConfNak id=0x1 <addr 0.0.0.0>]
rcvd [IPCP ConfNak id=0x1 <addr 10.143.226.67> <ms-dns1 80.251.192.244> <ms-dns3 80.251.192.245>]
sent [IPCP ConfReq id=0x2 <compress VJ 0f 01> <addr 10.143.226.67> <ms-dns1 80.251.192.244> <ms-dns3 80.251.192.245>]
rcvd [IPCP ConfReq id=0x2]
sent [IPCP ConfAck id=0x2]
rcvd [IPCP ConfAck id=0x2 <compress VJ 0f 01> <addr 10.143.226.67> <ms-dns1 80.251.192.244> <ms-dns3 80.251.192.245>]
Could not determine remote IP address: defaulting to 10.64.64.64
Cannot determine ethernet address for proxy ARP
local IP address 10.143.226.67
remote IP address 10.64.64.64
primary DNS address 80.251.192.244
secondary DNS address 80.251.192.245
Ser fint ut. Testa att pinga nånstans:
root@mamba# ping ftp.sunet.se
PING ftp.sunet.se (194.71.11.69) 56(84) bytes of data.
64 bytes from 194.71.11.69: icmp_seq=1 ttl=53 time=183 ms
64 bytes from 194.71.11.69: icmp_seq=2 ttl=53 time=183 ms
64 bytes from 194.71.11.69: icmp_seq=3 ttl=53 time=180 ms
Funkar ju asbra!
Nu har du en fungerande uppkoppling till internet via bluetooth till din mobiltelefon.
För att stänga av uppkopplingen, döda pppd-processen. Jag gjorde ett script som gör det:
root@mamba# vim poff
#!/bin/sh
PPPD=`pidof pppd`
kill -9 $PPPD
exit 0
root@mamba# chmod +x poff
root@mamba# ./poff
root@mamba# pidof pppd
root@mamba#
/Andreas