<!--
{
  "availability" : [
    "iOS: 18.2.0 -",
    "iPadOS: 18.2.0 -",
    "macCatalyst: 18.2.0 -",
    "macOS: 15.2.0 -",
    "tvOS: 18.2.0 -",
    "visionOS: 2.2.0 -",
    "watchOS: 11.2.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Matter",
  "identifier" : "/documentation/Matter/MTRXPCServerProtocol_MTRDevice",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "Matter"
    ],
    "preciseIdentifier" : "c:objc(pl)MTRXPCServerProtocol_MTRDevice"
  },
  "title" : "MTRXPCServerProtocol_MTRDevice"
}
-->

# MTRXPCServerProtocol_MTRDevice

```
protocol MTRXPCServerProtocol_MTRDevice : NSObjectProtocol
```

## Topics

### Instance Methods

[`func deviceController(UUID, nodeID: NSNumber, downloadLogOf: MTRDiagnosticLogType, timeout: TimeInterval, completion: (URL?, (any Error)?) -> Void)`](/documentation/Matter/MTRXPCServerProtocol_MTRDevice/deviceController(_:nodeID:downloadLogOf:timeout:completion:))

[`func deviceController(UUID, nodeID: NSNumber, getDeviceCachePrimedWithReply: (Bool) -> Void)`](/documentation/Matter/MTRXPCServerProtocol_MTRDevice/deviceController(_:nodeID:getDeviceCachePrimedWithReply:))

[`func deviceController(UUID, nodeID: NSNumber, getEstimatedStartTimeWithReply: (Date?) -> Void)`](/documentation/Matter/MTRXPCServerProtocol_MTRDevice/deviceController(_:nodeID:getEstimatedStartTimeWithReply:))

[`func deviceController(UUID, nodeID: NSNumber, getEstimatedSubscriptionLatencyWithReply: (NSNumber?) -> Void)`](/documentation/Matter/MTRXPCServerProtocol_MTRDevice/deviceController(_:nodeID:getEstimatedSubscriptionLatencyWithReply:))

[`func deviceController(UUID, nodeID: NSNumber, getStateWithReply: (MTRDeviceState) -> Void)`](/documentation/Matter/MTRXPCServerProtocol_MTRDevice/deviceController(_:nodeID:getStateWithReply:))

[`func deviceController(UUID, nodeID: NSNumber, invokeCommandWithEndpointID: NSNumber, clusterID: NSNumber, commandID: NSNumber, commandFields: Any, expectedValues: [[String : Any]]?, expectedValueInterval: NSNumber?, timedInvokeTimeout: NSNumber?, serverSideProcessingTimeout: NSNumber?, completion: ([[String : Any]]?, (any Error)?) -> Void)`](/documentation/Matter/MTRXPCServerProtocol_MTRDevice/deviceController(_:nodeID:invokeCommandWithEndpointID:clusterID:commandID:commandFields:expectedValues:expectedValueInterval:timedInvokeTimeout:serverSideProcessingTimeout:completion:))

[`func deviceController(UUID, nodeID: NSNumber, invokeCommands: [[MTRCommandWithRequiredResponse]], completion: ([[String : Any]]?, (any Error)?) -> Void)`](/documentation/Matter/MTRXPCServerProtocol_MTRDevice/deviceController(_:nodeID:invokeCommands:completion:))

[`func deviceController(UUID, nodeID: NSNumber, openCommissioningWindowWithSetupPasscode: NSNumber, discriminator: NSNumber, duration: NSNumber, completion: (MTRSetupPayload?, (any Error)?) -> Void)`](/documentation/Matter/MTRXPCServerProtocol_MTRDevice/deviceController(_:nodeID:openCommissioningWindowWithSetupPasscode:discriminator:duration:completion:))

[`func deviceController(UUID, nodeID: NSNumber, readAttributePaths: [MTRAttributeRequestPath], withReply: ([[String : Any]]) -> Void)`](/documentation/Matter/MTRXPCServerProtocol_MTRDevice/deviceController(_:nodeID:readAttributePaths:withReply:))

[`func deviceController(UUID, nodeID: NSNumber, readAttributeWithEndpointID: NSNumber, clusterID: NSNumber, attributeID: NSNumber, params: MTRReadParams?, withReply: ([String : Any]?) -> Void)`](/documentation/Matter/MTRXPCServerProtocol_MTRDevice/deviceController(_:nodeID:readAttributeWithEndpointID:clusterID:attributeID:params:withReply:))

[`func deviceController(UUID, nodeID: NSNumber, writeAttributeWithEndpointID: NSNumber, clusterID: NSNumber, attributeID: NSNumber, value: Any, expectedValueInterval: NSNumber?, timedWriteTimeout: NSNumber?)`](/documentation/Matter/MTRXPCServerProtocol_MTRDevice/deviceController(_:nodeID:writeAttributeWithEndpointID:clusterID:attributeID:value:expectedValueInterval:timedWriteTimeout:))

[`func downloadLog(of: MTRDiagnosticLogType, nodeID: NSNumber, timeout: TimeInterval, completion: (URL?, (any Error)?) -> Void)`](/documentation/Matter/MTRXPCServerProtocol_MTRDevice/downloadLog(of:nodeID:timeout:completion:))

## Relationships

### Inherited By

[`MTRXPCServerProtocol`](/documentation/Matter/MTRXPCServerProtocol)

### Inherits From

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)