# How to find if the routers are using TR-181 and TR-098 protocol?

**URL:** <https://forum.genieacs.com/t/how-to-find-if-the-routers-are-using-tr-181-and-tr-098-protocol/6874>\
**Category:** Uncategorized\
**Created:** [May 20, 2025, 1:57pm UTC](https://forum.genieacs.com/t/how-to-find-if-the-routers-are-using-tr-181-and-tr-098-protocol/6874 "2025-05-20T13:57:34Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![raylen](https://avatars.discourse-cdn.com/v4/letter/r/bcef8e/32.png) [@raylen](https://forum.genieacs.com/u/raylen)\
**Post date:** [May 20, 2025, 1:57pm UTC](https://forum.genieacs.com/t/how-to-find-if-the-routers-are-using-tr-181-and-tr-098-protocol/6874/1 "2025-05-20T13:57:35Z")

</div>

Hello everyone,

I’m trying to identify which routers use TR-181 and which use TR-098. Since both of these data models fall under the TR-069 standard, I’m looking for a reliable way to distinguish between them based on the protocols or characteristics used by the routers.

Does anyone have suggestions or best practices for identifying or differentiating between routers that use TR-181 versus TR-098 within GenieACS?

Thank you in advance for your help!

---

<div class="post-metadata">

**Author:** ![akcoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/akcoder/32/11_2.png) [@akcoder](https://forum.genieacs.com/u/akcoder)\
**Post date:** [May 20, 2025, 4:46pm UTC](https://forum.genieacs.com/t/how-to-find-if-the-routers-are-using-tr-181-and-tr-098-protocol/6874/2 "2025-05-20T16:46:35Z")

</div>

TR-069 routers will use `InternetGatewayDevice.` and TR-181 will use `Device.` for parameter names. TR-098 is built on TR-069, so its going to be using `InternetGatewayDevice.` for the root of the parameter names.

You should review the specs.

- [TR-069](https://cwmp-data-models.broadband-forum.org/tr-069-1-0-0.html)
- [TR-098](https://cwmp-data-models.broadband-forum.org/tr-098-1-8-0.html)
- [TR-181](https://cwmp-data-models.broadband-forum.org/tr-181-2-18-1-cwmp.html)

---

<div class="post-metadata">

**Author:** ![raylen](https://avatars.discourse-cdn.com/v4/letter/r/bcef8e/32.png) [@raylen](https://forum.genieacs.com/u/raylen)\
**Post date:** [May 20, 2025, 5:29pm UTC](https://forum.genieacs.com/t/how-to-find-if-the-routers-are-using-tr-181-and-tr-098-protocol/6874/3 "2025-05-20T17:29:55Z")

</div>

Yeah, I’m aware that TR-098 uses `InternetGatewayDevice.` as the root and TR-181 uses `Device.`.

Here’s the scenario: suppose a router initially used TR-098, but later its data model switched to TR-181. Now the device shows both the new parameters under the `Device.` model and the old parameters under `InternetGatewayDevice.`.

So my question is:  
**How can I create a virtual parameter or a flag that clearly indicates whether a device is currently using TR-098 or TR-181?**  
In other words, I want a reliable, programmatic way to identify the active data model the device is using, regardless of any legacy parameters it might still expose.

---

<div class="post-metadata">

**Author:** ![akcoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/akcoder/32/11_2.png) [@akcoder](https://forum.genieacs.com/u/akcoder)\
**Post date:** [May 20, 2025, 5:42pm UTC](https://forum.genieacs.com/t/how-to-find-if-the-routers-are-using-tr-181-and-tr-098-protocol/6874/4 "2025-05-20T17:42:55Z")

</div>

> [@raylen](#):
>
> **How can I create a virtual parameter or a flag that clearly indicates whether a device is currently using TR-098 or TR-181?**  
> In other words, I want a reliable, programmatic way to identify the active data model the device is using, regardless of any legacy parameters it might still expose.

In your vparam query for parameters that only exist in TR-098 or TR-181. And use that to differentiate.

---

<div class="post-metadata">

**Author:** ![gspoletto](https://avatars.discourse-cdn.com/v4/letter/g/ac91a4/32.png) [@gspoletto](https://forum.genieacs.com/u/gspoletto)\
**Post date:** [June 7, 2025, 1:22pm UTC](https://forum.genieacs.com/t/how-to-find-if-the-routers-are-using-tr-181-and-tr-098-protocol/6874/5 "2025-06-07T13:22:09Z")

</div>

Here is what i have:

VPinfoDataModel

```auto

// Retorna o DataModel do dispositivo 
// Returns the device's DataModel
// RSCM stands for RAISECOM, and yes, they broke everything by
// mistyping an uppercase "W" in their DataModel definition :person_facepalming: 

let m = 'NA';
let tr098 = declare("InternetGatewayDevice", {value: Date.now()});
let tr181 = declare("Device", {value: Date.now()});
let rscm = declare("InternetGateWayDevice", {value: Date.now()});
//
if (tr098.size) {
  for (let p of tr098) {
    if (p) {
      m="tr098"
      break;
    }
  }
}
else if (rscm.size) {
  for (let p of rscm) {
    if (p) {
      m="rscm"
      break;
    }
  }
}
else if (tr181.size) {
  for (let p of tr181) {
    if (p) {
      m="tr181"
      break;
    }
  }
}

return {writable: false, value: [m , "xsd:string"]};

```
