BeagleBone Black gps

Buenas tardes compañeros.

Aclarando que estoy trabajando con el UART1 Y con loa pines P9_24 Y 26 y el P9_17 para ra señal de PPS, e revisado con un hociloscopio mi gps GT-U7 y este si da la señal del pps.

/dts-v1/;
/plugin/;

/{
    compatible = "ti,beaglebone-black";

    part-number = "BB-UART1-GPS";
    version = "00A0";

    exclusive-use = "P9.12", "P9.24", "P9.26", "uart1";

    fragment@0 {
        target=<&ocp>;
        __overlay__ {
            P9_17_pinmux {status = "disabled";};
            P9_24_pinmux {status = "disabled";};
            P9_26_pinmux {status = "disabled";};
        };
    };

    fragment@1 {
        target = <&am33xx_pinmux>;
        __overlay__ {
            bb_uart1_pins: pinmux_bb_uart1_pins {
                pinctrl-single,pins = <
                    0x044 0x26 // P9_24, uart1_txd.uart1_txd
                    0x046 0x26 // P9_26, uart1_rxd.uart1_rxd
                >;
            };

            bb_gps_pps_pins: pinmux_bb_gps_pps_pins {
                pinctrl-single,pins = <
                    0x15D 0x27 // P9_12, pps-gpio
>;
            };
        };
    };

    fragment@2 {
        target = <&uart1>;
        __overlay__ {
            status = "okay";
            pinctrl-names = "default";
            pinctrl-0 = <&bb_uart1_pins>;
        };
    };

    fragment@3 {
        target-path = "/";
        __overlay__ {
      gps_pps {
                status = "okay";
                compatible = "pps-gpio";
                pinctrl-names = "default";
                pinctrl-0 = <&bb_gps_pps_pins>;
                gpios = <&gpio1 29 0>;
            };
        };
    };
 };

Posteriormente realice los siguientes pasos:

dtc -O dtb -o BB-UART1-GPS-00A0.dtbo -b 0 BB-UART1-GPS-00A0.dts

sudo mv BB-UART1-GPS-00A0.dtbo /lib/firmware

Luego hice una modificacion en el archivo uEvn.txt
agregando la linea uboot_overlay_addr0=/lib/firmware/BB-UART1-GPS-00A0.dtbo

#Docs: http://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0

uname_r=4.19.94-ti-r42
#uuid=
#dtb=

###U-Boot Overlays###
###Documentation: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays
###Master Enable
enable_uboot_overlays=1
###
###Overide capes with eeprom
#uboot_overlay_addr0=/lib/firmware/<file0>.dtbo
#uboot_overlay_addr1=/lib/firmware/<file1>.dtbo
#uboot_overlay_addr2=/lib/firmware/<file2>.dtbo
#uboot_overlay_addr3=/lib/firmware/<file3>.dtbo
###
###Additional custom capes
uboot_overlay_addr0=/lib/firmware/BB-UART1-GPS-00A0.dtbo   //
#uboot_overlay_addr4=/lib/firmware/<file4>.dtbo
#uboot_overlay_addr5=/lib/firmware/<file5>.dtbo
#uboot_overlay_addr6=/lib/firmware/<file6>.dtbo
#uboot_overlay_addr7=/lib/firmware/<file7>.dtbo
###
###Custom Cape
#dtb_overlay=/lib/firmware/<file8>.dtbo
###
###Disable auto loading of virtual capes (emmc/video/wireless/adc)
#disable_uboot_overlay_emmc=1
#disable_uboot_overlay_video=1
#disable_uboot_overlay_audio=1
#disable_uboot_overlay_wireless=1
#disable_uboot_overlay_adc=1

Posteriormente reinicie mi Beaglebone Black y ahora al momento de usar gpsd tengo las configuraciones asi

Default settings for the gpsd init script and the hotplug wrapper.

Start the gpsd daemon automatically at boot time
START_DAEMON=“true”

Use USB hotplugging to add new USB devices automatically to the daemon
USBAUTO=“true”

Devices gpsd should collect to at boot time.
They need to be read/writeable, either by user gpsd or the group dialout.
DEVICES=“/dev/ttyO1 /dev/pps0”

Other options you want to pass to gpsd
GPSD_OPTIONS="-n /dev/pps0 "

Inicio el servicio y reviso el status

sudo service gpsd status
● gpsd.service - GPS (Global Positioning System) Daemon
   Loaded: loaded (/lib/systemd/system/gpsd.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2023-08-08 05:00:33 UTC; 11min ago
  Process: 2282 ExecStart=/usr/sbin/gpsd $GPSD_OPTIONS $DEVICES (code=exited, status=0/SUCCESS)
 Main PID: 2283 (gpsd)
    Tasks: 4 (limit: 1027)
   Memory: 592.0K
   CGroup: /system.slice/gpsd.service
           └─2283 /usr/sbin/gpsd -n /dev/pps0 /dev/ttyO1 /dev/pps0

Aug 08 05:00:33 beaglebone systemd[1]: Starting GPS (Global Positioning System) Daemon...
Aug 08 05:00:33 beaglebone systemd[1]: Started GPS (Global Positioning System) Daemon.

pero al momento de usar gpsd o cgps -s no me da ningun tipo de informacion

┌───────────────────────────────────────────┐┌─────────────────────────────────┐
│    Time:       n/a                        ││PRN:   Elev:  Azim:  SNR:  Used: │
│    Latitude:   n/a                        ││                                 │
│    Longitude:  n/a                        ││                                 │
│    Altitude:   n/a                        ││                                 │
│    Speed:      n/a                        ││                                 │
│    Heading:    n/a                        ││                                 │
│    Climb:      n/a                        ││                                 │
│    Status:     NO FIX (0 secs)            ││                                 │
│    Longitude Err:   n/a                   ││                                 │
│    Latitude Err:    n/a                   ││                                 │
│    Altitude Err:    n/a                   ││                                 │
│    Course Err:      n/a                   ││                                 │
│    Speed Err:       n/a                   ││                                 │
│    Time offset:     n/a                   ││                                 │
│    Grid Square:     n/a                   ││                                 │
└───────────────────────────────────────────┘└─────────────────────────────────┘
    Add another rule to the RFC 6724 scope table for IPv4 addresses.
    By default the scope IDs described in section 3.2 in RFC 6724 are
    used.  Changing these defaults should hardly ever be necessary.
    The defaults are equivalent to:

scopev4 ::ffff:169.254.0.0/112  2
scopev4 ::ffff:127.0.0.0/104    2
scopev4 ::ffff:0.0.0.0/96       14
Mobility Support for IPv6 [RFC3775]
udplite 136     UDPLite         # UDP-Lite [RFC3828]
mpls-in-ip 137  MPLS-in-IP      # MPLS-in-IP [RFC4023]
manet   138                     # MANET Protocols [RFC5498]
hip     139     HIP             # Host Identity Protocol
shim6   140     Shim6           # Shim6 Protocol [RFC5533]
wesp    141     WESP            # Wrapped Encapsulating Security Payload
rohc    142     ROHC            # Robust Header Compression
class":"DEVICE","path":"/dev/ttyO1","activated":"2023-08-08T05:00:36.660Z","native":0,"bps":9600,"parity":"N","stopbits":1,"cycle":1.00},{"cla
ss":"DEVICE","path":"/dev/pps0","driver":"PPS","activated":"2023-08-08T05:00:36.672Z"}]}
{"class":"WATCH","enable":true,"json":true,"nmea":false,"raw":0,"scaled":false,"timing":false,"split24":false,"pps":false}

Quería revisar con picocom los datos NMEA pero al tener los pines usado en dts no me permite usarlos.

Agradecería su gran ayuda. Ya que realmente soy nuevo en esto y llegue a mi limite solo. gracias

Hola @Diego_Cuervo,

algunos puntos.
Por primer, creo ser importante garantizar que lo puerto ttyO1 esta funcionando. Haga una coneccion con un jumper entre TX y RX (y ejecutando screen /dev/ttyO1 115200 por ejemplo) se primir algo tienes que tener esto en la pantalla, o caso tenga un adaptador ftdi y hacer una conection entre lo ftdi y los pins de lo puerto ttyO1 (screen o minicom) tiene datos entre lo beaglebone y la computadora.

Otra prueba es ejecutar screen /dev/ttyO1 9600 se tiene datos (para salir tiene presionar control a + k y y) para ver se la comunicacion con lo gps esta ok.

Saludos,

Justo antes de hacer esta configuración lo probé con picocom que me da datos NMEA. Igual el caso probaré borrar lo agregado en uEvn.txt para revisar de nuevo

Pues me cambie a ttyS4 ya que ahí si muestra los datos del GPS usando screen pero al momento de usar cgps -s no me da información.
Oh al menos que los este poniendo en un modo equivocado, ya que están en modo 6 y 7.
Creo que ya es una incompatibilidad mas interna, probare con un GPS Adafruit.
También corregí el detalle del pin 17 ya que no es el 29 en gpio si no el 5.
Gracias por la ayuda espero encontrar una pronta solución, y que solo sea por la incompatibilidad entre el GPS GT-U7.

Una pregunta, @Diego_Cuervo ,
Este gps ló nível lógico és 3v3 o 5? Pq ya tuve problemas con un sensor uart q no eras compatible con 3v3 - y para poder usar tuve que poner un shift lével

Saludos

Ya revise, tenia mal asignados los valores de mi pin de pps.
Como lograría sincronizar esta señal con chrony??