| 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 | |
| | 39 | The only signals required other than power and GND are USB_DP and USB_DM. |
| | 40 | |
| | 41 | Gateworks 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 |
| | 48 | The Mosiac-G5 NRST_IN# needs to be floating (internal pu) or driven high at 3.3V to allow the card out of reset. |
| | 49 | |
| | 50 | The standard GW16171 uses M.2 Pin 56 (W_DISABLE1#) as the source of this reset. |
| 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 | | |
| 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 |
| 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 | | |
| 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: |
| | 128 | By 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 | |
| | 139 | With a GW16171 mounted on a GW9401 with a GW16FE0 in FSA2 this is /dev/ttyLP4: |
| 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 |
| | 157 | The 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. |
| 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 | | }}} |
| | 206 | Examples: |
| | 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 | |
| 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 |
| | 226 | Examples: |
| | 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 | }}} |
| 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 |
| | 284 | Septentrio 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 | |
| | 286 | The !RxControl tool is by far the easiest way to get started understanding the capabilities of the GPS and how to interact with it. |
| | 287 | |
| | 288 | Example: |
| | 289 | * On embedded Linux board use something like ser2net to redirect the tty to TCP port 28784: |
| | 290 | {{{#!bash |
| | 291 | # install ser2net |
| | 292 | apt update && apt install -y ser2net |
| | 293 | # add a conf |
| | 294 | cat << EOF >> /etc/ser2net.yaml |
| | 295 | connection: &mosaic |
| | 296 | accepter: tcp,28784 |
| | 297 | connector: serialdev,/dev/ttyACM0,115200n81,local |
| | 298 | options: |
| | 299 | kickolduser: true |
| | 300 | banner: "" |
| | 301 | |
| | 302 | EOF |
| | 303 | # restart ser2net |
| | 304 | systemctl restart ser2net |
| | 305 | }}} |
| | 306 | * Ubuntu 22.04 example via docker: |
| | 307 | {{{#!bash |
| | 308 | # Grant local Xwayland permission on host |
| | 309 | xhost +si:localuser:root |
| | 310 | |
| | 311 | # Start clean Ubuntu 22.04 container with home mount and display forwarding |
| | 312 | sudo 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 \ |
| | 320 | ubuntu:22.04 bash |
| | 321 | # now inside the container install all dependencies in one command |
| | 322 | apt update && apt install -y \ |
| | 323 | libx11-xcb1 libxcb-cursor0 \ |
| | 324 | libxcb-icccm4 libxcb-image0 \ |
| | 325 | libxcb-keysyms1 libxcb-randr0 \ |
| | 326 | libxcb-render-util0 libxcb-shape0 \ |
| | 327 | libxcb-sync1 libxcb-xfixes0 \ |
| | 328 | libxcb-xkb1 libxkbcommon-x11-0 \ |
| | 329 | libgl1 libegl1 \ |
| | 330 | libopengl0 libgl1-mesa-dri \ |
| | 331 | libwayland-cursor0 \ |
| | 332 | libxcomposite1 libxrender1 \ |
| | 333 | libxi6 libxtst6 libxrandr2 \ |
| | 334 | libxcursor1 libxinerama1 \ |
| | 335 | libxdamage1 libxext6 \ |
| | 336 | libfontconfig1 libdbus-1-3 libglib2.0-0 \ |
| | 337 | wget tar |
| | 338 | # Set software rendering |
| | 339 | export LIBGL_ALWAYS_SOFTWARE=1 |
| | 340 | # Install the app (assuming you've downloaded it to your host Download dir) |
| | 341 | mkdir -p /root/Desktop # keep installer happy |
| | 342 | chmod +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 |
| | 345 | LD_LIBRARY_PATH=/opt/Septentrio/RxTools/bin LIBGL_ALWAYS_SOFTWARE=1 \ |
| | 346 | /opt/Septentrio/RxTools/bin/rxcontrol |
| | 347 | }}} |
| | 348 | |
| | 349 | Note if !RxControl has difficulty connecting or synchronizing with the Mosaic try restarting ser2net via {{{systemctl restart ser2net}}}. |