Ericsson F5521gw + gpsd

worldi

wirrköpfiger Philosoph
Hallöchen,

anbei eine kleine Anleitung, mit der man ein Ericsson F5521gw dazu bewegen kann, Positionsdaten an gpsd weiterzureichen.

Schritt 1: Als Otto-Normal-Benutzer Zugriff auf /dev/cuaU2 bekommen.

Dazu habe ich kurzerhand eine Gruppe gps in /etc/groups angelegt und bin Mitglied geworden:
Code:
...
gps:*:2947:worldi
...

Als nächstes habe ich die /etc/devfs.conf etwas umgefrickelt. In etwa so...
Code:
...
[localrules=42]
own cuaU2 root:gps
perm cuaU2 0660
...

...und anschließend sichergestellt, dass der Kram bei Start auch angezogen wird. Gemeinerweise enthält /etc/defaults/rc.conf einen irreführenden Kommentar. Tipp: devfs_system_ruleset möchte eventuell Zahlen!

Meine /etc/rc.conf enthält seit Kurzem folgende Einträge:
Code:
...
devfs_load_ruleset="YES"
devfs_system_ruleset="42"  # someone needs to fix the misleading comment in /etc/defaults/rc.conf
...

Nach einmal Ausloggen, sich wieder einloggen und einem beherzten service devfs start als root gibt's Zugriff auf die Serielle des GPS.

Schritt 2: Googeln bis der Arzt kommt und auf rumänischen Wikis zur Erleuchtung gelangen!

Zur Erläuterung: Das eigentliche Problem mit o.g. Karte und gpsd ist, dass man die Karte erst mittels AT-Befehle in den GPS-Modus treten muss, was gpsd so aber nicht unterstützt. Der geneigte Handbuchleser wird jetzt auf die Idee kommen, dass sich das Problem über gpsd's control socket lösen lässt. Tut's aber nicht. Es will vielmehr ein Weg gefunden werden, die Serielle aufzumachen, mit AT-Befehlen zu füttern, offenzulassen (da der GPS-Modus ansonsten wieder ausgeschaltet wird) und irgendwie an gpsd zu übergeben.

Folgendes Skriptchen erledigt dies mit Hilfe von chat, einem Schuss schwarzer redirection-Magie und socat. Mit freundlichem Dank an Herrn Craciun! :)

Code:
#! /bin/sh
#
# This script allows to use an Ericsson F5521gw mobile broadband module (aka
# Dell DW5500 or Hewlett-Packard HS2340) with gpsd 3.9 under FreeBSD.
#
# Source:    hxxp://wiki.volution.ro/CiprianDorinCraciun/Notes/Public/F5521gw
# Requires:  astro/gpsd, net/socat
# Usage:    gps_on [interval] [tempfile]

interval="${1:-10}"            # update interval in seconds (default: 10)
tempfile="${2:-/tmp/gps.data}"  # a pty the GPS data is redirected to

# Set up the card for GPS usage and stream the GPS data to a temporary pty
# NOTE: socat's "echo=0" prevents gpsd from using 100% CPU time
(
  exec <>/dev/cuaU2 >&0                && \
  chat -s -S -t5 --                        \
    "*EMRDY: 1"  "AT"                      \
    "OK"        "AT+CFUN=1"              \
    "OK"        "AT*E2GPSCTL=1,$interval" \
    "OK"        "AT*E2GPSNPD"            \
    "OK"        ""                    && \
  exec socat                              \
    STDIO,echo=0                          \
    PTY,echo=0,link="$tempfile"
) &

# Run gpsd in read-only mode and have it take the GPS data from the pty
gpsd -b "$tempfile"


In der Hoffnung damit irgendwem eine ganz tolle man page-lese- und rumgoogle-Orgie versaut zu haben... :)

-- w


Kleiner Nachtrag: wer mehr über seine Karte in Erfahrung bringen möchte (Firmware-Status, SIMLock-Status, etc.), kann ihr mal ein AT*EEVINFO schicken.
 

lme

FreeBSD Committer
Danke! Ich würd's gerne selbst mals ausprobieren, aber die einzige SIM, die ich habe, verlangt nach der PUK. :-/
 

worldi

wirrköpfiger Philosoph
Probier's einfach mal. Wenn ich's richtig in Erinnerung habe, muss eine SIM-Karte nur eingesteckt sein, damit's tut.
 

lme

FreeBSD Committer
Nöö, leider nicht.... Ich habe gestern laange mit den AT Commands herumprobiert, aber ohne PUK kann man den GPS Teil nicht aktivieren. Spätestens nächste Woche habe ich aber ne SIM mit der ich das probieren kann.
 
Oben