Version 3 (modified by 5 hours ago) ( diff ) | ,
---|
GW16160 - Precision GNSS M.2 Card
The GW16160 is a precision GNSS M.2 Card featuring the Septentrio mosaic-X5 multi-frequency receiver.
Read more on the official product page here: https://www.gateworks.com/products/wireless-options/gw16160-septentrio-mosaic-precision-gnss-m2-card/
Features
The GW16160 features a Septentrio Mosaic-X5 Precision GNSS receiver on an M.2 A/E Key card with:
- 2-wire UART (COM1)
- USB 2.0 (USB1, USB2, RNDIS, USB Mass Storage)
- RESET#
- PPS_OUT
- EVENTA_IN
- 100Mbps Ethernet interface
- 4 LEDs: Power, GPLED, GPLED2, LOGLED
- microSD socket (for logging)
M.2 Pinout
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. All are mapped to no connect or reserved pins on the M.2 connector. All of these optional signals can be bypassed to allow support with different baseboards. Contact sales for optional special configurations.
M.2 Pinout:
- M2.23 RST#(1.8V); must be driven high to take Mosaic-X5 out of reset
- M2.2 VDD_BAT
- M2.3 USB_DP
- M2.5 USB_DM
- M2.22 UART_TXD (1.8V) output from card
- M2.32 UART_RXD (1.8V) input to card
- M2.34 PPS (1.8V) output from card; normally UART_RTS; via R23 (loaded)
- M2.36 EVENTA (1.8V) input to card; normally UART_CTS; via R24 (loaded)
- M2.4,72,74 VDD_3P3
- M2.1,7,33,39,45,51,57,63,69,75 GND
- M2.59 ENET_TX+; normally RSVD
- M2.61 ENET_TX-; normally RSVD
- M2.71 ENET_RX+; normally RSVD
- M2.73 ENET_RX-; normally RSVD
- M2.67 EVENTB(1.8V); normally RSVD; via R22 (unloaded)
- UART TXD1 = UART output from GPS
- UART RXD1 = UART input to GPS
- VCC3_BAT = Dedicated battery backup pin, if battery backup is not needed, connect to VCC3
Antenna
There is one antenna port for the Mosaic X5.
To get started, a recommended antenna is the Yokowo Manufacturing of America YOZ-52728ZZ01-YM available here
A 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.
A list of antennas from Septentrio is here: https://www.septentrio.com/en/support/product-resources/supportresources/gnssantennas
The unloaded second antenna port can be used for different Septentrio GNSS receivers that are an optional load.
Compatibility
The only A-Key sockets on Gateworks boards are:
- GW16151 MiniPCIe to M.2 E-Key Adapter - does not connect pin 23 (won't bring Mosaic out of reset)
- GW820x+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
Reset
The Mosiac-X5 NRST_IN# needs to be floating (internal pu) or driven high at 3.3V to allow the card out of reset.
On the GW160160 U7 is a voltage translator to translate the SDIO_RESET# from 1.8V to 3.3V.
Examples:
- take out of reset when mounted on a GW16FE0 in FSA2 of a GW820x where SDIO_RESET# is GPIO2_10:
- via U-Boot
gpio set gpio2_10
- via Linux (gpio2_10 is gpio-42)
echo 42 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio42/direction echo 0 > /sys/class/gpio/gpio42/value # drive low to reset echo 1 > /sys/class/gpio/gpio42/value # release reset
- via U-Boot
Reset Loading Options:
- resistor R20 can be loaded and U7 unloaded to directly connect these if used in a socket where this pin is 3.3V
- U7 can be unloaded and the internal PU will allow the Mosiac out of reset without the ability to reset it via hardware
USB Interface
When powered and out of reset, the Mosiac-X5 USB interface enumerates on the USB bus with a VID/PID of 0x152a:0x85c0:
Bus 003 Device 004: ID 152a:85c0 Thesycon Systemsoftware & Consulting GmbH Septentrio USB Device
The USB device provides 7 endpoints:
- {0,1} - RNDIS Ethernet device (Linux rndis_host driver)
- {2,3} - CDC ACM device (Linux cdc_acm driver)
- {4,5} - CDC ACM device (Linux cdc_acm driver)
- 6 - USB Mass Storage device (Linux usb-storage driver)
A Linux kernel would show:
[ 213.543608] usb 3-1.2: new high-speed USB device number 5 using xhci-hcd [ 213.653262] usb 3-1.2: New USB device found, idVendor=152a, idProduct=85c0, bcdDevice= 3.14 [ 213.661651] usb 3-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 213.668987] usb 3-1.2: Product: Septentrio USB Device [ 213.674075] usb 3-1.2: Manufacturer: Septentrio [ 213.678628] usb 3-1.2: SerialNumber: 3838051 [ 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 9:15:45 [ 213.814494] cdc_acm 3-1.2:1.2: ttyACM0: USB ACM device [ 213.822420] cdc_acm 3-1.2:1.4: ttyACM1: USB ACM device [ 213.828650] usb-storage 3-1.2:1.6: USB Mass Storage device detected [ 213.835529] scsi host0: usb-storage 3-1.2:1.6 [ 213.864384] rndis_host 3-1.2:1.0 enx1a3202991545: renamed from eth0 [ 214.868534] scsi 0:0:0:0: CD-ROM Linux File-CD Gadget 0314 PQ: 0 ANSI: 2 [ 214.877127] scsi 0:0:0:1: Direct-Access Linux File-CD Gadget 0314 PQ: 0 ANSI: 2 [ 214.886483] sr 0:0:0:0: Power-on or device reset occurred [ 214.893005] sr 0:0:0:0: [sr0] scsi-1 drive [ 214.903049] sr 0:0:0:0: Attached scsi CD-ROM sr0 [ 214.908064] sr 0:0:0:0: Attached scsi generic sg0 type 5 [ 214.914321] sd 0:0:0:1: Attached scsi generic sg1 type 0 [ 214.914851] sd 0:0:0:1: Power-on or device reset occurred [ 214.926006] sd 0:0:0:1: [sda] Media removed, stopped polling [ 214.932590] sd 0:0:0:1: [sda] Attached SCSI removable disk
USB ACM interfaces
The 2x USB ACM interfaces are represented by USB1 and USB2 Connection Descriptors (CD) and would typically enumerate as /dev/ttyACM0 and /dev/ttyACM1.
Examples:
screen /dev/ttyACM0 # USB1 screen /dev/ttyACM1 # USB2
RNDIS Ethernet device
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
To utilize this you can put the interface in a bridge with your primary network device.
Example:
- GW8201 where eth0 is your LAN connection, eth1 is the PCI GbE, eth2 would be the Mosaic-X5 RNDIS interface you can put eth0 and eth2 in a bridge
- with the following /etc/network/interface:
allow-hotplug eth0 auto br0 iface br0 inet dhcp bridge_ports eth0 eth2 bridge_stp off bridge_fd 0 bridge_maxwait 0
- manually:
brctl addbr br0 brctl addif br0 eth0 brctl addif br0 eth1 udhcpc br0
- with the following /etc/network/interface:
After bringing up the bridge and the bridge getting a network address give your host computer an IP on the 192.168.3/24 network and you can open a URL to 192.168.3.1 to access the web admin.
USB Mass Storage interface
The USB Mass storage interface allows access to the SD interface on the Mosaic-X5.
By default the Mosaic-X5 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.
SD Interface
The SD interface on the Mosaic-X5 is a 1-bit SDIO device which goes to a MicroSD socket on the GW16160.
Receiver config examples:
- use the 'LstDiskInfo,DSK1' receiver command to obtain info about it:
LstDiskInfo,DSK1 ----> $-- BLOCK 1 / 0 C <?xml version="1.0" encoding="ISO-8859-1" ?> <DiskInfo version="0.1"> ----> $-- BLOCK 2 / 0 C <Disk name="DSK1" total="7931641856" free="7931449344" > <File name="log.nma" size="131072" /> </Disk> </DiskInfo>
- format it:
exeManageDisk, DSK1, Format
- Log NMEA GPS GGA 1Hz to it
setNMEAOutput, Stream1, DSK1 setNMEAOutput, Stream1, , GGA setNMEAOutput, Stream1, , , sec1
UART Interface
The 2-wire UART on the GW16160 is routed to COM1 on the Mosaic-X5.
By default COM1 is configured for 115200bd 8N1 no flow control. You can use 'getCOMSettings' and 'setCOMSettings' to configure this.
With a GW16160 mounted on a GW8201 with a GW16FE0 in FSA2 this is /dev/ttymxc2: {{{#bash screen /dev/ttymxc2 115200,cs8 # UART3 (FSA#2) }}}
Ethernet Interface
The Ethernet interface is optional and not loaded by default.
The Mosaic-X5 Ethernet interface (not to be confused by the USB RNDIS interface) is provided via RMII to an off-module PHY where we route the TX/RX pairs (4-wires) to reserved pins on the M.2 connector:
- M2.59 ENET_TX+
- M2.61 ENET_TX-
- M2.71 ENET_RX+
- M2.73 ENET_RX-
By default the Mosaic-X5 expects a 50MHz REF_CLK to be provided by the PHY. The PHY on the GW16160 needs the 50MHz REF_CLK to be provided by the MAC and for this to occur you need to apply a firmware update.
If connected to a link partner this provides a 100Mbps interface (which you may need to force via ethtool)
The !'EthernetMode' needs to be enabled in the receiver and this (as well as IPSettings) does not appear to be tracked by the receiver configuration (its stored in NVRAM automatically) and persists across power cycles.
The 'IPSettings' also need to be configured which default to dhcp with a hostname of mosaic-x5-xxxxxxx (where the last 7 digits are the serial number of the receiver). This is not tracked by receiver configuration (its stored in NVRAM automatically) and persists across power cycles.
If using DHCP you can obtain the IPParameters from the receiver via 'lstInternalFile,IPParameters':
lstInternalFile,IPParameters ----> $-- BLOCK 1 / 1 <?xml version="1.0" encoding="ISO-8859-1" ?> <ipparameters> <interface name="eth0" type="Ethernet" hostname="mosaic-x5-3838323"> <hardware addr="8C:1C:DA:52:CE:C5"/> <inet addr="192.168.3.176" mask="255.255.255.0" gateway="" mode="dhcp"/> <statistics txbytes="1080" rxbytes="151338" internet="Not Tested"/> </interface> <resolv> </resolv> </ipparameters>
In summary you need the following to use this interface:
- Link partner connected to the 2 pairs configured for 100mbps ethernet
- firmware update to provide the 50Mhz clk from the Mosaic MAC
- EthernetMode enabled in the receiver
- either set IPParameters for static IP or read it to get IP settings
LEDs
The following LED's are available on the GW16160:
- Power
- GPLED: configurable
- GPLED2: confiugrable
- LOGLED: off when SD card not present, on when SD card present and mounted, short blinks when logging
The GPLED and GPLED2 can be configured for varios modes
Receiver commands:
getLEDMode # show LED mode for GPLED and GPLED2 setLEDMode,$GPLED,$GPLED2 # DIFFCORLED, PVTLED, TRACKLED, LOGLED, RTKLED:
PPS Output
The PPS output on M.2 pin 34 is highly configurable. The default configuration is to output 1Hz Low2High synchronized with GPS
When the GW16160 is used on a GW8201 with a GW16FE0 in FSA2 pin 34 is UART_RTS which maps to MX8MP_IOMUXC_ECSPI1_SS0GPIO5_IO09.
You can connect this to a pps source via the following dt fragment:
/ { pps { compatible = "pps-gpio"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pps>; gpios = <&gpio5 9 GPIO_ACTIVE_HIGH>; }; }; &iomuxc { pinctrl_pps: ppsgrp { fsl,pins = < MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09 0x140 >; }; };
Changing the current pps in the gw82xx to this would look like this (although note you can have multiple pps sources):
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw82xx.dtsi b/arch/arm64/boot/dts/freescale/imx8mp -venice-gw82xx.dtsi | index 2b86cc62a41a..137d78c3eb4a 100644 --- a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw82xx.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw82xx.dtsi @@ -45,7 +45,7 @@ pps { compatible = "pps-gpio"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pps>; - gpios = <&gpio4 3 GPIO_ACTIVE_HIGH>; + gpios = <&gpio5 9 GPIO_ACTIVE_HIGH>; }; reg_usb2_vbus: regulator-usb2 { @@ -414,7 +415,7 @@ MX8MP_IOMUXC_SAI3_RXC__GPIO4_IO29 0x106 /* PERST# */ | pinctrl_pps: ppsgrp { fsl,pins = < - MX8MP_IOMUXC_SAI1_RXD1__GPIO4_IO03 0x146 + MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09 0x146 >; };
To configure PPS via the receiver:
getPPSParameters # default is sec1, Low2High, 0.00, GPS, 60, 5.000000 setPPSParameters,sec1,,,UTC # sync with UTC 1Hz
EventA Input
The EVENTA input signal on the Moasic-X5 routed to M2 pin 36 on the GW16160 and can be configured to trigger various things
When the GW16160 is used on a GW8201 with a GW16FE0 in FSA2 pin 34 is UART_RTS which maps to MX8MP_IOMUXC_ECSPI1_MISOGPIO5_IO08.
To configure this via the receiver:
setEventParameters,+EventB,Low2High,0.0 # set polarity/delay for eventb
setSBFOutput,Stream1,COM1,ExtEvent,OnChange
The integrated web admin will display events as they come in as well
Receiver
The Mosaic-X5 Receiver is highly capable and configurable. It uses Connection Descriptors to refer to its various interfaces:
- COM1 - UART
- USB1 - ttyACM0
- USB2 - ttyACM1
- DSK1 - microSD
The Mosaic-X5 Firmware Reference Guide (available here) destails the capabilities.
You can access the receiver commands in various ways:
- via web admin
- via USB1/USB2:
screen /dev/ttyACM0 # USB1 screen /dev/ttyACM1 # USB2
- via COM1:
screen /dev/ttymxc2 115200,cs8 # GW820x+GW16FE0 FSA2 (UART3)
Configuration:
- There are multiple sets of configs that you can work with
- Current - current config
- Boot - boot up config
- User1 - user defined 1
- User2 - user defined 2
- RXDefault - factory default, not writable
- use 'lstConfigFile, $CONFIG' to show the differences between a config and RXDefault
- use 'exeCopyConfigFile,$SRC,$TARGET' to copy configs
A few examples:
# show help help # show COM1 settings getCOMSettings # configure COM1 baudrate setCOMSettings,COM1,baud115200,bits8,No,bit1,none # log NMEA GGA 1Hz to com1 setNMEAOutput, Stream1,COM1,GGA,sec1 # log NMEA GGA 1Hz to log.nma setNMEAOutput, Stream1,DSK1,GGA,sec1 # configure both LEDs for LOGLED setLEDMode, LOGLED, LOGLED # show differences from factory default for current config lstConfigFlie, Current # restore factory defaults exeCopyConfigFile,RxDefault,Boot
Attachments (2)
- 16160debug.jpg (27.3 KB ) - added by 5 hours ago.
- 16160pinout.jpg (88.2 KB ) - added by 5 hours ago.
Download all attachments as: .zip