Я использую 10.04 Server.
У меня есть беспроводная карта 3G, использую программу переключения, которую я получаю от производителя, я могу перевести карту 3G из режима хранения USB в режим модема 3G, затем в / dev создаются следующие устройства: ttyUSB0, ttyUSB1, ttyUSB2 ,
Но я не знаю, какое устройство выбрать для использования 3G, поэтому мне нужно запустить wvdialconfig
, чтобы просканировать все возможные порты и найти подходящий. Есть ли способ автоматически определять порт 3G без использования wvdialconfig для сканирования всех портов каждый раз?
Если вы подключитесь к сетевому менеджеру, он определит, какой использовать. (Вы можете запустить его из командной строки с помощью nmcli
)
Предположим, ваш файл wvconf выглядит следующим образом:
[Dialer Defaults]
Modem = /dev/ttyUSB1
Baud = 960800 //Connection speed
Init = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ISDN = 0
Modem Type = USB Modem
Phone = #777 // Dialling number
Username = jimstech // username
Password = jimstech // password
stupid mode = 1 // setting as true
Вам необходимо заменить строку и проверить: Modem = / dev / ttyUSB1
снова предположим, что ваши возможные устройства: ttyUSB0 ttyUSB1 Теперь ttyUSB2 нам нужно заменить строку (/ dev / ttyUSB1) на ttyUSB0, затем запустить тест с использованием wvconf, затем USB2, затем USB3. (Надеюсь). Для автоматизации процесса используйте этот скрипт
#!/bin/bash
#your commands to load device file
array=(ttyUSB0 ttyUSB1 ttyUSB2 ttyUSB3)
len=${#array[*]} #Number of elements of the array
i=0
while [ $i -lt $len ]; do
rep="Modem = /dev/"${array[$i]}
sed 's*Modem = /dev/tty[A-Z]\*[0-9]*'"$rep"' *' /etc/wvdial.conf
wvdialconf #break with appropriate behavior
sleep 1
let i++
done
wvdial
. Я установил wvdial, поэтому я не знаю, что произойдет, если wvdialconf примет устройство. Этот скрипт должен запускаться с правами root.
Я использую этот скрипт, чтобы получить порты данных и управления для USB-ключа 3g.
#!/bin/sh
. /usr/share/libubox/jshn.sh
for a in `ls /sys/bus/usb/devices`; do
local vendor product
[ -z "$usb" -a -f /sys/bus/usb/devices/$a/idVendor -a -f /sys/bus/usb/devices/$a/idProduct ] || continue
vendor=$(cat /sys/bus/usb/devices/$a/idVendor)
product=$(cat /sys/bus/usb/devices/$a/idProduct)
echo Vendor $vendor, Product $product
[ -f /lib/network/wwan/$vendor:$product ] && {
usb=/lib/network/wwan/$vendor:$product
devicename=$a
echo usb: $usb devicename: $devicename
}
done
[ -n "$usb" ] && {
local old_cb control data
json_set_namespace wwan old_cb
json_init
json_load "$(cat $usb)"
echo "$(cat $usb)"
json_select
json_get_vars desc control data
json_set_namespace $old_cb
[ -n "$control" -a -n "$data" ] && {
ttys=$(ls -d /sys/bus/usb/devices/$devicename/${devicename}*/tty* | sed "s/.*\///g" | tr "\n" " ")
ctl_device=$(echo $ttys | cut -d" " -f $((control + 1)))
[ -n "$ctl_device" ] && ctl_device=/dev/$ctl_device
dat_device=$(echo $ttys | cut -d" " -f $((data + 1)))
[ -n "$dat_device" ] && dat_device=/dev/$dat_device
echo control_device: $ctl_device, data_device: $dat_device
}
}
Примеры выходов:
Подключено ZTE MF667
Vendor 1a40, Product 0101 #this is usb hub
Vendor 19d2, Product 0016
usb: /lib/network/wwan/19d2:0016 devicename: 1-1.2
{
"desc": "ONDA MF110/ZTE",
"control": 1,
"data": 2
}}
control_device: /dev/ttyUSB1, data_device: /dev/ttyUSB2
Подключено Huawei E3131
Vendor 1a40, Product 0101 #this is usb hub
Vendor 12d1, Product 1506
usb: /lib/network/wwan/12d1:1506 devicename: 1-1.2
{
"desc": "Huawei E367/E398",
"control": 2,
"data": 0
}}
control_device: /dev/ttyUSB2, data_device: /dev/ttyUSB0