telefon komórkowy jako modem gprs przez bluetooth
: 08 wrz 2006, 00:58
Poniższy opis powstał w wyniku konieczności użycia telefonu SE K700i jako modemu.
Brak jednoznacznego opisu w sieci, zmusił mnie do wysiłku intelektualnego (do tej pory pracowałem tylko na FreeBSD).
Korzystając z dwóch artykułów w sieci:
- Of Linux, GPRS Phones, Serial Cable, Irda, Bluetooth and USB
Mikko Rapeli
- SZARP HOWTO: SZARP v2.2 + Debian/Red Hat - 7.15.14. Łączenie się z Internetem przez GPRS
udało mi się zmusić Ubuntu do łączenia z netem przez gprs via bluetooth.
A więc po kolei.
1. Wszystkie operacje wykonałem na świerzo zainstalowanym Ubuntu 6.06 LTS na "smaku" Kubuntu
2. Po włożeniu klucza Bluetooth do usb, otrzymałem piękny komunikat iż został on wykryty
3. Telefon komunikuje się przez ObexFile transfer, jednakże ikona dialup w menu Bluetooth nie pozwala na wykonanie sensownej akcji (ja się na tym nie znam, pierwszy raz siedzę pod Linuxem)
4. pod konsolą wbijamy polecenie:
w odpowiedzi otrzymujemy coś w rodzaju:
znaczy bluetooth działa.
5. Włączamy bluetooth w telefonie, pod konsolą wbijamy:
w odpowiedzi otrzymujemu:
Otrzymany adres jest adresem naszego telefonu. W przypadku, gdy nie otrzymamy go w wyniku powyższej komendy, należy wyłączyć bluta w telefonie i włączyć go ponownie, można zrestartować również bluta pod Ubuntu. U mnie odpowiedź pojawiła się za drugim razem.
6. Dla pewności wbijamy: podając oczywiście adres uzyskany w poprzednim kroku,
w odpowiedzi możemy spodziewać się mniej więcej czegoś takiego:
znaczy się pakiety między kompem a telefonem fruwają.
7. wbijamy:
i uzyskujemy coś takiego:
informacja ta potwierdza istnienie usługi Dialup w naszym telefonie, zapamiętujemy z tego jedynie parametr Channel (w powyższym przypadku Channel=1)
8. Edytujemy plik /etc/bluetooth/rfcomm.conf powinien wyglądać mniej więcej tak:
Jako Device podajemy adres wykrytego wcześniej telefonu (pkt 5), jakko channel parametr z punktu 7.
9. Sprawdzamy zawartość pliku /etc/bluetooth/pin, zapamiętujemy lub zmieniamy i też zapamiętujemy
10. Wykonujemy:
to powinno zrestartować bluta w kompie
11. Wykonujemy:
otrzymujemy coś takiego:
to dobry znak. adres telefenu sparował się z interfejsem rfcomm0
12. Aby operacja ta wykonywała się przy każdym starcie systemu możemy wykonać:
13. Teraz przystąpmy do konfiguracji połączenia z siecią orange, oczywiście analogicznie można skonfigurować połączenie dla ery lub plusa.
Najważniejsze informacje:
Plus APN: "www.plusgsm.pl" (użytkownik: brak, hasło: brak).
Idea APN: "www.orange.pl" lub "www.idea.pl" (użytkownik: ppp, hasło: ppp).
Era APN: "erainternet" (użytkownik: erainternet, hasło: erainternet).
W przypadku korzystania z innej sieci niż orange, należy zamienić w poniższych plikach odpowiadające sobie wpisy (tzn, adres APN, usera i hasło).
Zaczynamy od utworzenia: /etc/ppp/peers/gprs
14. Tworzymy plik /etc/chatscripts/gprs-connect-chat
wersja dla nokii (sprawdzałem na 6230)
wersja dla ericssonów (sprawdzałem na k700i)
15. Tworzymy plik /etc/chatscripts/gprs-disconnect-chat
16. Tworzymy plik /etc/ppp/chap-secrets
17. Tworzymy plik /etc/ppp/ip-up.local
oraz plik /etc/ppp/ip-down.local
18. W przypadku gdy używamy nokii, w pliku /etc/ppp/options należy zakomentować wpis:
Powyższa czynność zapobiega rozłączaniu się Nokii po ok. dwóch minutach użytkowania neta.
W przypadu K700 nie stwierdziłem takiego zjawiska.
Oczywiście jeżeli inne aparaty będą rozłączały połączenie należy również wykonać powyższą operację.
19. W telefonie wyszukujemy urządzeń Bluetooth, na liście powienien pojawić się nasz komputer, dodajemy go do urządzeń zaufanych używając kodu pin określonego w punkcie 9.
W przypadku Nokii warto również zaznaczyć opcję łączenia z urządzeniem bez potwierdzania.
20. Wykonujemy komendę
... w tacce systemowej zaczyna migać ikona bluta, a telefon powinien po chwili pokazać komunikat o nawiązywaniu połączenia gprs.
Zaznaczam, że wszystkie opisane tu czynności wykonałem mając pierwszy raz styczność z linuksem, co więcej mając spore doświadczenie w sieciach, wstyd się przyznać nie miałem okazji samodzielnie konfigurować modemu.
Pierwszą konfigurację wykonałem dla K700, po zmianie telefonu na Nokię 6230 wystąpiły błędy w skrypcie nawiązywania komunikacji z modemem. Stąd też dwie wersje pliku, osobny dla k700 i osobny dla Nokii, w rzeczywistości różnią się tylko w miejscu:
K700 nie rozumie polcenia AT+...., stąd APN dla tego telefonu podawany jest w ciągu ATD.
W przypadku zmiany telefonu, wystarczy zczytać jego adres (pkt 5) i dokonać zmian w pliku /etc/bluetooth/rfcomm.conf wg pkt 8.
No i jakby tu powiedzieć na koniec:
SOA#1 (U mnie działa).
nieelegancko, ale skutecznie rozłącza neta.
W załączniku pliki z powyższej solucji.
Brak jednoznacznego opisu w sieci, zmusił mnie do wysiłku intelektualnego (do tej pory pracowałem tylko na FreeBSD).
Korzystając z dwóch artykułów w sieci:
- Of Linux, GPRS Phones, Serial Cable, Irda, Bluetooth and USB
Mikko Rapeli
- SZARP HOWTO: SZARP v2.2 + Debian/Red Hat - 7.15.14. Łączenie się z Internetem przez GPRS
udało mi się zmusić Ubuntu do łączenia z netem przez gprs via bluetooth.
A więc po kolei.
1. Wszystkie operacje wykonałem na świerzo zainstalowanym Ubuntu 6.06 LTS na "smaku" Kubuntu
2. Po włożeniu klucza Bluetooth do usb, otrzymałem piękny komunikat iż został on wykryty
3. Telefon komunikuje się przez ObexFile transfer, jednakże ikona dialup w menu Bluetooth nie pozwala na wykonanie sensownej akcji (ja się na tym nie znam, pierwszy raz siedzę pod Linuxem)
4. pod konsolą wbijamy polecenie:
Kod: Zaznacz cały
# hciconfig
Kod: Zaznacz cały
hci0: Type: USB
BD Address: 00:11:67:05:4B:1E ACL MTU: 678:8 SCO MTU: 48:10
UP RUNNING PSCAN ISCAN
RX bytes:1077766 acl:4908 sco:0 events:4001 errors:0
TX bytes:308521 acl:3013 sco:0 commands:82 errors:0
5. Włączamy bluetooth w telefonie, pod konsolą wbijamy:
Kod: Zaznacz cały
# hcitool inq
Kod: Zaznacz cały
Inquiring ...
Inquiring ...
00:12:62:D4:97:0D clock offset: 0x13e4 class: 0x502204
6. Dla pewności wbijamy:
Kod: Zaznacz cały
# l2ping 00:12:62:D4:97:0D
w odpowiedzi możemy spodziewać się mniej więcej czegoś takiego:
Kod: Zaznacz cały
Ping: 00:12:62:D4:97:0D from 00:11:67:05:4B:1E (data size 44) ...
0 bytes from 00:12:62:D4:97:0D id 0 time 514.95ms
0 bytes from 00:12:62:D4:97:0D id 1 time 8.22ms
0 bytes from 00:12:62:D4:97:0D id 2 time 9.07ms
0 bytes from 00:12:62:D4:97:0D id 3 time 7.87ms
0 bytes from 00:12:62:D4:97:0D id 4 time 8.70ms
5 sent, 5 received, 0% loss
7. wbijamy:
Kod: Zaznacz cały
# sdptool search DUN
Kod: Zaznacz cały
Inquiring ...
Searching for DUN on 00:11:67:05:4b:1e ...
Service Name: Dial-Up Networking
Service RecHandle: 0x10005
Service Class ID List:
"Dialup Networking" (0x1103)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100
8. Edytujemy plik /etc/bluetooth/rfcomm.conf powinien wyglądać mniej więcej tak:
Kod: Zaznacz cały
rfcomm0 {
bind yes;
# # Bluetooth address of the device
device 00:12:62:D4:97:0D;
# # RFCOMM channel for the connection
channel 1;
# # Description of the connection
comment "moj telefon";
}
9. Sprawdzamy zawartość pliku /etc/bluetooth/pin, zapamiętujemy lub zmieniamy i też zapamiętujemy
10. Wykonujemy:
Kod: Zaznacz cały
# /etc/init.d/bluez-utils restart
11. Wykonujemy:
Kod: Zaznacz cały
# rfcomm
Kod: Zaznacz cały
rfcomm0: 00:12:62:D4:97:0D channel 1 clean
12. Aby operacja ta wykonywała się przy każdym starcie systemu możemy wykonać:
Kod: Zaznacz cały
# ln -s /etc/init.d/bluez-utils /etc/rc5.d/K90bluetooth
Najważniejsze informacje:
Plus APN: "www.plusgsm.pl" (użytkownik: brak, hasło: brak).
Idea APN: "www.orange.pl" lub "www.idea.pl" (użytkownik: ppp, hasło: ppp).
Era APN: "erainternet" (użytkownik: erainternet, hasło: erainternet).
W przypadku korzystania z innej sieci niż orange, należy zamienić w poniższych plikach odpowiadające sobie wpisy (tzn, adres APN, usera i hasło).
Zaczynamy od utworzenia: /etc/ppp/peers/gprs
Kod: Zaznacz cały
# File: gprs
#
# Description:
# Serial cable, IrDA, Bluetooth and USB pppd options for GPRS phones.
# Keep pppd attached to the terminal:
# Comment this to get daemon mode pppd
#nodetach
updetach
# Opcja updatach oznacza, ze pppd odlaczy sie od terminala dopiero
# gdy zostanie nawiazane polaczenie.
# Debug info from pppd:
# Comment this off, if you don't need more info
debug
# Show password in debug messages
show-password
# Connect/Disconnect scripts:
connect "/usr/sbin/chat -v -f /etc/chatscripts/gprs-connect-chat"
disconnect "/usr/sbin/chat -v -f /etc/chatscripts/gprs-disconnect-chat"
# Serial device to which the GPRS phone is connected:
# /dev/ttyS0 for serial port (COM1 in Windows),
#/dev/ircomm0
# /dev/ircomm0 for IrDA,
#/dev/ttyUB0 for Bluetooth (Bluez with rfcomm running) and
# /dev/ttyUSB0 for USB
#/dev/ttyS0 # serial port one
#/dev/ttyS1 # serial port two
#/dev/ircomm0 # IrDA serial port one
/dev/rfcomm0 # Bluetooth serial port one
#/dev/ttyUSB0 # USB serial device, for example Orange SPV
# Serial port line speed
115200 # fast enough
#57600 # perhaps usefull with IrDA
# Hardware flow control:
# Use hardware flow control with cable, Bluetooth and USB but not with IrDA.
crtscts # serial cable, Bluetooth and USB
#nocrtscts # IrDA
# Ignore carrier detect signal from the modem:
local
# IP addresses:
# - accept peers idea of our local address and set address peer as 10.0.0.1
# (any address would do, since IPCP gives 0.0.0.0 to it)
# - if you use the 10. network at home or something and pppd rejects it,
# change the address to something else
:10.0.0.1
# pppd must not propose any IP address to the peer!
noipdefault
# Accept peers idea of our local address
ipcp-accept-local
# Add the ppp interface as default route to the IP routing table
defaultroute
# DNS servers from the phone:
# some phones support this, some don't.
usepeerdns
novj
nobsdcomp
novjccomp
nopcomp
noaccomp
# The phone is not required to authenticate:
noauth
# Username and password:
# If username and password are required by the APN, put here the username
# and put the username-password combination to the secrets file:
# /etc/ppp/pap-secrets for PAP and /etc/ppp/chap-secrets for CHAP
# authentication. See pppd man pages for details.
# Example, Radiolinja operator pap-secrets:
# "rlnet" * "internet" *
user "ppp"
# Asyncmap:
# some phones may require this option.
#asyncmap 0xa0000
# No magic:
# some phones may require this option.
#nomagic
# Require PAP authentication:
# some phones may require this option.
#require-pap
wersja dla nokii (sprawdzałem na 6230)
Kod: Zaznacz cały
# File: gprs-connect-chat
#
# Description:
#
# Set PDP context CID=1, protocol=IP, APN=internet:
# AT+CGDCONT=1,"IP","internet","",0,0
#
# Set CID=1 QoS requirements from the network, not supported by Nokia:
# AT+CGQREQ=1,0,0,0,0,0
#
# Set CID=1 minimum acceptable QoS parameters, not supported by Nokia:
# AT+CGQMIN=1,0,0,0,0,0
#
# 'Call' CID=1 (activate PDP context one, perform GPRS attach):
# ATD*99***1#
#
# Some phones like the Orange SPV (yes, the Microsoft Smartphone) use this
# dial string to start GPRS connection:
# ATD*99#
#
# The actual chat script:
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
SAY "Press CTRL-C to close the connection at any stage!"
SAY "\ndefining PDP context...\n"
OK ATH
OK ATE1
OK 'AT+CGDCONT=1,"IP","www.idea.pl"'
OK ATD*99***1#
TIMEOUT 22
SAY "\nwaiting for connect...\n"
CONNECT ""
SAY "\nConnected."
SAY "\nIf the following ppp negotiations fail,\n"
SAY "try restarting the phone.\n"
Kod: Zaznacz cały
# File: gprs-connect-chat
#
# Description:
#
# Set PDP context CID=1, protocol=IP, APN=internet:
# AT+CGDCONT=1,"IP","internet","",0,0
#
# Set CID=1 QoS requirements from the network, not supported by Nokia:
# AT+CGQREQ=1,0,0,0,0,0
#
# Set CID=1 minimum acceptable QoS parameters, not supported by Nokia:
# AT+CGQMIN=1,0,0,0,0,0
#
# 'Call' CID=1 (activate PDP context one, perform GPRS attach):
# ATD*99***1#
#
# Some phones like the Orange SPV (yes, the Microsoft Smartphone) use this
# dial string to start GPRS connection:
# ATD*99#
#
# The actual chat script:
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
SAY "Press CTRL-C to close the connection at any stage!"
SAY "\ndefining PDP context...\n"
OK ATH
OK ATE1
#OK 'AT+CGDCONT=1,"IP","www.idea.pl"'
OK ATD*99*www.idea.pl**1#
TIMEOUT 22
SAY "\nwaiting for connect...\n"
CONNECT ""
SAY "\nConnected."
SAY "\nIf the following ppp negotiations fail,\n"
SAY "try restarting the phone.\n"
Kod: Zaznacz cały
# File: gprs-disconnect-chat
#
# send break
exec /usr/sbin/chat -V -s -S
ABORT "BUSY"
ABORT "ERROR"
ABORT "NO DIALTONE"
SAY "\nSending break to the modem\n"
"" "\K"
"" "+++ATH"
SAY "\nPDP context detached\n"
Kod: Zaznacz cały
# Secrets for authentication using PAP
# client server secret IP addresses
"ppp" * "ppp" *
Kod: Zaznacz cały
mv /etc/resolv.conf /etc/resolv.conf-pppbackup
cp -f /etc/ppp/resolv.conf /etc/resolv.conf
chmod a+r /etc/resolv.conf
Kod: Zaznacz cały
mv /etc/resolv.conf-pppbackup /etc/resolv.conf
Kod: Zaznacz cały
#lcp-echo-failure 4
W przypadu K700 nie stwierdziłem takiego zjawiska.
Oczywiście jeżeli inne aparaty będą rozłączały połączenie należy również wykonać powyższą operację.
19. W telefonie wyszukujemy urządzeń Bluetooth, na liście powienien pojawić się nasz komputer, dodajemy go do urządzeń zaufanych używając kodu pin określonego w punkcie 9.
W przypadku Nokii warto również zaznaczyć opcję łączenia z urządzeniem bez potwierdzania.
20. Wykonujemy komendę
Kod: Zaznacz cały
# pppd call gprs
Zaznaczam, że wszystkie opisane tu czynności wykonałem mając pierwszy raz styczność z linuksem, co więcej mając spore doświadczenie w sieciach, wstyd się przyznać nie miałem okazji samodzielnie konfigurować modemu.
Pierwszą konfigurację wykonałem dla K700, po zmianie telefonu na Nokię 6230 wystąpiły błędy w skrypcie nawiązywania komunikacji z modemem. Stąd też dwie wersje pliku, osobny dla k700 i osobny dla Nokii, w rzeczywistości różnią się tylko w miejscu:
Kod: Zaznacz cały
OK 'AT+CGDCONT=1,"IP","www.idea.pl"'
OK ATD*99***1#
W przypadku zmiany telefonu, wystarczy zczytać jego adres (pkt 5) i dokonać zmian w pliku /etc/bluetooth/rfcomm.conf wg pkt 8.
No i jakby tu powiedzieć na koniec:
SOA#1 (U mnie działa).
Kod: Zaznacz cały
killall -9 pppd
W załączniku pliki z powyższej solucji.