Changes between Initial Version and Version 1 of expansion/gw16171


Ignore:
Timestamp:
06/26/2026 09:26:45 PM (8 hours ago)
Author:
Ryan Erb
Comment:

start page

Legend:

Unmodified
Added
Removed
Modified
  • expansion/gw16171

    v1 v1  
     1[[PageOutline]]
     2= GW16171 - Precision GNSS M.2 Card
     3
     4The GW16171 is a precision GNSS M.2 Card featuring the Septentrio mosaic-G5 multi-frequency receiver.
     5
     6Read more on the official product page here: [https://www.gateworks.com/products/wireless-options/gw16171-septentrio-g5-mosaic-precision-gnss-m2-card/]
     7
     8
     9== Features
     10The GW1671 features a [https://www.gateworks.com/products/wireless-options/gw16171-septentrio-g5-mosaic-precision-gnss-m2-card/ Septentrio Mosaic-G5 Precision GNSS receiver] on an M.2 A/E Key card with:
     11 - 2-wire UART (COM1) (optional)
     12 - USB 2.0 (USB1, USB2, RNDIS, USB Mass Storage)
     13 - RESET# (connected to Mosaic active-high NRST_IN#)
     14 - PPS_OUT, PPS_IN
     15 - EVENTA_IN
     16 - 4 LEDs: Power, GPLED, GPLED2, LOGLED
     17 - microSD socket (for data logging)
     18
     19== GW16171 M.2 Pinout
     20
     21The following tables provide the connector pinouts for the 10-pin debug header and the M.2 A/E-Key connector. Optional signals for the Gateworks adapter are highlighted in yellow and have a “OPT” label. These are no-connects on the standard board model, contact sales for special models with support for these signals. The UART signals highlighted in green are connected to the GNSS module but are not required for module operation and can be no-connects. The 10-pin debug header is a 0.050” dual row thru-hole connector and is not loaded on the standard model but can be easily probed.
     22
     23M.2 Pinout:
     24 - M2.56 RST#(1.8/3.3V); must be driven high to take Mosaic-G5 out of reset
     25 - M2.2 VDD_BAT
     26 - M2.3 USB_DP
     27 - M2.5 USB_DM
     28 - M2.22 UART_TXD (1.8V) output from card
     29 - M2.32 UART_RXD (1.8V) input to card
     30 - M2.34 PPS (1.8V) output from card; normally UART_RTS; via R23 (loaded)
     31 - M2.36 EVENTA (1.8V) input to card; normally UART_CTS; via R24 (loaded)
     32 - M2.4,72,74 VDD_3P3
     33 - M2.1,7,33,39,45,51,57,63,69,75 GND
     34 - M2.67 EVENTB(1.8V); optional; via R22 (unloaded)
     35
     36
     37[[Image(GW16160debug.jpg)]]
     38
     39
     40== Antenna
     41
     42There are two antenna ports for the Mosaic G5.
     43
     44To get started, a recommended antenna is the Yokowo Manufacturing of America YOZ-52728ZZ01-YM available [https://www.digikey.com/en/products/detail/yokowo-manufacturing-of-america-llc/YOZ-52728ZZ01-YM/25603978 here]
     45
     46A smaller option we like is the TW7972, and a bit larger one for machine control-type applications (or car tests) is the !PolaNt* MC.v2.
     47
     48A list of antennas from Septentrio is here:
     49[https://www.septentrio.com/en/support/product-resources/supportresources/gnssantennas]
     50
     51The unloaded second antenna port can be used for different Septentrio GNSS receivers that are an optional load.
     52
     53== Compatibility
     54The GW16171 requires an M.2 E-Key socket with USB2.0 and M2.56 RST#.
     55
     56The only E-Key sockets on Gateworks boards are:
     57 - GW16151 MiniPCIe to M.2 E-Key Adapter - works with the standard board that has reset on Pin 56 but it won't work with a custom board with pin 23 as reset (won't bring Mosaic out of reset).
     58 - GWx20x+GW16FE0 in FSA2 - SDIO_RESET# is pin23 and is GPIO2_10. To take out of reset you can add 'gpio set gpio2_10' to U-Boot scripts (ie preboot). FSA1 does not connect pin23. Pin 56 reset is supported by both FSA1 and FSA2.
     59
     60Examples:
     61 * GW820x+GW16FE0 in FSA2:
     62  - set GPIO in U-Boot:
     63{{{
     64setenv preboot "$preboot; gpio set gpio2_10"
     65saveenv
     66}}}
     67
     68== Reset
     69The Mosiac-G5 NRST_IN# needs to be floating (internal pu) or driven high at 3.3V to allow the card out of reset.
     70
     71The standard GW16171 uses M.2 Pin 56 (W_DISABLE1#) as the source of this reset.
     72
     73
     74
     75== USB Interface
     76When powered and out of reset, the Mosiac-G5 USB interface enumerates on the USB bus with a VID/PID of 0x152a:0x85c0:
     77{{{#!bash
     78Bus 003 Device 004: ID 152a:85c0 Thesycon Systemsoftware & Consulting GmbH Septentrio USB Device
     79}}}
     80
     81The USB device provides 7 endpoints:
     82 - {0,1} - RNDIS Ethernet device (Linux rndis_host driver)
     83 - {2,3} - CDC ACM device (Linux cdc_acm driver)
     84 - {4,5} - CDC ACM device (Linux cdc_acm driver)
     85 - 6 - USB Mass Storage device (Linux usb-storage driver)
     86
     87A Linux kernel would show:
     88{{{#!bash
     89[  213.543608] usb 3-1.2: new high-speed USB device number 5 using xhci-hcd
     90[  213.653262] usb 3-1.2: New USB device found, idVendor=152a, idProduct=85c0, bcdDevice= 3.14
     91[  213.661651] usb 3-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
     92[  213.668987] usb 3-1.2: Product: Septentrio USB Device
     93[  213.674075] usb 3-1.2: Manufacturer: Septentrio
     94[  213.678628] usb 3-1.2: SerialNumber: 3838051
     95[  213.799064] rndis_host 3-1.2:1.0 eth0: register 'rndis_host' at usb-xhci-hcd.1.auto-1.2, RNDIS device, 1a:32:02:9
     969:15:45
     97[  213.814494] cdc_acm 3-1.2:1.2: ttyACM0: USB ACM device
     98[  213.822420] cdc_acm 3-1.2:1.4: ttyACM1: USB ACM device
     99[  213.828650] usb-storage 3-1.2:1.6: USB Mass Storage device detected
     100[  213.835529] scsi host0: usb-storage 3-1.2:1.6
     101[  213.864384] rndis_host 3-1.2:1.0 enx1a3202991545: renamed from eth0
     102[  214.868534] scsi 0:0:0:0: CD-ROM            Linux    File-CD Gadget   0314 PQ: 0 ANSI: 2
     103[  214.877127] scsi 0:0:0:1: Direct-Access     Linux    File-CD Gadget   0314 PQ: 0 ANSI: 2
     104[  214.886483] sr 0:0:0:0: Power-on or device reset occurred
     105[  214.893005] sr 0:0:0:0: [sr0] scsi-1 drive
     106[  214.903049] sr 0:0:0:0: Attached scsi CD-ROM sr0
     107[  214.908064] sr 0:0:0:0: Attached scsi generic sg0 type 5
     108[  214.914321] sd 0:0:0:1: Attached scsi generic sg1 type 0
     109[  214.914851] sd 0:0:0:1: Power-on or device reset occurred
     110[  214.926006] sd 0:0:0:1: [sda] Media removed, stopped polling
     111[  214.932590] sd 0:0:0:1: [sda] Attached SCSI removable disk
     112}}}
     113
     114
     115=== USB ACM interfaces
     116The 2x USB ACM interfaces are represented by USB1 and USB2 Connection Descriptors (CD) and would typically enumerate as /dev/ttyACM0 and /dev/ttyACM1.
     117
     118Examples:
     119{{{#!bash
     120screen /dev/ttyACM0 # USB1
     121screen /dev/ttyACM1 # USB2
     122}}}
     123
     124
     125=== RNDIS Ethernet device
     126The RNDIS Ethernet interface (not to be confused with the RMII Ethernet) provides a built-in web-server on port 80 on a fixed IP of 192.168.3.1
     127
     128To utilize this you can put the interface in a bridge with your primary network device.
     129
     130Example:
     131 * GW8201 where eth0 is your LAN connection, eth1 is the PCI GbE, eth2 (or usb0) would be the Mosaic-G5 RNDIS interface you can put eth0 and eth2 (or usb0) in a bridge
     132  - With the following /etc/network/interface (recommended):
     133{{{#!bash
     134allow-hotplug eth0
     135auto br0
     136iface br0 inet dhcp
     137    bridge_ports eth0 eth2 #eth2 could be defined as usb0
     138    bridge_stp off
     139    bridge_fd 0
     140    bridge_maxwait 0
     141}}}
     142  - Manually (not recommended):
     143{{{#!bash
     144brctl addbr br0
     145brctl addif br0 eth0
     146brctl addif br0 eth2 #eth2 could be defined as usb0
     147udhcpc br0
     148}}}
     149
     150After bringing up the bridge and the bridge getting a network address give your host computer a static IP on the 192.168.3/24 network and you can open a URL to 192.168.3.1 to access the web admin.
     151
     152Use the ifconfig command to be sure usb0 or eth2 is listed and bring the interface up with the command:
     153{{{
     154 ifconfig usb0 up
     155}}}
     156
     157=== USB Mass Storage interface
     158The USB Mass storage interface allows access to the SD interface on the Mosaic-G5.
     159
     160By default the Mosaic-G5 will mount the microSD internally to be used for highly configurable logging represented as the DSK1 connection descriptor (CD). If you unmount this internally it is made available via the USB Mass Storage device.
     161
     162== SD Interface
     163The SD interface on the Mosaic-G5 is a 1-bit SDIO device which goes to a MicroSD socket on the GW16171.
     164
     165Receiver config examples:
     166 * use the '!LstDiskInfo,DSK1' receiver command to obtain info about it:
     167{{{#!bash
     168LstDiskInfo,DSK1
     169---->
     170$-- BLOCK 1 / 0 C
     171<?xml version="1.0" encoding="ISO-8859-1" ?>
     172<DiskInfo version="0.1">
     173
     174---->
     175$-- BLOCK 2 / 0 C
     176  <Disk name="DSK1" total="7931641856" free="7931449344" >
     177    <File name="log.nma" size="131072" />
     178  </Disk>
     179</DiskInfo>
     180}}}
     181 * format it:
     182{{{#!bash
     183exeManageDisk, DSK1, Format
     184}}}
     185 * Log NMEA GPS GGA 1Hz to it
     186{{{#!bash
     187setNMEAOutput, Stream1, DSK1
     188setNMEAOutput, Stream1, , GGA
     189setNMEAOutput, Stream1, , , sec1
     190}}}
     191
     192
     193== UART Interface
     194The 2-wire UART on the GW16171 is routed to COM1 on the Mosaic-G5.
     195
     196By default COM1 is configured for 115200bd 8N1 no flow control. You can use 'getCOMSettings' and 'setCOMSettings' to configure this.
     197
     198With a GW16171 mounted on a GW8201 with a GW16FE0 in FSA2 this is /dev/ttymxc2:
     199{{{
     200#bash
     201screen /dev/ttymxc2 115200,cs8 # UART3 (FSA#2)
     202picocom /dev/ttymxc2 -b 115200 --omap lfcr #picocom option
     203}}}
     204
     205Example output:
     206{{{
     207$GPGGA,224309.00,,,,,0,00,,,M,,M,,*46
     208$GPGGA,224310.00,,,,,0,00,,,M,,M,,*4E
     209$GPGGA,224311.00,,,,,0,00,,,M,,M,,*4F
     210$GPGGA,224312.00,,,,,0,00,,,M,,M,,*4C
     211$GPGGA,224313.00,,,,,0,00,,,M,,M,,*4D
     212}}}
     213
     214
     215
     216== LEDs
     217The following LED's are available on the GW16171:
     218 - Power
     219 - GPLED: configurable
     220 - GPLED2: confiugrable
     221 - LOGLED: off when SD card not present, on when SD card present and mounted, short blinks when logging
     222
     223The GPLED and GPLED2 can be configured for varios modes
     224
     225Receiver commands:
     226{{{#!bash
     227getLEDMode # show LED mode for GPLED and GPLED2
     228setLEDMode,$GPLED,$GPLED2 # DIFFCORLED, PVTLED, TRACKLED, LOGLED, RTKLED:
     229}}}
     230
     231== PPS Output
     232The PPS output on M.2 pin 34 is highly configurable. The default configuration is to output 1Hz Low2High synchronized with GPS
     233
     234When the GW16171 is used on a GW8201 with a GW16FE0 in FSA2 pin 34 is UART_RTS which maps to MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09.
     235
     236You can connect this to a pps source via the following dt fragment:
     237{{{#!bash
     238/ {
     239        pps {
     240                compatible = "pps-gpio";
     241                pinctrl-names = "default";
     242                pinctrl-0 = <&pinctrl_pps>;
     243                gpios = <&gpio5 9 GPIO_ACTIVE_HIGH>;
     244        };
     245};
     246
     247&iomuxc {
     248        pinctrl_pps: ppsgrp {
     249                fsl,pins = <
     250                        MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09     0x140
     251                >;
     252        };
     253};
     254}}}
     255
     256Changing the current pps in the GW82xx to this would look like this (although note you can have multiple pps sources):
     257{{{#!bash
     258diff --git a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw82xx.dtsi b/arch/arm64/boot/dts/freescale/imx8mp
     259-venice-gw82xx.dtsi
     260index 2b86cc62a41a..137d78c3eb4a 100644
     261--- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw82xx.dtsi
     262+++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw82xx.dtsi
     263@@ -45,7 +45,7 @@ pps {
     264                compatible = "pps-gpio";
     265                pinctrl-names = "default";
     266                pinctrl-0 = <&pinctrl_pps>;
     267-               gpios = <&gpio4 3 GPIO_ACTIVE_HIGH>;
     268+               gpios = <&gpio5 9 GPIO_ACTIVE_HIGH>;
     269        };
     270 
     271        reg_usb2_vbus: regulator-usb2 {
     272@@ -414,7 +415,7 @@ MX8MP_IOMUXC_SAI3_RXC__GPIO4_IO29   0x106   /* PERST# */
     273        pinctrl_pps: ppsgrp {
     274                fsl,pins = <
     275-                       MX8MP_IOMUXC_SAI1_RXD1__GPIO4_IO03      0x146
     276+                       MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09     0x146
     277                >;
     278        };
     279}}}
     280
     281To configure PPS via the receiver:
     282{{{#!bash
     283getPPSParameters # default is sec1, Low2High, 0.00, GPS, 60, 5.000000
     284setPPSParameters,sec1,,,UTC # sync with UTC 1Hz
     285}}}
     286
     287== EventA Input
     288The EVENTA input signal on the Moasic-G5 routed to M2 pin 36 on the GW16171 and can be configured to trigger various things
     289
     290When the GW16171 is used on a GW8201 with a GW16FE0 in FSA2 pin 34 is UART_RTS which maps to MX8MP_IOMUXC_ECSPI1_MISO__GPIO5_IO08.
     291
     292To configure this via the receiver:
     293{{{#!bash
     294setEventParameters,+EventB,Low2High,0.0 # set polarity/delay for eventb
     295setSBFOutput,Stream1,COM1,ExtEvent,OnChange
     296}}}
     297
     298The integrated web admin will display events as they come in as well
     299
     300== Receiver
     301The Mosaic-G5 Receiver is highly capable and configurable. It uses Connection Descriptors to refer to its various interfaces:
     302 - COM1 - UART
     303 - USB1 - ttyACM0
     304 - USB2 - ttyACM1
     305 - DSK1 - microSD
     306
     307The Mosaic-G5 Firmware Reference Guide (available [https://www.septentrio.com/en/products/gnss-receivers/gnss-receiver-modules/mosaic-g5 here]) details the capabilities.
     308
     309You can access the receiver commands in various ways:
     310 * via web admin
     311 * via USB1/USB2:
     312{{{#!bash
     313screen /dev/ttyACM0 # USB1
     314screen /dev/ttyACM1 # USB2
     315}}}
     316 * via COM1:
     317{{{#!bash
     318screen /dev/ttymxc2 115200,cs8 # GW820x+GW16FE0 FSA2 (UART3)
     319}}}
     320
     321Configuration:
     322 - There are multiple sets of configs that you can work with
     323  * Current - current config
     324  * Boot - boot up config
     325  * User1 - user defined 1
     326  * User2 - user defined 2
     327  * RXDefault - factory default, not writable
     328 - use 'lstConfigFile, $CONFIG' to show the differences between a config and RXDefault
     329 - use 'exeCopyConfigFile,$SRC,$TARGET' to copy configs
     330
     331A few examples:
     332{{{#!bash
     333# show help
     334help
     335# show COM1 settings
     336getCOMSettings
     337# configure COM1 baudrate
     338setCOMSettings,COM1,baud115200,bits8,No,bit1,none
     339# log NMEA GGA 1Hz to com1
     340setNMEAOutput, Stream1,COM1,GGA,sec1
     341# log NMEA GGA 1Hz to log.nma
     342setNMEAOutput, Stream1,DSK1,GGA,sec1
     343# configure both LEDs for LOGLED
     344setLEDMode, LOGLED, LOGLED
     345# show differences from factory default for current config
     346lstConfigFlie, Current
     347# restore factory defaults
     348exeCopyConfigFile,RxDefault,Boot
     349}}}
     350
     351== Web Admin Interface GUI
     352
     353A web admin interface is available over IP (over USB). Setup the IP and bridge with instructions here: [#RNDISEthernetdevice]
     354
     355Then, on a host PC that is connected to the same network as the SBC, type in the IP address in the browser (192.168.3.1) and up comes up a GUI web interface shown in the picture below:
     356
     357[[Image(16160webadmin.jpg,400px)]]
     358
     359Generally we like to see that the Carrier-to-Noise plot for GPS should show about 2-3 satellites with an L1CA CN0 level around 50 dB-Hz. You can see the CN0 in the web user interface under ‘GNSS’ > ‘Satellites and Signals’. If you want to go deeper, you can log data and analyze the CN0 according to the guidelines here: [https://customersupport.septentrio.com/s/article/SBF-Analyzer-Carrier-to-Noise SBF Analyzer: Carrier to Noise].
     360
     361[[Image(16160reception.jpg,400px)]]
     362
     363Another basic tool we encourage customers to use to investigate signal levels (and especially interference issues) is to monitor the receiver’s automatic gain control (AGC). AGC is shown in the ‘GNSS’ > ‘Spectrum’ > ‘Status’ page. The AGC should fall between 15 to 50 dB, and the closer to 15 dB (or lower) you go, the more power you're introducing to the receiver input. Thus if AGC is low it likely indicates the presence of interference. You can read more on AGC and the effect that interference will have on this output here: [https://customersupport.septentrio.com/s/article/SBF-Analyzer-Front-End-Gain SBF Analyzer - Front End Gain.]
     364
     365[[Image(16160spectrum.jpg,400px)]]