gpsd: ERRO: não é possível ligar ao soquete local

1

Estou tentando fazer com que um dispositivo GPS BU-353 funcione no Ubuntu 16.04 LTS via GPSD. Quando eu executei cgps , recebi um erro de tempo limite.

Eu assumi que algo estava errado com o GPS porque eu não tenho sido usado há algum tempo então eu corri gpsmon . O gps ganhou uma correção em vários saltiles e adquiriu meu lat e long.

Isso me leva a acreditar que algo deve estar errado no GPSD, então eu executei o comando gpsd -N -D3 -F /dev/ttyUSB0 . Eu fui recebido com:

gpsd:ERROR: can't bind to local socket /dev/ttyUSB0
gpsd:ERROR: control socket create failed, netlib error -1

Mesmo quando eu direcionei o GPSD para o soquete com gpsd -N -D3 -F /var/run/gpsd.sock /dev/ttyUSB0 , (o código foi retirado diretamente da página de solução de problemas da GPSD ) Eu ainda estava recebendo o mesmo erro.

Eu não tenho idéia do que está errado. Eu sou muito novo no GPSD e não estou muito confortável com o Ubuntu de forma mais geral, então talvez eu esteja cometendo um erro simples. Qualquer ajuda é muito apreciada.

    
por Jordan Walters 28.06.2016 / 01:20

2 respostas

1

Um BU-353 deve funcionar imediatamente com o gpsd. Mas você tem algumas coisas acontecendo,

  • o primeiro item systemd é responsável pelo lançamento de uma instância do gpsd. Até que seja desligado ( sudo service gpsd stop ) você estará perseguindo o seu rabo.
  • -F Cria um soquete de controle para comandos de adição e remoção de dispositivo. Deve ser um nome de caminho válido em seu sistema de arquivos local. É duvidoso que seu soquete de controle seja possivelmente o gps USB que você está tentando ler. Normalmente, o soquete de controle é /var/run/gpsd.sock , mas pode ser /tmp/anything
  • você precisa ter permissões de gravação para abrir o soquete de controle. sudo gpsd -N -D3 -F /var/run/gpsd.sock funciona, enquanto gpsd -N -D3 -F /var/run/gpsd.sock falhará porque o usuário não privilegiado não pode gravar no soquete de controle. Da mesma forma, gpsd -N -D3 -F /tmp/when_pigs_fly deve funcionar. (Mas, nenhum funcionará se um gpsd já estiver sendo executado).

Além disso, você deve considerar instruções adicionais em /etc/default/gpsd Por exemplo,

# Default settings for the gpsd init script and the hotplug wrapper.

# Start the gpsd daemon automatically at boot time
START_DAEMON="true"

# Use USB hotplugging to add new USB devices automatically to the daemon
USBAUTO="true"

# Devices gpsd should collect to at boot time.
# They need to be read/writeable, either by user gpsd or the group dialout.
DEVICES="/dev/ttyACM0"

# Other options you want to pass to gpsd
GPSD_OPTIONS=""

Estes são introduzidos em /lib/systemd/system/gpsd.service como EnvironmentFile

A primeira linha é inútil. systemd é responsável e não sai do processo. Ele é executado com o sinalizador -N .

Eu configurei USBAUTO="true" porque o uso do udev e do hotplug pelo gpsd é bastante transparente. Conecte algo que é um GPS e funciona. Se não é gps, importa o seu próprio negócio.

Mas eu código na localização de um GPS que estou trabalhando no momento. Como, parando / reiniciando o gpsd sem reinicializar, o gpsd não "saberá" sobre o gps em /dev/ttyACM0 (ou onde quer que esteja) sem um evento hotplug. Eu codifico no local para não ter que desassociar / conectar o GPS toda vez que eu reiniciar o gpsd sem reiniciar.

Outro GPSD_OPTIONS= poderia incluir -n -G ou -b a seu critério.

Além disso, há outros clientes de teste ( xgps ) que são mais robustos para verificar a saída do gps, mas isso deve levá-lo à direção correta.

    
por Nodak 29.06.2016 / 07:46
0

É permissões - obtenha o mesmo erro em um framboesa que esteja apenas adicionando / executando o comando com permissões sudo / root.

sudo gpsd / dev / ttyUSB0 -F /var/run/gpsd.sock

    
por Karl 10.01.2017 / 17:53