I am trying to implement GPS code in the nrf9160 but I cant find the function nrf_modem_gnss_init(); to initialize GNSS inside the modem in , is it being initialised within nrf_modem_gnss_start() function internally ? please help on this.


I am trying to implement GPS code in the nrf9160 but I cant find the function nrf_modem_gnss_init(); to initialize GNSS inside the modem in , is it being initialised within nrf_modem_gnss_start() function internally ? please help on this.


Hello,
I am trying to implement GPS code in the nrf9160 but I cant find the function nrf_modem_gnss_init(); to initialize GNSS inside the modem in , is it being initialised within nrf_modem_gnss_start() function internally ?
It looks like it was removed in modem lib v1.4.0; https://github.com/nrfconnect/sdk-nrfxlib/blob/ae711ee48f137daccae54a67387a336eceff197f/nrf_modem/doc/CHANGELOG.rst#nrf_modem-140
I believe you can achieve the same thing by running nrf_modem_init() and nrf_modem_gnss_start().
I tried to init the modem with AT commands and then used nrf_modem_gnss_start. Once the handler gets registered and the


Can you also provide modem trace?
Hi Hakon yes sure ! please find the modem logs as below
1 0.000000 AT 30 Sent AT Command: AT%XMODEMTRACE=1,2
2 0.000915 AT 16 Rcvd AT Command: OK
3 0.001434 AT 34 Sent AT Command: AT%XSYSTEMMODE=0,1,0,0
4 0.003235 AT 16 Rcvd AT Command: OK
5 0.003784 AT 19 Rcvd AT Command: ERROR
6 0.023620 AT 23 Sent AT Command: AT+CFUN=0
7 0.032196 AT 16 Rcvd AT Command: OK
8 2.051971 AT 28 Sent AT Command: AT%XBANDLOCK=0
9 2.052032 AT 16 Rcvd AT Command: OK
10 2.062225 AT 24 Sent AT Command: AT+CEREG=1
11 2.062256 AT 16 Rcvd AT Command: OK
12 2.072235 AT 23 Sent AT Command: AT+CMEE=1
13 2.072266 AT 16 Rcvd AT Command: OK
14 2.082275 AT 21 Sent AT Command: AT+CGMI
15 2.082306 AT 42 Rcvd AT Command: Nordic Semiconductor ASA OK
16 2.100830 AT 23 Sent AT Command: AT+COPS=0
17 2.101013 AT 16 Rcvd AT Command: OK
18 2.120636 AT 30 Sent AT Command: AT%XMODEMTRACE=1,2
19 2.121551 AT 16 Rcvd AT Command: OK
20 16.186554 AT 29 Sent AT Command: AT%XSYSTEMMODE?
21 16.186615 AT 39 Rcvd AT Command: %XSYSTEMMODE: 0,1,0,0 OK
22 16.187103 AT 23 Sent AT Command: AT+CFUN=0
23 16.195740 AT 16 Rcvd AT Command: OK
24 16.402313 AT 36 Sent AT Command: AT%XSYSTEMMODE=0,0,1,0
25 16.403259 AT 16 Rcvd AT Command: OK
26 16.403656 AT 24 Sent AT Command: AT+CFUN=31
27 16.409759 AT 16 Rcvd AT Command: OK
28 16.410248 AT 34 Sent AT Command: AT%XMAGPIO=1,1,1,7,0,0
29 16.410278 AT 19 Rcvd AT Command: ERROR
30 16.410950 AT 27 Sent AT Command: AT%XCOEX0=1,1,0
31 16.410980 AT 19 Rcvd AT Command: ERROR
Corresponding to this modem logs below is the terminal log:
# SEGGER J-Link RTT Viewer V8.82 Terminal Log File
# Compiled: 11:50:24 on Oct 29 2025
# Logging started @ 17 Feb 2026 17:55:08
00> *** Booting nRF Connect SDK v3.1.0-6c6e5b32496e ***
00> *** Using Zephyr OS v4.1.99-1612683d4010 ***
00> [00:00:10.641,510] <inf> modem_trace_backend: Modem_trace RTT backend channel 1
00> [00:00:10.641,540] <inf> nrf_modem_lib_trace: Trace thread ready
00> [00:00:10.649,017] <inf> nrf_modem_lib_trace: Trace level override: 2
00> LED1RED: ON
00> LED1RED: OFF
00> LED2GREEN: ON
00> LED2GREEN: OFF
00> [00:00:26.048,187] <inf> gnss_app: GPS powered ON
00> [00:00:27.057,891] <inf> gnss_app: Modem set to GNSS-only mode
00> [00:00:27.058,410] <wrn> gnss_app: XMAGPIO set failed: type=1 code=0 ret=65536
00> [00:00:27.059,112] <wrn> gnss_app: XCOEX0 set failed: type=1 code=0 ret=65536
00> [00:00:27.079,132] <inf> gnss_app: GNSS event: 4
00> [00:00:27.079,162] <inf> gnss_app: GNSS started.
00> [00:00:27.101,989] <inf> gnss_app: GNSS PVT struct size=232
00> [00:00:27.101,989] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:27.102,020] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:28.103,057] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:28.103,118] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:29.103,240] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:29.103,240] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:30.103,271] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:30.103,302] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:31.103,302] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:31.103,332] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:32.103,424] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:32.103,454] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:33.103,454] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:33.103,485] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:34.103,485] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:34.103,546] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:35.103,454] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:35.103,485] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:36.103,515] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:36.103,546] <inf> gnss_app: PVT: searching... sv_view=1 acc=0.0(m) flags=0x00000000
00> [00:00:37.103,912] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:37.103,942] <inf> gnss_app: PVT: searching... sv_view=1 acc=0.0(m) flags=0x00000000
00> [00:00:38.104,064] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:38.104,095] <inf> gnss_app: PVT: searching... sv_view=1 acc=0.0(m) flags=0x00000000
00> [00:00:39.104,003] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:39.104,003] <inf> gnss_app: PVT: searching... sv_view=1 acc=0.0(m) flags=0x00000000
00> [00:00:40.103,210] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:40.103,240] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:41.103,210] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:41.103,240] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:42.103,698] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:42.103,729] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:43.103,790] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:43.103,790] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:44.103,576] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:44.103,607] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:45.103,820] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:45.103,820] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:46.103,851] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:46.103,881] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:47.103,454] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:47.103,454] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:48.103,485] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:48.103,515] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:49.103,973] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:49.103,973] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:50.104,003] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:50.104,034] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:51.103,363] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:51.103,363] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:52.103,637] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:52.103,668] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:53.104,095] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:53.104,125] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:54.104,217] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:54.104,248] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:55.103,729] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:55.103,759] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:56.103,790] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:56.103,820] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:57.104,248] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:57.104,278] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:58.104,156] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:58.104,187] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:00:59.103,942] <inf> gnss_app: PVT flags=0x00000000
00> [00:00:59.103,973] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:00.103,912] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:00.103,973] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:01.103,942] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:01.103,973] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:02.104,003] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:02.104,034] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:03.104,461] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:03.104,492] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:04.104,522] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:04.104,553] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:05.103,881] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:05.103,881] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:06.104,156] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:06.104,187] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:07.104,248] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:07.104,248] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:08.104,736] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:08.104,766] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:09.104,705] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:09.104,705] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:10.104,278] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:10.104,339] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:11.104,339] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:11.104,339] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:12.104,675] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:12.104,705] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:13.104,858] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:13.104,888] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:14.104,888] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:14.104,919] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:15.104,522] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:15.104,553] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:16.104,522] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:16.104,553] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:17.105,010] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:17.105,010] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:18.105,041] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:18.105,072] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:19.104,949] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:19.104,949] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:20.105,102] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:20.105,163] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:21.104,705] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:21.104,705] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:22.105,255] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:22.105,285] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:23.105,224] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:23.105,255] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:24.104,827] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:24.104,858] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:25.104,827] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:25.104,858] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:26.105,194] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:26.105,224] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:27.105,377] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:27.105,377] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:28.105,407] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:28.105,438] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:29.105,438] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:29.105,438] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:30.105,468] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:30.105,499] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:31.105,377] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:31.105,377] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:32.105,102] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:32.105,133] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:33.105,133] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:33.105,163] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:34.105,163] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:34.105,194] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:35.105,194] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:35.105,224] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:36.105,255] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:36.105,285] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:37.105,712] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:37.105,743] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:38.105,743] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:38.105,804] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:39.105,804] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:39.105,804] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:40.105,834] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:40.105,865] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:41.105,834] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:41.105,865] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:42.105,865] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:42.105,926] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:43.105,895] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:43.105,926] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:44.105,834] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:44.105,865] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:45.106,048] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:45.106,079] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
00> [00:01:46.106,018] <inf> gnss_app: PVT flags=0x00000000
00> [00:01:46.106,048] <inf> gnss_app: PVT: searching... sv_view=0 acc=0.0(m) flags=0x00000000
# Logging stopped @ 17 Feb 2026 17:59:55
MAGPIO and COEX are NC so error coming at last 2 commands shouldn't be an issue.
MAGPIO and COEX are NC so error coming at last 2 commands shouldn't be an issue.