diff --git a/configs/aarch64_defconfig b/configs/aarch64_defconfig index ccc59f03..0d9ff692 100644 --- a/configs/aarch64_defconfig +++ b/configs/aarch64_defconfig @@ -42,6 +42,9 @@ BR2_PACKAGE_DBUS_GLIB=y BR2_PACKAGE_DBUS_TRIGGERD=y BR2_PACKAGE_EUDEV_RULES_GEN=y # BR2_PACKAGE_EUDEV_ENABLE_HWDB is not set +BR2_PACKAGE_GPSD_DEVICES="/dev/gps0" +BR2_PACKAGE_GPSD_MAX_CLIENT_VALUE=2 +BR2_PACKAGE_GPSD_MAX_DEV_VALUE=1 BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y BR2_PACKAGE_MDIO_TOOLS=y @@ -146,6 +149,7 @@ INFIX_DESC="Infix is an immutable, friendly, and secure operating system that tu INFIX_HOME="https://github.com/kernelkit/infix/" INFIX_DOC="https://kernelkit.org/infix/" INFIX_SUPPORT="mailto:kernelkit@googlegroups.com" +BR2_PACKAGE_FEATURE_GPS=y BR2_PACKAGE_FEATURE_WIFI_MEDIATEK=y BR2_PACKAGE_FEATURE_WIFI_REALTEK=y BR2_PACKAGE_CONFD=y diff --git a/configs/aarch64_minimal_defconfig b/configs/aarch64_minimal_defconfig index c8f5f321..af01486f 100644 --- a/configs/aarch64_minimal_defconfig +++ b/configs/aarch64_minimal_defconfig @@ -42,6 +42,9 @@ BR2_PACKAGE_DBUS_GLIB=y BR2_PACKAGE_DBUS_TRIGGERD=y BR2_PACKAGE_EUDEV_RULES_GEN=y # BR2_PACKAGE_EUDEV_ENABLE_HWDB is not set +BR2_PACKAGE_GPSD_DEVICES="/dev/gps0" +BR2_PACKAGE_GPSD_MAX_CLIENT_VALUE=2 +BR2_PACKAGE_GPSD_MAX_DEV_VALUE=1 BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y BR2_PACKAGE_MDIO_TOOLS=y @@ -124,6 +127,7 @@ INFIX_DESC="Infix is an immutable, friendly, and secure operating system that tu INFIX_HOME="https://github.com/kernelkit/infix/" INFIX_DOC="https://kernelkit.org/infix/" INFIX_SUPPORT="mailto:kernelkit@googlegroups.com" +BR2_PACKAGE_FEATURE_GPS=y BR2_PACKAGE_CONFD=y BR2_PACKAGE_CONFD_TEST_MODE=y BR2_PACKAGE_GENCERT=y diff --git a/configs/arm_defconfig b/configs/arm_defconfig index 20e286d0..d0a8db97 100644 --- a/configs/arm_defconfig +++ b/configs/arm_defconfig @@ -44,6 +44,9 @@ BR2_PACKAGE_DBUS_GLIB=y BR2_PACKAGE_DBUS_TRIGGERD=y BR2_PACKAGE_EUDEV_RULES_GEN=y # BR2_PACKAGE_EUDEV_ENABLE_HWDB is not set +BR2_PACKAGE_GPSD_DEVICES="/dev/gps0" +BR2_PACKAGE_GPSD_MAX_CLIENT_VALUE=2 +BR2_PACKAGE_GPSD_MAX_DEV_VALUE=1 BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y BR2_PACKAGE_MDIO_TOOLS=y @@ -142,6 +145,7 @@ INFIX_DESC="Infix is an immutable, friendly, and secure operating system that tu INFIX_HOME="https://github.com/kernelkit/infix/" INFIX_DOC="https://kernelkit.org/infix/" INFIX_SUPPORT="mailto:kernelkit@googlegroups.com" +BR2_PACKAGE_FEATURE_GPS=y BR2_PACKAGE_FEATURE_WIFI_MEDIATEK=y BR2_PACKAGE_FEATURE_WIFI_REALTEK=y BR2_PACKAGE_CONFD=y diff --git a/configs/arm_minimal_defconfig b/configs/arm_minimal_defconfig index 98a211e9..0eac0960 100644 --- a/configs/arm_minimal_defconfig +++ b/configs/arm_minimal_defconfig @@ -44,6 +44,9 @@ BR2_PACKAGE_DBUS_GLIB=y BR2_PACKAGE_DBUS_TRIGGERD=y BR2_PACKAGE_EUDEV_RULES_GEN=y # BR2_PACKAGE_EUDEV_ENABLE_HWDB is not set +BR2_PACKAGE_GPSD_DEVICES="/dev/gps0" +BR2_PACKAGE_GPSD_MAX_CLIENT_VALUE=2 +BR2_PACKAGE_GPSD_MAX_DEV_VALUE=1 BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y BR2_PACKAGE_MDIO_TOOLS=y @@ -124,6 +127,7 @@ INFIX_DESC="Infix is an immutable, friendly, and secure operating system that tu INFIX_HOME="https://github.com/kernelkit/infix/" INFIX_DOC="https://kernelkit.org/infix/" INFIX_SUPPORT="mailto:kernelkit@googlegroups.com" +BR2_PACKAGE_FEATURE_GPS=y BR2_PACKAGE_CONFD=y BR2_PACKAGE_CONFD_TEST_MODE=y BR2_PACKAGE_GENCERT=y diff --git a/configs/riscv64_defconfig b/configs/riscv64_defconfig index f496f4b4..ef5f05dc 100644 --- a/configs/riscv64_defconfig +++ b/configs/riscv64_defconfig @@ -53,6 +53,9 @@ BR2_PACKAGE_DBUS_GLIB=y BR2_PACKAGE_DBUS_TRIGGERD=y BR2_PACKAGE_EUDEV_RULES_GEN=y # BR2_PACKAGE_EUDEV_ENABLE_HWDB is not set +BR2_PACKAGE_GPSD_DEVICES="/dev/gps0" +BR2_PACKAGE_GPSD_MAX_CLIENT_VALUE=2 +BR2_PACKAGE_GPSD_MAX_DEV_VALUE=1 BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y BR2_PACKAGE_MDIO_TOOLS=y @@ -173,6 +176,7 @@ INFIX_DESC="Infix is an immutable, friendly, and secure operating system that tu INFIX_HOME="https://github.com/kernelkit/infix/" INFIX_DOC="https://kernelkit.org/infix/" INFIX_SUPPORT="mailto:kernelkit@googlegroups.com" +BR2_PACKAGE_FEATURE_GPS=y BR2_PACKAGE_FEATURE_WIFI=y BR2_PACKAGE_FEATURE_WIFI_MEDIATEK=y BR2_PACKAGE_FEATURE_WIFI_REALTEK=y diff --git a/configs/x86_64_defconfig b/configs/x86_64_defconfig index 431b2839..c6415630 100644 --- a/configs/x86_64_defconfig +++ b/configs/x86_64_defconfig @@ -42,6 +42,9 @@ BR2_PACKAGE_DBUS_GLIB=y BR2_PACKAGE_DBUS_TRIGGERD=y BR2_PACKAGE_EUDEV_RULES_GEN=y # BR2_PACKAGE_EUDEV_ENABLE_HWDB is not set +BR2_PACKAGE_GPSD_DEVICES="/dev/gps0" +BR2_PACKAGE_GPSD_MAX_CLIENT_VALUE=2 +BR2_PACKAGE_GPSD_MAX_DEV_VALUE=1 BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y BR2_PACKAGE_RNG_TOOLS=y @@ -145,6 +148,7 @@ INFIX_DESC="Infix is an immutable, friendly, and secure operating system that tu INFIX_HOME="https://github.com/kernelkit/infix/" INFIX_DOC="https://kernelkit.org/infix/" INFIX_SUPPORT="mailto:kernelkit@googlegroups.com" +BR2_PACKAGE_FEATURE_GPS=y BR2_PACKAGE_FEATURE_WIFI=y BR2_PACKAGE_FEATURE_WIFI_MEDIATEK=y BR2_PACKAGE_FEATURE_WIFI_REALTEK=y diff --git a/configs/x86_64_minimal_defconfig b/configs/x86_64_minimal_defconfig index 3398654c..2fa921ec 100644 --- a/configs/x86_64_minimal_defconfig +++ b/configs/x86_64_minimal_defconfig @@ -42,6 +42,9 @@ BR2_PACKAGE_DBUS_GLIB=y BR2_PACKAGE_DBUS_TRIGGERD=y BR2_PACKAGE_EUDEV_RULES_GEN=y # BR2_PACKAGE_EUDEV_ENABLE_HWDB is not set +BR2_PACKAGE_GPSD_DEVICES="/dev/gps0" +BR2_PACKAGE_GPSD_MAX_CLIENT_VALUE=2 +BR2_PACKAGE_GPSD_MAX_DEV_VALUE=1 BR2_PACKAGE_GPTFDISK=y BR2_PACKAGE_GPTFDISK_SGDISK=y BR2_PACKAGE_RNG_TOOLS=y @@ -123,6 +126,7 @@ INFIX_DESC="Infix is an immutable, friendly, and secure operating system that tu INFIX_HOME="https://github.com/kernelkit/infix/" INFIX_DOC="https://kernelkit.org/infix/" INFIX_SUPPORT="mailto:kernelkit@googlegroups.com" +BR2_PACKAGE_FEATURE_GPS=y BR2_PACKAGE_CONFD=y BR2_PACKAGE_CONFD_TEST_MODE=y BR2_PACKAGE_GENCERT=y diff --git a/package/Config.in b/package/Config.in index 71cf73cc..3ccb35d0 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1,6 +1,7 @@ menu "Packages" comment "Hardware Support" +source "$BR2_EXTERNAL_INFIX_PATH/package/feature-gps/Config.in" source "$BR2_EXTERNAL_INFIX_PATH/package/feature-wifi/Config.in" comment "Software Packages" diff --git a/package/feature-gps/25-gpsd.rules b/package/feature-gps/25-gpsd.rules new file mode 100644 index 00000000..906936b4 --- /dev/null +++ b/package/feature-gps/25-gpsd.rules @@ -0,0 +1,65 @@ +# Override udev rules for gpsd +# +# This file is Copyright 2010 by the GPSD project +# SPDX-License-Identifier: BSD-2-clause + +SUBSYSTEM!="tty", GOTO="gpsd_rules_end" + +# Prolific Technology, Inc. PL2303 Serial Port [linux module: pl2303] +# !!! rule disabled in Debian as it matches too many other devices +# ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" +# ATEN International Co., Ltd UC-232A Serial Port [linux module: pl2303] +ATTRS{idVendor}=="0557", ATTRS{idProduct}=="2008", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" + +# PS-360 OEM (GPS sold with MS Street and Trips 2005) [linux module: pl2303] +ATTRS{idVendor}=="067b", ATTRS{idProduct}=="aaa0", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" + +# FTDI 8U232AM / FT232 [linux module: ftdi_sio] +# !!! rule disabled in Debian as it matches too many other devices +# ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" + +# Cypress M8/CY7C64013 (Delorme uses these) [linux module: cypress_m8] +ATTRS{idVendor}=="1163", ATTRS{idProduct}=="0100", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" + +# Cypress M8/CY7C64013 (DeLorme LT-40) +ATTRS{idVendor}=="1163", ATTRS{idProduct}=="0200", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" + +# Garmin International GPSmap, various models (tested with Garmin GPS 18 USB) [linux module: garmin_gps] +ATTRS{idVendor}=="091e", ATTRS{idProduct}=="0003", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" + +# Cygnal Integrated Products, Inc. CP210x Composite Device (Used by Holux m241 and Wintec grays2 wbt-201) [linux module: cp210x] +# !!! rule disabled in Debian as it matches too many other devices +#ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" + +# Cygnal Integrated Products, Inc. [linux module: cp210x] +# !!! rule disabled in Debian as it matches too many other devices +#ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea71", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" + +# u-blox AG, u-blox 5 (tested with Navilock NL-402U) [linux module: cdc_acm] +ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a5", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" + +# u-blox AG, u-blox 6 (tested with GNSS Evaluation Kit TCXO) [linux module: cdc_acm] +ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a6", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" + +# u-blox AG, u-blox 7 [linux module: cdc_acm] +ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a7", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" + +# u-blox AG, u-blox 8 (tested with GNSS Evaluation Kit EKV-M8N) [linux module: cdc_acm] +ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a8", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" + +# u-blox AG, u-blox 9 (tested with GNSS Evaluation Kit C099-F9P) [linux module: cdc_acm] +ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" + +# MediaTek (tested with HOLUX M-1200E) [linux module: cdc_acm] +ATTRS{idVendor}=="0e8d", ATTRS{idProduct}=="3329", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" + +# Telit wireless solutions (tested with HE910G) [linux module: cdc_acm] +ATTRS{interface}=="Telit Wireless Module Port", ATTRS{bInterfaceNumber}=="06", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" + +# u-blox AG, u-blox 8 (tested with u-blox8 GNSS Mouse Receiver / GR-801) [linux module: cdc_acm] +# !!! rule disabled in Debian as it matches too many other devices +#ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", SYMLINK+="gps%n", RUN+="/usr/lib/udev/gpsd.hotplug" + +ACTION=="remove", RUN+="/usr/lib/udev/gpsd.hotplug" + +LABEL="gpsd_rules_end" diff --git a/package/feature-gps/Config.in b/package/feature-gps/Config.in new file mode 100644 index 00000000..a222e521 --- /dev/null +++ b/package/feature-gps/Config.in @@ -0,0 +1,34 @@ +config BR2_PACKAGE_FEATURE_GPS + bool "Feature GPS/GNSS" + select BR2_PACKAGE_GPSD + select BR2_PACKAGE_GPSD_MAX_CLIENT + select BR2_PACKAGE_GPSD_MAX_DEV + select BR2_PACKAGE_GPSD_SQUELCH + select BR2_PACKAGE_GPSD_ASHTECH + select BR2_PACKAGE_GPSD_EARTHMATE + select BR2_PACKAGE_GPSD_EVERMORE + select BR2_PACKAGE_GPSD_FURY + select BR2_PACKAGE_GPSD_FV18 + select BR2_PACKAGE_GPSD_GARMIN + select BR2_PACKAGE_GPSD_GARMIN_SIMPLE_TXT + select BR2_PACKAGE_GPSD_GEOSTAR + select BR2_PACKAGE_GPSD_GPSCLOCK + select BR2_PACKAGE_GPSD_GREIS + select BR2_PACKAGE_GPSD_ISYNC + select BR2_PACKAGE_GPSD_ITRAX + select BR2_PACKAGE_GPSD_NMEA2000 + select BR2_PACKAGE_GPSD_OCEANSERVER + select BR2_PACKAGE_GPSD_ONCORE + select BR2_PACKAGE_GPSD_RTCM104V2 + select BR2_PACKAGE_GPSD_RTCM104V3 + select BR2_PACKAGE_GPSD_SIRF + select BR2_PACKAGE_GPSD_SKYTRAQ + select BR2_PACKAGE_GPSD_SUPERSTAR2 + select BR2_PACKAGE_GPSD_TRIMBLE_TSIP + select BR2_PACKAGE_GPSD_TRIPMATE + select BR2_PACKAGE_GPSD_TRUE_NORTH + select BR2_PACKAGE_GPSD_UBX + help + Enables GPS/GNSS support in Infix. Includes gpsd with all + receiver protocol drivers and kernel USB ACM support for + common USB GPS receivers. diff --git a/package/feature-gps/feature-gps.mk b/package/feature-gps/feature-gps.mk new file mode 100644 index 00000000..6da640c9 --- /dev/null +++ b/package/feature-gps/feature-gps.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# GPS/GNSS support +# +################################################################################ + +FEATURE_GPS_PACKAGE_VERSION = 1.0 +FEATURE_GPS_PACKAGE_LICENSE = MIT + +define FEATURE_GPS_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0644 $(FEATURE_GPS_PKGDIR)/gpsd.default \ + $(TARGET_DIR)/etc/default/gpsd + $(INSTALL) -D -m 0644 $(FEATURE_GPS_PKGDIR)/25-gpsd.rules \ + $(TARGET_DIR)/usr/lib/udev/rules.d/25-gpsd.rules +endef + +define FEATURE_GPS_LINUX_CONFIG_FIXUPS + $(call KCONFIG_SET_OPT,CONFIG_USB_ACM,m) +endef + +$(eval $(generic-package)) diff --git a/package/feature-gps/gpsd.default b/package/feature-gps/gpsd.default new file mode 100644 index 00000000..2fba4686 --- /dev/null +++ b/package/feature-gps/gpsd.default @@ -0,0 +1 @@ +GPSD_OPTIONS="-n"