gpsd.socket: Failed to receive listening socket ([::1]:2947): Input/output error
Creating a bug report/issue
Required Information
- DietPi version | 8.6.1
- Distro version | bullseye
- Kernel version |
Linux hostname 5.10.123-meson64 #22.05.3 SMP PREEMPT Wed Jun 22 07:23:04 UTC 2022 aarch64 GNU/Linux - SBC model | N2 (aarch64) (N2+ 4GB)
- Power supply used | ALLPOWER 15VDC/4A
- SD card used | 32GB Kingston CANVAS Select Plus MicroSD 100MB/s A1
Additional Information (if applicable)
- Software title | gpsd 3.22
- Was the software title installed freshly or updated/migrated? Yes
- Can this issue be replicated on a fresh installation of DietPi? Yes
- Bug report ID | N/A
Steps to reproduce
- sudo apt update
- sudo apt install gpsd gpsd-clients pps-tools
- connected USB GPS - u-blox M8030 then lsusb
- gpsmon /dev/gps0
- configure /etc/default/gpsd via nano
- sudo systemctl enable gpsd
- sudo systemctl start gpsd
- sudo gpsd /dev/gps0 -F /var/run/gpsd.sock
- cgps -s /dev/gps0
Expected behaviour
- Step 1 successful
- Step 2 successful
- Step 3 successful
- Step 4 successful
- Step 5 successful
- Step 6 successful
- Step 7 successful
- Step 8 successful
- Step 9 successful
Actual behaviour
- Step 1 successful
- Step 2 successful with version 3.22 installed
- Step 3 successful with lsusb result: Bus 001 Device 009: ID 1546:01a8 U-Blox AG [u-blox 8]
- Step 4 successful
- Step 5 successful
- Step 6 successful
- Step 7 failed : A dependency job for gpsd.service failed. See 'journalctl -xe' for details.
Aug 22 15:23:27 hostname systemd[1]: Created slice system-gpsdctl.slice.
░░ Subject: A start job for unit system-gpsdctl.slice has finished successfully
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ A start job for unit system-gpsdctl.slice has finished successfully.
░░
░░ The job identifier is 2675.
Aug 22 15:23:27 hostname systemd[33851]: gpsd.socket: Failed to create listening socket ([::1]:2947): Cannot assign requested address
Aug 22 15:23:27 hostname systemd[1]: gpsd.socket: Failed to receive listening socket ([::1]:2947): Input/output error
Aug 22 15:23:27 hostname systemd[1]: gpsd.socket: Failed to listen on sockets: Input/output error
Aug 22 15:23:27 hostname systemd[1]: gpsd.socket: Failed with result 'resources'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ The unit gpsd.socket has entered the 'failed' state with result 'resources'.
Aug 22 15:23:27 hostname systemd[1]: Failed to listen on GPS (Global Positioning System) Daemon Sockets.
░░ Subject: A start job for unit gpsd.socket has failed
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ A start job for unit gpsd.socket has finished with a failure.
░░
░░ The job identifier is 2674 and the job result is failed.
Aug 22 15:23:27 hostname systemd[1]: Dependency failed for Manage ttyACM0 for GPS daemon.
░░ Subject: A start job for unit [email protected] has failed
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ A start job for unit [email protected] has finished with a failure.
░░
░░ The job identifier is 2605 and the job result is dependency.
Aug 22 15:23:27 hostname systemd[1]: [email protected]: Job [email protected]/start failed with result 'dependency'.
- Step 8 successful
- Step 9 successful
Extra details
ls -ls /dev/gps*
0 lrwxrwxrwx 1 root root 7 Aug 22 15:23 /dev/gps0 -> ttyACM0
Many thanks for your report.
Job [email protected]/start failed with result 'dependency'
Can you show the output of:
systemctl cat gpsdctl@ttyACM0
I was out much of day and in course of the day more odd nonsense occurred. I need to see if what I have done addresses one of the odd behaviours. I also do not understand why all of sudden Linux changed /dev/GPSx. i have seen this sudden with no reason USB port assignment change for no reason with Raspberry Pi OS on system that uses number of USB devices to feed weather data. This means yet another Linux or udev related issue that I would suggest is due to Linux Kernel and/or udev. That said this GPS via USB is real mess and I had stability I thought until something happened while I was out for about 8 hours today. So I had added even more to the complex changes I have made to see if I at least solved one of the issues, new one related to IPV6 that occurred while I was out and was not presenting in last few days with the many changes I have effected based on my initial findings and work of number of days of testing.
For reasons unknown secondary issues have arisen so I reset the gpsd systemd files back to original installed by gpsd package. This was the state of the gpsd systemd files when reported this issue and the related findings.
The output you requested is:
systemctl cat gpsdctl@ttyACM0
# /lib/systemd/system/[email protected]
[Unit]
Description=Manage %I for GPS daemon
Requires=gpsd.socket
BindsTo=dev-%i.device
After=dev-%i.device
[Service]
Type=oneshot
Environment="GPSD_SOCKET=/run/gpsd.sock"
EnvironmentFile=-/etc/default/gpsd
RemainAfterExit=yes
ExecStart=/bin/sh -c "[ \"$USBAUTO\" = true ] && /usr/sbin/gpsdctl add /dev/%I || :"
ExecStop=/bin/sh -c "[ \"$USBAUTO\" = true ] && /usr/sbin/gpsdctl remove /dev/%I || :"
So it seems gpsd.socket failed. Can you check:
systemctl status gpsd.socket
systemctl cat gpsd.socket
ls -l /run/gpsd.sock
Bear in mind there may be delays for some of the requested information at times as I am working through a number of issues, including issues I have yet to report, clusters of medical issues, and coding issues. The coding issues that are just me issues in porting and/or improving seismic application related code I have written. The N2P was intended to be used for recording earthquakes around the world and I have missed a number of, including the significant events in the Indonesia area in last 36 hours due to 'Unable to enable SPI /dev/spidev0.0' #5645.
As gpsd.socket failed to run there was no /run/gpsd.sock.
/usr/lib/systemd/system/gpsd.socket:
[Unit]
Description=GPS (Global Positioning System) Daemon Sockets
[Socket]
ListenStream=/run/gpsd.sock
ListenStream=[::1]:2947
ListenStream=127.0.0.1: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
[Install]
WantedBy=sockets.target
/usr/lib/systemd/system/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
ExecStart=/usr/sbin/gpsd $GPSD_OPTIONS $OPTIONS $DEVICES
[Install]
WantedBy=multi-user.target
Also=gpsd.socket
2022-08-22 18:27:51 +0000 UTC : 1661192871 n2p@dietpi tty0 /etc/default $ sudo systemctl start gpsd.socket
Job failed. See "journalctl -xe" for details.
2022-08-22 18:28:48 +0000 UTC : 1661192928 n2p@dietpi 62FE9A82 tty0 /etc/default $ sudo systemctl status gpsd.socket
● gpsd.socket - GPS (Global Positioning System) Daemon Sockets
Loaded: loaded (/lib/systemd/system/gpsd.socket; enabled; vendor preset: enabled)
Active: failed (Result: resources)
Triggers: ● gpsd.service
Listen: /run/gpsd.sock (Stream)
[::1]:2947 (Stream)
127.0.0.1:2947 (Stream)
CPU: 1ms
Aug 22 18:08:35 dietpi systemd[1]: Failed to listen on GPS (Global Positioning System) Daemon Sockets.
Aug 22 18:27:51 dietpi systemd[1]: gpsd.socket: Failed to receive listening socket ([::1]:2947): Input/output error
Aug 22 18:27:51 dietpi systemd[1]: gpsd.socket: Failed to listen on sockets: Input/output error
Aug 22 18:27:51 dietpi systemd[1]: gpsd.socket: Failed with result 'resources'.
Aug 22 18:27:51 dietpi systemd[1]: Failed to listen on GPS (Global Positioning System) Daemon Sockets.
Aug 22 18:28:48 dietpi systemd[35008]: gpsd.socket: Failed to create listening socket ([::1]:2947): Cannot assign requested address
Aug 22 18:28:48 dietpi systemd[1]: gpsd.socket: Failed to receive listening socket ([::1]:2947): Input/output error
Aug 22 18:28:48 dietpi systemd[1]: gpsd.socket: Failed to listen on sockets: Input/output error
Aug 22 18:28:48 dietpi systemd[1]: gpsd.socket: Failed with result 'resources'.
Aug 22 18:28:48 dietpi systemd[1]: Failed to listen on GPS (Global Positioning System) Daemon Sockets.
2022-08-22 18:29:03 +0000 UTC : 1661192943 n2p@dietpi tty0 /etc/default $
2022-08-22 18:08:35 +0000 UTC : 1661191715 n2p@dietpi tty0 ~ $ journalctl -xe
[snip]
Aug 22 15:23:27 dietpi systemd[33851]: gpsd.socket: Failed to create listening socket ([::1]:2947): Cannot assign requested address
Aug 22 15:23:27 dietpi systemd[1]: gpsd.socket: Failed to receive listening socket ([::1]:2947): Input/output error
Aug 22 15:23:27 dietpi systemd[1]: gpsd.socket: Failed to listen on sockets: Input/output error
Aug 22 15:23:27 dietpi systemd[1]: gpsd.socket: Failed with result 'resources'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ The unit gpsd.socket has entered the 'failed' state with result 'resources'.
Aug 22 15:23:27 dietpi systemd[1]: Failed to listen on GPS (Global Positioning System) Daemon Sockets.
░░ Subject: A start job for unit gpsd.socket has failed
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ A start job for unit gpsd.socket has finished with a failure.
░░
░░ The job identifier is 2674 and the job result is failed.
Aug 22 15:23:27 dietpi systemd[1]: Dependency failed for Manage ttyACM0 for GPS daemon.
░░ Subject: A start job for unit [email protected] has failed
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ A start job for unit [email protected] has finished with a failure.
░░
░░ The job identifier is 2605 and the job result is dependency.
Aug 22 15:23:27 dietpi systemd[1]: [email protected]: Job [email protected]/start failed with result 'dependency'.
[snip]
Aug 22 16:20:09 dietpi systemd[34733]: gpsd.socket: Failed to create listening socket ([::1]:2947): Cannot assign requested address
Aug 22 16:20:09 dietpi systemd[1]: gpsd.socket: Failed to receive listening socket ([::1]:2947): Input/output error
Aug 22 16:20:09 dietpi systemd[1]: gpsd.socket: Failed to listen on sockets: Input/output error
Aug 22 16:20:09 dietpi systemd[1]: gpsd.socket: Failed with result 'resources'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ The unit gpsd.socket has entered the 'failed' state with result 'resources'.
Aug 22 16:20:09 dietpi systemd[1]: Failed to listen on GPS (Global Positioning System) Daemon Sockets.
░░ Subject: A start job for unit gpsd.socket has failed
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ A start job for unit gpsd.socket has finished with a failure.
░░
░░ The job identifier is 2751 and the job result is failed.
[snip]
Aug 22 18:08:35 dietpi systemd[34939]: gpsd.socket: Failed to create listening socket ([::1]:2947): Cannot assign requested address
Aug 22 18:08:35 dietpi systemd[1]: gpsd.socket: Failed to receive listening socket ([::1]:2947): Input/output error
Aug 22 18:08:35 dietpi systemd[1]: gpsd.socket: Failed to listen on sockets: Input/output error
Aug 22 18:08:35 dietpi systemd[1]: gpsd.socket: Failed with result 'resources'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ The unit gpsd.socket has entered the 'failed' state with result 'resources'.
Aug 22 18:08:35 dietpi systemd[1]: Failed to listen on GPS (Global Positioning System) Daemon Sockets.
░░ Subject: A start job for unit gpsd.socket has failed
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ A start job for unit gpsd.socket has finished with a failure.
░░
░░ The job identifier is 2895 and the job result is failed.
Aug 22 18:08:35 dietpi systemd[1]: Dependency failed for GPS (Global Positioning System) Daemon.
░░ Subject: A start job for unit gpsd.service has failed
░░ Defined-By: systemd
░░ Support: https://www.debian.org/support
░░
░░ A start job for unit gpsd.service has finished with a failure.
░░
░░ The job identifier is 2826 and the job result is dependency.
Aug 22 18:08:35 dietpi systemd[1]: gpsd.service: Job gpsd.service/start failed with result 'dependency'.
Do you have IPv6 enabled?
ip -6 a
Or is something else listening on this port?
ss -tulpn | grep ':2947'
@keypunch416 Does your issue persist?
I had the same issue with the same exact symptoms. The clue is that "ip -6 a" has no output, i.e. IPv6 is not enabled. So, do a clean override of the systemd stuff
sudo cp /lib/systemd/system/gpsd* /etc/systemd/system
and edit /etc/systemd/system/gpsd.socket to comment out the ipv6 config. Here's mine:
Description=GPS (Global Positioning System) Daemon Sockets
[Socket]
ListenStream=/var/run/gpsd.sock
#ListenStream=[::1]:2947
ListenStream=127.0.0.1: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=ipv6-only
[Install]
WantedBy=sockets.target
The system MUST be rebooted. Restarting the service won't do it, obviously.
Many thanks for reporting. Makes much sense that the socket fails if IPv6 is disabled, as it is explicitly configured to listen on both, IPv4 and IPv6.
A reboot shouldn't be required, but instead:
systemctl daemon-reload
systemctl restart gpsd.socket
systemctl restart gpsd
Marking as closed due to outstanding reply of OP. Feel free to reopen if either enabling IPv6 or disabling it in the socket does not help in your case.