Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 744982 - sci-geosciences/gpsd: cannot open tty devices because of wrong group (uses dialout, rather than uucp): /dev/ttyACM0: device activation failed.
Summary: sci-geosciences/gpsd: cannot open tty devices because of wrong group (uses di...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal major (vote)
Assignee: Sci-geo Project
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-09-27 22:35 UTC by Techwolf
Modified: 2021-05-01 01:43 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Techwolf 2020-09-27 22:35:00 UTC
USB gps devices that are presented as /dev/ttyACM? and /dev/ttyUSB? (?= a number) will fail with the folling error in logs:

Sep 27 18:10:33 laptop kernel: usb 7-1: new full-speed USB device number 7 using xhci_hcd
Sep 27 18:10:33 laptop kernel: usb 7-1: New USB device found, idVendor=1546, idProduct=01a8, bcdDevice= 3.01
Sep 27 18:10:33 laptop kernel: usb 7-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Sep 27 18:10:33 laptop kernel: usb 7-1: Product: u-blox GNSS receiver
Sep 27 18:10:33 laptop kernel: usb 7-1: Manufacturer: u-blox AG - www.u-blox.com
Sep 27 18:10:34 laptop kernel: cdc_acm 7-1:1.0: ttyACM0: USB ACM device
Sep 27 18:10:34 laptop gpsd.hotplug[27117]: add /dev/ttyACM0
Sep 27 18:10:34 laptop gpsdctl[27119]: gpsd_control(action=add, arg=/dev/ttyACM0)
Sep 27 18:10:34 laptop gpsdctl[27119]: reached a running gpsd
Sep 27 22:10:34 laptop gpsd[22501]: gpsd:ERROR: SER: device open of /dev/ttyACM0 failed: Permission denied - retrying read-only
Sep 27 22:10:34 laptop gpsd[22501]: gpsd:ERROR: SER: read-only device open of /dev/ttyACM0 failed: Permission denied
Sep 27 22:10:34 laptop gpsd[22501]: gpsd:ERROR: SER: device open of /dev/ttyACM0 failed: Permission denied - retrying read-only
Sep 27 22:10:34 laptop gpsd[22501]: gpsd:ERROR: SER: read-only device open of /dev/ttyACM0 failed: Permission denied
Sep 27 22:10:34 laptop gpsd[22501]: gpsd:ERROR: /dev/ttyACM0: device activation failed, freeing device.



Reproducible: Always

Steps to Reproduce:
1. emerge sci-geosciences/gpsd
2. Plug in a USB gps device.
3. Run xgps and see there is no data.
Actual Results:  
Error in logs:

Sep 27 22:10:34 laptop gpsd[22501]: gpsd:ERROR: SER: device open of /dev/ttyACM0 failed: Permission denied - retrying read-only
Sep 27 22:10:34 laptop gpsd[22501]: gpsd:ERROR: SER: read-only device open of /dev/ttyACM0 failed: Permission denied
Sep 27 22:10:34 laptop gpsd[22501]: gpsd:ERROR: SER: device open of /dev/ttyACM0 failed: Permission denied - retrying read-only
Sep 27 22:10:34 laptop gpsd[22501]: gpsd:ERROR: SER: read-only device open of /dev/ttyACM0 failed: Permission denied

Expected Results:  
Running xgps will show sats in view and location.

The root cause is gpsd_group=dialout in the ebuild. Replacing that line with gpsd_group=uucp fixes it. All tty[USB|ACM]* devices are set by udev to be group uucp.

Setting to critical as this bug prevent use of gpsd on nearly all gps devices in use. The description says "hangs" and I think this bug quifies for that setting as gpsd will set there doing nothing. Unplugging the USB device will not release it, have to issue a killall gpsd to release it.
Comment 1 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2020-09-27 23:09:38 UTC
They're owned by dialout on my systemd machine and uucp on an openrc one. Need to look more at why this is. Could be a coincidence.

Any custom udev rules?
Comment 2 Techwolf 2021-02-20 21:45:39 UTC
I did some digging today.

I believe I was asked if I created any custom udev rules, the answer is "no".

The only rule I found that sets the group is located in /lib/udev/rules.d/50-udev-default.rules. The line is:

KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="uucp"

equery returns sys-fs/eudev-3.2.9 as owning that file. That package is pulled in by virtual/udev-217-r2

*more digging*

This commit, https://github.com/gentoo/eudev/commit/1aa8fdf779219d953633323b4206acadc8b8e37b, that dates back 12 years change uucp to dailout.

Found the ebuild part that changes the above back to uucp

	# change rules back to group uucp instead of dialout for now
	sed -e 's/GROUP="dialout"/GROUP="uucp"/' \
		-i rules/*.rules \
	|| die "failed to change group dialout to uucp"

That change goes all the way back to CVS and is present in all eudev ebuilds.

https://sources.gentoo.org/repo/gentoo/historical.git/commit/sys-fs/eudev?id=87e39e2bf665a025a17760d377f939bd8fee21be
Comment 3 Rick Farina (Zero_Chaos) gentoo-dev 2021-05-01 01:43:52 UTC
fixed in acct-user/gpsd-0-r2