Skip to content

Commit f967e01

Browse files
committed
docs: Reorganize the README
Reorganize and improve the language in the README. Signed-off-by: Jan Tore Guggedal <jantore.guggedal@nordicsemi.no>
1 parent 60e3fa1 commit f967e01

File tree

1 file changed

+70
-64
lines changed

1 file changed

+70
-64
lines changed

README.md

Lines changed: 70 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,129 +1,135 @@
11
# Asset Tracker Template - NTN Use Case
22

3-
Overview of the NTN use case:
3+
> **Note:** The NTN use case variant of the Asset Tracker Template is experimental and intended for development and testing purposes.
44
5-
1. GNSS cold start to get a location fix.
6-
2. Switch to NTN system mode and perform NTN connection establishment using the acquired location.
7-
3. Once NTN connection established, send data to cloud endpoint.
8-
4. Repeat the process, triggered by button press or by timeout `CONFIG_APP_NTN_TIMER_TIMEOUT_MINUTES`.
5+
## Related Variant
96

10-
Configure the UDP endpoint's IP address and port in `prj.conf`:
7+
- [TN-NTN use case (`tn_ntn_usecase` branch)](https://github.com/nrfconnect/Asset-Tracker-Template/tree/tn_ntn_usecase)
118

12-
```shell
9+
## Overview
10+
11+
The NTN use case application operates in the following cycle:
12+
13+
1. **GNSS Cold Start**: Acquires a GNSS location fix.
14+
2. **NTN Connection**: Switches to NTN system mode and establishes a connection using the acquired location.
15+
3. **Data Transmission**: Sends data to the configured cloud endpoint.
16+
4. **Cycle**: Repeats the process, triggered by a button press or the timeout defined in `CONFIG_APP_NTN_TIMER_TIMEOUT_MINUTES`.
17+
18+
## State Machine
19+
20+
![System overview](docs/images/ntn_state_machine.png)
21+
22+
## Configuration
23+
24+
Configure the UDP endpoint IP address and port in `prj.conf`:
25+
26+
```kconfig
1327
CONFIG_APP_NTN_SERVER_ADDR=""
1428
CONFIG_APP_NTN_SERVER_PORT=
1529
```
1630

17-
## NTN Skylo (Monogoto SIM) - nRF9151 DK
31+
## Build Instructions
32+
33+
### NTN Skylo (Monogoto SIM) - nRF9151 DK
1834

1935
```shell
2036
west build app -b nrf9151dk/nrf9151/ns -- -DEXTRA_CONF_FILE=overlay-ntn-skylo-monogoto.conf
2137
```
2238

23-
## NTN Skylo (Deutsche Telekom SIM) - nRF9151 DK
39+
### NTN Skylo (Deutsche Telekom SIM) - nRF9151 DK
2440

2541
```shell
2642
west build app -b nrf9151dk/nrf9151/ns -- -DEXTRA_CONF_FILE=overlay-ntn-skylo-dt.conf
2743
```
2844

29-
## NTN Skylo (Soracom SIM) - nRF9151 DK
45+
### NTN Skylo (Soracom SIM) - nRF9151 DK
3046

3147
```shell
3248
west build app -b nrf9151dk/nrf9151/ns -- -DEXTRA_CONF_FILE=overlay-ntn-skylo-soracom.conf
3349
```
3450

35-
## NTN Amarisoft Callbox - nRF9151 DK
51+
### NTN Amarisoft Callbox - nRF9151 DK
3652

3753
```shell
3854
west build app -b nrf9151dk/nrf9151/ns -- -DEXTRA_CONF_FILE=overlay-ntn-amari.conf
3955
```
4056

41-
## Flash and run
57+
## Flash and Run
4258

43-
The device reports temperature data to the UDP endpoint. The last four digits of the device IMEI are used for identification.
59+
By default, the device reports temperature data to the UDP endpoint. The last four digits of the device IMEI are used for identification.
4460

45-
```shell
61+
```text
4662
Device: *xxxx, temp: xx
4763
```
4864

49-
If `CONFIG_APP_NTN_SEND_GNSS_DATA` is enabled, the GNSS data will be sent instead of temperature:
65+
If `CONFIG_APP_NTN_SEND_GNSS_DATA` is enabled, GNSS data is sent in addition to temperature data:
5066

51-
```shell
67+
```text
5268
Device: *xxxx, temp: xx, lat=xx.xx, lon=xx.xx, alt=xx.xx, time=xxxx-xx-xx xx:xx:xx
5369
```
5470

55-
## State machine
56-
![System overview](docs/images/ntn_state_machine.png)
71+
## Application Design
5772

73+
### Library Usage
5874

59-
## Application Behaviour Considerations
75+
The application uses the [NTN library](https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/libraries/modem/ntn.html) to manage location updates. The library uses the `AT%LOCATION` command to subscribe to location update requests from the modem and to provide the necessary location data.
6076

61-
The application makes use of the [NTN library](https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/libraries/modem/ntn.html)
62-
The library uses the AT%LOCATION AT command to subscribe to location update requests from the modem and to provide location updates.
77+
Additionally, the application uses [PDN_LTE_LC](https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/libraries/modem/lte_lc.html#pdn_management) and `lte_lc_cellular_profile_configure` to manage PDN contexts and cellular profiles.
6378

64-
The application makes use of [PDN_LTE_LC](https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/libraries/modem/lte_lc.html#pdn_management), together with `lte_lc_cellular_profile_configure` from managing different PDN contexts and cellular profiles.
65-
The application uses the new PDN events LTE_LC_EVT_PDN_SUSPENDED and LTE_LC_EVT_PDN_RESUMED. These events supported by modem firmware mfw_nrf9151_1.0.0-1.alpha are used with cellular profiles to indicate when PDNs are active, but temporarily not usable.
79+
### PDN Event Handling
6680

67-
## NTN Considerations
81+
The application handles `LTE_LC_EVT_PDN_SUSPENDED` and `LTE_LC_EVT_PDN_RESUMED` events. These events indicate when PDNs are active but temporarily unusable. This mechanism supports context retention during temporary coverage loss, which is critical for efficient NTN operation.
6882

69-
Operating in NTN networks can be complex due the limited data rates and long latencies. This may dictate changes in how your application uses the cellular link while on NTN, as well as change the way your end to end connection is set up, to achieve the best performance from your NTN connection.
83+
## NTN Considerations
7084

71-
In addition to the aspect of using positioning fixes to achieve and maintain synchronization with satellites, situations with discontinuous coverage are new when adopting NTN.
85+
Operating in NTN networks presents challenges due to limited data rates and high latency. This requires optimized cellular link usage and connection setup strategies.
7286

73-
Network registration is retained using functional mode 45. Modem goes offline while keeping network registration tied to the PDN profile active at the time.
74-
Switch betwen different operating modes is performed without the need for re-attaching --> save cost, power and time.
75-
The application uses the new PDN events LTE_LC_EVT_PDN_SUSPENDED and LTE_LC_EVT_PDN_RESUMED from [PDN_LTE_LC](https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/libraries/modem/lte_lc.html#pdn_management). These events are used together with cellular profiles to indicate when PDNs are active, but temporarily not usable and to store the context.
87+
### Connection Management
7688

77-
Band and channel can be locked via Kconfig to narrow down search for available cell.
78-
Note that NTN modem will only search NTN bands if bandlock/channellock are disabled, that is it will search B23, B255, B256.
79-
Available Kconfig options for band and channel lock:
80-
- CONFIG_APP_NTN_BANDLOCK_ENABLE
81-
- CONFIG_APP_NTN_BANDLOCK
82-
- CONFIG_APP_NTN_CHANNEL_SELECT_ENABLE
83-
- CONFIG_APP_NTN_CHANNEL_SELECT
89+
- **Network Registration**: Functional Mode 45 retains network registration. The modem enters offline mode but keeps the network registration tied to the active PDN profile.
90+
- **Context Retention**: Switching between operating modes avoids re-attaching, conserving cost, power, and time.
91+
- **ePCO**: Extended Protocol Configuration Options (ePCO) must be disabled for Skylo networks (`LTE_LC_PDN_LEGACY_PCO=y`).
8492

85-
ePCO needs to be disabled for Skylo: LTE_LC_PDN_LEGACY_PCO=y
93+
### Band and Channel Locking
8694

95+
To optimize the search for available cells, band and channel locking can be configured via Kconfig.
8796

88-
### Location
89-
AT%LOCATION sintax:
90-
- Enable notifications: ```AT%LOCATION=1```
91-
- Response format: ```%LOCATION: <requested_accuracy>[,<next_requested_accuracy>,<next requested
92-
location needed in s>]```
93-
- NOTE: Only <requested_accuracy> currently implemented!!
94-
- Set location:```%LOCATION=2,[,<latitude>,<longitude>,<altitude>,<accuracy>,<validity>]```
97+
> **Note:** The NTN modem searches NTN specific bands (e.g., B23, B255, B256) only if band lock or channel lock is disabled.
9598
99+
Available Kconfig options:
96100

97-
**Location requirements depend on use case. How fast, if at all, is the device moving?**
101+
- `CONFIG_APP_NTN_BANDLOCK_ENABLE`
102+
- `CONFIG_APP_NTN_BANDLOCK`
103+
- `CONFIG_APP_NTN_CHANNEL_SELECT_ENABLE`
104+
- `CONFIG_APP_NTN_CHANNEL_SELECT`
98105

99-
The application now gets notifications from the modem [NTN library](https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/libraries/modem/ntn.html) about location accuracy needed.
100-
The modem only sends the %LOCATION notification when the requested accuracy changes.
101-
It’s the responsibility of the application to keep the location up to date with the requested accuracy.
106+
## Location Management
102107

103-
Location is set via the [NTN library](https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/libraries/modem/ntn.html):
104-
`int ntn_location_set(double latitude, double longitude, float altitude, uint32_t validity)`.
108+
Proper location management is crucial for NTN operation as the modem requires accurate position data to synchronize with satellites.
105109

110+
### Location Updates
106111

107-
When the location is set, the validity parameter tells how long the modem considers the location valid to be valid. If no update is provided in time, the modem can not continue signaling with the network.
112+
The application receives notifications from the modem via the [NTN library](https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/libraries/modem/ntn.html) regarding the required location accuracy. The modem triggers a notification only when the requested accuracy changes. The application is responsible for keeping the location up to date according to these requirements.
108113

114+
Location is set using the NTN library function:
109115

110-
Basically, the location update interval should be chosen based on how fast the device can travel and the accuracy requested by the modem.
111-
For instance, the required update interval for a device which can move up to 120 km/h and requested accuracy of 200 meters is 6 seconds. A device moving at 120 km/h (33.3 ms/s) travels 200 meters in 6 seconds, so updates with longer intervals will not be enough to meet the modem requirement.
116+
```c
117+
int ntn_location_set(double latitude, double longitude, float altitude, uint32_t validity);
118+
```
112119
113-
After having selected the appropriate update interval, the validity parameter should be long enough for the location to remain valid until the next update.
114-
It doesn’t really matter, as long as it’s long enough so that location stays valid between updates.
120+
### Validity and Update Interval
115121
116-
The accuracy parameter has to be less or equal to the request from the modem. The [NTN library](https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/libraries/modem/ntn.html) simply echoes back the requested accuracy from the modem notification. If location is from GNSS, the accuracy is anyway always good enough.
122+
The `validity` parameter informs the modem how long the provided location remains valid.
117123
118-
More comments:
124+
- **Update Interval**: Must be calculated based on the device's maximum velocity and the modem's requested accuracy.
125+
- *Example*: A device moving at 120 km/h (~33 m/s) with a requested accuracy of 200 meters requires updates at least every 6 seconds.
126+
- **Validity Duration**: The validity time must be sufficient to cover the period until the next update.
119127
120-
The validity duration tells the modem how long the Application given GPS position is valid. The UE also signals this to network. Based on 3GPP spec both UE and NW will put the UE into IDLE immediately & drop the cell when validity expires.
128+
If the validity expires without an update, the modem considers the location invalid and may cease network signaling. This causes the device to transition to IDLE mode and drop the cell, potentially triggering a re-connection cycle.
121129
122-
If the Application requested unsolicites notifications (as in this application) then one thing should be known: currently there is basically two “accuracy” levels. One needed during IDLE mode and another needed when initiating transition to/during CONNECTED mode. And there is no connection to validity time concerning accuracy here.
130+
### Modem Accuracy Requests
123131
124-
`requested_accuracy` modem figures this out “somehow”. Basically based on the mode modem is in.
125-
`next_requested_accuracy` modem figures this out based on the future knowledge it has. For example, if the modem is in IDLE and the modem knows it will transition to CONNECTED mode in `next_requested_time` time, the `next_requested_accuracy` would reflect the position accuracy the modem needs at time initiating the connection. It is the Application responsibility to provide a new GPS position if the previously given position does not meet the requested accuracy.
126-
`next_requested_time` when the modem needs a GPS position with `next_requested_accuracy`. The modem figures this, for example, when it wakes up from sleep or has to do TAU.. similar understanding of time, for example, what %XMODEMSLEEP has.
127-
128-
Summarizing.. too short `validilty` causes frequent transitions to IDLE and drops from cell. This would cause unsolicited notification for `next_requested_accuracy` as the modem would in a normal use want to initiate the connection i.e. modem is flipping between IDLE and going to CONNECTED and again dropping to IDLE.
132+
The modem determines the `requested_accuracy` based on its current state (e.g., IDLE vs. CONNECTED).
129133
134+
- **IDLE Mode**: Lower accuracy may be sufficient.
135+
- **Transition to CONNECTED**: Higher accuracy is typically required to initiate a connection.

0 commit comments

Comments
 (0)