Po┼é─ůczenie GPRS przez bluetooth z Noki─ů 6310i

Po┼é─ůczenie PPP przez bluetooth

UWAGA: to jest stara wersja strony. Id┼║ do tej strony

Po┼é─ůczenie wykonuje si─Ö bardzo prosto; w sumie prawie wszystko ju┼╝ jest w systemie. Ja u┼╝y┼éem Bluetooth Dongle USB Dlinka DBT-120, Nokii 6310i. Oczywi┼Ťcie debian sid, j─ůdro 2.6.11.11.

Przygotowania

W nokii: w┼é─ůczy─ç bluetootha oraz identyfikacje przez inne urz─ůdzenia (wersja softu nokii - V5.52. W przypadku starszych wersji softu mog─ů by─ç problemy z po┼é─ůczeniem poprzez bluetooth - w takim przypadku nale┼╝y wykona─ç upgrade firmware). Trzeba przekompilowa─ç jajko z w┼é─ůczeniem blutetoot'a, ppp no i oczywi┼Ťcie USB. Moja przyk┼éadowa konfiguracja:


    CONFIG_BT=m
    CONFIG_BT_L2CAP=m
    CONFIG_BT_SCO=m
    CONFIG_BT_RFCOMM=m
    CONFIG_BT_RFCOMM_TTY=y
    CONFIG_BT_BNEP=m
    CONFIG_BT_BNEP_MC_FILTER=y
    CONFIG_BT_BNEP_PROTO_FILTER=y
    CONFIG_BT_HIDP=m
    CONFIG_BT_HCIUSB=m
    CONFIG_BT_HCIUSB_SCO=y
    # CONFIG_BT_HCIUART is not set
    CONFIG_BT_HCIBCM203X=m
    CONFIG_BT_HCIBPA10X=m
    CONFIG_BT_HCIBFUSB=m
    CONFIG_BT_HCIDTL1=m
    CONFIG_BT_HCIBT3C=m
    CONFIG_BT_HCIBLUECARD=m
    CONFIG_BT_HCIBTUART=m
    CONFIG_BT_HCIVHCI=m

    CONFIG_PPP=m
    # CONFIG_PPP_MULTILINK is not set
    CONFIG_PPP_FILTER=y
    CONFIG_PPP_ASYNC=m
    CONFIG_PPP_SYNC_TTY=m
    CONFIG_PPP_DEFLATE=m
    CONFIG_PPP_BSDCOMP=m
    CONFIG_PPPOE=m
    CONFIG_PPPOATM=m 

Po pod┼é─ůczeniu bluetootha system powinien go wykry─ç. W debianie instalujemy pakiety bluez-utils, bluez-pin, ppp. W pliku /etc/bluetooth/pin wprowadzamy pin w postaci



    PIN:1234

Przy po┼é─ůczeniu zostaniemy zapytani przez nasz telefon w┼éa┼Ťnie przez ten pin.

Uruchomienie

Sprawdzamy czy w og├│le bluetooth jest widoczny:


    # hciconfig -a
    hci0:   Type: USB
                                BD Address: XX:XX:XX:XX:XX:XX ACL MTU: 192:8 SCO MTU: 64:8
                                UP RUNNING PSCAN ISCAN
                                RX bytes:5046 acl:147 sco:0 events:212 errors:0
                                TX bytes:3835 acl:127 sco:0 commands:52 errors:0
                                Features: 0xff 0xff 0x0f 0x00 0x00 0x00 0x00 0x00
                                Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
                                Link policy: RSWITCH HOLD SNIFF PARK
                                Link mode: SLAVE ACCEPT
                                Name: 'localhost-0'
                                Class: 0x3e0100
                                Service Classes: Networking, Rendering, Capturing
                                Device Class: Computer, Uncategorized
                                HCI Ver: 1.1 (0x1) HCI Rev: 0x20d LMP Ver: 1.1 (0x1) LMP Subver: 0x20d
                                Manufacturer: Cambridge Silicon Radio (10)

XX:XX:XX:XX:XX:XX to mac adres naszego bluetootha. Nazwa to nazwa naszego hosta + numer interfejsu. Nast─Öpnie:


    # hcitool scan
        Scanning ...
    	YY:YY:YY:YY:YY:YY	Nokia 6130i

YY:YY:YY:YY:YY:YY to mac adres naszego telefonu. Nazwa jest taka jak ustawiona w telefonie. Je┼╝eli widoczne jest wi─Öcej urz─ůdze┼ä to ca┼ékiem mo┼╝liwe, ┼╝e kto┼Ť w okolicy ma w┼é─ůczony bluetooth w telefonie :). W pliku /etc/bluetooth/rfcomm.conf zaszywamy na sta┼ée ten mac adres ┼╝eby specjalnie nie robi─ç ustawie┼ä z ka┼╝dym razem:


    rfcomm0 {
                bind yes;
                device YY:YY:YY:YY:YY:YY;
                channel     1;
                comment "Nokia 6310i";
    }    

Oczywi┼Ťcie YY:YY:YY:YY:YY:YY trzeba zamieni─ç na mac adres telefonu. Zosta┼éo jeszcze zrobi─ç odpowiednie skrypty startowe. Mo┼╝na to wykona─ç przy pomocy pppconfig lub stworzy─ç je r─Öcznie:


    # cat /etc/chatscripts/gprs
    TIMEOUT         5
    ECHO            ON
    ABORT           '\nBUSY\r'
    ABORT           '\nERROR\r'
    ABORT           '\nNO ANSWER\r'
    ABORT           '\nNO CARRIER\r'
    ABORT           '\nNO DIALTONE\r'
    ABORT           '\nRINGING\r\n\r\nRINGING\r'
    ''              \rAT
    TIMEOUT         12
    OK              ATE1
    OK              'AT+CGDCONT=1,"IP","www.plusgsm.pl","",0,0'
    OK              ATD*99***1#
    CONNECT ""

    # cat /etc/ppp/peers/gprs
    /dev/rfcomm0 57600
    connect '/usr/sbin/chat -v -f /etc/chatscripts/gprs'
    noauth
    defaultroute
    debug
    noipdefault
    local
    ipcp-accept-local
    novj
    novjccomp
    lcp-echo-failure 10000
    lcp-echo-interval 1000

Skrypty s─ů dla PlusGSM, dla innego trzeba zmieni─ç linijk─Ö 'AT+CGDCONT=1,"IP","www.plusgsm.pl","",0,0' na tak─ů jaka powinna by─ç dla danego operatora.
Niekiedy nale┼╝y jeszcze doda─ç ATZ przed ATE1 w celu zresetowania modemu w telefonie.

Uruchomienie

Zostaje tylko wykonanie po┼é─ůczenia. Na spos├│b debianowy jest to:


    # pon gprs

W logach powinno by─ç mniej wiecej co┼Ť takiego:


Jul 10 10:23:03 localhost pppd[6242]: pppd 2.4.3 started by root, uid 0
Jul 10 10:23:23 localhost chat[6246]: timeout set to 5 seconds
Jul 10 10:23:23 localhost chat[6246]: abort on (\nBUSY\r)
Jul 10 10:23:23 localhost chat[6246]: abort on (\nERROR\r)
Jul 10 10:23:23 localhost chat[6246]: abort on (\nNO ANSWER\r)
Jul 10 10:23:23 localhost chat[6246]: abort on (\nNO CARRIER\r)
Jul 10 10:23:23 localhost chat[6246]: abort on (\nNO DIALTONE\r)
Jul 10 10:23:23 localhost chat[6246]: abort on (\nRINGING\r\n\r\nRINGING\r)
Jul 10 10:23:23 localhost chat[6246]: send (^MAT^M)
Jul 10 10:23:23 localhost chat[6246]: timeout set to 12 seconds
Jul 10 10:23:23 localhost chat[6246]: expect (OK)
Jul 10 10:23:23 localhost chat[6246]: ^MAT^M^M
Jul 10 10:23:23 localhost chat[6246]: OK
Jul 10 10:23:23 localhost chat[6246]:  -- got it
Jul 10 10:23:23 localhost chat[6246]: send (ATE1^M)
Jul 10 10:23:23 localhost chat[6246]: expect (OK)
Jul 10 10:23:23 localhost chat[6246]: ^M
Jul 10 10:23:23 localhost chat[6246]: ATE1^M^M
Jul 10 10:23:23 localhost chat[6246]: OK
Jul 10 10:23:23 localhost chat[6246]:  -- got it
Jul 10 10:23:23 localhost chat[6246]: send (AT+CGDCONT=1,"IP","www.plusgsm.pl","",0,0^M)
Jul 10 10:23:24 localhost chat[6246]: expect (OK)
Jul 10 10:23:24 localhost chat[6246]: ^M
Jul 10 10:23:24 localhost chat[6246]: AT+CGDCONT=1,"IP","www.plusgsm.pl","",0,0^M^M
Jul 10 10:23:24 localhost chat[6246]: OK
Jul 10 10:23:24 localhost chat[6246]:  -- got it
Jul 10 10:23:24 localhost chat[6246]: send (ATD*99***1#^M)
Jul 10 10:23:24 localhost chat[6246]: expect (CONNECT)
Jul 10 10:23:24 localhost chat[6246]: ^M
Jul 10 10:23:27 localhost chat[6246]: ATD*99***1#^M^M
Jul 10 10:23:27 localhost chat[6246]: CONNECT
Jul 10 10:23:27 localhost chat[6246]:  -- got it
Jul 10 10:23:27 localhost chat[6246]: send (^M)
Jul 10 10:23:27 localhost pppd[6242]: Serial connection established.
Jul 10 10:23:27 localhost pppd[6242]: using channel 1
Jul 10 10:23:27 localhost pppd[6242]: Using interface ppp0
Jul 10 10:23:27 localhost pppd[6242]: Connect: ppp0 <--> /dev/rfcomm0
Jul 10 10:23:28 localhost pppd[6242]: sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xa0458d44> <pcomp> <accomp>]
Jul 10 10:23:28 localhost pppd[6242]: rcvd [LCP ConfRej id=0x1 <magic 0xa0458d44> <pcomp> <accomp>]
Jul 10 10:23:28 localhost pppd[6242]: sent [LCP ConfReq id=0x2 <asyncmap 0x0>]
Jul 10 10:23:28 localhost pppd[6242]: rcvd [LCP ConfAck id=0x2 <asyncmap 0x0>]
Jul 10 10:23:30 localhost pppd[6242]: rcvd [LCP ConfReq id=0x0 <auth pap> <mru 1500> <asyncmap 0xa0000>]
Jul 10 10:23:30 localhost pppd[6242]: sent [LCP ConfAck id=0x0 <auth pap> <mru 1500> <asyncmap 0xa0000>]
Jul 10 10:23:30 localhost pppd[6242]: sent [LCP EchoReq id=0x0 magic=0x0]
Jul 10 10:23:30 localhost pppd[6242]: sent [PAP AuthReq id=0x1 user="localhost" password=<hidden>]
Jul 10 10:23:30 localhost pppd[6242]: rcvd [LCP EchoRep id=0x0 00]
Jul 10 10:23:30 localhost pppd[6242]: lcp: received short Echo-Reply, length 1
Jul 10 10:23:30 localhost pppd[6242]: rcvd [PAP AuthAck id=0x1 ""]
Jul 10 10:23:30 localhost pppd[6242]: PAP authentication succeeded
Jul 10 10:23:30 localhost kernel: PPP BSD Compression module registered
Jul 10 10:23:30 localhost kernel: PPP Deflate Compression module registered
Jul 10 10:23:30 localhost pppd[6242]: sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
Jul 10 10:23:30 localhost pppd[6242]: sent [IPCP ConfReq id=0x1 <addr 0.0.0.0>]
Jul 10 10:23:30 localhost pppd[6242]: rcvd [IPCP ConfReq id=0x0 <addr 10.6.6.6>]
Jul 10 10:23:30 localhost pppd[6242]: sent [IPCP ConfAck id=0x0 <addr 10.6.6.6>]
Jul 10 10:23:30 localhost pppd[6242]: rcvd [LCP ProtRej id=0x0 80 fd 01 01 00 0f 1a 04 78 00 18 04 78 00 15 03 2f]
Jul 10 10:23:30 localhost pppd[6242]: Protocol-Reject for 'Compression Control Protocol' (0x80fd) received
Jul 10 10:23:32 localhost pppd[6242]: rcvd [IPCP ConfNak id=0x1 <addr 172.17.66.153>]
Jul 10 10:23:32 localhost pppd[6242]: sent [IPCP ConfReq id=0x2 <addr 172.17.66.153>]
Jul 10 10:23:32 localhost pppd[6242]: rcvd [IPCP ConfAck id=0x2 <addr 172.17.66.153>]
Jul 10 10:23:32 localhost pppd[6242]: local  IP address 172.17.66.153
Jul 10 10:23:32 localhost pppd[6242]: remote IP address 10.6.6.6
Jul 10 10:23:32 localhost pppd[6242]: Script /etc/ppp/ip-up started (pid 6276)
Jul 10 10:23:32 localhost pppd[6242]: Script /etc/ppp/ip-up finished (pid 6276), status = 0x0

Mo┼╝na jeszcze dla pewno┼Ťci wykona─ç ifconfig, sprawdzi─ç czy jest interfejs ppp0 i spr├│bowa─ç wykona─ç np. ping www.google.pl (niestety, czasy s─ů rz─Ödu 700 - 1000ms).
Je┼╝eli wszystko dzia┼éa to mo┼╝na usun─ů─ç opcje debug z ppp oraz -v z wywo┼éania chat, b─Ödzie mniej informacji w logach.
Roz┼é─ůczenie po┼é─ůczenia nast─Öpuje po wywo┼éaniu polecenia:


    # poff gprs

Zostaje nam zrobienie tylko kosmetyki - dodanie user├│w do grupy dialup ┼╝eby mogli ze swojego konta uruchamia─ç po┼é─ůczenie oraz ewentualnie skonfigurowanie appletu z GNOME, ┼╝eby mie─ç "┼éadny" graficzny klikany program do po┼é─ůczenia.