<feed xmlns='http://www.w3.org/2005/Atom'>
<title>packages/utils/gpsd, branch master</title>
<subtitle>Mirror of packages feed</subtitle>
<id>https://git.openwrt.org/feed/packages/atom?h=master</id>
<link rel='self' href='https://git.openwrt.org/feed/packages/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/'/>
<updated>2026-08-07T10:47:42Z</updated>
<entry>
<title>gpsd: run as dedicated 'gpsd' system user</title>
<updated>2026-08-07T10:47:42Z</updated>
<author>
<name>Michael Pfeifroth</name>
</author>
<published>2026-08-04T16:18:38Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=edef6a49260f5697a90dc83b26d1a8709e5afa03'/>
<id>urn:sha1:edef6a49260f5697a90dc83b26d1a8709e5afa03</id>
<content type='text'>
Create a dedicated 'gpsd' system user at package-install time (via
USERID) and pin gpsd's built-in privilege-separation identity to it
via the SConstruct 'gpsd_user' option.

Background: gpsd needs to start as root to open the underlying tty /
serial device but then internally setuid()s to a configured
unprivileged identity for the rest of its lifetime -- a built-in
privilege-separation feature of the daemon.

The current package leaves 'gpsd_user' at scons' default 'nobody'.
Sharing 'nobody' across daemons is a hardening anti-pattern:
a compromise of any one 'nobody'-owned process can trivially
interfere with any other, and audit trails become ambiguous.

Group choice: gpsd_group is a device-access knob rather than an
identity knob -- once gpsd has setuid()d away from root it still
needs to open() tty / serial nodes, which OpenWrt exposes as
root:dialout mode 0660 (see procd hotplug.json and base-files
/etc/group).  What actually keeps that access working post-drop is
the setgid() target that gpsd_group selects: gpsd calls
setgroups(0, NULL) immediately before dropping privileges, so any
supplementary groups on the target user are discarded and cannot
carry the permission.

scons' gpsd_group default is not 'nobody' but 'dialout' (uucp on
Gentoo build hosts), so on OpenWrt buildbots the daemon already
lands in 'dialout' today.  Pin gpsd_group=dialout explicitly so the
resulting binary no longer depends on the builder's /etc/gentoo-release:
a Gentoo builder would otherwise bake in 'uucp', a group base-files
does not ship, and gpsd's getgrnam() fallback silently keeps root's
gid in that case.

USERID's third field ('dialout=20') still adds the gpsd user to the
dialout group in /etc/group.  This does not affect the running
daemon (setgroups() strips it) but matches Debian's gpsd packaging
and lets an operator run gpsdctl / gpsmon as 'gpsd' by hand against
device nodes.  GID 20 is the value already frozen into base-files.

Giving gpsd its own primary user:

  * confines a hypothetical gpsd RCE (there have been NMEA / UBX
    parsing bugs historically) to files owned by 'gpsd' rather than
    to the shared 'nobody' identity;
  * matches the long-standing Debian gpsd packaging convention
    (adduser --system gpsd, member of dialout);
  * is a no-op for correctly-configured installations that never
    referenced 'nobody' as an intentional identity.

No numeric UID is pinned for the primary 'gpsd' user -- dynamic
assignment via USERID is sufficient here since no cross-distro
NFS/sudoers-style muscle memory depends on a specific number.

Bump PKG_RELEASE.

Signed-off-by: Michael Pfeifroth &lt;micpf@westermo.com&gt;
</content>
</entry>
<entry>
<title>tree-wide: remove redundant test.sh files</title>
<updated>2026-07-04T20:42:46Z</updated>
<author>
<name>Josef Schlehofer</name>
</author>
<published>2026-07-04T14:01:49Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=e755a9aef20b740621dd09a324d232bc52ceb1b4'/>
<id>urn:sha1:e755a9aef20b740621dd09a324d232bc52ceb1b4</id>
<content type='text'>
Generic version checks were introduced in actions-shared-workflows,
making these individual test.sh files obsolete.

Signed-off-by: Josef Schlehofer &lt;pepe.schlehofer@gmail.com&gt;
</content>
</entry>
<entry>
<title>gpsd: add wrapper script for hotplug/respawn handling</title>
<updated>2026-03-02T12:36:30Z</updated>
<author>
<name>Oliver Sedlbauer</name>
</author>
<published>2026-01-28T15:57:06Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=4faa1122695446f8e6d987c95801724997a20c9a'/>
<id>urn:sha1:4faa1122695446f8e6d987c95801724997a20c9a</id>
<content type='text'>
Gpsd needs some time to create its Unix socket after the process starts.
The hotplug call in service_started() is triggered too early, before the
socket is ready, causing failures in scripts that depend on it.

Additionally, when gpsd crashes and procd respawns it, service_started() is
not called again, so no hotplug event is emitted on respawn. Therefore scripts
listening for gpsd availability miss the STARTED event.

This commit ensures the hotplug call waits for the socket to appear,
so dependent scripts reliably see the STARTED event, even after respawns.

Signed-off-by: Oliver Sedlbauer &lt;os@dev.tdt.de&gt;
</content>
</entry>
<entry>
<title>gpsd: update to 3.26.1</title>
<updated>2025-06-30T11:32:56Z</updated>
<author>
<name>Aleks Mariusz</name>
</author>
<published>2025-06-11T11:03:00Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=5872070add7956524fd4d0d1b27625d5a40ce7c6'/>
<id>urn:sha1:5872070add7956524fd4d0d1b27625d5a40ce7c6</id>
<content type='text'>
Release Information: https://gitlab.com/gpsd/gpsd/-/blob/release-3.26.1/NEWS?ref_type=tags

Removed the patch to enhance ncurses6 detection (upstreamed in the release)
- 0002-ncurses6_detection.patch

Signed-off-by: Aleks Mariusz &lt;a+git-commit@alek.cx&gt;
</content>
</entry>
<entry>
<title>gpsd: migrate option device to a list devices</title>
<updated>2025-02-28T07:13:00Z</updated>
<author>
<name>Florian Eckert</name>
</author>
<published>2025-02-19T08:31:02Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=ace9f160ce2e414aa6872f2ff72efb65ba8f66d8'/>
<id>urn:sha1:ace9f160ce2e414aa6872f2ff72efb65ba8f66d8</id>
<content type='text'>
More than one device can be added to the gpsd at startup. Currently the gpsd
service start script in OpenWrt treats this as an option with only one value.
To allow multiple devices to be specified, the uci 'option device' must be
removed and a new uci 'list devices' is added.

This change means that several devices can be specified at gpsd start with
the new uci 'list devices' configuration.

Running configurations in the field are migrated by a migration script.

Signed-off-by: Florian Eckert &lt;fe@dev.tdt.de&gt;
</content>
</entry>
<entry>
<title>gpsd: add readonly option to uci</title>
<updated>2025-02-28T07:13:00Z</updated>
<author>
<name>Florian Eckert</name>
</author>
<published>2025-02-14T12:10:06Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=e377d07afd05e4d14cc13a20b5cfeb3e1831f62d'/>
<id>urn:sha1:e377d07afd05e4d14cc13a20b5cfeb3e1831f62d</id>
<content type='text'>
The 'readonly' option tells the GPSD that it is not allowed to write to the
GPS TTY, only reading the NMEA data stream is allowed. This option of the
GPSD must be set for my mobile radio device MV31, otherwise the GPSD can not
read the NMEA data stream on the GPS TTY because the GPSD blocks during
plugin probing.

gpsd:PROG: CORE: Probing "Garmin USB binary" driver...
gpsd:PROG: CORE: Probe not found "Garmin USB binary" driver...
gpsd:PROG: CORE: Probing "GeoStar" driver...
gpsd:PROG: Sent GeoStar packet id 0xc1

Signed-off-by: Florian Eckert &lt;fe@dev.tdt.de&gt;
</content>
</entry>
<entry>
<title>gpsd: only add device to procd start call if device option is configured</title>
<updated>2025-02-28T07:13:00Z</updated>
<author>
<name>Florian Eckert</name>
</author>
<published>2025-02-14T12:00:57Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=c954b960c41e054f707f1f67267dc8abb7432e11'/>
<id>urn:sha1:c954b960c41e054f707f1f67267dc8abb7432e11</id>
<content type='text'>
Signed-off-by: Florian Eckert &lt;fe@dev.tdt.de&gt;
</content>
</entry>
<entry>
<title>gpsd: add hotplug handling</title>
<updated>2025-02-28T07:13:00Z</updated>
<author>
<name>Florian Eckert</name>
</author>
<published>2025-01-30T10:55:19Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=d7fae1403012fbebd4f0399a8748312fa4d67143'/>
<id>urn:sha1:d7fae1403012fbebd4f0399a8748312fa4d67143</id>
<content type='text'>
The 'gpsd' offers the possibility to call the script '/etc/gpsd/device-hook'
when a GPS source was added or removed via gpsdctl.

In addition to the '/etc/gpsd/device-hook' call an event is now triggered
too after the 'gpsd' has started. This allows scripts to configurre 'gpsd'
receivers.

The following events are available for '/etc/hotplug.d/gpsd' scripts:

* ACTIVATE   via '/etc/gpsd/device-hook'
* DEACTIVATE via '/etc/gpsd/device-hook'
* STARTED    via '/etc/init.d/gpsd'

Signed-off-by: Florian Eckert &lt;fe@dev.tdt.de&gt;
</content>
</entry>
<entry>
<title>gpsd: add the possibility to start the gpsd with a different log level</title>
<updated>2025-02-28T07:13:00Z</updated>
<author>
<name>Florian Eckert</name>
</author>
<published>2025-01-28T09:48:19Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=7ca3ffebffdca2ac3c4cde80501f4e372a4444c9'/>
<id>urn:sha1:7ca3ffebffdca2ac3c4cde80501f4e372a4444c9</id>
<content type='text'>
This simplifies the handling of log levels if we need more log information
during development.

Signed-off-by: Florian Eckert &lt;fe@dev.tdt.de&gt;
</content>
</entry>
<entry>
<title>gpsd: add control socket '/var/run/gpsd.sock' on startup</title>
<updated>2025-02-28T07:13:00Z</updated>
<author>
<name>Florian Eckert</name>
</author>
<published>2025-01-28T09:47:21Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/feed/packages/commit/?id=f420a7bb374a85c3c11f97ecbb541b0eab840ce5'/>
<id>urn:sha1:f420a7bb374a85c3c11f97ecbb541b0eab840ce5</id>
<content type='text'>
This change makes it possible to add new gps device without restarting the
'gpsd' service by using the 'gpsdctl' command.

Signed-off-by: Florian Eckert &lt;fe@dev.tdt.de&gt;
</content>
</entry>
</feed>
