---
title: IOUserSerial
framework: serialdriverkit
role: symbol
role_heading: Class
path: serialdriverkit/iouserserial
---

# IOUserSerial

The class for building a service that communicates using a serial connection.

## Declaration

```occ
class IOUserSerial;
```

## Overview

Overview Subclass IOUserSerial and use it to implement a service for communicating with serial devices. This class automatically manages the buffers used to store incoming and outgoing data. You are responsible for configuring your hardware, and for reading and writing data at appropriate times. This class supports configuration through standard modem commands or using universal asynchronous receiver/transmitter (UART) hardware. If your driver communicates with your device over USB, subclass IOUserUSBSerial (in the USBSerialDriverKit framework) instead of this class.

## Topics

### Configuring the Service

- [init](serialdriverkit/iouserserial/init.md)
- [Start](serialdriverkit/iouserserial/start.md)
- [Stop](serialdriverkit/iouserserial/stop.md)
- [free](serialdriverkit/iouserserial/free.md)
- [initWith](serialdriverkit/iouserserial/initwith.md)

### Activating and Deactivating the Service

- [HwActivate](serialdriverkit/iouserserial/hwactivate.md)
- [HwDeactivate](serialdriverkit/iouserserial/hwdeactivate.md)

### Configuring the Serial Data Queues

- [ConnectQueues](serialdriverkit/iouserserial/connectqueues.md)
- [DisconnectQueues](serialdriverkit/iouserserial/disconnectqueues.md)

### Programming the Modem

- [HwGetModemStatus](serialdriverkit/iouserserial/hwgetmodemstatus.md)
- [SetModemStatus](serialdriverkit/iouserserial/setmodemstatus.md)
- [HwResetFIFO](serialdriverkit/iouserserial/hwresetfifo.md)
- [HwSendBreak](serialdriverkit/iouserserial/hwsendbreak.md)
- [HwProgramBaudRate](serialdriverkit/iouserserial/hwprogrambaudrate.md)
- [HwProgramLatencyTimer](serialdriverkit/iouserserial/hwprogramlatencytimer.md)
- [HwProgramMCR](serialdriverkit/iouserserial/hwprogrammcr.md)
- [HwProgramUART](serialdriverkit/iouserserial/hwprogramuart.md)
- [Hardware Constants](serialdriverkit/hardware-constants.md)

### Transmitting and Receiving Data

- [RxDataAvailable](serialdriverkit/iouserserial/rxdataavailable.md)
- [RxFreeSpaceAvailable](serialdriverkit/iouserserial/rxfreespaceavailable.md)
- [TxDataAvailable](serialdriverkit/iouserserial/txdataavailable.md)
- [TxFreeSpaceAvailable](serialdriverkit/iouserserial/txfreespaceavailable.md)
- [RxError](serialdriverkit/iouserserial/rxerror.md)

### Instance Methods

- [HwProgramFlowControl](serialdriverkit/iouserserial/hwprogramflowcontrol.md)

## See Also

### Serial Interface

- [com.apple.developer.driverkit.family.serial](bundleresources/entitlements/com.apple.developer.driverkit.family.serial.md)
