Temat: QMI na wielu 353u-2 na raz krótki poradnik jak to zrobić.
Hej,
jako że moje trzy modemy (huawei e353u-2, od irlandzkiego meteora) pomimo aktywnego huba usb mają dziwny problem z utrzymaniem połączenia przy użyciu modułu option i zwykłego połączenia modemowego.
(Wieszają się i połączenie można przywrócić tylko wyciągając fizycznie modem z portu.)
Po wielu postach i radach Cezarego odkryłem że są wspierane przez QMI, a dokładniej
kmod-usb-net-qmi-wwanJako że standardowy skrypt qmi-network nie wspierał więcej niż jednego połączenia, musiał więc zostać zmodyfikowany, do tego stworzyłem jeszcze prosty skrypt który pilnuje aby połączeni było cały czas wznawiane w przypadku rozłączenia.
Konkrety:
Hardware:
TL-WR1043ND z najnowszym gargoyle.
3 modemy huawei e353u-2
1 modem e3131 hilink
4 karty aero2Software:
kmod-usb-net-qmi-wwan
libqmi-glib
multiwanCo należy zmienić w /usr/bin/qmi-network
to:
print_usage ()
{
echo "usage: $0 [DEVICE] [COMMAND]"
}
if [ $# -ne 2 ]; then
echo "error: missing arguments" 1>&2
print_usage
exit 255
fi
DEVICE=$1
COMMAND=$2
NUMWAN=$3
STATE_FILE=/tmp/qmi-network-state
PROFILE_FILE=/etc/qmi-network.confzamieniamy na to:
print_usage ()
{
echo "usage: $0 [DEVICE] [COMMAND] [WAN]"
}
if [ $# -ne 3 ]; then
echo "error: missing arguments" 1>&2
print_usage
exit 255
fi
DEVICE=$1
COMMAND=$2
NUMWAN=$3
STATE_FILE=/tmp/qmi-$NUMWAN-network-state
PROFILE_FILE=/etc/qmi-network.confOd teraz można połączyć przez qmi-network więcej niż jeden modem.
Zmienia się składnia qmi-network, nalezy jeszcze podać "wan" z /etc/config/network do którego przypisany jest modem u mnie są to wan, wan2, wan3
Przykład:
qmi-network /dev/cdc-wdm0 start wanDruga rzecz to skrypt który raz uruchomiony pilnuje aby połączenie Qmi było cały czas nawiązane, w razie wykrycia że połączenie zostało rozłączone wznawia je i restartuje odpowiedni wan.
składnia [nazwa skryptu] <urzadzenie> <interfejs>
Przykład:
sh qmi_aero /dev/cdc-wdm0 wan
#!/bin/bash
print_usage ()
{
echo "usage: $0 [DEVICE] [WAN]"
}
check_conn()
{
if [ -n "$(qmi-network $DEVICE status $WAN|grep 'Status: connected')" ] ;
then
# logger "Status of QMI: $DEVICE INTERFACE: $WAN - connected"
echo "0"
return
else
logger "Status of QMI: $DEVICE INTERFACE: $WAN - not connected"
echo "1"
return
fi
}
restart_conn()
{
ifdown $WAN
if [ -f $STATE_FILE ] ;
then
qmi-network $DEVICE stop $WAN
logger "Old instance of QMI: $DEVICE INTERFACE: $WAN - STOPPED"
fi
while [ -z "$(qmi-network $DEVICE start $WAN| grep 'Network started successfully')" ];
do
logger "Connecting QMI: $DEVICE INTERFACE: $WAN - failed"
done
sleep 5
if [ -n "$(qmi-network $DEVICE status $WAN|grep 'Status: connected')" ] ;
then
logger "Connecting QMI: $DEVICE INTERFACE: $WAN - completed"
ifup $WAN
else
logger "Connecting QMI: $DEVICE INTERFACE: $WAN - Error"
fi
}
if [ $# -ne 2 ]; then
echo "error: missing arguments" 1>&2
print_usage
exit 255
fi
DEVICE=$1
WAN=$2
STATE_FILE=/tmp/qmi-$WAN-network-state
logger "Started script for QMI: $DEVICE INTERFACE: $WAN"
restart_conn
while :
do
if [ -e $DEVICE ] ; then
if [ "$(check_conn)" != "0" ];
then
restart_conn
fi
sleep 10
else
sleep 5
done