ArchLinux, ppp, netcfg и Huawei E1550 3G модем

Huawei E1550 3GНемного лирики

Собираюсь в долгую поездку и в преддверии этого решил подготовиться ибо что там будет с интернетом неведомо. Взял мегафоновский модем попользовать на время поездки и пошел в бой. Как оказалось он залочен на симки от мегафона, а у меня не было мегафоновской симки для теста модема в linux — пришлось разлочивать. Разлочить оказалось в разы сложнее чем настроить сам модем, ибо в сети Уйма (да-да, именно с большой буквы) предложений разлочить за денюжку, но мудрый гугл спустя часик поиска навел на генератор кодов разлочки и прошивки на основе IMEI (аж целых два, и оба работают под вайном). Правда писал я код разлочки из под windows, не подумав о том что можно было использовать в linux comgt или MobilePartner который в комплекте с модемом — кстати, через MobilePartner можно не пугаться страшных слов и действий(компилций,настройка,wvdial,ppp), а просто использовать модем через интерфейс схожий с программой управления модемом от мегафона, но он на яве и даже в трей не умеет сворачиваться — так что это не наш метод.

Чуток конкретики

Оказалось что всё до наивности просто — модем видиться как /dev/ttyUSB{0,1}
Правда почему-то на следующий день он отказался так делать и пришлось поставить из AUR usb_modeswitch после которого всё вновь стало замечательно и без каких-либо манипуляций. Возможно первый раз всё определилось славно именно из-за того что до этого он разлочивался под виндою и сразу после этого сунулся в компьютер с ArchLinux.

NetworkManager я не пользую, но там по слухам всё до банальности просто — указываем устройство прописываем точку доступа и прочее после чего радуемся. wvdial на который в большинстве своем расчитаны все виденные мною хелпы пользовать не хотелось ибо в системе уже наличиствует ppp и что самое главное его можно использовать с помощью netcfg, т.е. переключать сеть можно так же легко как и в networkmanager (в том числе и с помощью dmenu — dnetcfg). Так что наш метод это ppp и netcfg

Huawei E1550 и ppp

Для начала нам надо будет установить comgt (он в community) и usb_modeswitch (он в AUR) и после этого выполнить
comgt -d /dev/ttyUSB0
который попросит ввести пинкод от симки (и предположительно код для разлочки, если симка не та — но так как я уже разлочил под виндой, то подтвердить этого не могу), напишет информацию о регистрации в сети и прочее...

После этого создаем файл /etc/ppp/peers/3g в котором пишем
connect "/usr/sbin/chat -f /etc/ppp/3g"
/dev/ttyUSB0
115200
#460800
crtscts
noauth
#novj
#novjccomp
#nobsdcomp
#nopcomp
#noaccomp

usepeerdns
defaultroute


user "beeline"
password beeline
и файл который указан в параметрах к в первой строке, т.е. в нашем случае /etc/ppp/3g
TIMEOUT 35
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'
ABORT   '\nUsername/Password Incorrect\r' 
''      \rAT
OK      'AT+CGDCONT=1,"IP","internet.beeline.ru"'
OK      ATD*99***1#
CONNECT ""
Ну или что бы не было двух файлов создаем только только первый и заменяем в нем строку
connect "/usr/sbin/chat -f /etc/ppp/3g"
на
connect "/usr/sbin/chat -v \
TIMEOUT 35 \
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' \
ABORT   '\nUsername/Password Incorrect\r'  \
''      \rAT \
OK      'AT+CGDCONT=1,\"IP\",\"internet.beeline.ru\"' \
OK      ATD*99***1# \
CONNECT \c \
"

Естественно что логин, пароль, точка доступа и номер телефона для набора зависят от вашего оператора.
Так же обратите внимание что некоторые строки в /etc/ppp/peers/3g у меня закомментированы — я их показал лишь для примера. Если у вас не будет работать то поиграйтесь с расскомментированием отдельных строк и заменой скорости. У меня заработало именно с такими настройками (скорость 460800 это для 3g насколько я понимаю, но 3g покрытия у меня тут нету).

Для запуска соеденения запускаем pon 3g (не забываем о правах).
В отличии от используемого мною до этого Motorola a1200 в качестве gprs модема, dns устанавливается нормально.

Huawei E1550, но уже через netcfg

Собственно тут нам достаточно создать профиль netcfg(файл в каталоге /etc/network.d/ — имя файла есть имя профиля) в котором записано
CONNECTION='ppp'
INTERFACE='ignore'
PEER='3g' #это имя файла в /etc/ppp/peers/
PPP_TIMEOUT=10
Вот, собственно, и готов профиль. Осталось лишь его использовать (netcfg имя_файла или любой фронтенд для netcfg).

Приятного использования!


PS. программы для генерации кодов разлочки и кодов для прошивки модема Huawei E1550 тут

Shtsh 10-05-2010
А что с пин-кодом делать?
muhas 10-05-2010
В заметке же написано
comgt -d /dev/ttyUSB0
ZhAN 10-05-2010
> модем видиться как /dev/ttyUSB{0,1}

У меня вообще как {0,1,2,3}. Зато есть всегда работающий симлинк /dev/gsmmodem. Так что в пирсы лучше его вписать.
muhas 10-05-2010
тоже вариант, с установленным MobilePartner все пути в /dev вообще меняются...

{0,1,2,3} это видимо другой модем? про /dev/gsmmodem не подумал - но сейчас проверить не на чем ибо модем пока до поездки отдал, надеюсь что те кто будут читать дочитают до комментов и увидят /dev/gsmmodem =)
nickm 10-05-2010
Пасиба за тулзы, правда "вампир" не прорулил с моим e156g (лок от МТС) ( я его до этого на gsmforum гдето скачал), надо будет 2й попробовать.

От zeroCD они AT командой отучаются, сейчас под рукой нету доки глянуть
nickm 10-05-2010
PS копаю интернеты на тему zte mf170 + beeline, чтобы завести под линуксом, есть идеи? (манулы про 627 и пр. не проруливают), он собака от ATD*99***1# тупо вырубается
muhas 10-05-2010
первое что пришло в голову это OK ATD*99# попробывать
или с usb_modeswitch поковыряться...

сходу вот эта тема нашлась: http://www.linux.org.ru/forum/linux-hardware/4757841 мельком проглядел вроде похоже то что нужно...
nickm 10-05-2010
> это OK ATD*99# попробывать
это я 1м делом и попробовал

http://www.linux.org.ru/forum/linux-hardware/4757841 - там глухо, если пристальнее почитать. У меня как, если в кратце:
модем, zeroCD выпилил (at+zcdrun=8), втыкаем, получаем /dev/ttyUSB{0,1,2} /dev/ttyUSB1 - что что нужно (можно залезть minicom'ом, пописать эти самыe ATZ, ATI, напирмер, можно даже смски почититать, а вот на ATD ему плохеет, причем под win в hyperterminal ATD*99***1# норм срабатывает). Да и знаю я про эту тему, http://www.linux.org.ru/jump-message.jsp?msgid=4757841&cid=4855937 - это моё ;)

PS надо было мегафон брать, балин.

PPS если получится e156g разлочить, по пускай этот 170 идет лесом.
nickm 10-05-2010
Это опять я ;)

нафиг, свой 156й разлочил теми тулзами (под wine норм прут, обе коде генерят одинаковый), как в тот раз не получилось разлочить, хз.

Из последнего - AT^U2DIAG=0 - это вырубит zeroCD
Если разлочивать под линуксом - minicom, там ATI, узнаем IMEI, отдаем вампиру, вводим коде AT^CARDLOCK="UNLOCK_CODE"
ZhAN 10-05-2010
2 muhas:

Нет, модем как раз тот же. Залочен, правда, не под Мегафон, а под МТС. Да и дистриб у меня на Арч, а Дебиан. Может повлияло то, что у меня иной раз по два модема вставлено бывало.

За тулзу для анлока большое человеческое спасибо.
Shtsh 10-06-2010
В руководстве по comgt написано, что можно использовать так
comgt PIN
и задать переменную COMGTPIN равную пин-коду. В результате не нужно будет вводить вручную.
делаю так
export COMGTPIN=1234
затем
sudo comgt -d /dev/ttyUSB_utps_modem PIN
В результате получаю ошибку
ERROR: The COMGTPIN env variable is not set

Я что-то делаю неправильно или это бага?

Вот цитата, если неправильно перевёл.

ENVIRONMENT VARIABLES
COMGTPIN - the 4 digit pin of the SIM for use by PIN script COMGTAPN - the APN to write to the data card, used by
the APN script.


comgt PIN
Test the SIM PIN status and use the environment variable COMGTPIN as the value .
gandy 10-06-2010
Спасибо за тулзы. Вообще читаю Вас постоянно. Очень приятно и вдохновенно! :)
muhas 10-06-2010
@Shtsh возможно где-то косяк по поводу переменных окружения в sudo(не помню какие он принимает), может что бы без гемороя отменить на симке проверку пин-кода? (лично я так и сделал, ибо ленив до безобразия)
вообще с comgt даже не разбирался - просто быстро проскочил нужное и забыл...

@gandy мерси за комплиман, очень приятно что я кому-то полезен (/me даже покраснел)
igor 10-06-2010
muhas, а у меня твой скрипт подключения одним файлом не работает. Соединение устанавливается, а пинги не ходят
muhas 10-06-2010
у меня, кстати, в отпуске всё это добро работало - но добрый мегафон имел ужасные dns приходилось использовать чужие
bolzamo 10-08-2010
Я что-то не осилил этого вампира. Можно подробную инструкцию, как им разлочивать модемы?
muhas 10-08-2010
@bolzamo да вроде всё просто, на последней фкладке вводим imei и нажимаем расчитать. в левой форме два кода выводится.

потом эти коды(мне только анлок нужен был) я вводил прямо в mobilepartner когда симку вставил уже билайновскую(он тогда начал ругатся что модем залочен и просил ввести код)
bolzamo 10-08-2010
Какой еще mobilepartner? В жизни ничего подобного не пользовал. Как это увязывать с pppd?
muhas 10-08-2010
mobilepartner (о нем написано в посте) - софтина от производителя модема(для linux тоже имеется) - она рулит и ppp соединениями и проверкой баланса и управлением соединений и sms почитывает (у мегофона от которого модем такой же софт только с их лого повсюду и с преднастройками своими) - и самое главное спрашивает код разблокировки при вставке симки другого оператора(если модем залочен)
nickm 10-08-2010
яж тут писал как unlock делать
http://muhas.ru/?p=140#comment-8
и не надо никаких mobilepartner, только вампир, wine, minicom
kirpich 10-08-2010
купил такой же мопед только от мтс. ppp соединение настраивается действительно очень просто. А вот Mobile Partner у меня почему то не завелся. При нажатии на кнопку подключения тупо вылазит окошко с надписью соединение. И может висеть так до бесконечности. Может знает кто в чем проблема? При запуске партнера из терминала ошибок нет.
muhas 10-08-2010
@kirpich когда пробовал бывало висел он когда номер не так указан(типа два вида номера - с херью после 99 и без неё) - может в этом причина. хз ща и модема больше нет, wifi рулит =)
kirpich 10-08-2010
К сожалению смена номера, смена протокола аутентификации не помогла =( эх..буду думать дальше.
aim 10-10-2010
а зачем всё это если есть NetworkManager?!
muhas 10-10-2010
не знаю как у вас а у меня nm с вайфаем домашним никак не хочет дружить - постоянно разьеденяясь.
да и вообще глючный он какой-то, к тому же привычка к ppp осталась ещё со времен диалапа. так что каждому своё =)
кому nm кому netcfg
kirpich 10-10-2010
да, netcfg рулит. модем выкинул нафиг... wi-fi хотспот на коммуникаторе спасает.
muhas 10-10-2010
ещё бы гуй для netcfg какой вменяемый, а то только archassistant умеет новые сетки добавлять, а всё остальное только из готовых выбирать :(

хотя и без гуя неплохо
kirpich 10-10-2010
я юзал netcfgGUI, сейчас без гуя обхожусь.
muhas 10-10-2010
netcfgGUI пробовал, но там вроде не было возможности добавить новую сеть. или уже есть?
(самому хватает менюшки для выбора на dmenu)
kirpich 10-10-2010
Ну вроде как возможность есть...использовал месяца 3 назад. Переключение уже добавленных сетей + можно добавить сеть, и больше ничего...
muhas 10-10-2010
спасибо, посмотрю обязательно, а то тексты править при добавлении лениво пусть не долго но лениво =)
surendil 10-10-2010
спасибо за замечательную статью! ох, и долго же я проковырялся с этим проклятым модемом... но всё получилось :)
muhas 10-10-2010
всегда пожалуйста...
e_dimas 11-09-2011
Huawei Mobile Partner для Linux вам в помощь
Mobile Partner Lock 21.005.11.02.763 для linux
как устанавливать написано в файле readme.txt