dmesg
902.239955] usb 2-2: New USB device found, idVendor=091e, idProduct=0003, bcdDevice= 0.01
902.239959] usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
lsusb
Bus 005 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 004 Device 003: ID 04f2:b681 Chicony Electronics Co., Ltd
Bus 004 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 1d5c:5001
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 007: ID 1d5c:5100
Bus 002 Device 006: ID 1235:8210 Focusrite-Novation
Bus 002 Device 005: ID 262a:9227
Bus 002 Device 004: ID 1d5c:5011
Bus 002 Device 003: ID 2c7c:0125
Bus 002 Device 011: ID 091e:0003 Garmin International GPS (various models)
lsusb -s002:011 -v
Bus 002 Device 011: ID 091e:0003 Garmin International GPS (various models)
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 255 Vendor Specific Subclass
bDeviceProtocol 255 Vendor Specific Protocol
bMaxPacketSize0 64
idVendor 0x091e Garmin International
idProduct 0x0003 GPS (various models)
bcdDevice 0.01
iManufacturer 0
iProduct 0
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 39
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 300mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
systemctl status gpsd
● gpsd.service - GPS (Global Positioning System) Daemon
Loaded: loaded (/usr/lib/systemd/system/gpsd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2021-03-11 00:44:39 PST; 18min ago
Process: 4719 ExecStart=/usr/sbin/gpsd $GPSD_OPTIONS $OPTIONS $DEVICES (code=exited, status=0/SUCCESS)
Main PID: 4720 (gpsd)
Tasks: 1
CGroup: /system.slice/gpsd.service
└─4720 /usr/sbin/gpsd
There is much history on setting up rules for the GPS. This is what I am using.
/etc/udev/rules.d> ls
51-garmin.rules 70-headsets.rules 70-persistent-net.rules
56-sane-backends-autoconfig.rules 70-persistent-ipoib.rules rtl-sdr.rule
While I can understand a lot of what you post, I am a bit at loss at what the results of the udev rule is. Am I right that it should result in a device file created? Then where is that file and what is the name?
And you have really documented with many facts (I like that), but the statement “foxtrotgps finds gpsd but doesn’t read the gps. (I compiled the program with the maintainer’s help.) xgps doesn’t find the gps either.” is not accompanied by any prove. Aren’t there any messages (when starting from a terminal)?
Before trying the suggestions in the second reply, I figured I would reply to your before making any changes. Here is the output from Foxtrotgps when run from a console:
The program works even though the message is ominous. You can see the gpsd is connected, but no data is conveyed because gpsd isn’t getting the data from the GPS. Foxtrotgps otherwise operates fine.It loads maps,pans,etc.
When running xgps, no error messages are produced. Here is what you see on a console:
xgps
xgps: host localhost port 2947
Localhost use should require no changes to the firewall.
I forgot to mention I was using the geo repo. My rev of gpsd is 3.22-lp152.125.4-x86_64. (I had to transcribe that is I can’t cut and past from yast). Here is the output from gpsd:
gpsd -V
gpsd: 3.22 (revision 3.22)
And here is the drivers list:
gpsd -l
NMEA0183
Ashtech
Delorme TripMate
Pre-2003 Delorme EarthMate
Furuno Electric GH-79L4
n Garmin NMEA
c MTK-3301
OceanServer OS5000
San Jose Navigation FV18
b True North
c Jackson Labs Fury
* AIVDM
n b c * EverMore
n * Garmin Serial binary
* Garmin USB binary
n b * GeoStar
b * GREIS
* iTalk
* Motorola Oncore
b * Navcom NCT
n b * SiRF
* Skytraq
n b * SuperStarII
n b * Trimble TSIP
iSync
n b c * u-blox
b * Zodiac
* NMEA2000
* RTCM104V2
* RTCM104V3
* Garmin Simple Text
* JSON slave driver
PPS
# n: mode switch, b: speed switch, c: rate switch, *: non-NMEA packet type.
# Socket export enabled.
# Shared memory export enabled.
# DBUS export enabled
# Control socket for hotplug notifications enabled
# Magic Hat enabled
# systemd socket activation enabled
99 times out of 100 IPV6 messes up your system. However I saw the message that gpsd needs ipv6 so I enabled it.
The GPS60csx is a stand alone GPS, not a dongle. Every indication is GPSD can handle garmin’s proprietary format though I did put it in NEMA output as well with no change.
Here is my issue with your suggesting I assign the gps to ttyUSB0. I also have a GSM modem in the notebook. It uses ttyUSB0, ttyUSB1, ttyUSB2 and ttyUSB3. It would be
best to let the operating system assign the USB ports. That said, if I make the GPS be ttyUSB0, will the operating system pick different ports for the modem?
As an experiemt I plugged and unplugged the GPS several times. The GPS itself says “connected” then it indicates “disconnected.” Here is the dmesg:
7960.899263] usb 2-2: new full-speed USB device number 13 using xhci_hcd
7961.055003] usb 2-2: New USB device found, idVendor=091e, idProduct=0003, bcdDevice= 0.01
7961.055007] usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
8139.366153] usb 2-2: USB disconnect, device number 13
8142.057195] usb 2-2: new full-speed USB device number 14 using xhci_hcd
8142.212314] usb 2-2: New USB device found, idVendor=091e, idProduct=0003, bcdDevice= 0.01
8142.212318] usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
8192.234759] usb 2-2: USB disconnect, device number 14
8194.937799] usb 2-2: new full-speed USB device number 15 using xhci_hcd
8195.094100] usb 2-2: New USB device found, idVendor=091e, idProduct=0003, bcdDevice= 0.01
8195.094104] usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
8202.330474] usb 2-2: USB disconnect, device number 15
8204.857904] usb 2-2: new full-speed USB device number 16 using xhci_hcd
8205.014186] usb 2-2: New USB device found, idVendor=091e, idProduct=0003, bcdDevice= 0.01
8205.014190] usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
The idVendor is what I selected in the rules.d for garmin.
As an experiment I will assigned ttyUSB4 to the default.
systemctl status gpsd
● gpsd.service - GPS (Global Positioning System) Daemon
Loaded: loaded (/usr/lib/systemd/system/gpsd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2021-03-11 18:36:24 PST; 4s ago
Process: 8838 ExecStart=/usr/sbin/gpsd $GPSD_OPTIONS $OPTIONS $DEVICES (code=exited, status=0/SUCCESS)
Main PID: 8839 (gpsd)
Tasks: 1
CGroup: /system.slice/gpsd.service
└─8839 /usr/sbin/gpsd /dev/ttyUSB4
Mar 11 18:36:24 linux-yxjo systemd[1]: Starting GPS (Global Positioning System) Daemon...
Mar 11 18:36:24 linux-yxjo systemd[1]: Started GPS (Global Positioning System) Daemon.
A check of /dev doesn’t show usb4 in use.
sh-4.4# pwd
/dev
sh-4.4# ls ttyUSB*
ttyUSB0 ttyUSB1 ttyUSB2 ttyUSB3
The gps itself indicates it is disconnected.
Here is disabled the daemon but can’t get your test to work:
sh-4.4# systemctl disable gpsd
Removed /etc/systemd/system/multi-user.target.wants/gpsd.service.
Removed /etc/systemd/system/sockets.target.wants/gpsd.socket.
sh-4.4# sysctl status gpsd
sysctl: cannot stat /proc/sys/status: No such file or directory
sysctl: cannot stat /proc/sys/gpsd: No such file or directory
sh-4.4# systemctl status gpsd
● gpsd.service - GPS (Global Positioning System) Daemon
Loaded: loaded (/usr/lib/systemd/system/gpsd.service; disabled; vendor preset: disabled)
Active: inactive (dead) since Thu 2021-03-11 18:43:09 PST; 1min 10s ago
Main PID: 8839 (code=exited, status=0/SUCCESS)
Mar 11 18:36:24 linux-yxjo systemd[1]: Starting GPS (Global Positioning System) Daemon...
Mar 11 18:36:24 linux-yxjo systemd[1]: Started GPS (Global Positioning System) Daemon.
Mar 11 18:40:12 linux-yxjo gpsd[8839]: gpsd:ERROR: SER: device open of /dev/ttyUSB4 failed: No such file or directory - retr>
Mar 11 18:40:12 linux-yxjo gpsd[8839]: gpsd:ERROR: SER: read-only device open of /dev/ttyUSB4 failed: No such file or direct>
Mar 11 18:40:12 linux-yxjo gpsd[8839]: gpsd:ERROR: /dev/ttyUSB4: device activation failed, freeing device.
Mar 11 18:43:09 linux-yxjo systemd[1]: Stopping GPS (Global Positioning System) Daemon...
Mar 11 18:43:09 linux-yxjo systemd[1]: Stopped GPS (Global Positioning System) Daemon.
sh-4.4# gpsd -D 5 -N /dev/ttyUSB4
gpsd:INFO: launching (Version 3.22)
gpsd:IO: opening IPv4 socket
gpsd:ERROR: can't bind to IPv4 port gpsd, Address already in use
gpsd:ERROR: maybe gpsd is already running!
gpsd:IO: opening IPv6 socket
gpsd:ERROR: can't bind to IPv6 port gpsd, Address already in use
gpsd:ERROR: maybe gpsd is already running!
gpsd:ERROR: command sockets creation failed, netlib errors -1, -1
Hi
You need to let the onboard devices use allocated ports, so run the following commands it two different terminals as root user with the device unplugged, then plug it it, this should verify the rule is working, should also tell you what the usb device is;
Terminal 1;
udevadm monitor
Terminal 2;
journalctl -f
Above should show what is being allocated, if not then you will need to tweak your udev rule to allocate as required, eg ttyUSB4
Then, just run the gpsd command I indicated, no systemd yet, just to make sure it’s working.
If your not using ipv6, then yes, disable system wide and copy over /usr/lib/systemd/system/gpsd.* over to /etc/systemd/system and edit to remove the ipv6 line from gpsd.socket. Once over in /etc any system updates won’t override your changes.
Does the gpscsx mount? I have 2 Garmin GPS devices and both mount readily without further tinkering, e.g.:
**erlangen:~ #** journalctl --since 00:00 -u FR735.service
-- Logs begin at Fri 2021-02-19 13:01:26 CET, end at Fri 2021-03-12 07:38:49 CET. --
Mar 12 07:38:48 erlangen systemd[1]: Started Get FR735 Activities.
Mar 12 07:38:48 erlangen rsync[25029]: sending incremental file list
...
Mar 12 07:38:49 erlangen rsync[25029]: GARMIN/TOTALS/TOTALS.FIT
Mar 12 07:38:49 erlangen rsync[25029]: sent 92,618 bytes received 417 bytes 62,023.33 bytes/sec
Mar 12 07:38:49 erlangen rsync[25029]: total size is 6,882,246 speedup is 73.97
Mar 12 07:38:49 erlangen systemd[1]: FR735.service: Succeeded.
**erlangen:~ #**
Data are available at the mount point:
**erlangen:~ #** find /FR735/ -type d
/FR735/
/FR735/GARMIN
/FR735/GARMIN/DEBUG
...
/FR735/GARMIN/REMOTESW
/FR735/GARMIN/TEXT
/FR735/System Volume Information
**erlangen:~ #**
sh-4.4# udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
KERNEL[24304.197552] add /devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb2/2-2 (usb)
KERNEL[24304.202262] add /devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb2/2-2/2-2:1.0 (usb)
UDEV [24305.779951] add /devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb2/2-2 (usb)
UDEV [24305.782272] add /devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb2/2-2/2-2:1.0 (usb)
And from the second root window:
ournalctl -f
-- Logs begin at Thu 2021-03-11 07:51:24 PST. --
Mar 11 22:17:42 linux-yxjo NetworkManager[1456]: <info> [1615529862.5005] device (wlan1): set-hw-addr: set MAC address to A6:57:FE:80:22:DF (scanning)
Mar 11 22:22:57 linux-yxjo NetworkManager[1456]: <info> [1615530177.4994] device (wlan1): set-hw-addr: set MAC address to 36:3E:AA:9E:4E:D5 (scanning)
Mar 11 22:28:12 linux-yxjo NetworkManager[1456]: <info> [1615530492.4993] device (wlan1): set-hw-addr: set MAC address to 3A:DF:B4:D4:D0:96 (scanning)
Mar 11 22:29:37 linux-yxjo ksmserver[2360]: UnmapNotify: 174063647
Mar 11 22:29:37 linux-yxjo ksmserver[2360]: UnmapNotify: 174063647
Mar 11 22:29:37 linux-yxjo ksmserver[2360]: CreateNotify: 174063680
Mar 11 22:29:37 linux-yxjo kwin_x11[2384]: qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 9054, resource id: 174063680, major code: 18 (ChangeProperty), minor code: 0
Mar 11 22:29:37 linux-yxjo ksmserver[2360]: Grab Released
Mar 11 22:32:43 linux-yxjo kio_http_cache_cleaner[3916]: QIODevice::skip (QBuffer): WriteOnly device
Mar 11 22:33:27 linux-yxjo NetworkManager[1456]: <info> [1615530807.5005] device (wlan1): set-hw-addr: set MAC address to C2:C1:C3:F3:E2:FF (scanning)
Mar 11 22:36:24 linux-yxjo kernel: debugfs: Directory '01' with parent 'devices' already present!
Mar 11 22:36:24 linux-yxjo kernel: usb 2-2: new full-speed USB device number 29 using xhci_hcd
Mar 11 22:36:24 linux-yxjo kernel: usb 2-2: New USB device found, idVendor=091e, idProduct=0003, bcdDevice= 0.01
Mar 11 22:36:24 linux-yxjo kernel: usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Mar 11 22:36:24 linux-yxjo mtp-probe[12462]: checking bus 2, device 29: "/sys/devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb2/2-2"
Mar 11 22:36:25 linux-yxjo mtp-probe[12462]: bus: 2, device: 29 was not an MTP device
Mar 11 22:38:42 linux-yxjo NetworkManager[1456]: <info> [1615531122.5000] device (wlan1): set-hw-addr: set MAC address to 32:39:0E:4C:8A:90 (scanning)
So does that mean it is trying to use ttyUSB2? Clearly a conflict.
Double checking /dev shows no ttyUSB4 created.
And I forgot to have the daemon running as shown below.
mrg@linux-yxjo:/dev> systemctl status gpsd
● gpsd.service - GPS (Global Positioning System) Daemon
Loaded: loaded (/usr/lib/systemd/system/gpsd.service; disabled; vendor preset: disabled)
Active: inactive (dead) since Thu 2021-03-11 18:43:09 PST; 4h 0min ago
Main PID: 8839 (code=exited, status=0/SUCCESS)
mrg@linux-yxjo:/dev> systemctl enable gpsd
Created symlink /etc/systemd/system/multi-user.target.wants/gpsd.service → /usr/lib/systemd/system/gpsd.service.
Created symlink /etc/systemd/system/sockets.target.wants/gpsd.socket → /usr/lib/systemd/system/gpsd.socket.
mrg@linux-yxjo:/dev> systemctl status gpsd
● gpsd.service - GPS (Global Positioning System) Daemon
Loaded: loaded (/usr/lib/systemd/system/gpsd.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Thu 2021-03-11 18:43:09 PST; 4h 1min ago
Main PID: 8839 (code=exited, status=0/SUCCESS)
mrg@linux-yxjo:/dev> systemctl start gpsd
mrg@linux-yxjo:/dev> systemctl status gpsd
● gpsd.service - GPS (Global Positioning System) Daemon
Loaded: loaded (/usr/lib/systemd/system/gpsd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2021-03-11 22:45:14 PST; 5s ago
Process: 12731 ExecStart=/usr/sbin/gpsd $GPSD_OPTIONS $OPTIONS $DEVICES (code=exited, stat>
Main PID: 12732 (gpsd)
Tasks: 1
CGroup: /system.slice/gpsd.service
└─12732 /usr/sbin/gpsd /dev/ttyUSB4
And now I will start over again. GPS is unplugged and the daemon is running. I aborted the processes in the two windows, ran clear, then started them again.
window one:
sh-4.4# udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
KERNEL[25106.676998] add /devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb2/2-2 (usb)
KERNEL[25106.681473] add /devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb2/2-2/2-2:1.0 (usb)
UDEV [25108.222011] add /devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb2/2-2 (usb)
UDEV [25108.224396] add /devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb2/2-2/2-2:1.0 (usb)
window two:
sh-4.4# journalctl -f
-- Logs begin at Thu 2021-03-11 07:51:24 PST. --
Mar 11 22:45:14 linux-yxjo polkitd[1087]: Unregistered Authentication Agent for unix-process:12722:2483028 (system bus name :1.236, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from bus)
Mar 11 22:47:40 linux-yxjo kernel: usb 2-2: USB disconnect, device number 29
Mar 11 22:48:45 linux-yxjo kernel: debugfs: Directory '01' with parent 'devices' already present!
Mar 11 22:48:45 linux-yxjo kernel: usb 2-2: new full-speed USB device number 30 using xhci_hcd
Mar 11 22:48:45 linux-yxjo kernel: usb 2-2: New USB device found, idVendor=091e, idProduct=0003, bcdDevice= 0.01
Mar 11 22:48:45 linux-yxjo kernel: usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Mar 11 22:48:45 linux-yxjo mtp-probe[12799]: checking bus 2, device 30: "/sys/devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb2/2-2"
Mar 11 22:48:46 linux-yxjo mtp-probe[12799]: bus: 2, device: 30 was not an MTP device
Mar 11 22:48:47 linux-yxjo kernel: usb 2-2: USB disconnect, device number 30
Mar 11 22:49:12 linux-yxjo NetworkManager[1456]: <info> [1615531752.5003] device (wlan1): set-hw-addr: set MAC address to 9E:A7:47:40:F8:3A (scanning)
Mar 11 22:49:46 linux-yxjo kernel: debugfs: Directory '01' with parent 'devices' already present!
Mar 11 22:49:47 linux-yxjo kernel: usb 2-2: new full-speed USB device number 31 using xhci_hcd
Mar 11 22:49:47 linux-yxjo kernel: usb 2-2: New USB device found, idVendor=091e, idProduct=0003, bcdDevice= 0.01
Mar 11 22:49:47 linux-yxjo kernel: usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
Mar 11 22:49:47 linux-yxjo mtp-probe[12844]: checking bus 2, device 31: "/sys/devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb2/2-2"
Mar 11 22:49:48 linux-yxjo mtp-probe[12844]: bus: 2, device: 31 was not an MTP device
Looks like it still wants to use USB2. The /etc/sysconfig rule is set for usb4, double checking:
cat gpsd
## Path: Hardware/GPS
## Description: GPS Daemon
## Type: yesno
## Default: no
#
# Whether or not to start gpsd automatically on plugin event
#
GPSD_STARTBYUDEV="no"
## Type: integer
## Default: 2947
#
# Use different port for the daemon
#
GPSD_PORT=
## Type: string
## Default: ""
#
# Further options to gpsd
#
#GPSD_OPTIONS=""
GPSD_OPTIONS="/dev/ttyUSB4"
Well this gives me something to investigate. From my previous reply with the daemon stopped I still couldn’t connect to /dev/ttyUSB4 so that is something to check out.
**erlangen:~ #** journalctl --since 07:00 _KERNEL_SUBSYSTEM=usb
-- Logs begin at Fri 2021-02-19 13:01:26 CET, end at Fri 2021-03-12 08:53:59 CET. --
Mar 12 07:38:46 erlangen kernel: usb 1-10: new full-speed USB device number 14 using xhci_hcd
Mar 12 07:38:47 erlangen kernel: usb 1-10: New USB device found, idVendor=091e, idProduct=086e, bcdDevice= 5.09
Mar 12 07:38:47 erlangen kernel: usb 1-10: New USB device strings: Mfr=0, Product=0, SerialNumber=0
**Mar 12 07:38:47 erlangen kernel: usb-storage 1-10:1.0: USB Mass Storage device detected **
Mar 12 07:59:03 erlangen kernel: usb 1-10: USB disconnect, device number 14
**erlangen:~ #**
Note that idVendor wasn’t accepted. I went a web page on how to write udev rules and what is acceptable is “vendor” and “product”. I had to change the ATTRS to ATTR,
Change to the gpsd.socket:
cat gpsd.socket
[Unit]
Description=GPS (Global Positioning System) Daemon Sockets
[Socket]
ListenStream=/run/gpsd.sock
#ListenStream=::1]:2947
ListenStream=127.0.0.1:2947
#ListenStream=0.0.0.0:2947
# To allow gpsd remote access, start gpsd with the -G option and
# uncomment the next two lines:
# ListenStream=::]:2947
# ListenStream=0.0.0.0:2947
SocketMode=0600
#BindIPv6Only=yes
BindIPv6Only=no
[Install]
WantedBy=sockets.target
OK now I will stop the daemon. Note the error regarding /dev/ttyUSB4:
systemctl status gpsd
● gpsd.service - GPS (Global Positioning System) Daemon
Loaded: loaded (/usr/lib/systemd/system/gpsd.service; enabled; vendor preset: disab>
Active: active (running) since Fri 2021-03-12 01:44:38 PST; 17min ago
Main PID: 1476 (gpsd)
Tasks: 1
CGroup: /system.slice/gpsd.service
└─1476 /usr/sbin/gpsd /dev/ttyUSB4
mrg@linux-yxjo:~> xgps
xgps: host localhost port 2947
mrg@linux-yxjo:~> cd /usr/udev
bash: cd: /usr/udev: No such file or directory
mrg@linux-yxjo:~> cd /etc/udev
mrg@linux-yxjo:/etc/udev> cd rules.d/
mrg@linux-yxjo:/etc/udev/rules.d> cat 51-garmin.rules
#SYSFS{idVenor}=="091e", SYSFS{idProduct}=="0003", MODE="0666"
#SUBSYSTEM=="usb", ATTR(idVendor)=="091e", ATTRS{idProduct}=="0003", MODE="0666"
SUBSYSTEM=="usb", ATTR{vendor}=="091e", ATTR{product}=="0003", MODE="0666"
#SUBSYSTEM=="usb", ATTR{idVendor}=="091e", ATTRS{idProduct}=="0003" MODE="0666", GROUP="plugdev"
mrg@linux-yxjo:/etc/udev/rules.d> cd /usr/lib/systemd
mrg@linux-yxjo:/usr/lib/systemd> cd system
mrg@linux-yxjo:/usr/lib/systemd/system> cat gpsd.socket
[Unit]
Description=GPS (Global Positioning System) Daemon Sockets
[Socket]
ListenStream=/run/gpsd.sock
#ListenStream=::1]:2947
ListenStream=127.0.0.1:2947
#ListenStream=0.0.0.0:2947
# To allow gpsd remote access, start gpsd with the -G option and
# uncomment the next two lines:
# ListenStream=::]:2947
# ListenStream=0.0.0.0:2947
SocketMode=0600
#BindIPv6Only=yes
BindIPv6Only=no
[Install]
WantedBy=sockets.target
mrg@linux-yxjo:/usr/lib/systemd/system> ls gpsd*
gpsdctl@.service gpsd.service gpsd.socket
mrg@linux-yxjo:/usr/lib/systemd/system> cat gpsd.service
[Unit]
Description=GPS (Global Positioning System) Daemon
Requires=gpsd.socket
# Needed with chrony SOCK refclock
After=chronyd.service
[Service]
Type=forking
EnvironmentFile=-/etc/default/gpsd
EnvironmentFile=-/etc/sysconfig/gpsd
ExecStart=/usr/sbin/gpsd $GPSD_OPTIONS $OPTIONS $DEVICES
● gpsd.service - GPS (Global Positioning System) Daemon
Loaded: loaded (/usr/lib/systemd/system/gpsd.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Fri 2021-03-12 02:15:13 PST; 8s ago
Main PID: 1476 (code=exited, status=0/SUCCESS)
Mar 12 01:44:38 linux-yxjo systemd[1]: Starting GPS (Global Positioning System) Daemon...
Mar 12 01:44:38 linux-yxjo systemd[1]: Started GPS (Global Positioning System) Daemon.
Mar 12 01:45:53 linux-yxjo gpsd[1476]: gpsd:ERROR: SER: device open of /dev/ttyUSB4 failed: No such file or directory - retrying read-only
Mar 12 01:45:53 linux-yxjo gpsd[1476]: gpsd:ERROR: SER: read-only device open of /dev/ttyUSB4 failed: No such file or directory
Mar 12 01:45:53 linux-yxjo gpsd[1476]: gpsd:ERROR: /dev/ttyUSB4: device activation failed, freeing device.
Mar 12 02:15:13 linux-yxjo systemd[1]: Stopping GPS (Global Positioning System) Daemon...
Mar 12 02:15:13 linux-yxjo systemd[1]: Stopped GPS (Global Positioning System) Daemon.
Here is the GPSD debug test:
gpsd -D 5 -N /dev/ttyUSB4
gpsd:INFO: launching (Version 3.22)
gpsd:IO: opening IPv4 socket
gpsd:ERROR: can't bind to IPv4 port gpsd, Address already in use
gpsd:ERROR: maybe gpsd is already running!
gpsd:IO: opening IPv6 socket
gpsd:ERROR: can't bind to IPv6 port gpsd, Cannot assign requested address
gpsd:ERROR: command sockets creation failed, netlib errors -1, -1
sh-4.4#
Hi
It’s trying to connect as a storage device not a gps…
I see Speed 12 Mbit/s in the usb-devices output. So on the device it’s not in storage mode, your sure it doesn’t need a special cable and serial to connect as a gps device?
Interesting since idVendor and idProduct weren’t accepted on my system but vendor and product were. Note the GPS60CSx is pretty old. It hasn’t seen a firmware update in a dozen years. I like it because it takes AA cells and is paid for, but mostly for AA cells.
If you could provide the rest of the associate files such as the rules it might help.
My nuvi 260w is 12+ years old… I had it working years ago and pretty sure I used gpsbabel… I just use standalone gps device here along side the ads-b antenna, it goes nowhere
I see ModemManager blacklists garmin_gps /usr/lib/udev/rules.d/77-mm-usb-device-blacklist.rule
There is an optional serial cable but I never used it. It looks a lot like a cable I used on an Lowarance GPS decades ago. The manual is online. I would cut and paste the section regarding the USB port but Garmin in their wisdom decided to DRM the contents. Manual page 96. PDF page 106. Note the Garmin proprietary data format is only available on the USB port. That is there is a USB serial mode. I never used it in NEMA mode.
I put the GPS in storage mode for yucks and it locked up. Unfortunately my copy of the mapsource CD has failed, I need to find where I stashed the original to use mapsource.
Hi
I would then try the serial cable, does the system your using have a serial port, else need a serial to usb cable… DRM, that’s why I suspect the need to looking at gpsbabel…