Access GPS data from an IOx App via serial interface on IR1101
One can access GPS data from an IOx App running on IR1101 via serial port. Below are the steps and an example of app reading GPS data.
IOS GPS Configuration
Before one can start using GPS service, one needs to configure IOS to start streaming the GPS NMEA data. Following steps use cellular unit 0/1/0 as example where the unit argument identifies the router slot, module slot, and the port, and is separated by slashes (0/1/0).
Enable GPS and NMEA data streaming.
Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#controller cellular 0/1/0
Router(config-controller)#lte gps enable
Warning: [Cellular0/1/0]: GPS Feature enabled.
Please issue a modem reset/power-cycle or router-reload for the configuration change to take effect
Router(config-controller)#lte gps mode standalone
Warning: [Cellular0/1/0]: Please ensure NMEA is enabled in order to get all satellite and GPS location information!
Info: [Cellular0/1/0]: GPS mode selected successfully
Warning: Please issue a modem reset/power-cycle or router-reload for the configuration change to take effect
Router(config-controller)#lte gps nmea
[Cellular0/1/0]: NMEA streaming engine switched ON
Router(config-controller)#service internal
Router(config)#end
Power cycle modem for GPS to take effect
Router#test cellular 0/1/0 modem-power-cycle
[Cellular0/1/0]: NMEA streaming engine switched OFF
Modem Power cycled successfully
Router#
[Cellular0/1/0]: NMEA streaming engine switched ON
One can check GPS details after modem is reset
Router#show cellular 0/1/0 gps detail
GPS Feature = enabled
GPS Mode Configured = standalone
GPS Port Selected = Dedicated GPS port
GPS Status = GPS coordinates acquired
Last Location Fix Error = Offline [0x0]
Latitude = 37 Deg 25 Min 5.1840 Sec North
Longitude = 121 Deg 55 Min 8.5088 Sec West
Timestamp (GMT) = Thu Mar 25 21:38:05 2021
Fix type index = 0, Height = 14 m
HDOP = 0.6, GPS Mode Used = standalone
Satellite Info
----------------
Satellite #1, elevation 6, azimuth 33, SNR 41
Satellite #2, elevation 13, azimuth 181, SNR 40
Satellite #6, elevation 35, azimuth 150, SNR 44
Satellite #12, elevation 12, azimuth 284, SNR 45
Satellite #13, elevation 24, azimuth 215, SNR 48
Satellite #14, elevation 32, azimuth 77, SNR 44
Satellite #15, elevation 20, azimuth 251, SNR 42
Satellite #17, elevation 57, azimuth 39, SNR 47
Satellite #19, elevation 84, azimuth 8, SNR 50
Satellite #24, elevation 41, azimuth 306, SNR 50
Satellite #28, elevation 38, azimuth 70, SNR 46
Satellite #30, elevation 14, azimuth 142, SNR 35
Satellite #46, elevation 0, azimuth 0, SNR 44 **
Satellite #51, elevation 0, azimuth 0, SNR 46 **
Satellite #78, elevation 49, azimuth 94, SNR 47
Satellite #70, elevation 5, azimuth 309, SNR 30
Satellite #82, elevation 25, azimuth 195, SNR 47
Satellite #77, elevation 2, azimuth 120, SNR 21
Satellite #80, elevation 7, azimuth 313, SNR 38
Satellite #79, elevation 57, azimuth 347, SNR 49
Satellite #69, elevation 2, azimuth 255, SNR 45
Satellite #88, elevation 41, azimuth 36, SNR 48
Satellite #87, elevation 4, azimuth 25, SNR 33
Satellite #81, elevation 74, azimuth 156, SNR 49
Router#
IOx App Configuration
Enable IOx
Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#iox
Router(config)#ip http server
Router(config)#ip http secure-server
Router(config)#username cisco privilege 15 password 0 cisco
WARNING: Command has been added to the configuration using a type 0 password. However, recommended to migrate to strong type-6 encryption
Router(config)#end
Configure App Networking
Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#app-hosting appid gps
Router(config-app-hosting)#app-vnic gateway0 virtualportgroup 0 guest-interface 0
Router(config-app-hosting-gateway0)#guest-ipaddress 192.168.0.6 netmask 255.255.255.0
Router(config-app-hosting-gateway0)#app-default-gateway 192.168.0.1 guest-interface 0
Router(config-app-hosting)#app-resource docker
Router(config-app-hosting-docker)#run-opts 1 "--entrypoint '/bin/sleep 10000' --device /dev/ttyNMEA0:/dev/ttyNMEA0"
Router(config-app-hosting-docker)#end
Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#interface Cellular0/1/0
Router(config-if)#ip address negotiated
Router(config-if)#ip tcp adjust-mss 1460
Router(config-if)#load-interval 30
Router(config-if)#dialer in-band
Router(config-if)#dialer idle-timeout 0
Router(config-if)#dialer watch-group 30
Router(config-if)#dialer-group 1
Router(config-if)#ipv6 enable
Router(config-if)#pulse-time 1
Router(config-if)#end
Router#config t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#interface VirtualPortGroup0
Router(config-if)#ip address 192.168.0.1 255.255.255.0
Router(config-if)#end
Test App to read GPS data
Install and start App
Router#app-hosting install appid gps package bootflash:gps_test_read.tar.gz
Installing package 'bootflash:gps_test_read.tar.gz' for 'gps'. Use 'show app-hosting list' for progress.
Router#show app-hosting list
App id State
---------------------------------------------------------
gps DEPLOYED
Router#app-hosting activate appid gps
gps activated successfully
Current state is: ACTIVATED
Router#app-hosting start appid gps
gps started successfully
Current state is: RUNNING
Check GPS coordinates in the App
Router#app-hosting connect appid gps session
/usr/share/gpsserviceapp # cat /dev/ttyNMEA0
$GNGNS,,,,,,NNN,,,,,,*1D
$GPVTG,,T,,M,,N,,K,N*2C
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GNGSA,A,1,,,,,,,,,,,,,,,*00
$GPGGA,,,,,,0,,,,,,,,*66
$GPRMC,,V,,,,,,,,,,N*53
$GLGSV,3,1,10,78,50.6,91.4,,70,6.3,312.2,,82,23.2,195.5,,77,3.5,119.5,*5D
$GLGSV,3,2,10,80,6.3,312.2,,79,54.8,344.5,,69,4.2,257.3,,88,42.9,38.0,*55
$GLGSV,3,3,10,81,71.7,158.9,,71,,,*5F
$GPGSV,4,1,16,19,86.5,338.9,46.7,01,7.7,35.2,,02,12.7,182.8,,03,,,*51
$GPGSV,4,2,16,05,,,,06,33.8,150.5,,07,,,,10,,,*44
$GPGSV,4,3,16,12,12.0,282.7,,13,26.7,215.2,,14,33.8,75.9,,15,21.8,253.1,*4F
$GPGSV,4,4,16,17,59.8,39.4,,21,,,,22,,,,23,,,*70
$GNGNS,,,,,,NNN,,,,,,*1D
$GPVTG,,T,,M,,N,,K,N*2C
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GNGSA,A,1,,,,,,,,,,,,,,,*00
$GPGGA,,,,,,0,,,,,,,,*66
$GPRMC,,V,,,,,,,,,,N*53
$GLGSV,3,1,10,79,54.8,344.5,46.2,81,71.7,158.9,46.0,78,50.6,91.4,,70,6.3,312.2,*68
$GLGSV,3,2,10,82,23.2,195.5,,77,3.5,119.5,,80,6.3,312.2,,69,4.2,257.3,*5B
$GLGSV,3,3,10,88,42.9,38.0,,71,,,*66
$GPGSV,4,1,16,06,33.8,150.5,39.1,17,59.8,39.4,46.7,19,86.5,338.9,49.9,24,39.4,308.0,44.8*4B
$GPGSV,4,2,16,28,39.4,68.9,46.3,01,7.7,35.2,,02,12.7,182.8,,03,,,*67
$GPGSV,4,3,16,05,,,,07,,,,10,,,,12,12.0,282.7,*45
$GPGSV,4,4,16,13,26.7,215.2,,14,33.8,75.9,,21,,,,22,,,*4E
$GNGNS,,,,,,NNN,,,,,,*1D
$GPVTG,,T,,M,,N,,K,N*2C
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GNGSA,A,1,,,,,,,,,,,,,,,*00
$GPGGA,,,,,,0,,,,,,,,*66
$GPRMC,,V,,,,,,,,,,N*53
$GLGSV,3,1,10,78,50.6,91.4,43.3,79,54.8,344.5,48.9,88,42.9,38.0,47.6,81,71.7,158.9,48.3*65
$GLGSV,3,2,10,70,6.3,312.2,,82,23.2,195.5,,77,3.5,119.5,,80,6.3,312.2,*51
$GLGSV,3,3,10,69,4.2,257.3,,71,,,*68
$GPGSV,4,1,16,06,33.8,150.5,39.7,13,26.7,215.2,43.6,14,33.8,75.9,44.4,15,21.8,253.1,45.7*43
$GPGSV,4,2,16,17,59.8,39.4,47.9,19,86.5,338.9,50.2,24,39.4,308.0,47.6,28,39.4,68.9,48.8*7A
$GPGSV,4,3,16,01,7.7,35.2,,03,,,,05,,,,07,,,*4D
$GPGSV,4,4,16,10,,,,21,,,,22,,,,23,,,*7D
$GNGNS,,,,,,NNN,,,,,,*1D
$GPVTG,,T,,M,,N,,K,N*2C
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GNGSA,A,1,,,,,,,,,,,,,,,*00
$GPGGA,,,,,,0,,,,,,,,*66
$GPRMC,,V,,,,,,,,,,N*53
$GLGSV,3,1,10,78,50.6,91.4,47.1,82,23.2,195.5,43.2,79,54.8,344.5,49.4,88,42.9,38.0,49.7*66
$GLGSV,3,2,10,81,71.7,158.9,48.6,70,6.3,312.2,,77,3.5,119.5,,80,6.3,312.2,*49
$GLGSV,3,3,10,69,4.2,257.3,,71,,,*68
$GPGSV,4,1,16,01,7.7,35.2,45.2,06,33.8,150.5,40.1,12,12.0,282.7,39.4,13,26.7,215.2,45.7*75
$GPGSV,4,2,16,14,33.8,75.9,47.0,15,21.8,253.1,46.3,17,59.8,39.4,47.2,19,86.5,338.9,49.9*7D
$GPGSV,4,3,16,24,39.4,308.0,47.4,28,39.4,68.9,49.0,05,,,,07,,,*41
$GPGSV,4,4,16,10,,,,21,,,,23,,,,25,,,*7A
$GNGNS,,,,,,NNN,,,,,,*1D
$GPVTG,,T,,M,,N,,K,N*2C
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GNGSA,A,1,,,,,,,,,,,,,,,*00
$GPGGA,,,,,,0,,,,,,,,*66
$GPRMC,,V,,,,,,,,,,N*53
$GLGSV,3,1,11,78,50.6,91.4,45.8,82,23.2,195.5,45.3,79,54.8,344.5,48.6,88,42.9,38.0,50.2*65
$GLGSV,3,2,11,87,6.3,25.3,43.8,81,71.7,158.9,47.8,70,6.3,312.2,,77,3.5,119.5,*69
$GLGSV,3,3,11,80,6.3,312.2,,69,4.2,257.3,,71,,,*66
$GPGSV,4,1,13,01,7.7,35.2,46.0,06,33.8,150.5,40.3,12,12.0,282.7,39.5,13,26.7,215.2,45.6*73
$GPGSV,4,2,13,14,33.8,75.9,47.3,15,21.8,253.1,46.4,17,59.8,39.4,47.6,19,86.5,340.3,49.8*7C
$GPGSV,4,3,13,24,39.4,308.0,47.3,28,39.4,68.9,48.9,05,,,,23,,,*4D
$GPGSV,4,4,13,25,,,*7C
$GNGNS,213243.7,,,,,NNN,,,,,,*01
$GPVTG,,T,,M,,N,,K,N*2C
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GNGSA,A,1,,,,,,,,,,,,,,,*00
$GPGGA,,,,,,0,,,,,,,,*66
$GPRMC,,V,,,,,,,,,,N*53
$GLGSV,3,1,11,78,50.6,91.4,45.8,82,23.2,195.5,45.3,79,54.8,344.5,48.6,88,42.9,38.0,50.2*65
$GLGSV,3,2,11,87,6.3,25.3,43.8,81,71.7,158.9,47.8,70,6.3,312.2,,77,3.5,119.5,*69
$GLGSV,3,3,11,80,6.3,312.2,,69,4.2,257.3,,71,,,*66
$GPGSV,4,1,13,01,7.7,35.2,46.0,06,33.8,150.5,40.3,12,12.0,282.7,39.5,13,26.7,215.2,45.6*73
$GPGSV,4,2,13,14,33.8,75.9,47.3,15,21.8,253.1,46.4,17,59.8,39.4,47.6,19,86.5,340.3,49.8*7C
$GPGSV,4,3,13,24,39.4,308.0,47.3,28,39.4,68.9,48.9,05,,,,23,,,*4D
$GPGSV,4,4,13,25,,,*7C
$GNGNS,213244.8,,,,,NNN,,,,,,*09
$GPVTG,,T,,M,,N,,K,N*2C
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GNGSA,A,1,,,,,,,,,,,,,,,*00
$GPGGA,,,,,,0,,,,,,,,*66
$GPRMC,,V,,,,,,,,,,N*53
$GLGSV,3,1,10,78,50.6,91.4,47.1,82,23.2,195.5,45.5,79,54.8,345.9,49.3,69,4.2,257.3,48.4*61
$GLGSV,3,2,10,88,42.9,38.0,49.0,87,6.3,25.3,47.0,81,71.7,158.9,48.6,70,6.3,312.2,*78
$GLGSV,3,3,10,77,3.5,119.5,,80,6.3,312.2,*61
$GPGSV,3,1,10,01,7.7,35.2,45.7,06,33.8,150.5,40.2,12,12.0,282.7,39.8,13,26.7,215.2,45.7*7E
$GPGSV,3,2,10,14,33.8,75.9,47.3,15,21.8,253.1,46.4,17,59.8,39.4,47.6,19,86.5,351.6,49.8*7D
$GPGSV,3,3,10,24,39.4,308.0,47.3,28,39.4,68.9,49.1*44
$GPGGA,213245.0,3725.102066,N,12155.157495,W,1,06,2.1,24.6,M,-27.0,M,,*59
$GNGNS,213245.0,3725.102066,N,12155.157495,W,ANN,06,2.1,24.6,-27.0,,*2C
$GPVTG,,T,345.0,M,0.4,N,0.8,K,A*03
$GPRMC,213245.0,A,3725.102066,N,12155.157495,W,0.4,,250321,15.0,E,A*04
$GPGSA,A,3,01,13,14,17,19,28,,,,,,,2.6,2.1,1.5*33
$GNGSA,A,3,01,13,14,17,19,28,,,,,,,2.6,2.1,1.5,1*30
$GNGSA,A,3,,,,,,,,,,,,,2.6,2.1,1.5,2*31
$GNGSA,A,3,,,,,,,,,,,,,2.6,2.1,1.5*2F
$GNGSA,A,3,,,,,,,,,,,,,2.6,2.1,1.5,3*30
$PSTIS,*61
$GLGSV,3,1,10,78,50.6,91.4,46.9,82,23.2,195.5,45.6,79,54.8,345.9,49.2,69,4.2,257.3,48.5*6B
$GLGSV,3,2,10,88,42.9,38.0,50.1,87,6.3,25.3,46.9,81,71.7,158.9,48.5,70,6.3,312.2,*7A
$GLGSV,3,3,10,77,3.5,119.5,,80,6.3,312.2,*61
$GPGSV,3,1,10,01,7.7,35.2,45.5,06,33.8,150.5,40.1,12,12.0,282.7,40.2,13,26.7,215.2,45.7*7B
$GPGSV,3,2,10,14,33.8,75.9,47.3,15,21.8,253.1,46.3,17,59.8,39.4,48.3,19,86.5,351.6,50.2*72
$GPGSV,3,3,10,24,39.4,308.0,47.6,28,39.4,68.9,48.9*48
$GPGGA,213246.0,3725.102606,N,12155.157801,W,1,06,2.0,23.8,M,-27.0,M,,*53
$GNGNS,213246.0,3725.102606,N,12155.157801,W,ANN,06,2.0,23.8,-27.0,,*26
$GPVTG,0.0,T,345.0,M,0.0,N,0.0,K,A*21
$GPRMC,213246.0,A,3725.102606,N,12155.157801,W,0.0,0.0,250321,15.0,E,A*2C
$GPGSA,A,2,01,13,14,17,19,28,,,,,,,2.2,2.0,0.8*3B
$GNGSA,A,2,01,13,14,17,19,28,,,,,,,2.2,2.0,0.8,1*38
$GNGSA,A,2,,,,,,,,,,,,,2.2,2.0,0.8,2*39
$GNGSA,A,2,,,,,,,,,,,,,2.2,2.0,0.8*27
$GNGSA,A,2,,,,,,,,,,,,,2.2,2.0,0.8,3*38
$PSTIS,*61
$GLGSV,3,1,10,78,50.6,91.4,47.0,70,6.3,312.2,26.1,82,23.2,195.5,45.6,77,3.5,119.5,27.0*59
$GLGSV,3,2,10,80,6.3,312.2,29.9,79,54.8,345.9,49.2,69,4.2,257.3,48.8,88,42.9,38.0,50.1*55
$GLGSV,3,3,10,87,6.3,25.3,47.0,81,71.7,158.9,48.4*6C
$GPGSV,3,1,10,01,7.7,35.2,45.9,06,33.8,150.5,40.6,12,12.0,282.7,40.4,13,26.7,215.2,45.9*78
$GPGSV,3,2,10,14,33.8,75.9,46.7,15,21.8,253.1,46.5,17,59.8,39.4,47.3,19,86.5,351.6,50.2*7E
$GPGSV,3,3,10,24,39.4,308.0,47.5,28,39.4,68.9,49.3*40
$GPGGA,213247.0,3725.102760,N,12155.157739,W,1,06,2.0,23.2,M,-27.0,M,,*5D
$GNGNS,213247.0,3725.102760,N,12155.157739,W,ANN,06,2.0,23.2,-27.0,,*28
$GPVTG,0.0,T,345.0,M,0.0,N,0.0,K,A*21
$GPRMC,213247.0,A,3725.102760,N,12155.157739,W,0.0,0.0,250321,15.0,E,A*28
$GPGSA,A,2,01,13,14,17,19,28,,,,,,,2.2,2.0,0.8*3B
$GNGSA,A,2,01,13,14,17,19,28,,,,,,,2.2,2.0,0.8,1*38
$GNGSA,A,2,,,,,,,,,,,,,2.2,2.0,0.8,2*39
$GNGSA,A,2,,,,,,,,,,,,,2.2,2.0,0.8*27
$GNGSA,A,2,,,,,,,,,,,,,2.2,2.0,0.8,3*38