Главная категория > Linux
Mageia 7 86_64 и доводим её до ума
Master X:
Или:Вставляем в /lib/udev/rules.d/40-usb_modeswitch.rules сверху
--- Код: ---
KERNEL=="sr*",ACTION=="add",ATTRS{idVendor}=="2020",ATTRS{idProduct}=="0002",RUN+="/usr/bin/eject.sh -s /dev/%k"
ACTION=="add",ATTRS{idVendor}=="2020",ATTRS{idProduct}=="4000",RUN+="/usr/bin/usbserial-driver-bind.sh %s{idVendor} %s{idProduct}"
KERNEL=="ttyACM0|ttyUSB0",ACTION=="add",ATTRS{idVendor}=="2020",ATTRS{idProduct}=="4000",RUN+="/usr/bin/3g_connect.sh %k"
--- Конец кода ---
Создаём /usr/bin/3g_connect.sh
--- Код: ---
#!/bin/sh
#by zhuhaiyan 20120712
# check device
if [ "$1" = "" ]; then
echo "device is null. exit 1."
exit 1
fi
dev_str=`echo $1 | grep "tty"`
if [ "$dev_str" == "" ]; then
echo "$1 is a invalid device! exit 1."
exit 1
fi
dev_str=`ls /dev/tty* | grep "$1"`
if [ "$dev_str" == "" ]; then
echo "$1 is not exist! exit 1."
exit 1
fi
# check ppp0
ppp0_str=`ifconfig | grep "ppp0"`
if [ "$ppp0_str" != "" ]; then
echo "ppp0 is exist! exit 0"
exit 0
fi
# init comm port.
/usr/bin/atinit /dev/ttyUSB0
/usr/bin/atinit /dev/ttyUSB1
#check pin sim status.
`cat /dev/$1 > /tmp/devicelock & sleep 1` 1>/dev/null 2>&1
killall cat
`cat /dev/$1 > /tmp/cfun & chat -V "" "AT+CFUN=1" < /dev/$1 > /dev/$1` 1>/dev/null 2>&1
sleep 1
killall cat
`cat /dev/$1 > /tmp/devicelock & chat -V "" "AT+CPIN?" < /dev/$1 > /dev/$1` 1>/dev/null 2>&1
sleep 1
killall cat
at_return=`grep "READY" /tmp/devicelock`
if [ "$at_return" == "" ]; then
echo "Invalid SIM card, please check sim pin status."
exit 1
fi
echo "SIM is ready!!"
#for auto find apn and connect to internet.
#kill modem-manager of ubuntu.
#killall modem-manager
#get apn profile
tries=0
string_plmn=""
while [ $tries -le 3 -a "$string_plmn" = "" ]; do
#============================do======================
echo get plmn by +bmhplmn tries=$tries
#get all data from modem.
`cat /dev/$1 > /tmp/bmhplmn & sleep 1` 1>/dev/null 2>&1
killall cat
#get PLMN
`cat /dev/$1 > /tmp/bmhplmn & chat -V "" "AT+BMHPLMN" < /dev/$1 > /dev/$1` 1>/dev/null 2>&1
sleep 1
killall cat
# echo AT RETURN:
# cat /tmp/bmhplmn
at_return=`grep "+BMHPLMN:" /tmp/bmhplmn`
if [ "$at_return" != "" ]; then
string_plmn=`echo $at_return | awk '{print $2}'`
if [ "$string_plmn" = "" ]; then
tries=$((tries + 1))
continue
fi
string_plmn=`expr substr $string_plmn 1 5`
break
fi
tries=$((tries + 1))
#==================================done==========
done
tries=0
while [ $tries -le 3 -a "$string_plmn" = "" ]; do
#=============================do=======================
if [ "$string_plmn" = "" ]; then
echo get imsi by +cimi tries=$tries
#get all data from modem.
`cat /dev/$1 > /tmp/cimi & sleep 1` 1>/dev/null 2>&1
killall cat
#get cimi
`cat /dev/$1 > /tmp/cimi & chat -V "" "AT+CIMI" < /dev/$1 > /dev/$1` 1>/dev/null 2>&1
sleep 1
killall cat
echo AT RETURN:
cat /tmp/cimi
at_return=`grep "[0-9]" /tmp/cimi`
if [ "$at_return" = "" ]; then
echo invalid imsi.
tries=$((tries + 1))
continue
fi
string_cimi=`echo $at_return | awk '{print $1}'`
if [ "$string_cimi" = "" ]; then
echo fail to get cimi.
tries=$((tries + 1))
continue
fi
#get 5 num for plmn form imsi.
string_plmn=`expr substr $string_cimi 1 5`
fi
#=========================done===================
done
if [ "$string_plmn" = "" ]; then
echo fail to get PLMN.
exit 1
fi
echo success to get PLMN=$string_plmn
tries=0
string_OK=""
while [ $tries -le 3 -a "$string_OK" = "" ]; do
#===================================do=================
#get all data from modem.
`cat /dev/$1 > /tmp/cfun & sleep 1` 1>/dev/null 2>&1
killall cat
`cat /dev/$1 > /tmp/cfun & chat -V "" "AT+CFUN=1" < /dev/$1 > /dev/$1` 1>/dev/null 2>&1
sleep 1
killall cat
string_OK=`grep "OK" /tmp/cfun`
tries=$((tries + 1))
#=================================done=================
done
if [ "$string_OK" = "" ]; then
echo fail to execute at+cfun=1
exit 1
fi
echo successfull to execute at+cfun=1
echo "start to wait for register network..."
tries=0
string_RegHome=""
string_RegRoaming=""
string_Reg="0"
while [ $tries -le 45 -a "$string_Reg" = "0" ]; do
#===================================do=================
echo "wait for network registered...,tries=$tries"
#get all data from modem.
`cat /dev/$1 > /tmp/cgatt & sleep 1` 1>/dev/null 2>&1
killall cat
`cat /dev/$1 > /tmp/cgatt & chat -V "" "AT+CREG?" < /dev/$1 > /dev/$1` 1>/dev/null 2>&1
sleep 1
killall cat
string_RegHome=`grep ",1" /tmp/cgatt`
string_RegRoaming=`grep ",5" /tmp/cgatt`
if [ "$string_RegHome" != "" -o "$string_RegRoaming" != "" ]; then
string_Reg="1"
fi
tries=$((tries + 1))
#=================================done=================
done
if [ "$string_Reg" = "0" ]; then
echo "fail to register network, please check."
exit 1
fi
echo "successfull to register network."
#get apn profile
apn_profile=`grep $string_plmn /etc/3g_modem_connection/apn.dat`
echo get apn profile = $apn_profile
apn_dial=`echo $apn_profile | awk -F, '{ print $3 }'`
apn_user=`echo $apn_profile | awk -F, '{ print $4 }'`
apn_pass=`echo $apn_profile | awk -F, '{ print $5 }'`
apn_apn=`echo $apn_profile | awk -F, '{ print $6 }'`
apn_auth=`echo $apn_profile | awk -F, '{ print $7 }'`
echo apn_dial=$apn_dial
echo apn_user=$apn_user
echo apn_pass=$apn_pass
echo apn_apn=$apn_apn
echo apn_auth=$apn_auth
#make a chat script
cp /etc/3g_modem_connection/3g.template /etc/3g_modem_connection/3g
sed -i "s/__DIAL__/$apn_dial/g" /etc/3g_modem_connection/3g
if [ "$apn_apn" != "" ]; then
sed -i "s/__APN__/$apn_apn/g" /etc/3g_modem_connection/3g
sed -i "s/__NO_APN__/OK/g" /etc/3g_modem_connection/3g
else
sed -i "s/__NO_APN__/#/g" /etc/3g_modem_connection/3g
fi
#make a pppd connection script.
cp /etc/ppp/peers/3g.template /etc/ppp/peers/3g
sed -i "s/__DEVICE__/$1/g" /etc/ppp/peers/3g
sed -i "s/__USER__/$apn_user/g" /etc/ppp/peers/3g
sed -i "s/__DIAL__/$apn_dial/g" /etc/ppp/peers/3g
sed -i "s/__APN__/$apn_apn/g" /etc/ppp/peers/3g
#make pap-secrets
cp /etc/ppp/pap-secrets.template /etc/ppp/pap-secrets
sed -i "s/__USER__/$apn_user/g" /etc/ppp/pap-secrets
sed -i "s/__PASSWORD__/$apn_pass/g" /etc/ppp/pap-secrets
#make chap-secrets
cp /etc/ppp/chap-secrets.template /etc/ppp/chap-secrets
sed -i "s/__USER__/$apn_user/g" /etc/ppp/chap-secrets
sed -i "s/__PASSWORD__/$apn_pass/g" /etc/ppp/chap-secrets
tries_pppd_call_3g=0
ppp0_str=""
while [ $tries_pppd_call_3g -le 3 -a "$ppp0_str" = "" ]; do
#==========================================================
exit 0
#connect to internet
pppd call 3g
tries=0
echo "pppd connecting...(timeout=120 seconds)"
ppp0_str=`ifconfig | grep "ppp0"`
while [ "$ppp0_str" = "" -a $tries -le 120 ]; do
sleep 1
echo "pppd connecting...,tries=$tries"
ppp0_str=`ifconfig | grep "ppp0"`
tries=$((tries + 1))
done
if [ "$ppp0_str" != "" ]; then
echo "pppd is connected."
else
killall pppd
sleep 1
/usr/bin/modemtoatmode
sleep 2
fi
#===========================done============================
tries_pppd_call_3g=$((tries_pppd_call_3g + 1))
done
if [ "$ppp0_str" = "" ]; then
echo "pppd connection timeout! exit 1."
killall -9 pppd
exit 1
fi
#end
--- Конец кода ---
Создаём /usr/bin/eject.sh
--- Код: ---
#!/bin/sh
#by zhuhaiyan 20130406
#bind usb2serial driver.
/usr/bin/usbserial-driver-bind.sh 2020 4000
#eject the cdrom.
/usr/bin/eject -s $1
--- Конец кода ---
Создаём /usr/bin/usbserial-driver-bind.sh
--- Код: ---
#!/bin/sh
#by zhuhaiyan 20120716 for usb serial deiver bind
if [ "$1" != "" -a "$2" != "" ]; then
modprobe -r usbserial
modprobe usbserial "vendor=0x$1" "product=0x$2"
fi
--- Конец кода ---
Делаем их выполняемыми:
cd /usr/bin
chmod +x *.sh
http://elementary.today/forum/viewtopic.php?id=713
Ещё про модемы:
/usr/lib/libDrakX/network/connection/providers/cellular_extra.pm -от сюда берутся логины пароли днски(при настройке подключения) и складываются в /etc/sysconfig/network-scripts/chat-ppp0 отсюда и подключение происходит.
Master X:
Если захотелось перейти с релиза на альфу, бэту etc(а переустанавливать не хочется) то:
СпойлерУдаляем старые источники:
--- Код: ---
urpmi.removemedia -a
--- Конец кода ---
Добавляем новые:
--- Код: ---
urpmi.addmedia --all-media --distrib ftp://mirror.yandex.ru/mageia/distrib/cauldron/x86_64
--- Конец кода ---
или:
--- Код: ---
urpmi.addmedia --all-media --distrib http://aglae.biomedicale.univ-paris5.fr/distrib/cauldron/x86_64/
--- Конец кода ---
для 586й архитектуры:
--- Код: ---
urpmi.addmedia --all-media --distrib ftp://mirror.yandex.ru/mageia/distrib/cauldron/i586
--- Конец кода ---
Обновляемся:
--- Код: ---
urpmi --replacefiles --auto-update --auto
--- Конец кода ---
Перезагружаемся.Наводим красоту:
--- Код: ---
drakrpm-edit-media --expert
--- Конец кода ---
Удаляем все источники. Жмём "Добавить"
Note: Галки напротив Debug и Testing лучше не ставить, можно увалить систему тестовыми пакетами.
#LC_ALL=C msecgui -Запуск апплета:Настройка безопасности, прав доступа и аудита системы, так же будет вывод консоли на инглише.
Master X:
#LC_ALL=C имя утилиты, запустится на инглише, для багтрекера.
Master X:
А чтоб 3Г модем заработал:
/etc/sysconfig/network-scripts/chat-ppp0
ABORT BUSY
ABORT ERROR
ABORT 'NO CARRIER'
ABORT 'NO DIALTONE'
ABORT 'Invalid Login'
ABORT 'Login incorrect'
ABORT VOICE
ABORT 'NO ANSWER'
ABORT DELAYED
ABORT 'SIM PIN'
'' ATZ
OK-AT-OK 'AT+CPIN?'
OK-AT-OK 'AT+CMEE=2'
OK-AT-OK 'AT+CGDCONT=1,"IP","internet"'
OK-AT-OK 'AT+CGATT?'
OK 'ATDT*99#'
TIMEOUT 120
CONNECT ''
TIMEOUT 5
'~--' ''
Master X:
Чтоб управлять вантузом в локалке, нужно установить:
# urpmi rammina remmina-plugins-rdp
НО Перед этим на вантузе надо выполнить:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
Чтоб в эти реестры приклеелось...(от одмена)... хз... Так нада...
Навигация
Перейти к полной версии