Changes between Version 1 and Version 2 of expansion/gw16171


Ignore:
Timestamp:
11/14/2026 01:31:35 AM (5 hours ago)
Author:
Tim Harvey
Comment:

updated Mosaic-G5 details: remove non-existing features copied over from X5 such as RNDIS, web-admin, TCP/IP stack and add example of using RxTools

Legend:

Unmodified
Added
Removed
Modified
  • expansion/gw16171

    v1 v2  
    22= GW16171 - Precision GNSS M.2 Card
    33
    4 The GW16171 is a precision GNSS M.2 Card featuring the Septentrio mosaic-G5 multi-frequency receiver.
     4The GW16171 is a precision GNSS M.2 Card featuring the Septentrio mosaic-G5 P6 multi-frequency receiver.
    55
    66Read more on the official product page here: [https://www.gateworks.com/products/wireless-options/gw16171-septentrio-g5-mosaic-precision-gnss-m2-card/]
    … …  
    1010The 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:
    1111 - 2-wire UART (COM1) (optional)
    12  - USB 2.0 (USB1, USB2, RNDIS, USB Mass Storage)
     12 - USB 2.0 (USB1, USB2)
    1313 - RESET# (connected to Mosaic active-high NRST_IN#)
    14  - PPS_OUT, PPS_IN
    15  - EVENTA_IN
    16  - 4 LEDs: Power, GPLED, GPLED2, LOGLED
     14 - UART 1.8V
     15 - PPS1 output 1.8V (via UART_RTS pin)
     16 - EVENTA input 1.8V (via UART_CTS pin)
     17 - EVENTB input 1.8V/3.3V (optional, via reserved pin)
     18 - 2 configurable LEDs: GPIO1 GPIO2
    1719 - microSD socket (for data logging)
    1820
    19 == GW16171 M.2 Pinout
    20 
    21 The 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.
     21Compared to the Mosaic-X5 on the [wiki:expansion/gw16160 GW16160] the G5 is a lower footprint and lower power consumption device which lacks the TCP/IP stack and RNDIS interface of the X5.
     22
     23
     24== GW16171 M.2 E-Key Pinout
     25The following tables provide the connector pinouts for the 10-pin debug header and the M.2 A/E-Key connector.
    2226
    2327M.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.56 W_DISABLE1#(1.8/3.3V) RST# (optional, Mosaic-G5 has a pull-up)
     29 - M2.3 USB_DP (required)
     30 - M2.5 USB_DM (required)
    2831 - M2.22 UART_TXD (1.8V) output from card
    2932 - 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.34 PPS1 (1.8V) output from card; normally UART_RTS (loaded)
     34 - M2.36 EVENTA (1.8V) input to card; normally UART_CTS (loaded)
     35 - M2.2,4,72,74 VDD_3P3
    3336 - 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)]]
     37 - M2.67 EVENTB(1.8V/3.3V); optional (unloaded)
     38
     39The only signals required other than power and GND are USB_DP and USB_DM.
     40
     41Gateworks boards with M.2 E-Key sockets:
     42 - Catalina boards with a GW16FE0 FSA M.2 E-Key adapter
     43 - Venice-Flex boards with a GW16FE0 FSA M.2 E-Key adapter
     44 - GW16151 MiniPCIe to M.2 E-Key Adapter
     45
     46
     47== Reset
     48The Mosiac-G5 NRST_IN# needs to be floating (internal pu) or driven high at 3.3V to allow the card out of reset.
     49
     50The standard GW16171 uses M.2 Pin 56 (W_DISABLE1#) as the source of this reset.
    3851
    3952
    4053== Antenna
    41 
    42 There are two antenna ports for the Mosaic G5.
     54There are two antenna ports for the Mosaic G5. Not all variants support dual antennas however the standard GW16171 with the Mosaic-G5 P6 does.
    4355
    4456To 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]
    … …  
    4961[https://www.septentrio.com/en/support/product-resources/supportresources/gnssantennas]
    5062
    51 The unloaded second antenna port can be used for different Septentrio GNSS receivers that are an optional load.
    52 
    53 == Compatibility
    54 The GW16171 requires an M.2 E-Key socket with USB2.0 and M2.56 RST#.
    55 
    56 The 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 
    60 Examples:
    61  * GW820x+GW16FE0 in FSA2:
    62   - set GPIO in U-Boot:
    63 {{{
    64 setenv preboot "$preboot; gpio set gpio2_10"
    65 saveenv
    66 }}}
    67 
    68 == Reset
    69 The Mosiac-G5 NRST_IN# needs to be floating (internal pu) or driven high at 3.3V to allow the card out of reset.
    70 
    71 The standard GW16171 uses M.2 Pin 56 (W_DISABLE1#) as the source of this reset.
    72 
    7363
    7464
    … …  
    7969}}}
    8070
    81 The USB device provides 7 endpoints:
    82  - {0,1} - RNDIS Ethernet device (Linux rndis_host driver)
     71The USB device provides 2 endpoints:
     72 - {0,1} - CDC ACM device (Linux cdc_acm driver)
    8373 - {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)
    8674
    8775A Linux kernel would show:
    … …  
    9381[  213.674075] usb 3-1.2: Manufacturer: Septentrio
    9482[  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
    96 9:15:45
    9783[  213.814494] cdc_acm 3-1.2:1.2: ttyACM0: USB ACM device
    9884[  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
    11285}}}
    11386
    … …  
    12396
    12497
    125 === RNDIS Ethernet device
    126 The 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 
    128 To utilize this you can put the interface in a bridge with your primary network device.
    129 
    130 Example:
    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
    134 allow-hotplug eth0
    135 auto br0
    136 iface 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
    144 brctl addbr br0
    145 brctl addif br0 eth0
    146 brctl addif br0 eth2 #eth2 could be defined as usb0
    147 udhcpc br0
    148 }}}
    149 
    150 After 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 
    152 Use 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
    158 The USB Mass storage interface allows access to the SD interface on the Mosaic-G5.
    159 
    160 By 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 
    16298== SD Interface
    16399The SD interface on the Mosaic-G5 is a 1-bit SDIO device which goes to a MicroSD socket on the GW16171.
    … …  
    166102 * use the '!LstDiskInfo,DSK1' receiver command to obtain info about it:
    167103{{{#!bash
    168 LstDiskInfo,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
    183 exeManageDisk, DSK1, Format
     104< LstDiskInfo, DSK1
     105 > $R; LstDiskInfo, DSK1
     106 > <?xml version="1.0" encoding="ISO-8859-1" ?>
     107 > <DiskInfo version="0.1">
     108 >   <Disk name="DSK1" total="0" free="0" >
     109 >     <Dir name="/sdcard/">
     110 >    </Dir>
     111 >   </Disk>
     112 > </DiskInfo>
     113 >
    184114}}}
    185115 * Log NMEA GPS GGA 1Hz to it
    … …  
    190120}}}
    191121
     122Unlike the Mosaic-X5, the Mosaic-G5 has no command to format the disk. You must use other means to format it as FAT32 and have it inserted before the module is powered on.
     123
    192124
    193125== UART Interface
    194126The 2-wire UART on the GW16171 is routed to COM1 on the Mosaic-G5.
    195127
    196 By default COM1 is configured for 115200bd 8N1 no flow control. You can use 'getCOMSettings' and 'setCOMSettings' to configure this.
    197 
    198 With a GW16171 mounted on a GW8201 with a GW16FE0 in FSA2 this is /dev/ttymxc2:
     128By default COM1 is configured for 115200bd 8N1 no flow control. You can use 'getCOMSettings' and 'setCOMSettings' to configure this and can configure various data streams to output to it. For example on the USB1 or USB2 ACM interfaces:
     129{{{#!
     130< getCOMSettings
     131 > $R: getCOMSettings
     132 >   COMSettings, COM1, baud115200, bits8, No, bit1, none
     133 >   COMSettings, COM2, baud115200, bits8, No, bit1, none
     134< setNMEAOutput, Stream1, COM1, GGA, sec1
     135 > $R: setNMEAOutput, Stream1, COM1, GGA, sec1
     136 >   NMEAOutput, Stream1, COM1, GGA, sec1
     137}}}
     138
     139With a GW16171 mounted on a GW9401 with a GW16FE0 in FSA2 this is /dev/ttyLP4:
    199140{{{
    200141#bash
    201 screen /dev/ttymxc2 115200,cs8 # UART3 (FSA#2)
    202 picocom /dev/ttymxc2 -b 115200 --omap lfcr #picocom option
     142screen /dev/ttyLP4 115200,cs8 # UART5 (FSA#2)
     143picocom /dev/ttyLP4 -b 115200 --omap lfcr #picocom option
    203144}}}
    204145
    … …  
    213154
    214155
    215 
    216 == LEDs
    217 The 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 
    223 The GPLED and GPLED2 can be configured for varios modes
    224 
    225 Receiver commands:
    226 {{{#!bash
    227 getLEDMode # show LED mode for GPLED and GPLED2
    228 setLEDMode,$GPLED,$GPLED2 # DIFFCORLED, PVTLED, TRACKLED, LOGLED, RTKLED:
    229 }}}
    230 
    231 == PPS Output
    232 The PPS output on M.2 pin 34 is highly configurable. The default configuration is to output 1Hz Low2High synchronized with GPS
     156== PPS1 Output
     157The PPS1 output on M.2 pin 34 is highly configurable. The default configuration is to output 1Hz Low2High synchronized with GPS. The PPS output pin routes to the M.2 pin 34 which is UART_RTS for the M.2 E-Key standard.
    233158
    234159When 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.
    … …  
    279204}}}
    280205
    281 To configure PPS via the receiver:
    282 {{{#!bash
    283 getPPSParameters # default is sec1, Low2High, 0.00, GPS, 60, 5.000000
    284 setPPSParameters,sec1,,,UTC # sync with UTC 1Hz
    285 }}}
     206Examples:
     207 * get PPS1
     208{{{#!bash
     209< getPPSParameters
     210 > $R: getPPSParameters
     211 >   PPSParameters, sec1, Low2High, 0.00, GPS, 60, 5.000000
     212}}}
     213 * set PPS1 to output at 1Hz high to low with a 100ms pulse width:
     214{{{#!bash
     215< setPPSParameters, sec1, High2Low, 0.00, GPS, 60, 100
     216 > $R: setPPSParameters, sec1, High2Low, 0.00, GPS, 60, 100
     217 >   PPSParameters, sec1, High2Low, 0.00, GPS, 60, 100.000000
     218}}}
     219
    286220
    287221== EventA Input
    288 The EVENTA input signal on the Moasic-G5 routed to M2 pin 36 on the GW16171 and can be configured to trigger various things
     222The EVENTA input signal on the Moasic-G5 routed to M2 pin 36 on the GW16171 and can be configured to trigger various things.
    289223
    290224When 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.
    291225
    292 To configure this via the receiver:
    293 {{{#!bash
    294 setEventParameters,+EventB,Low2High,0.0 # set polarity/delay for eventb
    295 setSBFOutput,Stream1,COM1,ExtEvent,OnChange
    296 }}}
    297 
    298 The integrated web admin will display events as they come in as well
     226Examples:
     227 * Enable the ExtEvent SBF block and send it to COM1 showing the position at the time of the event:
     228{{{#!bash
     229< setSBFOutput, Stream1, COM1, ExtEvent+ExtEventPVTGeodetic, OnChange
     230 > $R: setSBFOutput, Stream1, COM1, ExtEvent+ExtEventPVTGeodetic, OnChange
     231 >   SBFOutput, Stream1, COM1, ExtEvent+ExtEventPVTGeodetic, OnChange
     232}}}
    299233
    300234== Receiver
    … …  
    308242
    309243You can access the receiver commands in various ways:
    310  * via web admin
    311244 * via USB1/USB2:
    312245{{{#!bash
    … …  
    341274# log NMEA GGA 1Hz to log.nma
    342275setNMEAOutput, Stream1,DSK1,GGA,sec1
    343 # configure both LEDs for LOGLED
    344 setLEDMode, LOGLED, LOGLED
    345276# show differences from factory default for current config
    346277lstConfigFlie, Current
    … …  
    349280}}}
    350281
    351 == Web Admin Interface GUI
    352 
    353 A web admin interface is available over IP (over USB). Setup the IP and bridge with instructions here: [#RNDISEthernetdevice]
    354 
    355 Then, 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 
    359 Generally 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 
    363 Another 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)]]
     282
     283== Using Septentrio !RxTools
     284Septentrio has a Windows / Linux graphical user interface called [https://www.septentrio.com/en/products/gps-gnss-receiver-software/rxtools RxTools] that can interface with the Mosaic-G5 by redirecting one of its ACM serial ports to a TCP/IP connection.
     285
     286The !RxControl tool is by far the easiest way to get started understanding the capabilities of the GPS and how to interact with it.
     287
     288Example:
     289 * On embedded Linux board use something like ser2net to redirect the tty to TCP port 28784:
     290{{{#!bash
     291# install ser2net
     292apt update && apt install -y ser2net
     293# add a conf
     294cat << EOF >> /etc/ser2net.yaml
     295connection: &mosaic
     296  accepter: tcp,28784
     297  connector: serialdev,/dev/ttyACM0,115200n81,local
     298  options:
     299    kickolduser: true
     300    banner: ""
     301
     302EOF
     303# restart ser2net
     304systemctl restart ser2net
     305}}}
     306 * Ubuntu 22.04 example via docker:
     307{{{#!bash
     308# Grant local Xwayland permission on host
     309xhost +si:localuser:root
     310
     311# Start clean Ubuntu 22.04 container with home mount and display forwarding
     312sudo docker run -it --rm \
     313--net=host \
     314-e DISPLAY=$DISPLAY \
     315-e QT_QPA_PLATFORM=xcb \
     316-e XAUTHORITY=/root/.Xauthority \
     317-v /tmp/.X11-unix:/tmp/.X11-unix \
     318-v ~/.Xauthority:/root/.Xauthority:ro \
     319-v ~:/host_home \
     320ubuntu:22.04 bash
     321# now inside the container install all dependencies in one command
     322apt update && apt install -y \
     323libx11-xcb1 libxcb-cursor0 \
     324libxcb-icccm4 libxcb-image0 \
     325libxcb-keysyms1 libxcb-randr0 \
     326libxcb-render-util0 libxcb-shape0 \
     327libxcb-sync1 libxcb-xfixes0 \
     328libxcb-xkb1 libxkbcommon-x11-0 \
     329libgl1 libegl1 \
     330libopengl0 libgl1-mesa-dri \
     331libwayland-cursor0 \
     332libxcomposite1 libxrender1 \
     333libxi6 libxtst6 libxrandr2 \
     334libxcursor1 libxinerama1 \
     335libxdamage1 libxext6 \
     336libfontconfig1 libdbus-1-3 libglib2.0-0 \
     337wget tar
     338# Set software rendering
     339export LIBGL_ALWAYS_SOFTWARE=1
     340# Install the app (assuming you've downloaded it to your host Download dir)
     341mkdir -p /root/Desktop # keep installer happy
     342chmod +x /host_home/Downloads/rxtools_26_1_0_installer_x64.bin
     343/host_home/Downloads/rxtools_26_1_0_installer_x64.bin
     344# To run manually
     345LD_LIBRARY_PATH=/opt/Septentrio/RxTools/bin LIBGL_ALWAYS_SOFTWARE=1 \
     346/opt/Septentrio/RxTools/bin/rxcontrol
     347}}}
     348
     349Note if !RxControl has difficulty connecting or synchronizing with the Mosaic try restarting ser2net via {{{systemctl restart ser2net}}}.