Общий интернет по bluetooth
Добрый день.
Сегодня постараюсь помочь тем, у кого нет в наличии хорошего интернета, но пользоваться им очень хочется. Речь пойдет о мобильном интернете, причем не о usb-модемах, а именно о интернете с мобильного телефона.
В современных (читай сенсорных) мобильных телефонах, в большинстве своем, в настройках есть функция "использовать телефон как модем" (ну или как-то так). Эта функция разделяется на подфункции:
- проводной модем;
- точка доступа Wi-Fi;
- точка доступа Bluetooth.
В данной статье обратим внимание на третью из них: расшаривание мобильного интернета на компьютер с помощью bluetooth.
К сожалению, не все мобильные телефоны поддерживают данную функциональность, поэтому в первую очередь нужно определиться: поддерживает ли ее ваш телефон. Это можно сделать или покопавшись в настройках bluetooth самого телефона, или на компьютере (об этом чуть позже).
Итак, определившись что ваш телефон может все что нужно, приступим к настройке.
Моя домашняя система Archlinux, поэтому все действия описываются касательно нее. Хотя в других linux-системах они не особо должны отличаться.
В первую очередь устанавливаем необходимые пакеты, если они еще не установлены:
Третий пакет wvdial будет использоваться непосредственно для подключения мобильного интернета, с первыми двумя думаю ясно из названия. Запускаем bluetooth и помещаем его в автозапуск при старте компьютера:
sudo systemctl enable bluetooth
Запускаем bluetoothctl в терминале:
[NEW] Controller 00:10:20:30:40:50 pi [default]
Вывод должен быть похож на этот, но с вашими значениями MAC-адреса. Далее включаем в настройках bluetooth телефона "общий интернет по bluetooth" и разрешаем обнаружение телефона, также в настройках активируем передачу данных (собственно это и есть мобильный интернет) и запускаем сканирование на компьютере:
Discovery started
[CHG] Controller 00:10:20:30:40:50 Discovering: yes
[NEW] Device 00:12:34:56:78:90 myPhone
[CHG] Device 00:12:34:56:78:90 LegacyPairing: yes
Как видите найдено новое устройство myPhone. Теперь проведем его сопряжение с компьютером:
Attempting to pair with 00:12:34:56:78:90
[CHG] Device 00:12:34:56:78:90 Connected: yes
[CHG] Device 00:12:34:56:78:90 Connected: no
[CHG] Device 00:12:34:56:78:90 Connected: yes
Request PIN code
[agent] Enter PIN code: 1234
[CHG] Device 00:12:34:56:78:90 Paired: yes
Pairing successful
[CHG] Device 00:12:34:56:78:90 Connected: no
Эта операция потребует введения произвольного одинакового пароля на телефоне и на компьютере в терминале, после этого телефон и компьютер будут успешно сопряжены. Выходим из bluetoothctl:
Проверим на каком канале находится сервис Dial-Up Networking:
И ищем в выводе секцию с заветным "Dial-Up Networking", в которой смотрим на цифру справа от слова channel. Вот это и есть тот метод определения возможности вашего телефона раздавать интернет по bluetooth с помощью компьютера, о котором я упомянул выше. То есть если в выводе предыдущей команды вы не найдете эту секцию - увы, ваш телефон так не умеет. Отвлеклись. Итак, пусть это будет цифра 4. Теперь создадим в папке /dev устройство нашего телефонного модема:
Где 4 - номер канала (ну вы поняли). Эта команда создает в папке /dev файл модема с именем rfcomm0, который мы будем использовать для настройки подключения к интернету через wvdial. Теперь одна хитрость: чтобы не вводить вручную эту команду после каждой загрузки системы создадим в папке /etc/systemd/system файл bluetooth.service с таким содержимым:
[Service]
ExecStartPost=/usr/bin/rfcomm bind /dev/rfcomm0 00:12:34:56:78:90 4 # myPhone1
ExecStartPost=/usr/bin/rfcomm bind /dev/rfcomm1 90:80:70:60:50:40 5 # myPhone2
ExecStopPost=/usr/bin/rfcomm release /dev/rfcomm0
ExecStopPost=/usr/bin/rfcomm release /dev/rfcomm1
С его помощью файл модема вашего телефона не только сам будет создаваться в папке /dev, но и будут создаваться файлы модемов всех ваших телефонов через которые вы планируете выходить в интернет и которые вы внесете в bluetooth.service. Кроме этого после остановки bluetooth сервиса модемы будут удаляться. После создания этого файла дайте systemd команду перечитать все свои сервисы:
Теперь перейдем к настройке wvdial. В папке /etc создайте файл wvdial.conf:
# myPhone1
Modem = /dev/rfcomm0
Baud = 115200
Init2 = AT+CGDCONT=1,"IP","internet.tele2.ru"
Phone = *99#
Username = tele2
Password = tele2
Stupid Mode = yes
New PPPD = yes
Auto DNS = 1
[Dialer tele2]
# myPhone1
Modem = /dev/rfcomm0
Baud = 115200
Init2 = AT+CGDCONT=1,"IP","internet.tele2.ru"
Phone = *99#
Username = tele2
Password = tele2
Stupid Mode = yes
New PPPD = yes
Auto DNS = 1
[Dialer mts]
# myPhone2
Modem = /dev/rfcomm1
Baud = 115200
Init2 = AT+CGDCONT=1,"IP","internet.mts.ru"
Phone = *99#
Username = mts
Password = mts
Stupid Mode = yes
New PPPD = yes
Auto DNS = 1
В качестве примера приведены настройки для двух сотовых операторов: Теле2 и МТС. Для других операторов wvdial настраивается сменой необходимых для дозвона параметров. Настройки заданы таким образом, чтобы происходило автопереподключение при обрыве. Подробнее остановимся только на строке:
В секции каждого мобильного оператора необходимо указать имя файла модема телефона, использующего сим-карту оператора обозначенной секции, которое берем из файла bluetooth.service. Также в примере wvdial.conf я привел три секции, первые две из которых полностью одинаковые за исключением названия. Это сделано для того чтобы можно было определить мобильного оператора по умолчанию. В данном случае это Теле2. Теперь еще одна хитрость:
Дело в том, что по умолчанию wvdial можно запустить только от рута. Этой командой мы устанавливаем бит SUID на исполняемый файл wvdial, что позволяет запускать этот файл от имени его владельца, то есть от суперпользователя. Поэтому теперь запуск wvdial не будет требовать от вас введения пароля. Однако, одно но: после каждого обновления wvdial придется заново присваивать этот бит.
Снова отвлеклись... В принципе почти все: запускать интернет на компьютере теперь можно введя в терминале:
если нужен мобильный оперетор по умолчанию (у нас был теле2). Или можно задать оператора явно:
Или же подключиться через другого оператора:
Мобильный телефон, кстати, может выдать запрос на разрешение подключения компьютера. А может и не выдать... Мой старый кнопочный телефон все делал молча. Просто нажмите "Разрешить". После введения команды в консоли будет отображаться информация о подключении.
Если не нравится запускать интернет из консоли, то можно, например, сделать средствами вашего DE так называемый "ярлык на рабочем столе". Тогда все будет еще проще и прозрачнее. Просматривать статистику подключения можно такой командой:
Отслеживая значения RX и TX.
На этом все. Вроде бы подробно изложил. Появятся вопросы, задавайте в комментариях.