This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

SK-TDA4VM: Need Assistance Finding GNSS Device (Quectel L89 H) tty Port

Part Number: SK-TDA4VM


Hello,

I am currently facing an issue with my GNSS device, Quectel L89 H, while trying to integrate it with the Ti SK-TDA4VM board. The device worked seamlessly with the Jetson Nano at the tty port "/dev/ttyTHS1" and a Baud Rate of "B9600".

Despite my efforts using methods such as '$lsusb', '$dmesg', and '$ls /dev/tty*', I haven't been able to locate the tty port for the Quectel L89 H on the Ti SK-TDA4VM board.

If anyone has experience with this setup or has suggestions on how to identify the tty port, your guidance would be highly appreciated.

Thank you in advance for your assistance.

Best regards,
Shubham Singh

  • Hi Shubham,

    We unfortunately have not worked with that specific Quectel device, so the best we can do is give some ideas for you to troubleshoot and experiment on your end with the physical device.

    My current suspicion is that this has something to do with udev rules. Here are some reasoning...

    1. I searched online and found 2c7c to be the vendor ID for Quectel: https://devicehunt.com/view/type/usb/vendor/2C7C.
    2. On my Ubuntu 22.04 machine I searched through the existing udev rules to see if there are any rules for this vendor, and they seem to be installed by default:
      a0488417local@udc0488417:/usr/lib/udev/rules.d$ cat /usr/lib/udev/rules.d/* | grep -i 2c7c
      SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c7c", GOTO="mm_quectel_usb"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0306", ENV{.MM_USBIFNUM}=="00", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_QCDM}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0306", ENV{.MM_USBIFNUM}=="01", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_GPS}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0306", ENV{.MM_USBIFNUM}=="02", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0306", ENV{.MM_USBIFNUM}=="03", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0191", ENV{.MM_USBIFNUM}=="00", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_QCDM}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0191", ENV{.MM_USBIFNUM}=="01", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_GPS}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0191", ENV{.MM_USBIFNUM}=="02", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0191", ENV{.MM_USBIFNUM}=="03", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0195", ENV{.MM_USBIFNUM}=="00", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_QCDM}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0195", ENV{.MM_USBIFNUM}=="01", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_GPS}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0195", ENV{.MM_USBIFNUM}=="02", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0195", ENV{.MM_USBIFNUM}=="03", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0296", ENV{.MM_USBIFNUM}=="00", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_QCDM}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0296", ENV{.MM_USBIFNUM}=="01", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_GPS}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0296", ENV{.MM_USBIFNUM}=="02", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0296", ENV{.MM_USBIFNUM}=="03", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ENV{.MM_USBIFNUM}=="00", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_QCDM}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ENV{.MM_USBIFNUM}=="01", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_GPS}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ENV{.MM_USBIFNUM}=="02", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0125", ENV{.MM_USBIFNUM}=="03", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0800", ENV{.MM_USBIFNUM}=="00", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_QCDM}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0800", ENV{.MM_USBIFNUM}=="01", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_GPS}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0800", ENV{.MM_USBIFNUM}=="02", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0800", ENV{.MM_USBIFNUM}=="03", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="030a", ENV{ID_MM_QUECTEL_FIREHOSE}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="030a", ENV{ID_MM_QUECTEL_SAHARA}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="030c", ENV{ID_MM_QUECTEL_FIREHOSE}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="030c", ENV{ID_MM_QUECTEL_SAHARA}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0311", ENV{ID_MM_QUECTEL_FIREHOSE}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0311", ENV{ID_MM_QUECTEL_SAHARA}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0313", ENV{ID_MM_QUECTEL_FIREHOSE}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0313", ENV{ID_MM_QUECTEL_SAHARA}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0314", ENV{ID_MM_QUECTEL_FIREHOSE}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0314", ENV{ID_MM_QUECTEL_SAHARA}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0310", ENV{ID_MM_QUECTEL_FIREHOSE}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0310", ENV{ID_MM_QUECTEL_SAHARA}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0312", ENV{ID_MM_QUECTEL_FIREHOSE}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0312", ENV{ID_MM_QUECTEL_SAHARA}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0127", ENV{ID_MM_QUECTEL_FIREHOSE}="1"
      ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0127", ENV{ID_MM_QUECTEL_SAHARA}="1"
      a0488417local@udc0488417:/usr/lib/udev/rules.d$
    3. On the SK-TDA4VM, I check to see if a rule exist for this vendor and do not see any:
      root@tda4vm-sk:~# cat /lib/udev/rules.d/* | grep 2c7c
      root@tda4vm-sk:~#

    I would recommend you do a similar check on the Jetson Nano to see if there are udev rules, and if there are any, then try copying that rule onto the SK-TDA4VM.

    If above does not sound like the right path while you are troubleshooting, could you share the full dmesg logs with the GNSS device connected, and the comparison logs of "ls /dev" when you have the device connected vs not connected? Would like to see if there is anything there that could give more ideas as to why enumeration is not happening.

    Regards,

    Takuma

  • Hi Takuma,

    First the things you needed 

    With GPS connected:

    Devices:

    root@tda4vm-sk:/opt/edgeai-gst-apps# ls /dev
    31010000.pat   hwrng	     mapper	mtdblock0  ptyp9     random	   tty10  tty32  tty54	ttyp0		    vcs1     video11
    31011000.pat   i2c-0	     media0	mtdblock1  ptypa     rfkill	   tty11  tty33  tty55	ttyp1		    vcs2     video12
    31012000.pat   i2c-1	     media1	mtdblock2  ptypb     rpmsg_ctrl0   tty12  tty34  tty56	ttyp2		    vcs3     video13
    31013000.pat   i2c-10	     mem	mtdblock3  ptypc     rpmsg_ctrl1   tty13  tty35  tty57	ttyp3		    vcs4     video14
    31014000.pat   i2c-2	     mmcblk0	mtdblock4  ptypd     rpmsg_ctrl10  tty14  tty36  tty58	ttyp4		    vcs5     video15
    autofs	       i2c-3	     mmcblk0p1	mtdblock5  ptype     rpmsg_ctrl2   tty15  tty37  tty59	ttyp5		    vcs6     video16
    block	       i2c-4	     mmcblk0p2	mtdblock6  ptypf     rpmsg_ctrl3   tty16  tty38  tty6	ttyp6		    vcsa     video17
    btrfs-control  i2c-5	     mqueue	mtdblock7  pvr_sync  rpmsg_ctrl4   tty17  tty39  tty60	ttyp7		    vcsa1    video2
    bus	       i2c-6	     mtd0	net	   ram0      rpmsg_ctrl5   tty18  tty4	 tty61	ttyp8		    vcsa2    video3
    char	       i2c-7	     mtd0ro	null	   ram1      rpmsg_ctrl6   tty19  tty40  tty62	ttyp9		    vcsa3    video4
    console        i2c-8	     mtd1	port	   ram10     rpmsg_ctrl7   tty2   tty41  tty63	ttypa		    vcsa4    video5
    crypto	       i2c-9	     mtd1ro	ptmx	   ram11     rpmsg_ctrl8   tty20  tty42  tty7	ttypb		    vcsa5    video6
    cuse	       initctl	     mtd2	ptp0	   ram12     rpmsg_ctrl9   tty21  tty43  tty8	ttypc		    vcsa6    video7
    disk	       kmsg	     mtd2ro	ptp1	   ram13     shm	   tty22  tty44  tty9	ttypd		    vcsu     video8
    dma-buf-phys   log	     mtd3	pts	   ram14     snapshot	   tty23  tty45  ttyS0	ttype		    vcsu1    video9
    dma_heap       loop-control  mtd3ro	ptyp0	   ram15     snd	   tty24  tty46  ttyS1	ttypf		    vcsu2    watchdog
    dri	       loop0	     mtd4	ptyp1	   ram2      stderr	   tty25  tty47  ttyS2	ubi_ctrl	    vcsu3    watchdog0
    fd	       loop1	     mtd4ro	ptyp2	   ram3      stdin	   tty26  tty48  ttyS3	udev_network_queue  vcsu4    watchdog1
    full	       loop2	     mtd5	ptyp3	   ram4      stdout	   tty27  tty49  ttyS4	urandom		    vcsu5    zero
    fuse	       loop3	     mtd5ro	ptyp4	   ram5      tee0	   tty28  tty5	 ttyS5	v4l		    vcsu6
    gpiochip0      loop4	     mtd6	ptyp5	   ram6      teepriv0	   tty29  tty50  ttyS6	v4l-subdev0	    vfio
    gpiochip1      loop5	     mtd6ro	ptyp6	   ram7      tty	   tty3   tty51  ttyS7	v4l-subdev1	    video0
    gpiochip2      loop6	     mtd7	ptyp7	   ram8      tty0	   tty30  tty52  ttyS8	v4l-subdev2	    video1
    hugepages      loop7	     mtd7ro	ptyp8	   ram9      tty1	   tty31  tty53  ttyS9	vcs		    video10
    

    Dmesg Output:

    https://uploadnow.io/f/g4b0H0b

    Without GPS connected:

    Devices:

    root@tda4vm-sk:/opt/edgeai-gst-apps# ls /dev
    31010000.pat   hwrng	     mapper	mtdblock0  ptyp9     random	   tty10  tty32  tty54	ttyp0		    vcs1     video11
    31011000.pat   i2c-0	     media0	mtdblock1  ptypa     rfkill	   tty11  tty33  tty55	ttyp1		    vcs2     video12
    31012000.pat   i2c-1	     media1	mtdblock2  ptypb     rpmsg_ctrl0   tty12  tty34  tty56	ttyp2		    vcs3     video13
    31013000.pat   i2c-10	     mem	mtdblock3  ptypc     rpmsg_ctrl1   tty13  tty35  tty57	ttyp3		    vcs4     video14
    31014000.pat   i2c-2	     mmcblk0	mtdblock4  ptypd     rpmsg_ctrl10  tty14  tty36  tty58	ttyp4		    vcs5     video15
    autofs	       i2c-3	     mmcblk0p1	mtdblock5  ptype     rpmsg_ctrl2   tty15  tty37  tty59	ttyp5		    vcs6     video16
    block	       i2c-4	     mmcblk0p2	mtdblock6  ptypf     rpmsg_ctrl3   tty16  tty38  tty6	ttyp6		    vcsa     video17
    btrfs-control  i2c-5	     mqueue	mtdblock7  pvr_sync  rpmsg_ctrl4   tty17  tty39  tty60	ttyp7		    vcsa1    video2
    bus	       i2c-6	     mtd0	net	   ram0      rpmsg_ctrl5   tty18  tty4	 tty61	ttyp8		    vcsa2    video3
    char	       i2c-7	     mtd0ro	null	   ram1      rpmsg_ctrl6   tty19  tty40  tty62	ttyp9		    vcsa3    video4
    console        i2c-8	     mtd1	port	   ram10     rpmsg_ctrl7   tty2   tty41  tty63	ttypa		    vcsa4    video5
    crypto	       i2c-9	     mtd1ro	ptmx	   ram11     rpmsg_ctrl8   tty20  tty42  tty7	ttypb		    vcsa5    video6
    cuse	       initctl	     mtd2	ptp0	   ram12     rpmsg_ctrl9   tty21  tty43  tty8	ttypc		    vcsa6    video7
    disk	       kmsg	     mtd2ro	ptp1	   ram13     shm	   tty22  tty44  tty9	ttypd		    vcsu     video8
    dma-buf-phys   log	     mtd3	pts	   ram14     snapshot	   tty23  tty45  ttyS0	ttype		    vcsu1    video9
    dma_heap       loop-control  mtd3ro	ptyp0	   ram15     snd	   tty24  tty46  ttyS1	ttypf		    vcsu2    watchdog
    dri	       loop0	     mtd4	ptyp1	   ram2      stderr	   tty25  tty47  ttyS2	ubi_ctrl	    vcsu3    watchdog0
    fd	       loop1	     mtd4ro	ptyp2	   ram3      stdin	   tty26  tty48  ttyS3	udev_network_queue  vcsu4    watchdog1
    full	       loop2	     mtd5	ptyp3	   ram4      stdout	   tty27  tty49  ttyS4	urandom		    vcsu5    zero
    fuse	       loop3	     mtd5ro	ptyp4	   ram5      tee0	   tty28  tty5	 ttyS5	v4l		    vcsu6
    gpiochip0      loop4	     mtd6	ptyp5	   ram6      teepriv0	   tty29  tty50  ttyS6	v4l-subdev0	    vfio
    gpiochip1      loop5	     mtd6ro	ptyp6	   ram7      tty	   tty3   tty51  ttyS7	v4l-subdev1	    video0
    gpiochip2      loop6	     mtd7	ptyp7	   ram8      tty0	   tty30  tty52  ttyS8	v4l-subdev2	    video1
    hugepages      loop7	     mtd7ro	ptyp8	   ram9      tty1	   tty31  tty53  ttyS9	vcs		    video10

    Dmesg Output:

    https://uploadnow.io/f/g4b0H0b

    After exploring the 2c7c libraries on both the Ti board and Jetson Nano, but it appears that the Jetson Nano doesn't have these rules file. Despite running the command 'cat /lib/udev/rules.d/* | grep 2c7c' on both the Jetson Nano and SK-TDA4VM, no relevant findings were returned. I've attached the output of the rules.d for your reference on both platforms.

    For Jetson nano:

    root@jetson-nano-devkit:~# ls /lib/udev/rules.d/*
    /lib/udev/rules.d/50-firmware.rules		    /lib/udev/rules.d/60-serial.rules
    /lib/udev/rules.d/50-udev-default.rules		    /lib/udev/rules.d/64-btrfs.rules
    /lib/udev/rules.d/60-block.rules		    /lib/udev/rules.d/70-joystick.rules
    /lib/udev/rules.d/60-cdrom_id.rules		    /lib/udev/rules.d/70-mouse.rules
    /lib/udev/rules.d/60-drm.rules			    /lib/udev/rules.d/70-touchpad.rules
    /lib/udev/rules.d/60-evdev.rules		    /lib/udev/rules.d/75-net-description.rules
    /lib/udev/rules.d/60-input-id.rules		    /lib/udev/rules.d/75-probe_mtd.rules
    /lib/udev/rules.d/60-persistent-alsa.rules	    /lib/udev/rules.d/78-sound-card.rules
    /lib/udev/rules.d/60-persistent-input.rules	    /lib/udev/rules.d/80-drivers.rules
    /lib/udev/rules.d/60-persistent-storage-tape.rules  /lib/udev/rules.d/80-libinput-device-groups.rules
    /lib/udev/rules.d/60-persistent-storage.rules	    /lib/udev/rules.d/80-net-name-slot.rules
    /lib/udev/rules.d/60-persistent-v4l.rules	    /lib/udev/rules.d/90-libinput-fuzz-override.rules
    /lib/udev/rules.d/60-sensor.rules		    /lib/udev/rules.d/90-pulseaudio.rules
    root@jetson-nano-devkit:~# ls /lib/udev/rules.d/
    50-firmware.rules      60-persistent-alsa.rules		 64-btrfs.rules		   80-drivers.rules
    50-udev-default.rules  60-persistent-input.rules	 70-joystick.rules	   80-libinput-device-groups.rules
    60-block.rules	       60-persistent-storage-tape.rules  70-mouse.rules		   80-net-name-slot.rules
    60-cdrom_id.rules      60-persistent-storage.rules	 70-touchpad.rules	   90-libinput-fuzz-override.rules
    60-drm.rules	       60-persistent-v4l.rules		 75-net-description.rules  90-pulseaudio.rules
    60-evdev.rules	       60-sensor.rules			 75-probe_mtd.rules
    60-input-id.rules      60-serial.rules			 78-sound-card.rules
    



    For SK-TDA4VM board:
    root@tda4vm-sk:/opt/edgeai-gst-apps# ls /lib/udev/rules.d/*
    /lib/udev/rules.d/50-udev-default.rules		    /lib/udev/rules.d/70-mouse.rules
    /lib/udev/rules.d/60-autosuspend-chromiumos.rules   /lib/udev/rules.d/70-power-switch.rules
    /lib/udev/rules.d/60-block.rules		    /lib/udev/rules.d/70-touchpad.rules
    /lib/udev/rules.d/60-cdrom_id.rules		    /lib/udev/rules.d/70-uaccess.rules
    /lib/udev/rules.d/60-drm.rules			    /lib/udev/rules.d/71-seat.rules
    /lib/udev/rules.d/60-evdev.rules		    /lib/udev/rules.d/73-seat-late.rules
    /lib/udev/rules.d/60-fido-id.rules		    /lib/udev/rules.d/75-net-description.rules
    /lib/udev/rules.d/60-input-id.rules		    /lib/udev/rules.d/75-probe_mtd.rules
    /lib/udev/rules.d/60-persistent-alsa.rules	    /lib/udev/rules.d/78-sound-card.rules
    /lib/udev/rules.d/60-persistent-input.rules	    /lib/udev/rules.d/80-drivers.rules
    /lib/udev/rules.d/60-persistent-storage-tape.rules  /lib/udev/rules.d/80-libinput-device-groups.rules
    /lib/udev/rules.d/60-persistent-storage.rules	    /lib/udev/rules.d/80-net-setup-link.rules
    /lib/udev/rules.d/60-persistent-v4l.rules	    /lib/udev/rules.d/89-alsa-ucm.rules
    /lib/udev/rules.d/60-sensor.rules		    /lib/udev/rules.d/90-alsa-restore.rules
    /lib/udev/rules.d/60-serial.rules		    /lib/udev/rules.d/90-libinput-fuzz-override.rules
    /lib/udev/rules.d/61-autosuspend-manual.rules	    /lib/udev/rules.d/90-pulseaudio.rules
    /lib/udev/rules.d/64-btrfs.rules		    /lib/udev/rules.d/90-vconsole.rules
    /lib/udev/rules.d/70-joystick.rules		    /lib/udev/rules.d/99-systemd.rules
    root@tda4vm-sk:/opt/edgeai-gst-apps# ls /lib/udev/rules.d/
    50-udev-default.rules		 60-persistent-input.rules	   70-mouse.rules	     80-drivers.rules
    60-autosuspend-chromiumos.rules  60-persistent-storage-tape.rules  70-power-switch.rules     80-libinput-device-groups.rules
    60-block.rules			 60-persistent-storage.rules	   70-touchpad.rules	     80-net-setup-link.rules
    60-cdrom_id.rules		 60-persistent-v4l.rules	   70-uaccess.rules	     89-alsa-ucm.rules
    60-drm.rules			 60-sensor.rules		   71-seat.rules	     90-alsa-restore.rules
    60-evdev.rules			 60-serial.rules		   73-seat-late.rules	     90-libinput-fuzz-override.rules
    60-fido-id.rules		 61-autosuspend-manual.rules	   75-net-description.rules  90-pulseaudio.rules
    60-input-id.rules		 64-btrfs.rules			   75-probe_mtd.rules	     90-vconsole.rules
    60-persistent-alsa.rules	 70-joystick.rules		   78-sound-card.rules	     99-systemd.rules

    I have also compared the files:

    /lib/udev/rules.d/60-sensor.rules
    /lib/udev/rules.d/60-serial.rules

    for both and did not find any difference

    This is the watch -n 1 "dmesg | grep tty" output for both

    For Jetson nano:

    Every 1.0s: dmesg | grep tty                                                                                       2000-01-01 01:47:29
    
    [    0.000000] Kernel command line: tegraid=21.1.2.0.0 ddr_die=4096M@2048M section=512M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 console=ttyS0,115200n8 debug_uartport=lsport,4 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=0x1000@0xff780000 core_edp_mv=1075 core_edp_ma=4000 gpt  console=ttyS0,115200 console=tty0 fbcon=map:0 net.ifnames=0 root=/dev/mmcblk0p1 rw rootwait  
    [    0.002330] console [tty0] enabled
    [    1.400494] console [ttyS0] disabled
    [    1.400581] 70006000.serial: ttyS0 at MMIO 0x70006000 (irq = 63, base_baud = 25500000) is a Tegra
    [    3.869988] console [ttyS0] enabled
    [    3.874785] 70006040.serial: ttyTHS1 at MMIO 0x70006040 (irq = 64, base_baud = 0) is a TEGRA_UART
    [    3.889397] 70006200.serial: ttyTHS2 at MMIO 0x70006200 (irq = 65, base_baud = 0) is a TEGRA_UART

    For Ti board:

    root@tda4vm-sk:/opt/edgeai-gst-apps# dmesg | grep tty
    [    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 mtdparts=47040000.spi.0:512k(ospi.tiboot3),2m(ospi.tispl),4m(ospi.u-boot),256k(ospi.env),1m(ospi.sysfw),256k(ospi.env.backup),57088k@8m(ospi.rootfs),256k(ospi.phypattern);47034000.hyperbus:512k(hbmc.tiboot3),2m(hbmc.tispl),4m(hbmc.u-boot),256k(hbmc.env),1m(hbmc.sysfw),-@8m(hbmc.rootfs) root=PARTUUID=38e6d492-02 rw rootfstype=ext4 rootwait
    [    1.230307] 40a00000.serial: ttyS1 at MMIO 0x40a00000 (irq = 15, base_baud = 6000000) is a 8250
    [    1.239735] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 30, base_baud = 3000000) is a 8250
    [    1.248484] printk: console [ttyS2] enabled
    [    1.267415] 2810000.serial: ttyS3 at MMIO 0x2810000 (irq = 31, base_baud = 3000000) is a 8250
    [    1.276360] 2840000.serial: ttyS6 at MMIO 0x2840000 (irq = 32, base_baud = 3000000) is a 8250
    [    5.361023] systemd[1]: Created slice system-getty.slice.
    [    5.389182] systemd[1]: Created slice system-serial\x2dgetty.slice.

    After much more research i suspect that i have to enable the port ttyTHS1 at same settings as jetson nano for Ti board as ttyS3 and ttyS6 is set for serial communication on Ti board is not working with GPS module.

  • Hi Shubham,

    So far, I have not been able to reproduce the issue being seen on your end. I have tried a couple of different TI EVM boards that I have on hand as well as a drone that had a serial port, but so far, all have been enumerated under /dev. For example:

    root@tda4vm-sk:/dev# [  305.269636] usb 1-1.2: new high-speed USB device number 3 using xhci-hcd
    [  305.447779] cdc_acm 1-1.2:1.1: ttyACM0: USB ACM device
    [  305.452986] usbcore: registered new interface driver cdc_acm
    [  305.458734] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
    [  309.142895] usb 1-1.2: USB disconnect, device number 3
    [  496.245636] usb 1-1.2: new full-speed USB device number 4 using xhci-hcd
    [  496.481412] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
    [  496.587158] cdc_acm 1-1.2:1.3: ttyACM1: USB ACM device
    [  496.593334] hid-generic 0003:0451:BEF3.0001: device has no listeners, quitting
    
    root@tda4vm-sk:/

    If you would like to see the device tree that sets up the serial ports, you could check here: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-j721e-main.dtsi?h=ti-linux-5.10.y#n1124. It looks like baud rate is 115200 by default, but I am not too confident on whether this could be the issue, since a few of the devices I tried should not support 115200 baud rate but they still enumerated. However, one experiment would be to see if changing the rate here affects behavior.

    However, as you said, doing a comparison between Jetson Nano and TI board on configuration would probably be the most insightful way to troubleshoot going forward. It seems there is at least a difference of one serial device using TEGRA_UART vs the 8250 driver.

    Regards,

    Takuma

  • Hi Takuma,

    P.S - I am working on Yocto image version - 9.0

    The issue at hand is the inability of the TI board to communicate with the GPS module, unlike the Jetson Nano, which can successfully interface with it. How can I adjust the settings of, for example, ttyS3, to match those of the Jetson Nano to enable communication?

     

    Someone suggested 2 methods which i could do to fix this issue:

    1. Determine the GPIO assignments for the ttyS* interfaces and connecting the GPS module to the corresponding pins.

    2. Since i'm utilizing pins 8 and 10 on the TI board, enabling UART2 on the SK-TDA4VM, as it appears maybe disabled by default.

    Regards,

    Shubham Singh

  • Hi Shubham,

    I would recommend reviewing the device tree I have linked in my previous post. In the same folder as the device tree I had linked, there is a device tree for the SK board that defines what interfaces are enabled/disabled: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-j721e-sk.dts?h=ti-linux-5.10.y. The device tree I linked in my previous post gets included by this SK board device tree.

    Regards,

    Takuma