LinuxForum.Fans
Тема

Ericsson f3607gw и GPS

Автор: trauka 12 сообщений 3826 просмотров
#377120

Здравствуйте, форумчане. Имеется модем Ericsson f3607gw со следующими портами

Показать
user@Lenovo-IdeaPad:~/Downloads$ for n in `ls /sys/class/*/*{ACM,wdm}*/device/interface`;do echo $(echo $n|awk -F '/' '{print $5}') : $(cat $n);done
ttyACM0 : F3607gw Mobile Broadband Data Modem
ttyACM1 : F3607gw Mobile Broadband Modem
ttyACM2 : F3607gw Mobile Broadband GPS Port
cdc-wdm0 : F3607gw Mobile Broadband Device Management
cdc-wdm1 : F3607gw Mobile Broadband USIM Port

интернет на нем включается и работает замечательно, чего не скажешь про GPS. Для включения GPS, команды посылаю через minicom

Показать
root@Lenovo-IdeaPad:/home/user# minicom -D /dev/ttyACM2

Добро пожаловать в minicom 2.6.1

ПАРАМЕТРЫ: I18n
Дата компиляции Feb 11 2012, 18:12:55.
Port /dev/ttyACM2

Нажмите CTRL-A Z для получения подсказки по клавишам

AT*E2GPSCTL=1,5,1
OK
AT*E2GPSNPD
OK
$GPGSV,1,1,01,07,,,34,,,,,,,,,,,,*78
$GPGSV,1,1,01,07,,,35,,,,,,,,,,,,*79
$GPGSV,1,1,01,07,,,32,,,,,,,,,,,,*7E
$GPGSV,1,1,01,07,,,33,,,,,,,,,,,,*7F
$GPGGA,,,,,,0,00,0.5,,M,-0.045099,M,0.0000199,0000*50
$GPRMC,000021.86,V,,,,,,,060180,,,N*7F
$GPGSV,1,1,01,07,,,33,,,,,,,,,,,,*7F
$GPGSA,A,1,,,,,,,,,,,,,1.1,0.5,1.0*34
$GPGSV,1,1,01,07,,,33,,,,,,,,,,,,*7F
$GPGSV,1,1,01,07,,,35,,,,,,,,,,,,*79
$GPGSV,1,1,01,07,,,33,,,,,,,,,,,,*7F
$GPGSV,1,1,01,07,,,33,,,,,,,,,,,,*7F
$GPGSV,1,1,01,07,,,32,,,,,,,,,,,,*7E

команды обрабатываются и начинают идти сообщения NMEA. Все бы хорошо, но xgps не принимает ни одного NMEA, после

Показать
root@Lenovo-IdeaPad:/home/user# gpsd /dev/ttyACM2
root@Lenovo-IdeaPad:/home/user# exit
exit
user@Lenovo-IdeaPad:~$ xgps

тишина, запускается xgps с пустым полем для отображения спутников, под полем прописано

Показать
{"class":"DEVICE","path":"/dev/ttyACM2","activated":"2014-04-19T07:14:47.082Z","driver":"Generic NMEA","native":0,"bps":115200,"parity":"N","stopbits":1,"cycle":1.00}

Экспериментировал с разными настройками скорости- все бестолку. В нете куча мануалов по запуску GPS на этом модеме, но у всех все работает. Может у кого-нибудь стоит или стоял подобный модем, поделитесь как его настроить.

#377151

Покажите права на устройства:

text
# ls -l /dev/{cdc-wdm*,ttyACM*}

и вывод dmesg.

#377157
Показать
root@Lenovo-IdeaPad:/home/user# ls -l /dev/{cdc-wdm*,ttyACM*}
crw------- 1 root root 180, 0 Апр 19 16:54 /dev/cdc-wdm0
crw------- 1 root root 180, 1 Апр 19 16:54 /dev/cdc-wdm1
crw-rw---T 1 root dialout 166, 0 Апр 19 16:54 /dev/ttyACM0
crw-rw---T 1 root dialout 166, 1 Апр 19 16:54 /dev/ttyACM1
crw-rw---T 1 root dialout 166, 2 Апр 19 16:54 /dev/ttyACM2
root@Lenovo-IdeaPad:/home/user# dmesg | grep -i mobile
[ 0.621345] Mobile IPv6
[ 4.286911] cdc_ether 1-5:1.6: wwan0: register 'cdc_ether' at usb-0000:00:1d.7-5, Mobile Broadband Network Device, 02:80:37:ec:02:00

...по-ходу что-то с правами не то?

#377162

Да, но думаю, cdc-wdm вам не нужны, поскольку у вас есть ttyACM2. А пользователь в группу dialout входит?
Если что, то проверить, нужно вам давать права на cdc-wdm или нет, можно, вручную поменяв права:

text
# chown -v root:dialout /dev/cdc-wdm*
# chmod -v ug+rw,o-rw /dev/cdc-wdm*

Если заработает, нужно в /etc/udev/rules.d создать файл 40-gps.rules примерно следующего вида:

text
SUBSYSTEM=="usb", ENV{IdVendor}=="1234", ENV{IdProduct}=="5678", MODE="0660"

и сделать

text
# /etc/init.d/udev reload

VID-PID подставьте из вывода # lsusb или # udevadm monitor --property, полученных в первом случае после подключения устройства и выполнения команды, во втором - наоборот, после запуска команды и подключения устройства. Еще, вероятно, в /lib{,64}/udev/rules.d уже есть файл, в котором прописаны известные GPS-ки, тогда его надо скопировать в /etc/udev/rules.d и там дополнить. Еще, если у вас systemd, то rules.d будет лежать в каталогах /{etc,lib{,64}}/systemd/.

#377176

yars, ...а есть еще варианты? ...к сожалению ничего не поменялось. Пользователь в группу dialout входит.

По пути /lib/udev/rules.d/ имеется файл 60-gpsd.rules

Показать
#
# /lib/udev/rules.d/25-gpsd.rules
# /lib/udev/gpsd.hotplug
#
# Setting the link in /lib/udev/rules.d activates the rule and determines
# when to run it on boot (similar to init.d processing).

SUBSYSTEM!="tty", GOTO="gpsd_rules_end"

# Prolific Technology, Inc. PL2303 Serial Port [linux module: pl2303]
ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", SYMLINK+="gps%n", RUN+="/lib/udev/gpsd.hotplug"
# ATEN International Co., Ltd UC-232A Serial Port [linux module: pl2303]
ATTRS{idVendor}=="0557", ATTRS{idProduct}=="2008", SYMLINK+="gps%n", RUN+="/lib/udev/gpsd.hotplug"
# PS-360 OEM (GPS sold with MS Street and Trips 2005) [linux module: pl2303]
ATTRS{idVendor}=="067b", ATTRS{idProduct}=="aaa0", SYMLINK+="gps%n", RUN+="/lib/udev/gpsd.hotplug"
# FTDI 8U232AM / FT232 [linux module: ftdi_sio]
ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="gps%n", RUN+="/lib/udev/gpsd.hotplug"
# Cypress M8/CY7C64013 (Delorme uses these) [linux module: cypress_m8]
ATTRS{idVendor}=="1163", ATTRS{idProduct}=="0100", SYMLINK+="gps%n", RUN+="/lib/udev/gpsd.hotplug"
# Cypress M8/CY7C64013 (DeLorme LT-40)
ATTRS{idVendor}=="1163", ATTRS{idProduct}=="0200", SYMLINK+="gps%n", RUN+="/lib/udev/gpsd.hotplug"
# Garmin International GPSmap, various models (tested with Garmin GPS 18 USB) [linux module: garmin_gps]
ATTRS{idVendor}=="091e", ATTRS{idProduct}=="0003", SYMLINK+="gps%n", RUN+="/lib/udev/gpsd.hotplug"
# Cygnal Integrated Products, Inc. CP210x Composite Device (Used by Holux m241 and Wintec grays2 wbt-201) [linux module: cp210x]
ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="gps%n", RUN+="/lib/udev/gpsd.hotplug"
# Cygnal Integrated Products, Inc. [linux module: cp210x]
ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea71", SYMLINK="gps%n", RUN+="/lib/udev/gpsd.hotplug"
# u-blox AG, u-blox 5 (tested with Navilock NL-402U) [linux module: cdc_acm]
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a5", SYMLINK="gps%n", RUN+="/lib/udev/gpsd.hotplug"
# u-blox AG, u-blox 6 (tested with GNSS Evaluation Kit TCXO) [linux module: cdc_acm]
ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a6", SYMLINK="gps%n", RUN+="/lib/udev/gpsd.hotplug"

ACTION=="remove", RUN+="/lib/udev/gpsd.hotplug"

LABEL="gpsd_rules_end"

пробовал в него прописать VID_PID- тоже безрезультатно

#377177

Выложите на pastebin вывод dmesg. Пока идеи кончились.

#377178

Выше я подробно все расписал, только нужно поправиться - правило должно выглядеть так, как в этом файле. Что говорит

text
# udevadm monitor --property

?

#377179

yars,
...что-то ничего не говорит, или я не так спрашиваю

Показать
user@Lenovo-IdeaPad:~$ su
Пароль:
root@Lenovo-IdeaPad:/home/user# udevadm monitor --environment
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

UDEV
KERNEL
#377181

Ну он ждет, пока вы устройство подключите. Я же выше про это писал.

#377182

yars, дело в том, что у меня встроенный модем mini PCI-E

#377183

Внутренний тогда уж. Откуда мне было знать?

#377286

Решил проблему установкой двух пакетов mbm-gpsd и mbm-gps-control (второй можно не ставить). Создаются симлмнки /dev/gps* с которыми gpsd работает.

Подскажите кто-нибудь как добавить демон в автозагрузку, пробую так

Показать
root@Lenovo-IdeaPad:/etc# update-rc.d mbm-gpsd defaults
update-rc.d: using dependency based boot sequencing
insserv: Service hal has to be enabled to start service mbm-gpsd
insserv: exiting now!
update-rc.d: error: insserv rejected the script header

ничего не выходит

в /etc/init.d/ лежит файл mbm-gpsd такого содержания

Показать
#! /bin/sh
### BEGIN INIT INFO
# Provides: mbm-gpsd
# Required-Start: $all dbus hal
# Required-Stop: $all dbus hal
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: MBM GPS daemon
# Description: Daemon for MBM GPS to abstract away differences from
# ordinary NMEA GPS device.
### END INIT INFO
#
# Authors: Bjorn Runaker <bjorn.runaker@ericsson.com>
# Torgny Johansson <torgny.johansson@ericsson.com>
#
#

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="MBM GPS daemon"
NAME=mbm-gpsd
DAEMON=/usr/sbin/$NAME
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
USER=root
DAEMON_OPTS=""

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

. /lib/lsb/init-functions

#
# Function that starts the daemon/service.
#
d_start() {
start-stop-daemon --start --background --quiet --make-pid --pidfile $PIDFILE \
--user $USER --exec $DAEMON -- $DAEMON_OPTS
}

#
# Function that stops the daemon/service.
#
d_stop() {
start-stop-daemon --stop --quiet --pidfile $PIDFILE \
--oknodo --user $USER --exec $DAEMON
}


case "$1" in
start)
log_daemon_msg "Starting $DESC" "$NAME"
d_start
log_end_msg $?
;;
stop)
log_daemon_msg "Stopping $DESC" "$NAME"
d_stop
log_end_msg $?
;;
restart|force-reload)
log_daemon_msg "Restarting $DESC" "$NAME"
d_stop
sleep 1
d_start
log_end_msg $?
;;
status)
status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
;;
*)
echo "Usage: $0 {start|stop|restart|force-reload|status}" >&2
exit 1
;;
esac

exit 0

Войдите или зарегистрируйтесь, чтобы ответить.