L i n u x L I f e

все о Linux в Казахстане

Screen

Profile

Layout

Direction

Menu Style

Cpanel

Подключение GPRS/EDGE/3G в GNU/Linux через Bluetooth/USB

  • PDF
Рассмотрим настройку доступа в интернет для компьютера с операционной системой Linux по средствам мобильного телефона, USB модема (Huawei E1550)поддерживающего технологии Bluetooth, GPRS, EDGE и 3G.
Использованное оборудование при подключении:
  • встроенный Bluetooth в ноутбук или USB Bluetooth брелок для ПК; 
  • мобильный телефон Nokia N82 или другой с поддержкой GPRS/EDGE/3G и Bluetooth; 
  • USB модем от Beeline Казахстан Huawei E1550.
Использованное программное обеспечение:
  • операционная система Ubuntu (Debian), ядро 2.6.3Х.
Пакеты программ:
  • bluez-hcidump, 
  • bluez-pin, 
  • bluez-utils, 
  • kernel-patch-2.6-bluez, 
  • libbluetooth1, 
  • libbluetooth1-dev, 
  • ppp, 
  • wvdial, 
  • gnome-ppp
Настройка телефона
Следует убедиться, что услуга передачи данных GPRS/EDGE/3G подключена для Вашего тарифного плана. После этого настроить в телефоне точку доступа (APN) для пакетной передачи данных. Мы не будем описывать как ее настроить, так как для разных моделей настройки разные и Вы можите их узнать у вашего оператора сотовой связи.
В телефоне включить Bluetooth, как его включать знают все.
Настройка Bluetooth-соединения на компьютере, включить (на ноутбуке), либо вставить Bluetooth модуль в USB-разъём, подгрузить необходимые модули ядра через терминал:

brootos@brootos:~$ modprobe hci_usb

Отредактировать файл /etc/bluetooth/hcid.conf в моем случае я оставил файл практически без изменений, указав лишь свой pin_helper (об этом ниже):
options { 
autoinit yes; 
security auto; 
pairing multi; 
pin_helper /usr/local/bin/bluepin.helper 
}
device { 
name "%h-%d"; 
class 0x3e0100; 
iscan enable; pscan enable; 
lm accept; 
lp rswitch,hold,sniff,park; 
auth enable; 
encrypt enable; 
}
bluepin.helper должен быть программой, печатающей строку вида "PIN:0000", где "0000" - пароль доступа к компьютеру по Bluetooth. Для этих целей подойдет крохотный скрипт:
#!/bin/bash 
echo PIN:0000
Не забудьте вместо нулей (0000) вписать нормальный пароль и установить права на исполнение bluepin.helper.
Примечание: в новых версиях bluez-utils механизм ввода пароля изменён. Теперь пользователь Bluetooth должен использовать отдельную программу для подтверждения пароля, а общесистемные настройки пароля стали недействительны. Данное верно как минимум для bluez-utils версии 3.7, а возможно и для более ранних версий. В этом случае рекомендуется установить bluez-passkey-gnome (иконка Bluetooth появится в системном лотке после запуска программы bt-applet). В качестве альтернативы можно использовать программу passkey-agent. При попытке спарить телефон и компьютер, требуется ввести одинаковые пароли на телефоне и в появившемся окне ввода пароля.
После этого можно запускать службу Bluetooth в терминале (в других дистрибутивах Linux это может выглядеть немного иначе):

brootos@brootos:~$ /etc/init.d/bluez-utils start

За ошибками на этом этапе можно следить через /var/log/syslog.
В более поздних версиях bluez-utils служба Bluetooth в Debian перезапускается так:

brootos@brootos:~$ /etc/init.d/bluetooth restart

Проверить работу устройства можно, например, выполнив к терменале команду hciconfig так:

brootos@brootos:~$ hciconfig 

hci0: Type: USB 
BD Address: 00:11:F6:04:FB:BF ACL MTU: 120:20 SCO MTU: 64:0 
UP RUNNING PSCAN ISCAN 
RX bytes:965327 acl:6408 sco:0 events:2522 errors:0 
TX bytes:294442 acl:3841 sco:0 commands:17 errors:0
Далее необходимо найти телефон. Для этого убедимся, что Bluetooth на телефоне включен, и активирован режим видимости.

brootos@brootos:~$ hcitool scan

Scanning ...
00:16:BC:CD:64:D2 Nokia N82
Был обнаружен только что настроенный телефон. Все в порядке. Его "мак-адрес" запоминаем (выделяем-копируем), он еще пригодится.
Редактируем файл /etc/bluetooth/rfcomm.conf и вносим туда "мак-адрес" телефона:
rfcomm0 { 
bind yes; 
device 00:16:BC:CD:64:D2
channel 1; 
comment "Dial-up networking gateway"; 
}
Могут быть доступны и другие каналы Bluetooth (профили), например, профили синхронизации или обмена файлами. Однако для доступа в интернет они не нужны. Список поддерживаемых телефоном профилей можно просмотреть с помощью команды:

brootos@brootos:~$ sdptool browse

или

brootos@brootos:~$ sdptool records

Для пользователей телефонов на базе Windows Mobile 6: 
В шестой версии винмобайла нет профиля DUN, для таких случаев надо использовать соединение через "Bluetooth NAP Service". 
Для пользователей телефонов на базе Windows Mobile 5 Smartphone: 
Остерегайтесь телефонов, не поддерживающих Dialup Networking по Bluetooth. Например SonyEriccson T280. 
Стек, встроенный в ОС, не возвращает информации о профилях на запрос sdptool browse. Экспериментальным путём было обнаружено, что профиль "Dial-up networking gateway" находится на пятом канале. В этом случае запись в /etc/bluetooth/rfcomm.conf выглядит так:
rfcomm0 { 
bind yes; 
device 00:11:22:33:44:55
channel 4; 
comment "Dial-up networking gateway on WM5 Smartphone"; 
}
00:11:22:33:44:55 - "мак-адрес" вашего телефона.
Остановите и перестартуйте службу Bluetooth:

brootos@brootos:~$ /etc/init.d/bluez-utils stop 

brootos@brootos:~$ /etc/init.d/bluez-utils start

Теперь необходимо провести первое "сопряжение" устройств. Это можно сделать так:
echo ATZ > /dev/rfcomm0
или например вот так:

brootos@brootos:~$ rfcomm connect 0 00:11:22:33:44:55 1

где 0 - номер устройства rfcomm, 1 - номер канала
и ввести пароль (выдаваемый bluepin.helper) на телефоне. После этого на телефоне в списке сопряжённых устройста для устройства-компьютера установить опцию "Автоподключение без подтверждения", тогда телефон больше не будет спрашивать пароля при каждом соединении.
Примечание: после перезагрузки системы при сопряжении может возникнуть ошибка invalid exchange, при этом телефон даже не пингуется, это вызвано тем что не может выполниться скрипт выводящий пин, у меня это было из-за того что не стояли права на его выполнение, лечится

brootos@brootos:~$ chmod +x /usr/local/bin/bluepin.helper

Если эта ошибка возникает с самого начала, то возможно вы не правильно указали путь к скрипту в hcid.conf. На этом настройка Bluetooth-соединения закончена.
Настройка соединения GPRS/EDGE/3G

Эта часть настройки практически неизменна и в случае, если телефон подключен к компьютеру с помощью USB кабеля или через инфракрасный порт. В этом случае будет необходимо заменить имя устройства (/dev/rfcomm0 в примерах). Итак, есть настроенное соединение между компьютером и телефоном, в телефоне настроена точка доступа пакетных данных (GPRS/EDGE/3G). Теперь можно настроить GPRS/EDGE/3G - доступ, используя мобильный телефон в качестве модема. "Дозваниваться" будем с помощью программы pppd.
В каталоге /etc/ppp/peers/ создаем файл с настройками нового соединения internet:
/dev/rfcomm0 115200 
# отключаем сжатие данных 
nobsdcomp 
nodeflate 
# команда для установки соединения 
connect '/usr/sbin/chat -v -f /etc/ppp/chat-internet
noauth 
# автоматическое получение сетевых настроек 
noipdefault 
usepeerdns 
defaultroute 
# необязательно 
debug 
nodetach
Создаем диалоговый файл /etc/ppp/chat-internet
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","internet"' 
OK ATD*99#
Примечание: Если вы видите 'serial line is looped back', то в конце чат-скрипта не хватает строчки: CONNECT '' (прим. в моем случае нужно было сделать так то есть добавил в конец CONNECT '')
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","internet.beeline.kz"' 
OK ATD*99***1# 
CONNECT ''
Это настройки для Beeline-Казахстан. Для других сотовых операторов строку "internet" нужно будет изменить (например, на "internet" или "internet.beeline.kz"). Возможно, некоторые модели сотовых телефонов потребуют изменить номер дозвона: вместо "*99#" попробуйте тогда "*99***1#" или наоборот. В данном случае имеет значение числовой идентификатор профиля, его можно найти в свойствах профиля соединения телефона, если у вас один профиль, то его номер будет "1" иначе там может быть другое числовое значение
Устанавливаем соединение:
brootos@brootos:~$ pppd call internet 
AT 
OK 
ATE1 
OK 
AT+cgdcont=1,"IP","internet" 
OK 
Serial connection established. 
using channel 2 
Using interface ppp0 
Connect: ppp0 /dev/rfcomm0 
... (много всего опускаю) 
local IP address 10.206.131.173 
remote IP address 10.6.6.6 
primary DNS address 10.22.10.20 
secondary DNS address 10.22.10.21 
Script /etc/ppp/ip-up started (pid 6203) 
Script /etc/ppp/ip-up finished (pid 6203), status = 0x0
Соединение установлено, на телефоне Nokia в левом верхнем углу экрана загорается буква "G" в случае GPRS соединения, "E" в случае EDGE соединения и "3G" если доступно 3G. Если в терминале нажать Ctrl+C или дать команду "killall pppd" -- соединение будет разорвано. Если при дозвоне появляется сообщение об отсутствии /dev/rfcomm0 можно воспользоваться командой:

brootos@brootos:~$ rfcomm bind 0 00:16:BC:CD:64:D2 1

в вашем случае ip 00:16:BC:CD:64:D2 может быть другим см.выше
Посмотреть параметры соединения (и количество переданных данных) можно так:
brootos@brootos:~$ ifconfig ppp0 
ppp0 Link encap:Point-to-Point Protocol 
inet addr:10.206.131.173 P-t-P:10.6.6.6 Mask:255.255.255.255 
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 
RX packets:1495 errors:1 dropped:0 overruns:0 frame:0 
TX packets:1467 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:3 
RX bytes:981144 (958.1 KiB) TX bytes:339713 (331.7 KiB)
Количество переданных за время подключения данных указано в последней строчке. Следует однако учитывать, что сотовые операторы при подсчете GPRS/EDGE/3G трафика используют свои методики подсчета. Так, Мегафон-Москва округляет объём переданных данных в большую сторону с точностью до 8 килобайт через каждые три минуты соединения.
Соединение с интернет по средствам USB шнура и сотового телефона Nokia
Установка интернет соединения через телефон Nokia N82 (шнур USB) оператор Activ (k-cell), Beeline.
Так как программы wvdial может и не быть в DVD диске с Ubuntu или Debian то качаем эти программы с нашего сайта (программы обнавляются и мы выкладываем новые версии в файловый обменник), скачать программы можно тут: gnome-ppp и wvdial для Ubuntu и Debian
Затем после того как вы скачаете эти программы, инструкция по установке внутри архива, установите их просто кликнув по пакетам два раза левой кнопки мыши, установка начнется стандартным менеджером пакетов.
После установки wvdial редактируем файл /etc/wvdial.conf следущим образом через редактор gedit:

brootos@brootos:~$ sudo gedit /etc/wvdial.conf

либо через редактор nano:
brootos@brootos:~$ sudo nano /etc/wvdial.conf
[Dialer usb] 
Modem Type = USB Modem 
Baut = 460800 
New PPPD = yes 
Modem = /dev/ttyACM0 
ISDN = 0 
Init1 = ATZ 
Init2 = ATQ0 V1 E1 S0=0 
Init3 = AT+CGDCONT=1,"IP","internet.оператор.домен
Phone = *99***1# 
Username = @internet.оператор
Password = оператор
Dial Attempts = 5 
Dial Command = ATM1L3DT 
Auto Reconnect = on 
Abort on Busy = off 
Carrier Check = on 
Check Def Route = on 
Abort on No Dialtone = on 
Stupid Mode = off 
Idle Seconds = 0 
Auto DNS = on
Вот и все теперь можно брать ноутбук в дорогу и подключаться к интернету в местах покрытия сети Beeline или Activ. Для запуска соединения с интернетом выполняем в консоли команду для Ubuntu:

brootos@brootos:~$ sudo wvdial usb

а в Debian команду:

brootos@brootos:~$ wvdial usb

На что консоль нам ответит таким текстом:
Пароль: 
*********** << тут введите ваш пароль root`а 
brootos:/home/brootos# wvdial usb 
<< запуск соединения 
--> WvDial: Internet dialer version 1.60 
--> Cannot get information for serial port. 
--> Initializing modem. 
--> Sending: ATZ 
ATZ 
OK 
--> Sending: ATQ0 V1 E1 S0=0 
ATQ0 V1 E1 S0=0 
OK 
--> Sending: AT+CGDCONT=1,"IP","internet" 
AT+CGDCONT=1,"IP","internet" 
OK 
--> Modem initialized. 
--> Sending: ATM1L3DT*99# 
--> Waiting for carrier. 
ATM1L3DT*99# 
CONNECT 
~[7f]}#@!}!} } }2}#}$@#}!}$}%\}"}&} }*} } g}%~ 
--> Carrier detected. Waiting for prompt. 
~[7f]}#@!}!} } }2}#}$@#}!}$}%\}"}&} }*} } g}%~ 
--> PPP negotiation detected. 
--> Starting pppd at Sun Aug 16 10:33:33 2009 
--> Pid of pppd: 3901 
--> Using interface ppp0 
--> pppd:  
--> local IP address xx.xxx.195.39 
--> pppd:  
--> remote IP address xx.6.6.6 
--> pppd:  
--> primary DNS address xxx.xxx.100.2 
--> pppd:  
--> secondary DNS address xxx.xxx.101.2 
--> pppd: 
Вот и все, вы в сети интерент. Что бы отключить интернет соединение выполните акробатическое движение пальцами по клавишам CTRL+C.
Настройка интернета через Beeline USB-модем Huawei E1550
В случае если в NetworkManager не отображается ваш Оператор сотовой связи выполните следуший код в консоли на примере оператора Beeline и USB модема Huawei E1550 (в Ubuntu 9.10 все определяется автоматом, хотя все может быть, так что на всякий случай):
$ echo 'SUBSYSTEM=="usb", SYSFS{idProduct}=="1446", SYSFS{idVendor}=="12d1", RUN+="/lib/udev/modem-modeswitch --vendor 0x12d1 --product 0x1446 --type option-zerocd"' | sudo tee /etc/udev/rules.d/45-huawei1550.rules
После этого остаётся настроить стандартный Network Manager для нашего оператора. Зачастую необходимо изменить только адрес APN-сервера. 
Для запуска через wvdial необходимо установить wvdial. Для установки нам понадобятся следующие файлы:
  • libxplc0.3.13_0.3.13-1_i386.deb 
  • libwvstreams4.4-base_4.4.1-1.1_i386.deb 
  • libwvstreams4.4-extras_4.4.1-1.1_i386.deb 
  • libuniconf4.4_4.4.1-1.1_i386.deb 
  • wvdial_1.60.1+nmu2_i386.deb
Качаем их отсюда gnome-ppp и wvdial для Ubuntu и Debian так как в базовом комплекте DVD дисков с Debian или Ubuntu их нет.
Нам не помешают дополнительные пакеты установим udev-extras выполнив в консоли команду:

brootos@brootos:~$ sudo apt-get update && sudo apt-get install udev-extras

После того как установим нужные нам программы изменим файл /etc/wvdial.conf примерно так:
[Dialer usb] 
Modem Type = USB Modem 
Baut = 460800 
New PPPD = yes 
Modem = /dev/ttyUSB0
ISDN = 0 
Init1 = ATZ 
Init2 = ATQ0 V1 E1 S0=0 
Init3 = AT+CGDCONT=1,"IP","internet.оператор.домен" 
Phone = *99***1# 
Username = @internet.оператор
Password = оператор
Dial Attempts = 5 
Dial Command = ATM1L3DT 
Auto Reconnect = on 
Abort on Busy = off 
Carrier Check = on 
Check Def Route = on 
Abort on No Dialtone = on 
Stupid Mode = off 
Idle Seconds = 0 
Auto DNS = on

Естественно для своего сотового оператора поставите свои данные, данные подлежащие изменениям выделенны. И запустим интернет командой из под root`а или sudo выполнив в консоли:
Из под ROOT`a (Debian):

brootos@brootos:~# wvdial usb

... и интернет должен подключится.
Из под sudo:
brootos@brootos:~$ sudo wvdial usb
... и интернет должен подключится. Для отключения интернета нажмите в консоли сочетание клавиш Ctrl+C, интернет отключится.
НЕ ЗАБУДЬТЕ СНЯТЬ ПРОВЕРКУ ПИНА С СИМ КАРТЫ
При попытке подключиться если вдруг возникла следующая проблема:
–> WvDial: Internet dialer version 1.60 
–> Cannot get information for serial port. 
–> Initializing modem. 
–> Sending: ATZ 
ATZ 
OK 
–> Sending: AT+CGDCONT=1,”IP”,”internet” 
AT+CGDCONT=1,”IP”,”internet” 
OK 
–> Modem initialized. 
–> Sending: ATDT*99# 
–> Waiting for carrier. 
ATDT*99# 
NO CARRIER
То добавляем в файл /etc/wvdial.conf строку
Carrier Check = no
Автоматическое подключение
И отредактируйте файл конфигурации /etc/network/interfaces так
iface ppp0 inet wvdial 
provider wvdial 
auto ppp0
Теперь при перезапуске сетевых служб соединение будет автоматически установлено.
Поделиться


Вы можете установить ссылку на данный материал на сайт или блог используя следующий код:


Предварительный просмотр :

HTML ссылка на статью:

Ссылка для форума:

Плагин от LincorArt © 2011

Добавить комментарий


Защитный код
Обновить

Вы находитесь тут Статьи Linux / Подключение GPRS/EDGE/3G в GNU/Linux через Bluetooth/USB