At commands
There are some useful commands:
AT^U2DIAG=0— the device is only ModemAT^U2DIAG=1— device is in modem mode CD ROMAT^U2DIAG=255— the device in modem mode CD ROM Card ReaderAT^U2DIAG=256— the device in modem mode Card ReaderAT CPIN=PIN-CODE— enter PIN-codeAT CUSD=1,PDU-encoded-USSD-code,15— USSD request, result can be found (probably) in/dev/ttyUSB2.
Encode *100# to PDU format:
$ perl -e '@a=split(//,unpack("b*","*100#")); for ($i=7; $i < $#a; $i =8) { $a[$i]="" } print uc(unpack("H*", pack("b*", join("", @a))))."n"'Decode AA180C3602 from PDU format:
$ perl -e '@a=split(//,unpack("b*", pack("H*","AA180C3602"))); for ($i=6; $i < $#a; $i =7) {$a[$i].="0" } print pack("b*", join("", @a)).""'Answer decoding (this example is balance response: 151.25):
$ perl -e 'print pack("H*", "003100350031002C003200350020044004430431002E0020");'Some operators return USSD result in PDU encoding, so you should check proper decoding method.
AT CSQ— get signal quality (AT CSQ=?)AT GMI— get manufacturerAT GMM— get modelAT GMR— get revisionAT GMN— get IMEIAT COPS?— get operator infoAT^CARDLOCK="NCK-code"— unlock modem. NCK-code should be calculated by IMEI. After that modem can work with any GSM-provider.AT^SYSCFG=mode, order, band, roaming, domain— System Config
Mode:
2Automatic search132G ONLY143G ONLY16No change
Order:
0Automatic search12G first, then 3G23G first, then 2G3No change
Band:
80GSM DCS systems100Extended GSM 900200Primary GSM 900200000GSM PCS400000WCDMA IMT 20003FFFFFFFAny band40000000No change of band
Roaming:
0Not supported1Roaming is supported2No change
Domain:
0CS_ONLY1PS_ONLY2CS_PS3ANY4No change
By the configuration file
/etc/usb_modeswitch.conf
DisableSwitching=1
Commands to restart the device
Unplugging, and plugging, the device is sometimes used to restart the USB device. The following describes how to do that from the shell. Doing that from the shell might be useful, if, for example, the plug is at the rear side of the PC. The method described is not just for USB modems. It should be good for many other USB devices.
The important part is that the requirements are for the USB bus, and the port, the device is attached to. There could be one, or more, sub ports too. Suppose I obtained bus 2 and port 4, without sub ports, for my device from the output of lsusb -t. This information is also recorded in the journal. With
$ cat /sys/bus/usb/drivers/usb/2-4/product
I can verify it is the intended device.
The following sequence will restart the device:
Connection
To connect to the mobile network, use one of the following methods.
Connection halts after few minutes running
This problem commonly occurs on some modems which locked by a mobile operator. You can successfully connect to the internet but after few minutes connection halts and your modem reboots. That happens because an operator built a some checks into modem firmware so a modem checks if a branded software is running on your pc, but usually that software is Windows-only, and obviously you do not use it. Fix (it works on ZTE-mf190 at least) is simple — send this command through serial port (use minicom or similar soft):
AT ZCDRUN=Ern
This command will delete a NODOWNLOAD.FLG file in the modem’s filesystem — it will disable such checks.
Another possibility for such disconnections is to help the customer save bandwidth, which might be expensive. With Huawei HiLink devices with a web interface, there might be an option there to set a longer period of inactivity before the connection hangs up.
Device identification
Installusbutils.
Examine the output of:
$ lsusb
which will show the vendor and product IDs of the device. Note that some devices will show two different product IDs at different times as explained below.
Note: Mini PCIe adapters also show up in lsusb instead of lspci.
Disable mode switching
Some ways to disable usb_modeswitch from operating on a device before the device was inserted, for example to be able to read the initial flash memory (ZeroCD), are:
Fix image quality
If you are getting low quality images while browsing the web over a mobile broadband connection with the hints shift r improves the quality of this image and shift a improves the quality of all images on this page, follow these instructions:
Installtinyproxy.
Edit /etc/tinyproxy/tinyproxy.conf and insert the following two lines:
AddHeader "Pragma" "No-Cache" AddHeader "Cache-Control" "No-Cache"
Starttinyproxy.service
Configure your browser to use localhost:8888 as a proxy server and you are all done. This is especially useful if you are using, for example, Google Chrome which, unlike Firefox, does not allow you to modify the Pragma and Cache-Control headers.
Libmbim
Install libmbim. To bring up the modem you can use mbim-network which is a wrapper for mmcli calls. First create a profile for mbim-network.
/etc/mbim-network.conf
APN=apn=internet.myisp.example
Now connect to the network with:
# mbim-network /dev/cdc-wdmX start
Then follow Network configuration to bring up the ww* interface and get an IP address using DHCP.
Low connection speed
Someone claims that the connection speed under Linux is lower than Windows [3]. This is a short summary for possible solutions which are not fully verified.
In most of conditions, the low speed is caused by bad receiver signals and too many people in cell. But you still could use the following method to try to improve the connection speed:
- QoS parameter can be set with the
AT CGEQMINandAT CGEQREQcommands. It should also be possible to decrease and limit the connection speed. Add the followingInitcommand in/etc/wvdial.conf:
Init6 = AT CGEQMIN=1,4,64,640,64,640 Init7 = AT CGEQREQ=1,4,64,640,64,640
- Baud parameter in
/etc/wvdial.confcould be used to increase the connection speed:
Baud = 460800
It is advisable to see the baud rate set by the official modem application for Windows (possibly 9600 on Vista).
Modem mode
In general, at this point you should note if mode switching left you with additional /dev/ttyUSB* serial device and a ww*network interface. You can do that with journalctl or by shell commands such as:
$ ls /dev/ttyUSB* $ ip link
Modemmanager
Installmodemmanager and usb_modeswitch.
Start and enableModemManager.service.
Use mmcli(1) to communicate with the modem.
The simplest way to establish a connection is to use mmcli’s —simple-connect option.
First, list the modems and find the modem’s index:
$ mmcli -L
Look for /org/freedesktop/ModemManager1/Modem/MODEM_INDEX.
Next connect to the mobile network. For example:
$ mmcli -m MODEM_INDEX --simple-connect="apn=internet.myisp.example"Modemmanager does not recognize the modem
In case ModemManager does not recognize the modem, check the output of:
# systemctl status ModemManager.service
Monitor used bandwidth
Frequently a 3G connection obtained via a mobile phone operator comes with restricted bandwidth, so that you are only allowed to use a certain bandwidth per time (e.g. 1GB per month). While it is quite straight-forward to know which type of network applications are pretty bandwidth extensive (e.g. video streaming, gaming, torrent, etc.), it may be difficult to keep an overview about overall consumed bandwidth.
Netctl
Netctl can be used to establish a connection using a USB modem. An example configuration file provided by netctl is located at /etc/netctl/examples/mobile_ppp. Minimally you will probably have to specify
/etc/netctl/mobile_ppp
Interface=cdc-wdmX Connection=mobile_ppp AccessPointName=apn=internet.myisp.example
See the netctl article and netctl.profile(5) for more information.
Networkmanager
NetworkManager uses ModemManager to work with mobile broadband modems. See NetworkManager#Mobile broadband support.
Remove the pin
First of all use your SIM card in a normal phone and disable the PIN request if present. If the SIM card asks the PIN wvdial will not work.
Failing that, you can use mmcli (provided by modemmanager) or AT commands, to unlock the SIM card.
Using mmcli
First, list the modems and find the modem’s index:
$ mmcli -L
Look for /org/freedesktop/ModemManager1/Modem/MODEM_INDEX.
Find the SIM card index:
$ mmcli -m MODEM_INDEXJust as with the modem index, look for primary sim path: /org/freedesktop/ModemManager1/SIM/SIM_INDEX.
Unlock the SIM card:
$ mmcli --sim=SIM_INDEX --pin=PIN
Remove the requirement for PIN:
$ mmcli --sim=SIM_INDEX --pin=PIN --disable-pin
With a udev rule
Masking the udev rule the package is using can be achieved with
With dedicated software
This was tested on a Huawei EM770W (GTM382E) 3g card integrated into an Acer Aspire AS3810TG laptop. Install gnokiiAUR, then:
$ mkdir -p $XDG_CONFIG_HOME/gnokii
Usually the configuration directory is ~/.config/gnokii.
$ cp /etc/gnokiirc ~/.config/gnokii/config
Edit ~/.config/gnokii/config as follows:
port = /dev/ttyUSB0
You may have to use a different port depending on your configuration, for example /dev/ttyUSB1 or something else:
model = AT connection = serial
You need to be part of the uucpgroup to use /dev/ttyUSB0.
Then launch gnokii:
$ xgnokii
Click on the «SMS» icon button, a window opens up. Then click: «messages->activate sms reading». Your messages will show up in the window.
Command line script:
A small command line script using gnokii to read SMS on your SIM card (not phone memory) without having to start a GUI:
$ gnokii --getsms SM 0 end 2>&1|grep Text -A1 -B3|grep -v Text
What it does:
gnokii # invoke gnokii
--getsms SM 0 end # read SMS from SM-memory location (=SIM card) starting at 0 and reading all occupied memory locations ("end")
2>&1 # connect STDERR to STDOUT to make sure the output from the --getsms command can be piped to grep
|grep Text # pipe output from gnokii to grep, anchoring at output containing "Text"
-A1 -B3 # print one line after the matched pattern and three lines before the matched pattern
|grep -v Text # grep result to another grep to exclude the "Text" line (-v for inverting the pattern)Granted this does not work very well if your SMS contains the word «Text», but you may adapt the script to your liking.
Another option is to use mmcli
#!/bin/bash
#get modem number
MODEMNO=$(mmcli -L | grep -o "Modem/[0-9]" | grep -o [0-9]$)
#list newest SMS
SMSNO=$(mmcli -m ${MODEMNO} --messaging-list-sms | awk '/received/{split($1, ar, ///); print ar[6]; exit}')
#read message
mmcli -m ${MODEMNO} -s /org/freedesktop/ModemManager1/SMS/${SMSNO}With email like web interface
Some Devices, such as some Huawei HiLink, include an email like web interface for SMS. It is included in the device internal web server, which is used for other purposes too.
Writing sms
#!/bin/bash
#get modem number
MODEMNO=$(mmcli -L | grep -o "Modem/[0-9]" | grep -o [0-9]$)
#create sms in modem and get number
SMSNO=$(mmcli -m ${MODEMNO} --messaging-create-sms="text='$1',number= $2" | grep -o [0-9]*$)
#send message
mmcli -s ${SMSNO} --send
# delete all sent messages
for i in $(mmcli -m ${MODEMNO} --messaging-list-sms | grep " (sent)" | cut -f5 -d' ') ; do mmcli -m ${MODEMNO} --messaging-delete-sms=$i
doneYou may need give permission by creating file with content like
Wvdial
See main article: wvdial
Настройка сети в linux debian | админия
Существует несколько способов подключения к сети. Наиболее распространенные — это подключение через последовательный или USB порт и подключение через Ethernet.
1. Подключение через последовательный или usb порт.
Для доступа к сети (или Интернет) используется модем, будь то простой dialup, подключенный к телефонной линии, либо gsm модем.
Основной протокол для подключения — PPP. Соединение типа точка-точка (PPP) настраивается с помощью интерактивного скрипта: pppconfig, который при выполнении запрашивает необходимые данные (название подключения/имя провайдера, параметры DNS, метод аутентификации, имя пользователя, пароль, скорость порта модема, импульсный или тональный набор номера, номер телефона, порт модема). Повторным запуском pppconfig можно внести изменения в существующие настройки подключения, выбрав в меню настроек расширенные параметры можно даже задать строку инициализации модема и прочие опции. Команда pppconfig доступна после установки пакета pppconfig, который зависит от пакета ppp. Включать и отключать ppp интерфейс можно командами «pon name_conn» и «poff name_conn» (name_conn — название подключения или имя провайдера, которое задали во время настройки через pppconfig). При настройке ppp соединения через pppconfig используются следующие конфигурационные файлы:
«/etc/ppp/peers/<name_conn>» — сгенерированный pppconfig-ом файл для демона pppd
«/etc/chatscripts/<name_conn>» — сгенерированный pppconfig-ом файл, содержащий команды для диалога с модемом (AT команды, строку инициализации модема и прочее)
«/etc/ppp/options» — опции для демона pppd
«/etc/ppp/pap-secret» — данные для аутентификации по протоколу PAP
«/etc/ppp/chap-secret» — данные для аутентификации по протоколу CHAP
Альтернативным пакетом для настройки ppp является: wvdial, он настраивается командой wvdialconf.
2. Подключение через Ethernet.
Используется сетевая (Ethernet) карта. Сетевая плата может быть как для подключения по проводу так и беспроводной (Wi-Fi)
Основные протоколы: PPPoE, DHCP либо Static IP
Настройку сети Ethernet в Linux Debian можно произвести тремя способами:
1. На низком уровне, используя программы из net-tools (старые) или Linux iproute2 (новые). Многие программы net-tools на сегодня являются устаревшими, взамен используется iproute.
2. На высоком уровне, используя пакет ifupdown
3. В графическом интерфейсе (GUI), используя демон управления NetworkManager (NM) или Wicd (этим способом так же можно настроить и модемное PPP соединение)
Программы, для настройки сети, низкого уровня, являются достаточно мощными, но они не удобны и громоздки в использовании, поэтому были созданы программы высокого уровня. На настройке высокого уровня и остановимся подробнее.
Пакет ifupdown является стандартным для конфигурирования сети на высоком уровне в Linux Debian. Этот пакет использует конфигурационный файл: «/etc/network/interfaces» и содержит две команды «ifup» и «ifdown» для поднятия и отключения сетевого интерфейса. В качестве параметра передаётся имя сетевого интерфейса. Например команда «ifup eth0» поднимает интерфейс eth0 с заданными настройками в «/etc/network/interfaces»
Имя интерфейсу задаётся через механизм udev (если система смогла определить сетевую карту). Каждый сетевой интерфейс получает имя, и оно сохраняется при перезагрузке компьютера, так как привязывается к MAC адресу сетевой платы. Эта привязка записывается в файл: «/etc/udev/rules.d/70-persistent-net.rules», файл автоматически генерируется программой «/lib/udev/write_net_rules», используя правила описанные в «persistent-net-generator.rules». Таким образом, если на компьютере с Debian Linux заменить сетевую карту, то новой карте уже присвоится новое имя (например если имя интерфейса для старой карты было eth0, то новой будет назначено eth1, а имя eth0 будет ассоциированно с MAC адресом старой сетевой платы). Это нужно учитывать и следует произвести либо настройку в «/etc/network/interfaces» в соответствии с новым именем интерфейса, либо поменять правила привязки MAC адреса к имени в файле «/etc/udev/rules.d/70-persistent-net.rules». При редактировании «/etc/udev/rules.d/70-persistent-net.rules» каждое правило должно быть написано в одну строку, MAC адрес должен быть написан в нижнем регистре. Пример такого файла:
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:66:a4:c3", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:f7:43:bd", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:6a:e5:d0", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
Основная настройка сетевых параметров производится в файле «/etc/network/interfaces». Обобщённо синтаксис этого файла выглядит следующим образом:
«auto <interface_name>» — стартует (поднимает) интерфейс с именем interface_name во время загрузки системы
«allow-auto <interface_name>» — синоним «auto»
«allow-hotplug <interface_name>» — стартует интерфейс с именем interface_names, когда ядро обнаруживает hutplug событие от устройства
Строка начинающаяся с «iface <config_name> …» — определяет сетевую конфигурацию с именем config_name
Строка начинающаяся с «mapping <interface_name_glob>» — определяет какую из заданных конфигураций config_name применить на интерфейс с именем interface_name_glob. Каждая такая строфа должна содержать скрипт, который отправляет строку на стандартный вывод. В зависимости от того какую строку отправил скрипт и выбирается нужная конфигурация интерфейса.
Строка начинающаяся с «#» — коментарий (нельзя, что бы с неё начиналась последняя строчка в файле)
Строка начинающаяся с «» — перенос конфигурации на следующую строку
Строфы начинающиеся с iface имеют следующий синтаксис:
« iface <config_name> <address_family> <method_name>
<option1> <value1>
<option2> <value2>
…»
где
<config_name> — имя конфигурации (например eth0-config)
<address_family> — семейстов адресов (inet — для IPv4, inet6 — для IPv6)
<method_name> — метод настройки.
<option1> <value1> — опция и её значение
Методы для семейства адресов inet (IPv4):
loopback — метод для определения интерфейса замыкания на себя (для этого метода нет опций)
static — метод используется для настройки интерфейса при статическом IP (Опции: address, netmask, broadcast, network, metric, gateway, pointopoint, media, hwaddress, mtu)
manual — метод для настройки интерфейсов, конфигурация которых не заданна. Интерфейсы настраиваются вручную во время команд up / down или с помощью скриптов в /etc/network/if-*.d
dhcp — метод получения настройки сети через DHCP сервер (Опции: hostname, leasehours, leasetime, vendor, client, hwaddress)
bootp — метод получения настройки сети через протокол BOOTP (Опции: bootfile, server, hwaddr)
ppp — метод использует pon/poff для конфигурации интерфейса (Опции: provider)
wvdial — метод использует wvdial для настройки интерфейса (Опции: provider)
Методы для семейства адресов inet6 (IPv6):
loopback — метод для определения интерфейса замыкания на имеющего адрес IPv6 (для этого метода нет опций)
static — метод используется для настройки интерфейса при статическом IPv6 (Опции: address, netmask, gateway, media, hwaddress, mtu)
manual — аналог метода manual для IPv4, только используется для IPv6 (для этого метода нет опций)
v4tunnel — метод для настройки тунеля IPv6 поверх IPv4 , необходима команда ip из пакета iproute (Опции: address, netmask, endpoint, local, gateway, ttl)
В обычной конфигурации строфа mapping не используется, а имя конфигурации интерфейса (<config_name>) совпадает с именем интерфейса (<interface_name>)
Пример настройки интерфейса в «/etc/network/interfaces» при статическом получении IP адреса (IPv4):
lo — интерфейс замыкания на себя, нужен всегда
eth0 — основной сетевой интерфейс с IP адресом 192.168.56.40 маской 255.255.255.0 и шлюзом по умолчанию 192.168.56.254
Если IP адрес динамический и в сети используется DHCP сервер то настройка выглядит следующим образом:
Для изменения конфигурации интерфейса, необходимо его сперва выключить командой ifdown (например ifdown eth0), затем внести изменения в файл «/etc/network/interfaces» и включить интерфейс командой ifup (например ifup eth0).
Можно использовать виртуальные интерфейсы (подинтерфейсы), если необходимо прописать несколько IP адресов на одном физическом интерфейсе. Пример такого использования:
iface eth0 inet dhcp
iface eth0:0 inet static
address 192.168.56.10
netmask 255.255.255.0
network 192.168.56.0
Здесь основной интерфейсе eth0 получает IP адрес от DHCP сервера. А подинтерфейсу eth0:0 адрес присваивается статически. Таким образом будет два IP адреса на одном физическом интерфейсе.
Посмотреть состояние интерфейсов можно командами «ip addr show» или «ifconfig«
Настройка распознавания имён.
Распознавание имён хостов поддерживается через механизм NSS (Name Service Switch). В конфигурационном файле «/etc/nsswitch.conf» имеется строфа:
hosts: files dns
Так задаётся порядок распознавания. В данном случае сперва будет произведён поиск имени в файле «/etc/hosts» и если имя не найдено, то будет отправлен DNS запрос.
Сервера DNS можно указать в файле: «/etc/resolv.conf». Пример файла:
domain example.com
search example.com
nameserver 192.168.56.100
nameserver 8.8.8.8
Если установлен пакет resolvconf , тогда DNS сервера можно задать в «/etc/network/interfaces». Пример файла:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.56.10
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.254
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 8.8.8.8
dns-search test.ru
Итак мы рассмотрели основные моменты настройки сети в Debian. Настройку Wi-Fi сети и соединение по протоколу PPPoE рассмотрим в других статьях (Настройка Wi-Fi в Linux Debian, Настройка PPPoE в Linux Debian).
Способ 1: настройка через gnome-ppp
1) Устанавливаем программу:
sudo apt-get install gnome-ppp2) Чтобы не писать каждый раз в терминале команду для запуска, я создала launcher
3) После запуска видим окошко, в котором нужно заполнить все поля
4) Далее необходим задать некоторые настройки, нажимаем кнопочку Setup
- жмем Detect и автоматически определяется наш модем
- обязательно убираем Wait For Dialtone
нажав на Init Strings, добавляем строку инициализации:
- копируем, вставляем
- чтобы сохранилась, нажимаем Enter
- потом нажимаем Close
В примере строка для Киевстара и определенного тарифного плана! Вам нужно вставить свою строку инициализации: для своего оператора и своего тарифного плана!
- переходим на вкладку Options
на вкладке ставим галочки, как показано на рисунке (обязательно убираем Abort connecting if no dialtone!). Можно еще отметить две первых галочки, но в Ubuntu 11.04 при сворачивании в трей окошки исчезают и развернуть их без лишних действий невозможно =)
Когда все настройки заданы, нажимаем Close и попадаем на уже знакомую вкладку
Нажимаем Connect и наслаждаем интернетом 🙂
Способ 2: настройка через networkmanager
1) Заходим в Network Connections → Mobile Broadband → Add (или Edit, если подключение автоматически добавилось)
2) Выбираем модем и нажимаем Forward
3) Выбираем страну и нажимаем Forward
4) Выбираем провайдера и нажимаем Forward
5) Указываем тарифный план и жмем Forward
6) Проверяем настройки и нажимаем Apply
