The GNSS Subsystem. Johan Hovold. Open Source Summit Europe, Edinburgh October 24, Hovold Consulting AB

Similar documents
GNSS 5 click PID: MIKROE Weight: 30 g

GNSS 5 click PID: MIKROE-2670

GPS/GNSS Receiver Module

Hyperion NEO-M8N GPS

GPS Engine Board USB Interface

RY836AI. High Performance GPS & Glonass / GPS & BeiDou Parallel mode antenna module with Compass, Gyroscope, Accelerometer, Pressure Sensor.

QGP Supply. GNSS Receiver User Manual Version 3.1 UBX-M8030

Key Modules For Your Success SKYTRAQ. GPS Module MG-ST1315. UUser s Manual Ver 展得國際有限公司

YIC9 Series. GPS & BDS Receiver Module. 1. Product Information 1.1 Product Name: YIC91612EBFGB-U Product Description: Product Features:

SKYTRAQ. GPS Module MG-ST1315S. UUser s Manual Ver 1.01

Ct-G551. Connectec. SiRF V GPS Module. Specifications Sheet V0.1. Features: Ct-G551 V0.1 Specification Sheet

MN5020HS Smart GPS Antenna Module

Using GPS in Embedded Applications Pascal Stang Stanford University - EE281 November 28, 2000

L76-L GNSS Module Presentation

GU93030S Series. GPS/GNSS Receiver (G-Mouse) Product Description: GU93030S(M) is a compact, high performance, and low power consumption G-Mouse.

MN8010 GPS Receiver Module

裕筌電子 ( 深圳 ) 有限公司. GPS Receiver. GPS, GALILEO, QZSS: L MHz, C/A code BEIDOU: B MHz. Support 99 channels (33 Tracking, 99 Acquisition)

PPS usable by timing applications via serial port emulation

GPS Application. Global Positioning System. We provide GPS module ODM / OEM service, any GPS receiver you want, we can provide customized services.

GPS / GNSS Receiver (G-Mouse) GT-901 is a compact, high performance, and low power consumption G-Mouse.

GLOBALSAT GPS Engine Board

GPS1240 Rugged Sensor Data sheet

Primer on GPS Operations

GLOBALSAT GPS Module

GPS & GLONASS Receiver Module

1 General Information... 3

The GNSS-CONTROL System has been designed in house by Position-Control and is the result of over 15 years experience using different Sensor Systems.

LR9805-ST LR9805ST GPS Module GPS Module

Q20 High Sensitivity GPS Integration Board. Specification. QinetiQ Proprietary. QinetiQ Proprietary QINETIQ/VENTURES/CV/SPEC070049/1A.

GLOBALSAT GPS+BDS Engine Board

FC Oncore Version B Technical Data Rev. A, 5/2007

GPS/GNSS Antenna Module. YIC51513PGM-37 is a compact, high performance, and low power consumption GPS/GNSS Antenna Module.

User Manual. User Manual. Precis-BX316R. User Manual Tersus GNSS Inc. All rights reserved.

CONDOR C1216 GPS RECEIVER MODULE technical notes ZELIA INTEGRATES ANTENNA, GPS RECEIVER, RTC AND LNA

GLOBALSAT GPS Engine Board

SPECTRACOM ecall Compliance Tool

GPS & GLONASS Antenna Module

GPS93030S Series. GPS/GNSS Receiver (G-Mouse) Product Description: GPS93030S(M) is a compact, high performance, and low power consumption G-Mouse.

UM2231 User manual. Teseo-LIV3F GNSS Module - Hardware Manual. Introduction

CW20 / 20S GPS Receiver

GLOBAL POSITIONING SYSTEMS

GPS/GLONASS/SBAS RECEIVER. Datasheet

QinetiQ Q20 High Sensitivity GPS Receiver. Specification. QinetiQ Proprietary QINETIQ/FST/I&C/SPEC044447/ th October 2005

GPS Engine Board FGPMMOSL3

Intro to GNSS & Teseo-LIV3F Module for IoT Positioning

C3-470B Jnavi SPECSHEET

Quick Start. Tersus GNSS Center. Configuration Tools for Tersus GNSS RTK Systems.

MD-261 MD-261. Features. Applications. Block Diagram. GNSS (GPS and GLONASS) Disciplined Oscillator Module

GR-87 GPS Receiver Module

L50 GPS Module Presentation

EN: This Datasheet is presented by the m anufacturer. Please v isit our website for pricing and availability at ore.hu.

GPS Firmware A1080 A description of the standard NMEA GPS firmware provided on Tyco Electronics GPS module A1080 User s Manual Version 3.

66-Channel GPS Module GP-3711

UART GPS NEO-6M User Manual

Block Diagram. Figure 1. Functional Block Diagram

Precise Positioning with Smartphones running Android 7 or later

GPS & GLONASS Antenna Module

GAM-2222-MTBD GPS&Beidou Antenna Module. General Description. The Gotop GAM-2222-MTBD is a. complete GPS&Beidou engine module that

GPS SMART ANTENNA (GWG4287SX)

GPS Receiver. User s Guide. Dec Rev. A

GLOBALSAT GPS Engine Board

Principal Investigator Co-Principal Investigator Co-Principal Investigator Prof. Talat Ahmad Vice-Chancellor Jamia Millia Islamia Delhi

SE868Kx-Ax Family Product User Guide. 1VV Rev

GPS-41SMDR GPS-41SMDF. Embedded GPS Module GPS-41SMD. Fast-Acquisition Enhanced-Sensitivity 16-Channel SMD GPS Receiver Module FEATURES

CONDOR C1919 GPS RECEIVER MODULE technical notes GENERAL OVERVIEW

Global Navigation Satellite System for IE 5000

GPS3260/ GPS3261 Smart Sensor series Data Sheet

Challenges and Solutions for GPS Receiver Test

GPS Module AGP3363. Product Datasheet & Design Guide <V1.0>

CONDOR C1216 GPS RECEIVER MODULE technical notes GENERAL OVERVIEW

GNSS Technologies. GNSS Acquisition Dr. Zahidul Bhuiyan Finnish Geospatial Research Institute, National Land Survey

CONDOR C1722 GPS RECEIVER MODULE technical notes

Part Number Weblink for the part Description Unit Price. Hardware interfacing to the Freescale 9S12C32 MCU on board the CSM-12C32 module

LOCOSYS Technology Inc.

GPS-41EBR GPS-41EBF. GPS Receiver Module GPS-41EB. Fast Acquisition Enhanced Sensitivity 12 Channel GPS Sensor Module FEATURES. Ordering Information

DYNAMICALLY RECONFIGURABLE SOFTWARE DEFINED RADIO FOR GNSS APPLICATIONS

Introduction to Global Navigation Satellite System (GNSS) Signal Structure

C94-M8P Application Board Setup Guide

Article Number: 457 Rating: Unrated Last Updated: Wed, Sep 2, 2009 at 3:46 PM

RELEASE NOTES. Introduction. Trimble Infrastructure GNSS Series Receivers

NEO/LEA-M8T. u-blox M8 concurrent GNSS timing modules. Data Sheet. Highlights:

Datasheet of stand-alone GPS smart antenna module, LS20037

ONCORE ENGINEERING NOTE M12 Oncore

GM-270. CF GPS Receiver. User s Guide

All other trademarks are trademarks or registered trademarks of their respective holders.

GAM-2107-MTR GPS Antenna Module. General Description. The Gotop GAM-2107-MTR is a complete. GPS engine module that features super sensitivity,

32-channel GPS Engine Board SmartAntenna

SL871 Family Product User Guide. 1VV Rev

December 2017 DocID Rev 3 1/36

SL869-V2 Family Product User Guide. 1VV Rev

GP-2117 GPS&GLONASS Antenna Module

GPS based data acquisition system for mobile applications

A FAMILY OF SOLUTIONS BASED ON THE srx-10, A SW DEFINED MULTICONSTELLATION GNSS RECEIVER

EB-600. Ultimate TRANSYSTEM INC. EB-600 Data Sheet

YIC5 Series. GPS & BDS Receiver Module. 1. Product Information. 1.1 Product Name: YIC51612EBGB Product Description

FURUNO GNSS Receiver. Navigation Chip Solution Protocol Specifications. (Document No. SE )

SPECIFICATION. GPS Receiver Module PMB-248 ISSUED DATE 2005/09/14 PUBLISHED BY VERSION 01 PAGE 2/7 PRODUCT NAME. Polstar Technologies Inc.

SkyNav GM10 GPS Receiver Module

1. Introduction. Quick Start Guide for GPS150 V1.02 TEL

Advanced RTK GPS / Compass module with 100x100 mm ground plane and 32-bit MCU

Transcription:

The GNSS Subsystem Johan Hovold Hovold Consulting AB Open Source Summit Europe, Edinburgh October 24, 2018

Introduction Global Navigation Satellite System (GNSS) GPS (US) GLONASS (Russia) BeiDou (China) Galileo (EU) Satellite-based radio navigation Position, velocity and time (PVT) GNSS receivers currently managed in user space Serial device bus (serdev) allows for a higher-level abstraction Power management Device detection

Outline Background and theory User interface Driver interface Currently supported devices Limitations Future work

GNSS history Ground-based radio navigation (1940s) Gee, LORAN, Decca Satellite-based radio navigation Transit (1960s) GPS, GLONASS (1970s) BeiDou (1990s) Galileo (2000s) Politics Military purposes GPS Selective Availability (2000) Miniaturisation First single-chip receiver (2004) Smartphone with GPS (2007) 5.8 billion GNSS devices in 2017 (forcasted to 8 billion in 2020)

GNSS theory Satellites 24 + 6 satellites in three orbital planes (Galileo example) Atomic clock Radio signals L band (1 2 GHz) Timing signal Navigation data (ephemeris, status,...) Receivers Track satellites and estimate pseudo ranges Position, velocity and time (PVT)

GNSS receivers Antenna, front-end, baseband signal processing, application processing Acquisition and tracking PVT solution (2D, 3D) Time to first fix (TTFF) Cold, warm and hot start I/O interfaces (UART,...) Reports (out) Control (in) Power supplies and enable signals

Receiver I/O interfaces UART I2C SPI Remote processor messaging (rpmsg) MMIO USB SDIO...

Receiver protocols Periodic reports + control Position, velocity and time Satellites in view NMEA 0183 National Marine Electronics Association (1980s) De-facto standard Subset with vendor extensions Proprietary Much have been reverse-engineered Vendor protocols Garmin, SiRF Binary, UBX,... Proprietary NMEA and vendor mode (runtime configurable)

NMEA 0183 $GPGGA,092750.000,5321.6802, N,00630.3372,W,1,8,1.03,\ 61.7,M,55.2,M,,*76 Checksummed (printable) ASCII sentences Time, position and fix-related data Position Velocity Satellites in view Time and date Incomplete PVT reports Underspecified report cycles No standard control commands (vendor extensions) Port settings Message rates

GNSS and Linux Handled in user space gpsd Android location services UART-interface only (TTY) Custom drivers and hacks for non-uart Device description in user space Device and protocol detection hacks Power management Modem control signals (DTR) GPIOs (gpiolib)

GTA04 GPS power management GTA04, OpenMoko Wi2Wi SiRFstar-based GPS receiver onoff input, but no wakeup output signal Monitor data channel to determine power state Various proposals over the years Neil Brown, Nikolaus Schaller and others Serial device bus (serdev) Finally possible to implement in kernel Specific wi2wi serdev driver with custom TTY interface Need a GNSS-receiver framework

Problem statement I/O interface abstraction Device description and discovery (e.g. Device tree or ACPI) Power management Regulators, GPIOs, clocks... Data stream (GTA04) Vendor protocols...

Design decision Keep everything in user space? User-space drivers Some resources not available (e.g. regulators, clocks) Device descriptions in user space No I/O-interface abstraction System-suspend coordination

Design decision Keep everything in user space? User-space drivers Some resources not available (e.g. regulators, clocks) Device descriptions in user space No I/O-interface abstraction System-suspend coordination Handle everything in kernel? Proprietary protocols Legal issues Non-reverse engineered String parsing Device-dependent features and quirks Hard to generalise protocols Would require new user-space services Floating-point math?

Design decision Keep everything in user space? User-space drivers Some resources not available (e.g. regulators, clocks) Device descriptions in user space No I/O-interface abstraction System-suspend coordination Handle everything in kernel? Proprietary protocols Legal issues Non-reverse engineered String parsing Device-dependent features and quirks Hard to generalise protocols Would require new user-space services Floating-point math? Keep protocol handling in user space

The GNSS subsystem Raw character-device interface Protocols handled in user space I/O-interface abstraction Device detection and description Power management Compatible with current user space Can be extended with high-level interface later Merged in 4.19

User interface GNSS class device /sys/class/gnss/gnss0 type sysfs attribute and GNSS TYPE uevent variable NMEA SiRF UBX Character device /dev/gnss0 Pollable read, 4k buffer Synchronous write

Device-tree bindings Child node of I/O interface node Generic properties compatible (required) Additional resources & uart1 { gnss { compatible = " wi2wi, w2sg0084i "; }; }; vcc - supply = <& gnss_ reg >; sirf, onoff - gpios = <& gpio0 16 GPIO_ACTIVE_HIGH >; sirf, wakeup - gpios = <& gpio0 17 GPIO_ACTIVE_HIGH >;

Driver interface Allocation and registration Insertion of raw protocol data Callbacks for opening, closing and writing

Driver-interface functions struct gnss_device ; struct gnss_device * gnss_allocate_device (...) ; void gnss_put_device (...) ; int gnss_register_device (...) ; void gnss_deregister_device (...) ; void gnss_set_drvdata (...) ; void * gnss_get_drvdata (...) ; int gnss_insert_raw (...) ; gnss insert raw() serialised by caller, any context

Driver-interface callbacks struct gnss_operations { int (* open )( struct gnss_device *); void (* close )( struct gnss_device *); int (* write_raw )( struct gnss_device *, const unsigned char *, size_ t ); }; open() called on first open close() called on final close (or disconnect) write raw() Synchronous, may sleep

Power management Handled on interface level (e.g. serdev device) Runtime power management Open serial port and enable receiver using RPM on open() Allows user space to set always-on (power/control) System suspend Enable low-power mode or power off

Serial-library functions struct gnss_serial ; struct gnss_serial * gnss_serial_allocate (...) ; void gnss_serial_free (...) ; int gnss_serial_register (...) void gnss_serial_deregister (...) ; void * gnss_serial_get_drvdata (...) ; Generic serial GNSS-driver implementation Callbacks for power management

Serial-library callbacks enum gnss_serial_pm_state { GNSS_SERIAL_OFF, GNSS_SERIAL_ACTIVE, GNSS_SERIAL_STANDBY, }; struct gnss_serial_ops { int (* set_power )( struct gnss_serial * gserial, enum gnss_serial_pm_state state ); }; ACTIVE - open or runtime active STANDBY - closed or system suspended OFF - driver unbound

Merged drivers SiRFstar receivers (sirf) Main supply onoff input wakeup output Not using serial library (wakeup NC) Not-connected wakeup not yet supported (e.g. GTA04) u-blox receivers (ubx) Main and backup supplies Serial library

Limitations Line-speed handling Coordinate protocol and interface control New GNSS ioctl()? Handle in kernel?

Hotplugging USB-serial-connected receivers Unique idvendor and idproduct? Kernel descriptions User-space descriptions GNSS core supports hotplugging But serdev does not (yet)

Modems GNSS receiver integrated with modem Assisted GPS (A-GPS) Reduce time to first fix (e.g. almanac and time from network) Modems managed in user space ofono telephony stack Kernel interfaces TTY (cdev) Phonet (socket) CAIF (socket) CDC WDM (cdev) Example Control commands on one port (e.g. power management) GNSS reports on another (e.g. NMEA 0183)

ugnss User-space GNSS drivers Feed raw data to GNSS core Accessible through common interface Needed while modems are managed in user space Can also be used for testing

Future work Pulse per second (PPS) Low-noise amplifiers (LNA) ugnss Line-speed handling High-level interface?

Further reading GNSS Market Report Issue 5, European GNSS Agency https://www.gsa.europa.eu/system/files/reports/gnss_mr_2017.pdf Navipedia, European Space Agency https://gssc.esa.int/navipedia/index.php/main_page Towards A Better GPS Protocol, Eric S. Raymond http://www.catb.org/gpsd/replacing-nmea.html Why GPSes suck, and what to do about it, Eric S. Raymond http://esr.ibiblio.org/?p=801

Thanks! johan@hovoldconsulting.com johan@kernel.org