# How to enable NTN and send non-IP data The following steps illustrate how to configure and use NTN. 1. Create the INtnListener class. class NtnListener: public telux::satcom::INtnListener { public: void onNtnStateChange(NtnState newState) { // Handle NTN state change } void onCapabilitiesChange(NtnCapabilities capabilities) { // Handle NTN capabilities change } void onSignalStrengthChange(SignalStrength signalStrength) { // Handle signal strength change } onServiceStatusChange(telux::common::ServiceStatus status) { // Handle service status change } void onDataAck(telux::common::ErrorCode err, TransactionId id) { // Handle data acks for sent data packets } void onIncomingData(std::unique_ptr data, uint32_t size) { // Process downlink data coming from NTN network } void onLocationFixRequest(LocationFixRequestReason reqReason) { // Handle location fix request } void onNtnBandUpdate(uint32_t bandValue) { // Handle NTN band update } }; Copy to clipboard 2. Create the initialization callback object to be notified when initialization is complete and the object is ready to be used. auto initCb = [&](telux::common::ServiceStatus status) { std::lock_guard lock(mtx); status_ = status; initCv.notify_all(); }; Copy to clipboard 3. Get the SatcomFactory and NtnMAnager instance. auto &satcomFactory = telux::satcom::SatcomFactory::getInstance(); ntnMgr = satcomFactory.getNtnManager(initCb); Copy to clipboard 4. Wait for the object to complete initialization. telux::common::ServiceStatus = subSystemStatus = initPromise.get_future().get(); if (subSystemStatus == telux::common::ServiceStatus::SERVICE_AVAILABLE) { std::cout << " *** Satcom SubSystem is Ready *** " << std::endl; } else { std::cout << " *** Unable to initialize Satcom subsystem *** " << std::endl; } Copy to clipboard 5. Register listener. status = ntnMgr->registerListener(listener); Copy to clipboard 6. Set location fix (optional). LocationFix params; // Update the location information from the external GNSS receiver err = ntnMgr->setLocationFix(params); Copy to clipboard 7. Enable NTN. err = ntnMgr_->enableNtn(enable, isEmergency, iccid); Copy to clipboard 8. Get NTN capabilities. err = ntnMgr_->getNtnCapabilities(cap); Copy to clipboard 9. Send data. status = ntnMgr_->sendData(data, size, tid); Copy to clipboard Last Published: Jun 24, 2026 [Previous Topic Satcom](https://docs.qualcomm.com/bundle/publicresource/80-PF458-1/topics/satcom.md) [Next Topic Diagnostics](https://docs.qualcomm.com/bundle/publicresource/80-PF458-1/topics/diag.md)