本文主要是介绍modem_hotplug 脚本解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
下面两个文件在3G上网卡插上后实现USB转串口模式
/etc >: cat mdev.conf
sd[a-h]*[0-9] 0:0 0660 *(/usr/sbin/hotplug /media/usb)
sd[a-h] 0:0 0660 *(/usr/sbin/hotplug /media/usb)
ub[a-h]*[0-9] 0:0 0660 *(/usr/sbin/hotplug /media/usb)
ub[a-h] 0:0 0660 *(/usr/sbin/hotplug /media/usb)
mmcblk[0-9]p[0-9] 0:0 0660 @(/bin/mount /dev/$MDEV /media/mmc)
mmcblk[0-9] 0:0 0660 $(/bin/umount /media/mmc)
sg*[0-9] 0:0 0660 *(/usr/sbin/modem_hotplug > /logs/modem_hotplug_sg.log 2>&1)
ttyUSB[0-9] 0:0 0660 *(/usr/sbin/modem_hotplug > /logs/modem_hotplug_tty.log 2>&1)
/etc >:
~ >: cat usr/sbin/modem_hotplug
#!/bin/sh# FILE: /apps/tools/tty_Symlic
# Copyright (C) 2013 GuoWenxue <guowenxue@gmail.com>
# This shell scripts used to auto create symbolic link(aliase device name /dev/ttyGSM*)
# for all the USB serial converter device(/dev/ttyUSB*), called by /etc/mdev.conf
source /etc/profile
DEVID_MF626_MODEM=19d2:0031
DEVID_MF626_CDROM=19d2:2000
MODEM_PREFIX=/dev/ttyGSM
LOCKFILE=/tmp/.symlic.lock
set -x
switch_cdrom_modem()
{
USB_ID=`lsusb | awk -F "ID" '{print $2}'`
for id in $USB_ID
do
if [ $DEVID_MF626_CDROM == $id ] ; then
usb_modeswitch -c /etc/ppp/zte_mf626.conf
fi
done
}
find_symlink_index()
{
index=-1
prefix=$1
symlinks=`ls ${prefix}*`
for i in $symlinks
do
#i=`echo $i | awk -F $prefix '{print $2}'`
i=${i##$prefix}
if [ $i > $index ] ; then
index=$i
fi
done
index=`expr $index + 1`
return $index
}
create_symlic()
{
#Check if this /dev/ttyUSB? already linked then exist
ls -l ${MODEM_PREFIX}* | grep $MDEV && return; #插入USB转串口的设备时如果发现ID不对就会退出。
set -x
syspath=`echo $DEVPATH | awk -F "/" '{ printf("/sys/%s/%s/%s/%s/%s/%s", $2,$3,$4,$5,$6,$7); }'` #syspath=/sys/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1
echo "Check 3G USB Modem ID in $syspath "
devID=`cat ${syspath}/idVendor`:`cat ${syspath}/idProduct`
if [ $devID == $DEVID_MF626_MODEM ] ; then
find_symlink_index ${MODEM_PREFIX}
index=$?
echo "Create symbolic link: ln -s $MDEV ${MODEM_PREFIX}${index}"
ln -s $MDEV ${MODEM_PREFIX}${index}
fi
}
remove_symlic()
{
symlic=`ls -l ${MODEM_PREFIX}* | grep $MDEV | awk '{print $9}'`
if [ ! -z "$symlic" ] ; then
echo "Remove $symlic -> $MDEV"
rm -f $symlic
rm -f /tmp/cdrom.log /tmp/tty.log
fi
}
{
flock 300 #锁住该脚本
case $ACTION in
remove)
if [ "${MDEV:0:6}" == "ttyUSB" ] ; then
remove_symlic
fi
;;
add)
if [ "${MDEV:0:2}" == "sg" ] ; then
switch_cdrom_modem
export > /tmp/cdrom.log
elif [ "${MDEV:0:6}" == "ttyUSB" ] ; then
create_symlic
export > /tmp/tty.log
fi
;;
esac
} 300<>$LOCKFILE
~ >:
插上后会在logs、tmp目录下生成以下一些文件:
~ >: usb 1-1.1: new full speed USB device number 4 using s3c2410-ohci
usb 1-1.1: New USB device found, idVendor=19d2, idProduct=2000
usb 1-1.1: New USB device strings: Mfr=2, Product=1, SerialNumber=3
usb 1-1.1: Product: ZTE CDMA Technologies MSM
usb 1-1.1: Manufacturer: ZTE,Incorporated
usb 1-1.1: SerialNumber: 1234567890ABCDEF
scsi1 : usb-storage 1-1.1:1.0
scsi 1:0:0:0: CD-ROM ZTE USB SCSI CD-ROM 2.31 PQ: 0 ANSI: 2
scsi 1:0:0:0: Attached scsi generic sg0 type 5
usb 1-1.1: usbfs: process 1056 (usb_modeswitch) did not claim interface 0 before use
usb 1-1.1: USB disconnect, device number 4
usb 1-1.1: new full speed USB device number 5 using s3c2410-ohci
usb 1-1.1: New USB device found, idVendor=19d2, idProduct=0031
usb 1-1.1: New USB device strings: Mfr=2, Product=1, SerialNumber=3
usb 1-1.1: Product: ZTE CDMA Technologies MSM
usb 1-1.1: Manufacturer: ZTE,Incorporated
usb 1-1.1: SerialNumber: 1234567890ABCDEF
option 1-1.1:1.0: GSM modem (1-port) converter detected
usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB0
option 1-1.1:1.1: GSM modem (1-port) converter detected
usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB1
scsi2 : usb-storage 1-1.1:1.2
option 1-1.1:1.3: GSM modem (1-port) converter detected
usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB2
scsi 2:0:0:0: Direct-Access ZTE MMC Storage 2.31 PQ: 0 ANSI: 2
sd 2:0:0:0: Attached scsi generic sg0 type 0
sd 2:0:0:0: [sda] Attached SCSI removable disk
~ >:
~ >:
~ >: ls tmp/
cdrom.log dropbear.pid messages syslogd.pid utmp
crond.pid logs stat tty.log
~ >: cat tmp/cdrom.log
export ACTION='add'
export DEVNAME='sg0'
export DEVPATH='/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.0/host1/target1:0:0/1:0:0:0/scsi_generic/sg0'
export EDITOR='/bin/vi'
export HISTFILESIZE='500'
export HISTSIZE='500'
export HOME='/'
export HOSTNAME='WirelessRouter'
export INPUTRC='/etc/inputrc'
export LD_LIBRARY_PATH='/lib:/usr/lib:/apps/lib'
export LOGNAME='root'
export MAJOR='21'
export MDEV='sg0'
export MINOR='0'
export PAGER='/bin/more '
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/apps/tools'
export PS1='\w >: '
export PWD='/dev'
export SEQNUM='516'
export SUBSYSTEM='scsi_generic'
export USER='root'
export network_cfg_dir='/apps/etc/network'
export ACTION='add'
export DEVNAME='sg0'
export DEVPATH='/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.2/host2/target2:0:0/2:0:0:0/scsi_generic/sg0'
export EDITOR='/bin/vi'
export HISTFILESIZE='500'
export HISTSIZE='500'
export HOME='/'
export HOSTNAME='WirelessRouter'
export INPUTRC='/etc/inputrc'
export LD_LIBRARY_PATH='/lib:/usr/lib:/apps/lib'
export LOGNAME='root'
export MAJOR='21'
export MDEV='sg0'
export MINOR='0'
export PAGER='/bin/more '
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/apps/tools'
export PS1='\w >: '
export PWD='/dev'
export SEQNUM='544'
export SUBSYSTEM='scsi_generic'
export USER='root'
export network_cfg_dir='/apps/etc/network'
~ >: cat tmp/tty.log
export ACTION='add'
export DEVPATH='/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.0/ttyUSB0'
export EDITOR='/bin/vi'
export HISTFILESIZE='500'
export HISTSIZE='500'
export HOME='/'
export HOSTNAME='WirelessRouter'
export INPUTRC='/etc/inputrc'
export LD_LIBRARY_PATH='/lib:/usr/lib:/apps/lib'
export LOGNAME='root'
export MDEV='ttyUSB0'
export PAGER='/bin/more '
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/apps/tools'
export PS1='\w >: '
export PWD='/dev'
export SEQNUM='528'
export SUBSYSTEM='usb-serial'
export USER='root'
export network_cfg_dir='/apps/etc/network'
export ACTION='add'
export DEVPATH='/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.1/ttyUSB1'
export EDITOR='/bin/vi'
export HISTFILESIZE='500'
export HISTSIZE='500'
export HOME='/'
export HOSTNAME='WirelessRouter'
export INPUTRC='/etc/inputrc'
export LD_LIBRARY_PATH='/lib:/usr/lib:/apps/lib'
export LOGNAME='root'
export MDEV='ttyUSB1'
export PAGER='/bin/more '
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/apps/tools'
export PS1='\w >: '
export PWD='/dev'
export SEQNUM='531'
export SUBSYSTEM='usb-serial'
export USER='root'
export network_cfg_dir='/apps/etc/network'
export ACTION='add'
export DEVNAME='ttyUSB1'
export DEVPATH='/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.1/ttyUSB1/tty/ttyUSB1'
export EDITOR='/bin/vi'
export HISTFILESIZE='500'
export HISTSIZE='500'
export HOME='/'
export HOSTNAME='WirelessRouter'
export INPUTRC='/etc/inputrc'
export LD_LIBRARY_PATH='/lib:/usr/lib:/apps/lib'
export LOGNAME='root'
export MAJOR='188'
export MDEV='ttyUSB1'
export MINOR='1'
export PAGER='/bin/more '
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/apps/tools'
export PS1='\w >: '
export PWD='/dev'
export SEQNUM='532'
export SUBSYSTEM='tty'
export USER='root'
export network_cfg_dir='/apps/etc/network'
export ACTION='add'
export DEVNAME='ttyUSB2'
export DEVPATH='/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.3/ttyUSB2/tty/ttyUSB2'
export EDITOR='/bin/vi'
export HISTFILESIZE='500'
export HISTSIZE='500'
export HOME='/'
export HOSTNAME='WirelessRouter'
export INPUTRC='/etc/inputrc'
export LD_LIBRARY_PATH='/lib:/usr/lib:/apps/lib'
export LOGNAME='root'
export MAJOR='188'
export MDEV='ttyUSB2'
export MINOR='2'
export PAGER='/bin/more '
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/apps/tools'
export PS1='\w >: '
export PWD='/dev'
export SEQNUM='538'
export SUBSYSTEM='tty'
export USER='root'
export network_cfg_dir='/apps/etc/network'
export ACTION='add'
export DEVNAME='ttyUSB0'
export DEVPATH='/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.0/ttyUSB0/tty/ttyUSB0'
export EDITOR='/bin/vi'
export HISTFILESIZE='500'
export HISTSIZE='500'
export HOME='/'
export HOSTNAME='WirelessRouter'
export INPUTRC='/etc/inputrc'
export LD_LIBRARY_PATH='/lib:/usr/lib:/apps/lib'
export LOGNAME='root'
export MAJOR='188'
export MDEV='ttyUSB0'
export MINOR='0'
export PAGER='/bin/more '
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/apps/tools'
export PS1='\w >: '
export PWD='/dev'
export SEQNUM='529'
export SUBSYSTEM='tty'
export USER='root'
export network_cfg_dir='/apps/etc/network'
export ACTION='add'
export DEVPATH='/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/1-1.1:1.3/ttyUSB2'
export EDITOR='/bin/vi'
export HISTFILESIZE='500'
export HISTSIZE='500'
export HOME='/'
export HOSTNAME='WirelessRouter'
export INPUTRC='/etc/inputrc'
export LD_LIBRARY_PATH='/lib:/usr/lib:/apps/lib'
export LOGNAME='root'
export MDEV='ttyUSB2'
export PAGER='/bin/more '
export PATH='/bin:/sbin:/usr/bin:/usr/sbin:/apps/tools'
export PS1='\w >: '
export PWD='/dev'
export SEQNUM='537'
export SUBSYSTEM='usb-serial'
export USER='root'
export network_cfg_dir='/apps/etc/network'
~ >: cat sys/
block/ class/ devices/ fs/ module/
bus/ dev/ firmware/ kernel/ power/
~ >: cat logs/
modem_hotplug_sg.log nat.log
modem_hotplug_tty.log start_apps.log
~ >: cat logs/modem_hotplug_sg.log
+ flock 300
+ [ sg == sg ]
+ switch_cdrom_modem
+ lsusb
+ awk -F ID {print $2}
+ USB_ID= 1d6b:0001
05e3:0606
19d2:0031
+ [ 19d2:2000 == 1d6b:0001 ]
+ [ 19d2:2000 == 05e3:0606 ]
+ [ 19d2:2000 == 19d2:0031 ]
+ export
~ >: cat logs/modem_hotplug_tty.log
+ flock 300
+ [ tt == sg ]
+ [ ttyUSB == ttyUSB ]
+ create_symlic
+ ls -l /dev/ttyGSM0 /dev/ttyGSM1 /dev/ttyGSM2
+ grep ttyUSB2
lrwxrwxrwx 1 root root 7 Apr 26 11:07 /dev/ttyGSM2 -> ttyUSB2
+ return
+ export
"/sys/%s/%s/%s/%s/%s/%s", $2,$3,$4,$5,$6,$7); }
+ syspath=/sys/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1
+ echo Check 3G USB Modem ID in /sys/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1
Check 3G USB Modem ID in /sys/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1
+ cat /sys/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/idVendor
+ cat /sys/devices/platform/s3c2410-ohci/usb1/1-1/1-1.1/idProduct
+ devID=19d2:0031
+ [ 19d2:0031 == 19d2:0031 ]
+ find_symlink_index /dev/ttyGSM
+ index=-1
+ prefix=/dev/ttyGSM
+ ls /dev/ttyGSM0 /dev/ttyGSM1
+ symlinks=/dev/ttyGSM0
/dev/ttyGSM1
+ i=0
+ [ 0 ]
+ index=0
+ i=1
+ [ 1 ]
+ index=1
+ expr 1 + 1
+ index=2
+ return 2
+ index=2
+ echo Create symbolic link: ln -s ttyUSB2 /dev/ttyGSM2
Create symbolic link: ln -s ttyUSB2 /dev/ttyGSM2
+ ln -s ttyUSB2 /dev/ttyGSM2
+ export
~ >:
这篇关于modem_hotplug 脚本解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!