Documentation / usb / usb-serial.rst

Based on kernel version 5.14. Page generated on 2021-08-31 10:40 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537
USB serial


  The USB serial driver currently supports a number of different USB to
  serial converter products, as well as some devices that use a serial
  interface from userspace to talk to the device.

  See the individual product section below for specific information about
  the different devices.


  Currently the driver can handle up to 256 different serial interfaces at
  one time.

    The major number that the driver uses is 188 so to use the driver,
    create the following nodes::

	mknod /dev/ttyUSB0 c 188 0
	mknod /dev/ttyUSB1 c 188 1
	mknod /dev/ttyUSB2 c 188 2
	mknod /dev/ttyUSB3 c 188 3
	mknod /dev/ttyUSB254 c 188 254
	mknod /dev/ttyUSB255 c 188 255

  When the device is connected and recognized by the driver, the driver
  will print to the system log, which node(s) the device has been bound

Specific Devices Supported

ConnectTech WhiteHEAT 4 port converter

  ConnectTech has been very forthcoming with information about their
  device, including providing a unit to test with.

  The driver is officially supported by Connect Tech Inc.

  For any questions or problems with this driver, please contact
  Connect Tech's Support Department at

HandSpring Visor, Palm USB, and Clié USB driver

  This driver works with all HandSpring USB, Palm USB, and Sony Clié USB

  Only when the device tries to connect to the host, will the device show
  up to the host as a valid USB device. When this happens, the device is
  properly enumerated, assigned a port, and then communication _should_ be
  possible. The driver cleans up properly when the device is removed, or
  the connection is canceled on the device.

    This means that in order to talk to the device, the sync button must be
    pressed BEFORE trying to get any program to communicate to the device.
    This goes against the current documentation for pilot-xfer and other
    packages, but is the only way that it will work due to the hardware
    in the device.

  When the device is connected, try talking to it on the second port
  (this is usually /dev/ttyUSB1 if you do not have any other usb-serial
  devices in the system.) The system log should tell you which port is
  the port to use for the HotSync transfer. The "Generic" port can be used
  for other device communication, such as a PPP link.

  For some Sony Clié devices, /dev/ttyUSB0 must be used to talk to the
  device.  This is true for all OS version 3.5 devices, and most devices
  that have had a flash upgrade to a newer version of the OS.  See the
  kernel system log for information on which is the correct port to use.

  If after pressing the sync button, nothing shows up in the system log,
  try resetting the device, first a hot reset, and then a cold reset if
  necessary.  Some devices need this before they can talk to the USB port

  Devices that are not compiled into the kernel can be specified with module
  parameters.  e.g. modprobe visor vendor=0x54c product=0x66

  There is a webpage and mailing lists for this portion of the driver at:

  For any questions or problems with this driver, please contact Greg
  Kroah-Hartman at

PocketPC PDA Driver

  This driver can be used to connect to Compaq iPAQ, HP Jornada, Casio EM500
  and other PDAs running Windows CE 3.0 or PocketPC 2002 using a USB
  Most devices supported by ActiveSync are supported out of the box.
  For others, please use module parameters to specify the product and vendor
  id. e.g. modprobe ipaq vendor=0x3f0 product=0x1125

  The driver presents a serial interface (usually on /dev/ttyUSB0) over
  which one may run ppp and establish a TCP/IP link to the PDA. Once this
  is done, you can transfer files, backup, download email etc. The most
  significant advantage of using USB is speed - I can get 73 to 113
  kbytes/sec for download/upload to my iPAQ.

  This driver is only one of a set of components required to utilize
  the USB connection. Please visit which
  contains the necessary packages and a simple step-by-step howto.

  Once connected, you can use Win CE programs like ftpView, Pocket Outlook
  from the PDA and xcerdisp, synce utilities from the Linux side.

  To use Pocket IE, follow the instructions given at to achieve the same thing
  on Win98. Omit the proxy server part; Linux is quite capable of forwarding
  packets unlike Win98. Another modification is required at least for the
  iPAQ - disable autosync by going to the Start/Settings/Connections menu
  and unchecking the "Automatically synchronize ..." box. Go to
  Start/Programs/Connections, connect the cable and select "usbdial" (or
  whatever you named your new USB connection). You should finally wind
  up with a "Connected to usbdial" window with status shown as connected.
  Now start up PIE and browse away.

  If it doesn't work for some reason, load both the usbserial and ipaq module
  with the module parameter "debug" set to 1 and examine the system log.
  You can also try soft-resetting your PDA before attempting a connection.

  Other functionality may be possible depending on your PDA. According to
  Wes Cilldhaire <>, with the Toshiba E570,
  ...if you boot into the bootloader (hold down the power when hitting the
  reset button, continuing to hold onto the power until the bootloader screen
  is displayed), then put it in the cradle with the ipaq driver loaded, open
  a terminal on /dev/ttyUSB0, it gives you a "USB Reflash" terminal, which can
  be used to flash the ROM, as well as the microP code..  so much for needing
  Toshiba's $350 serial cable for flashing!! :D
  NOTE: This has NOT been tested. Use at your own risk.

  For any questions or problems with the driver, please contact Ganesh
  Varadarajan <>

Keyspan PDA Serial Adapter

  Single port DB-9 serial adapter, pushed as a PDA adapter for iMacs (mostly
  sold in Macintosh catalogs, comes in a translucent white/green dongle).
  Fairly simple device. Firmware is homebrew.
  This driver also works for the Xircom/Entrega single port serial adapter.

  Current status:

   Things that work:
     - basic input/output (tested with 'cu')
     - blocking write when serial line can't keep up
     - changing baud rates (up to 115200)
     - getting/setting modem control pins (TIOCM{GET,SET,BIS,BIC})
     - sending break (although duration looks suspect)

   Things that don't:
     - device strings (as logged by kernel) have trailing binary garbage
     - device ID isn't right, might collide with other Keyspan products
     - changing baud rates ought to flush tx/rx to avoid mangled half characters

   Big Things on the todo list:
     - parity, 7 vs 8 bits per char, 1 or 2 stop bits
     - HW flow control
     - not all of the standard USB descriptors are handled:
       Get_Status, Set_Feature, O_NONBLOCK, select()

  For any questions or problems with this driver, please contact Brian
  Warner at

Keyspan USA-series Serial Adapters

  Single, Dual and Quad port adapters - driver uses Keyspan supplied
  firmware and is being developed with their support.

  Current status:

    The USA-18X, USA-28X, USA-19, USA-19W and USA-49W are supported and
    have been pretty thoroughly tested at various baud rates with 8-N-1
    character settings.  Other character lengths and parity setups are
    presently untested.

    The USA-28 isn't yet supported though doing so should be pretty
    straightforward.  Contact the maintainer if you require this

  More information is available at:

  For any questions or problems with this driver, please contact Hugh
  Blemings at

FTDI Single Port Serial Driver

  This is a single port DB-25 serial adapter.

  Devices supported include:

                - TripNav TN-200 USB GPS
                - Navis Engineering Bureau CH-4711 USB GPS

  For any questions or problems with this driver, please contact Bill Ryder.

ZyXEL lcd plus ISDN TA

  This is an ISDN TA. Please report both successes and troubles to

Cypress M8 CY4601 Family Serial Driver

  This driver was in most part developed by Neil "koyama" Whelchel.  It
  has been improved since that previous form to support dynamic serial
  line settings and improved line handling.  The driver is for the most
  part stable and has been tested on an smp machine. (dual p2)

    Chipsets supported under CY4601 family:

		CY7C63723, CY7C63742, CY7C63743, CY7C64013

    Devices supported:

		- DeLorme's USB Earthmate GPS (SiRF Star II lp arch)
		- Cypress HID->COM RS232 adapter

			Cypress Semiconductor claims no affiliation with the
			hid->com device.

     Most devices using chipsets under the CY4601 family should
     work with the driver.  As long as they stay true to the CY4601
     usbserial specification.

    Technical notes:

        The Earthmate starts out at 4800 8N1 by default... the driver will
	upon start init to this setting.  usbserial core provides the rest
	of the termios settings, along with some custom termios so that the
	output is in proper format and parsable.

	The device can be put into sirf mode by issuing NMEA command::


		It should then be sufficient to change the port termios to match this
		to begin communicating.

	As far as I can tell it supports pretty much every sirf command as
	documented online available with firmware 2.31, with some unknown
	message ids.

	The hid->com adapter can run at a maximum baud of 115200bps.  Please note
	that the device has trouble or is incapable of raising line voltage properly.
	It will be fine with null modem links, as long as you do not try to link two
	together without hacking the adapter to set the line high.

	The driver is smp safe.  Performance with the driver is rather low when using
	it for transferring files.  This is being worked on, but I would be willing to
	accept patches.  An urb queue or packet buffer would likely fit the bill here.

	If you have any questions, problems, patches, feature requests, etc. you can
	contact me here via email:

		(your problems/patches can alternately be submitted to usb-devel)

Digi AccelePort Driver

  This driver supports the Digi AccelePort USB 2 and 4 devices, 2 port
  (plus a parallel port) and 4 port USB serial converters.  The driver
  does NOT yet support the Digi AccelePort USB 8.

  This driver works under SMP with the usb-uhci driver.  It does not
  work under SMP with the uhci driver.

  The driver is generally working, though we still have a few more ioctls
  to implement and final testing and debugging to do.  The parallel port
  on the USB 2 is supported as a serial to parallel converter; in other
  words, it appears as another USB serial port on Linux, even though
  physically it is really a parallel port.  The Digi Acceleport USB 8
  is not yet supported.

  Please contact Peter Berger ( or Al Borchers
  ( for questions or problems with this

Belkin USB Serial Adapter F5U103

  Single port DB-9/PS-2 serial adapter from Belkin with firmware by eTEK Labs.
  The Peracom single port serial adapter also works with this driver, as
  well as the GoHubs adapter.

  Current status:

    The following have been tested and work:

      - Baud rate    300-230400
      - Data bits    5-8
      - Stop bits    1-2
      - Parity       N,E,O,M,S
      - Handshake    None, Software (XON/XOFF), Hardware (CTSRTS,CTSDTR) [1]_
      - Break        Set and clear
      - Line control Input/Output query and control [2]_

  .. [1]
         Hardware input flow control is only enabled for firmware
         levels above 2.06.  Read source code comments describing Belkin
         firmware errata.  Hardware output flow control is working for all
         firmware versions.

  .. [2]
         Queries of inputs (CTS,DSR,CD,RI) show the last
         reported state.  Queries of outputs (DTR,RTS) show the last
         requested state and may not reflect current state as set by
         automatic hardware flow control.

  TO DO List:
    - Add true modem control line query capability.  Currently tracks the
      states reported by the interrupt and the states requested.
    - Add error reporting back to application for UART error conditions.
    - Add support for flush ioctls.
    - Add everything else that is missing :)

  For any questions or problems with this driver, please contact William
  Greathouse at

Empeg empeg-car Mark I/II Driver

  This is an experimental driver to provide connectivity support for the
  client synchronization tools for an Empeg empeg-car mp3 player.

    * Don't forget to create the device nodes for ttyUSB{0,1,2,...}
    * modprobe empeg (modprobe is your friend)
    * emptool --usb /dev/ttyUSB0 (or whatever you named your device node)

  For any questions or problems with this driver, please contact Gary
  Brubaker at

MCT USB Single Port Serial Adapter U232

  This driver is for the MCT USB-RS232 Converter (25 pin, Model No.
  U232-P25) from Magic Control Technology Corp. (there is also a 9 pin
  Model No. U232-P9). More information about this device can be found at
  the manufacturer's web-site:

  The driver is generally working, though it still needs some more testing.
  It is derived from the Belkin USB Serial Adapter F5U103 driver and its
  TODO list is valid for this driver as well.

  This driver has also been found to work for other products, which have
  the same Vendor ID but different Product IDs. Sitecom's U232-P25 serial
  converter uses Product ID 0x230 and Vendor ID 0x711 and works with this
  driver. Also, D-Link's DU-H3SP USB BAY also works with this driver.

  For any questions or problems with this driver, please contact Wolfgang
  Grandegger at

Inside Out Networks Edgeport Driver

  This driver supports all devices made by Inside Out Networks, specifically
  the following models:

       - Edgeport/4
       - Rapidport/4
       - Edgeport/4t
       - Edgeport/2
       - Edgeport/4i
       - Edgeport/2i
       - Edgeport/421
       - Edgeport/21
       - Edgeport/8
       - Edgeport/8 Dual
       - Edgeport/2D8
       - Edgeport/4D8
       - Edgeport/8i
       - Edgeport/2 DIN
       - Edgeport/4 DIN
       - Edgeport/16 Dual

  For any questions or problems with this driver, please contact Greg
  Kroah-Hartman at

REINER SCT cyberJack pinpad/e-com USB chipcard reader

  Interface to ISO 7816 compatible contactbased chipcards, e.g. GSM SIMs.

  Current status:

    This is the kernel part of the driver for this USB card reader.
    There is also a user part for a CT-API driver available. A site
    for downloading is TBA. For now, you can request it from the
    maintainer (

  For any questions or problems with this driver, please contact

Prolific PL2303 Driver

  This driver supports any device that has the PL2303 chip from Prolific
  in it.  This includes a number of single port USB to serial converters,
  more than 70% of USB GPS devices (in 2010), and some USB UPSes. Devices
  from Aten (the UC-232) and IO-Data work with this driver, as does
  the DCU-11 mobile-phone cable.

  For any questions or problems with this driver, please contact Greg
  Kroah-Hartman at

KL5KUSB105 chipset / PalmConnect USB single-port adapter

Current status:

  The driver was put together by looking at the usb bus transactions
  done by Palm's driver under Windows, so a lot of functionality is
  still missing.  Notably, serial ioctls are sometimes faked or not yet
  implemented.  Support for finding out about DSR and CTS line status is
  however implemented (though not nicely), so your favorite autopilot(1)
  and pilot-manager -daemon calls will work.  Baud rates up to 115200
  are supported, but handshaking (software or hardware) is not, which is
  why it is wise to cut down on the rate used is wise for large
  transfers until this is settled.

  See for up-to-date
  information on this driver.

Winchiphead CH341 Driver

  This driver is for the Winchiphead CH341 USB-RS232 Converter. This chip
  also implements an IEEE 1284 parallel port, I2C and SPI, but that is not
  supported by the driver. The protocol was analyzed from the behaviour
  of the Windows driver, no datasheet is available at present.

  The manufacturer's website:

  For any questions or problems with this driver, please contact

Moschip MCS7720, MCS7715 driver

  These chips are present in devices sold by various manufacturers, such as Syba
  and Cables Unlimited.  There may be others.  The 7720 provides two serial
  ports, and the 7715 provides one serial and one standard PC parallel port.
  Support for the 7715's parallel port is enabled by a separate option, which
  will not appear unless parallel port support is first enabled at the top-level
  of the Device Drivers config menu.  Currently only compatibility mode is
  supported on the parallel port (no ECP/EPP).

    - Implement ECP/EPP modes for the parallel port.
    - Baud rates higher than 115200 are currently broken.
    - Devices with a single serial port based on the Moschip MCS7703 may work
      with this driver with a simple addition to the usb_device_id table.  I
      don't have one of these devices, so I can't say for sure.

Generic Serial driver

  If your device is not one of the above listed devices, compatible with
  the above models, you can try out the "generic" interface. This
  interface does not provide any type of control messages sent to the
  device, and does not support any kind of device flow control. All that
  is required of your device is that it has at least one bulk in endpoint,
  or one bulk out endpoint.

  To enable the generic driver to recognize your device, provide::

	echo <vid> <pid> >/sys/bus/usb-serial/drivers/generic/new_id

  where the <vid> and <pid> is replaced with the hex representation of your
  device's vendor id and product id.
  If the driver is compiled as a module you can also provide one id when
  loading the module::

	insmod usbserial vendor=0x#### product=0x####

  This driver has been successfully used to connect to the NetChip USB
  development board, providing a way to develop USB firmware without
  having to write a custom driver.

  For any questions or problems with this driver, please contact Greg
  Kroah-Hartman at


  If anyone has any problems using these drivers, with any of the above
  specified products, please contact the specific driver's author listed
  above, or join the Linux-USB mailing list (information on joining the
  mailing list, as well as a link to its searchable archive is at )

Greg Kroah-Hartman