Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions definitions/network/ppp_interface.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: PppInterface
singularName: PppInterfaceInstance
version: 1.0.0
multiInstance: Device.PPP.Interface.
category: network
description: PPP interface instances for PPPoE/PPTP/L2TP connections
type: add

parameters:
- field_name: username
path: .Username
type: string
writable: true
sensitive: true
description: PPP authentication username

- field_name: password
path: .Password
type: string
writable: true
sensitive: true
description: PPP authentication password

- field_name: pppoeServiceName
path: .PPPoE.ServiceName
type: string
writable: true
description: PPPoE service name (optional, ISS-7 may be denied by FW)

- field_name: connectionTrigger
path: .ConnectionTrigger
type: string
writable: true
description: PPP connection mode (AlwaysOn, OnDemand, Manual)

- field_name: idleDisconnectTime
path: .IdleDisconnectTime
type: int
writable: true
description: Idle timeout before disconnection in seconds (0=never)

- field_name: lcpEcho
path: .LCPEcho
type: int
description: LCP Echo keep-alive interval in seconds (read-only on device, ISS-6)

- field_name: connectionStatus
path: .ConnectionStatus
type: string
description: PPP connection status (Connected, Disconnected, etc.)
20 changes: 20 additions & 0 deletions definitions/network/vlan_termination.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: VlanTermination
singularName: VlanTerminationInstance
version: 1.0.0
multiInstance: Device.Ethernet.VLANTermination.
category: network
description: VLAN termination instances for WAN VLAN tagging
type: add

parameters:
- field_name: enable
path: .Enable
type: boolean
writable: true
description: Enable VLAN tagging on WAN port

- field_name: vlanId
path: .VLANID
type: int
writable: true
description: VLAN tag ID (1-4094)
96 changes: 10 additions & 86 deletions definitions/network/wan_settings.yaml
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
name: WanSettings
version: 1.0.0
version: 1.1.0
category: network
description: WAN IPv4 connection settings aggregated from multiple TR-181 objects
description: WAN IPv4 singleton settings — fields that always exist on the device

parameters:
# === WAN Interface Status ===
- path: Device.IP.Interface.2.IPv4Address.1.AddressingType
field_name: addressingType
type: string
writable: true
description: IPv4 addressing type (Static, DHCP, IPCP, AutoIP)

- path: Device.IP.Interface.2.MaxMTUSize
Expand All @@ -29,89 +30,18 @@ parameters:
writable: true
description: IPv4 subnet mask

- path: Device.Routing.Router.1.IPv4Forwarding.1.GatewayIPAddress
# === Gateway & DNS (vendor extension paths — confirmed writable 2026-03-19) ===
- path: Device.IP.Interface.2.IPv4Address.1.X_LINKSYS_DefaultGateway
field_name: defaultGateway
type: string
writable: true
description: Default gateway IPv4 address

# === DNS Servers ===
- path: Device.DNS.Client.Server.1.DNSServer
field_name: dnsServer1
type: string
writable: true
description: Primary DNS server address

- path: Device.DNS.Client.Server.2.DNSServer
field_name: dnsServer2
type: string
writable: true
description: Secondary DNS server address

- path: Device.DNS.Client.Server.3.DNSServer
field_name: dnsServer3
type: string
writable: true
description: Tertiary DNS server address

# === PPPoE / PPP Configuration ===
- path: Device.PPP.Interface.1.Username
field_name: pppUsername
type: string
writable: true
sensitive: true
description: PPP authentication username (PPPoE/PPTP/L2TP)

- path: Device.PPP.Interface.1.Password
field_name: pppPassword
type: string
writable: true
sensitive: true
description: PPP authentication password

- path: Device.PPP.Interface.1.PPPoE.ServiceName
field_name: pppoeServiceName
type: string
writable: true
description: PPPoE service name (optional)

- path: Device.PPP.Interface.1.ConnectionTrigger
field_name: connectionTrigger
type: string
writable: true
description: PPP connection mode (AlwaysOn, OnDemand, Manual)
# Value mapping: JNAP KeepAlive → TR-181 AlwaysOn, JNAP ConnectOnDemand → TR-181 OnDemand

- path: Device.PPP.Interface.1.IdleDisconnectTime
field_name: idleDisconnectTime
type: int
writable: true
description: Idle timeout before disconnection in seconds (0=never)
# Unit conversion: JNAP maxIdleMinutes (minutes) → TR-181 IdleDisconnectTime (seconds), multiply by 60

- path: Device.PPP.Interface.1.LCPEcho
field_name: lcpEchoInterval
type: int
writable: true
description: LCP Echo keep-alive interval in seconds (0=disabled)
description: Default gateway IPv4 address (Linksys vendor extension, replaces non-writable Routing.Router path)

- path: Device.PPP.Interface.1.ConnectionStatus
field_name: pppConnectionStatus
- path: Device.IP.Interface.2.IPv4Address.1.X_LINKSYS_DNSServers
field_name: dnsServers
type: string
description: PPP connection status (Connected, Disconnected, etc.)

# === VLAN Tagging ===
- path: Device.Ethernet.VLANTermination.1.Enable
field_name: vlanEnabled
type: boolean
writable: true
description: Enable VLAN tagging on WAN port

- path: Device.Ethernet.VLANTermination.1.VLANID
field_name: vlanId
type: int
writable: true
description: VLAN tag ID (1-4094)
description: DNS servers as comma-separated string (e.g. "8.8.8.8,8.8.4.4"). Replaces non-writable DNS.Client.Server paths.

# === Bridge Mode ===
- path: Device.Bridging.Bridge.1.Enable
Expand All @@ -120,13 +50,7 @@ parameters:
writable: true
description: Enable bridge mode

# === MAC Address ===
- path: Device.Ethernet.Link.1.MACAddress
field_name: wanMacAddress
type: string
writable: true
description: WAN interface MAC address (for MAC clone, writable)

# === MAC Address (read-only — ISS-5 writable path not yet found) ===
- path: Device.Ethernet.Interface.1.MACAddress
field_name: currentMacAddress
type: string
Expand Down
10 changes: 6 additions & 4 deletions doc/usp/issues/internet-settings-fix-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,12 @@ SSH validation (2026-03-10) on Community00080 (OpenWrt 23.05-SNAPSHOT) found 10

### 2.2 Missing instances — multi-instance objects require Add before Set

| Object | basePath | Default State | Needed When |
|---|---|---|---|
| PPP Interface | `Device.PPP.Interface.` | 0 instances in non-PPPoE mode | Switching to PPPoE |
| VLAN Termination | `Device.Ethernet.VLANTermination.` | 0 instances | Enabling VLAN tagging |
| Object | basePath | Default State (FW 2026-02-27) | Default State (FW 2026-03-18) | Needed When |
|---|---|---|---|---|
| PPP Interface | `Device.PPP.Interface.` | 0 instances in non-PPPoE mode | **1 instance** in DHCP mode | Switching to PPPoE (if 0 instances) |
| VLAN Termination | `Device.Ethernet.VLANTermination.` | 0 instances | **1 instance** in default state | Enabling VLAN tagging (if 0 instances) |

> **Note (2026-03-19):** Newer firmware (build 2026-03-18) ships with 1 default instance for both PPP and VLAN even in DHCP mode. The Add/Delete lifecycle code should check `NumberOfEntries` before Add to handle both firmware behaviors gracefully.

### 2.3 Firmware-level blockers — require FW team involvement

Expand Down
90 changes: 90 additions & 0 deletions doc/usp/issues/internet-settings-set-validation.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,16 @@
| WAN mode at test time | DHCP (`network.wan.proto='dhcp'`) |
| Date | 2026-03-10 |

### Re-validation Environment (2026-03-19)

| Item | Value |
|------|-------|
| Device | Community00080 (OpenWrt 23.05-SNAPSHOT, r0-9033d84) |
| Firmware build | 2026-03-18 |
| Data model agent | bbfdm (via ubus) |
| WAN mode at test time | DHCP |
| Date | 2026-03-19 |

---

## Summary
Expand Down Expand Up @@ -67,6 +77,8 @@ All tests performed via direct `ubus call bbfdm {get|set|add|del|schema|instance
- `bbfdm del '{"path":"Device.PPP.Interface.1."}'` → removes instance, modifies `/etc/bbfdm/dmmap/PPP`
- In DHCP mode, **zero PPP instances exist** — any direct Set to `Device.PPP.Interface.1.*` will fail with fault 9005 or error 7016

> **Re-validation (2026-03-19, FW build 2026-03-18):** PPP instance count is now **1** in DHCP mode (changed from 0 in FW build 2026-02-27). Add/Delete still work correctly: `add` creates instance `.2.`, `del` on `.1.` succeeds. The lifecycle management code should still be implemented to handle both firmware behaviors.

### VLAN

| # | TR-181 Path | Field | Current State | Verdict |
Expand All @@ -78,6 +90,8 @@ All tests performed via direct `ubus call bbfdm {get|set|add|del|schema|instance
- `bbfdm add '{"path":"Device.Ethernet.VLANTermination."}'` → creates instance, modifies `/etc/config/network`
- `bbfdm del '{"path":"Device.Ethernet.VLANTermination.1."}'` → removes instance

> **Re-validation (2026-03-19, FW build 2026-03-18):** VLAN instance count is now **1** in default state (changed from 0 in FW build 2026-02-27). Add/Delete still work correctly: `add` creates instance `.2.`, `del` on `.1.` succeeds.

### Bridge & MAC

| # | TR-181 Path | Field | Get | Set | Verdict |
Expand Down Expand Up @@ -256,3 +270,79 @@ ubus call bbfdm del '{"path":"Device.PPP.Interface.1."}'
**Schema data field meaning:**
- `"data": "1"` → writable parameter
- `"data": "0"` → read-only parameter

---

## Appendix B: Re-validation Results (2026-03-19)

**FW build:** 2026-03-18 (OpenWrt 23.05-SNAPSHOT r0-9033d84)

### Key Behavioral Changes from FW 2026-02-27

| Aspect | FW 2026-02-27 (original) | FW 2026-03-18 (re-validated) |
|---|---|---|
| PPP instances in DHCP mode | 0 | **1** |
| VLAN instances in default state | 0 | **1** |
| `X_LINKSYS_DefaultGateway` writability | Not tested via ubus (marked R in catalog) | **Confirmed R/W** via `ubus call bbfdm set` |
| `X_LINKSYS_DNSServers` writability | Not tested via ubus (marked R in catalog) | **Confirmed R/W** via `ubus call bbfdm set` |

### ISS-3/4 Vendor Path Writability Test

```
# SET Gateway
ubus call bbfdm set '{"path":"Device.IP.Interface.2.IPv4Address.1.X_LINKSYS_DefaultGateway","value":"192.168.1.1"}'
→ {"results":[{"path":"...X_LINKSYS_DefaultGateway","data":"1"}],"modified_uci":["/etc/config/network"]}

# GET verify
→ {"X_LINKSYS_DefaultGateway":"192.168.1.1"}

# SET DNS (comma-separated)
ubus call bbfdm set '{"path":"Device.IP.Interface.2.IPv4Address.1.X_LINKSYS_DNSServers","value":"8.8.8.8,8.8.4.4"}'
→ {"results":[{"path":"...X_LINKSYS_DNSServers","data":"1"}],"modified_uci":["/etc/config/network"]}

# GET verify
→ {"X_LINKSYS_DNSServers":"8.8.8.8,8.8.4.4"}

# Cleanup: restored both to empty string
```

### ISS-2 PPP Add/Delete Test

```
# Initial state
PPP.InterfaceNumberOfEntries = 1

# Add
ubus call bbfdm add '{"path":"Device.PPP.Interface."}'
→ {"results":[{"path":"Device.PPP.Interface.","data":"2"}],"modified_uci":["/etc/bbfdm/dmmap/PPP"]}
PPP.InterfaceNumberOfEntries = 2

# Delete instance .1.
ubus call bbfdm del '{"path":"Device.PPP.Interface.1."}'
→ success
PPP.InterfaceNumberOfEntries = 1
```

### ISS-8 VLAN Add/Delete Test

```
# Initial state
VLANTerminationNumberOfEntries = 1

# Add
ubus call bbfdm add '{"path":"Device.Ethernet.VLANTermination."}'
→ {"results":[{"path":"Device.Ethernet.VLANTermination.","data":"2"}],"modified_uci":["/etc/config/network","/etc/bbfdm/dmmap/Ethernet"]}
VLANTerminationNumberOfEntries = 2

# Delete instance .1.
ubus call bbfdm del '{"path":"Device.Ethernet.VLANTermination.1."}'
→ success
VLANTerminationNumberOfEntries = 1
```

### Impact on Fix Design

1. **ISS-3/4 (Gateway/DNS):** Vendor path solution confirmed viable. No blocker.
2. **ISS-2 (PPP):** Add/Delete works. New FW has 1 default instance, so direct Set may work without Add on newer FW. Code should still handle both cases (0 or 1 initial instances).
3. **ISS-8 (VLAN):** Same as ISS-2 — Add/Delete works, 1 default instance on newer FW.
4. **ISS-6 (LCPEcho):** Not retested (YAML fix only, no FW dependency).
10 changes: 6 additions & 4 deletions doc/usp/linksys-vendor-parameters.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Linksys Vendor Parameters (X_LINKSYS_)

> **Router**: Linksys M60-EU (PINNACLE 2.0)
> **Firmware**: 1.0.14.26013014
> **Firmware**: 1.0.14.26013014 (initial), OpenWrt 23.05-SNAPSHOT r0-9033d84 (re-validated)
> **Platform**: OpenWrt 23.05-SNAPSHOT (BusyBox 1.36.1)
> **Date**: 2026-03-10
> **Date**: 2026-03-10 (initial), 2026-03-19 (re-validated on FW build 2026-03-18)
> **BBF Vendor Prefix**: `X_LINKSYS_`

This document catalogs all `X_LINKSYS_` vendor-extended TR-181 parameters discovered on the router via `obuspa` runtime queries and `bbfdm` microservice binary inspection.
Expand Down Expand Up @@ -46,11 +46,13 @@ This document catalogs all `X_LINKSYS_` vendor-extended TR-181 parameters discov

| Path | Type | Sample Value | R/W | Description |
|------|------|-------------|-----|-------------|
| `Device.IP.Interface.{i}.IPv4Address.{i}.X_LINKSYS_DefaultGateway` | string | _(empty)_ | R | Default gateway for this interface |
| `Device.IP.Interface.{i}.IPv4Address.{i}.X_LINKSYS_DNSServers` | string | _(empty)_ | R | DNS servers for this interface |
| `Device.IP.Interface.{i}.IPv4Address.{i}.X_LINKSYS_DefaultGateway` | string | _(empty)_ | **R/W** | Default gateway for this interface |
| `Device.IP.Interface.{i}.IPv4Address.{i}.X_LINKSYS_DNSServers` | string | _(empty)_ | **R/W** | DNS servers for this interface (comma-separated) |

**Observed instances**: Interface.1.IPv4Address.1, Interface.2.IPv4Address.1

> **Re-validation (2026-03-19, FW build 2026-03-18):** Both paths confirmed **writable** via SSH `ubus call bbfdm set`. Set returns `data: "1"` and modifies `/etc/config/network`. The original 2026-03-10 catalog incorrectly marked these as R (read-only); corrected to R/W based on live testing. DNS accepts comma-separated format (e.g., `"8.8.8.8,8.8.4.4"`).

---

## 3. Device.WiFi.AccessPoint.{i}
Expand Down
2 changes: 2 additions & 0 deletions lib/generated/index.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@ export 'firmware_images.g.dart';
export 'time_settings.g.dart';
export 'static_routing.g.dart';
export 'ethernet_interfaces.g.dart';
export 'ppp_interface.g.dart';
export 'wan_settings.g.dart';
export 'wan_status.g.dart';
export 'vlan_termination.g.dart';
export 'lan_network_info.g.dart';
export 'ipv6settings.g.dart';
export 'dhcp_clients.g.dart';
Expand Down
Loading
Loading