49 lines
1.1 KiB
Text
49 lines
1.1 KiB
Text
|
#!/sbin/openrc-run
|
||
|
|
||
|
# Based on msm-modem-uim-selection.initd
|
||
|
|
||
|
name="Modem WWAN port"
|
||
|
description="Activate the WWAN port on the embedded QMI modem"
|
||
|
|
||
|
depend() {
|
||
|
need rmtfs
|
||
|
before ofono
|
||
|
before modemmanager
|
||
|
}
|
||
|
|
||
|
# All of the logic is placed in the service start method as we want to block
|
||
|
# other services while the modem isn't ready yet.
|
||
|
start() {
|
||
|
# libqmi must be present to use this script.
|
||
|
if ! [ -x "$(command -v qmicli)" ]
|
||
|
then
|
||
|
eend 1 'qmicli is not installed.'
|
||
|
return 1
|
||
|
fi
|
||
|
|
||
|
# Prepare a qmicli command with desired modem path.
|
||
|
# The modem may appear after some delay, wait for it.
|
||
|
count=0
|
||
|
while [ -z "$QMICLI_MODEM" ] && [ "$count" -lt "45" ]
|
||
|
do
|
||
|
# Check if QRTR is available
|
||
|
if qmicli --silent -pd qrtr://0 --uim-noop > /dev/null
|
||
|
then
|
||
|
QMICLI_MODEM="qmicli --silent -pd qrtr://0"
|
||
|
veinfo "Using qrtr://0"
|
||
|
fi
|
||
|
sleep 1
|
||
|
count=$((count+1))
|
||
|
done
|
||
|
veinfo "Waited $count seconds for modem device to appear"
|
||
|
|
||
|
if [ -z "$QMICLI_MODEM" ]
|
||
|
then
|
||
|
eend 2 'No modem available.'
|
||
|
return 2
|
||
|
fi
|
||
|
|
||
|
$QMICLI_MODEM --dpm-open-port=hw-data-ep-type=bam-dmux,hw-data-ep-iface-number=1,hw-data-rx-id=1,hw-data-tx-id=1 > /dev/null
|
||
|
eend $?
|
||
|
}
|