blob: d41671aeaef0614be55dc037833e67f5116fc9e8 [file] [log] [blame]
Federico Vagaf77af632018-11-21 01:35:19 +01001.. _admin_devices:
Linus Torvalds1da177e2005-04-16 15:20:36 -07002
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -03003Linux allocated devices (4.x+ version)
4======================================
Linus Torvalds1da177e2005-04-16 15:20:36 -07005
6This list is the Linux Device List, the official registry of allocated
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -03007device numbers and ``/dev`` directory nodes for the Linux operating
Linus Torvalds1da177e2005-04-16 15:20:36 -07008system.
9
Linus Walleijebdf4042016-02-19 21:17:36 +010010The LaTeX version of this document is no longer maintained, nor is
11the document that used to reside at lanana.org. This version in the
12mainline Linux kernel is the master document. Updates shall be sent
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -030013as patches to the kernel maintainers (see the
Mauro Carvalho Chehab8c27ceff32016-10-18 10:12:27 -020014:ref:`Documentation/process/submitting-patches.rst <submittingpatches>` document).
Linus Walleijebdf4042016-02-19 21:17:36 +010015Specifically explore the sections titled "CHAR and MISC DRIVERS", and
16"BLOCK LAYER" in the MAINTAINERS file to find the right maintainers
17to involve for character and block devices.
Linus Torvalds1da177e2005-04-16 15:20:36 -070018
19This document is included by reference into the Filesystem Hierarchy
20Standard (FHS). The FHS is available from http://www.pathname.com/fhs/.
21
22Allocations marked (68k/Amiga) apply to Linux/68k on the Amiga
23platform only. Allocations marked (68k/Atari) apply to Linux/68k on
24the Atari platform only.
25
Linus Walleijebdf4042016-02-19 21:17:36 +010026This document is in the public domain. The authors requests, however,
Linus Torvalds1da177e2005-04-16 15:20:36 -070027that semantically altered versions are not distributed without
Linus Walleijebdf4042016-02-19 21:17:36 +010028permission of the authors, assuming the authors can be contacted without
Linus Torvalds1da177e2005-04-16 15:20:36 -070029an unreasonable effort.
30
Linus Torvalds1da177e2005-04-16 15:20:36 -070031
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -030032.. attention::
Linus Torvalds1da177e2005-04-16 15:20:36 -070033
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -030034 DEVICE DRIVERS AUTHORS PLEASE READ THIS
Linus Walleijebdf4042016-02-19 21:17:36 +010035
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -030036 Linux now has extensive support for dynamic allocation of device numbering
37 and can use ``sysfs`` and ``udev`` (``systemd``) to handle the naming needs.
38 There are still some exceptions in the serial and boot device area. Before
39 asking for a device number make sure you actually need one.
Linus Torvalds1da177e2005-04-16 15:20:36 -070040
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -030041 To have a major number allocated, or a minor number in situations
42 where that applies (e.g. busmice), please submit a patch and send to
43 the authors as indicated above.
Linus Torvalds1da177e2005-04-16 15:20:36 -070044
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -030045 Keep the description of the device *in the same format
46 as this list*. The reason for this is that it is the only way we have
47 found to ensure we have all the requisite information to publish your
48 device and avoid conflicts.
Linus Torvalds1da177e2005-04-16 15:20:36 -070049
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -030050 Finally, sometimes we have to play "namespace police." Please don't be
51 offended. We often get submissions for ``/dev`` names that would be bound
52 to cause conflicts down the road. We are trying to avoid getting in a
53 situation where we would have to suffer an incompatible forward
54 change. Therefore, please consult with us **before** you make your
55 device names and numbers in any way public, at least to the point
56 where it would be at all difficult to get them changed.
Linus Torvalds1da177e2005-04-16 15:20:36 -070057
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -030058 Your cooperation is appreciated.
Linus Torvalds1da177e2005-04-16 15:20:36 -070059
Jani Nikula07c7e302016-11-03 12:11:50 +020060.. include:: devices.txt
61 :literal:
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -030062
63Additional ``/dev/`` directory entries
64--------------------------------------
Linus Torvalds1da177e2005-04-16 15:20:36 -070065
66This section details additional entries that should or may exist in
67the /dev directory. It is preferred that symbolic links use the same
68form (absolute or relative) as is indicated here. Links are
69classified as "hard" or "symbolic" depending on the preferred type of
70link; if possible, the indicated type of link should be used.
71
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -030072Compulsory links
73++++++++++++++++
Linus Torvalds1da177e2005-04-16 15:20:36 -070074
75These links should exist on all systems:
76
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -030077=============== =============== =============== ===============================
Linus Torvalds1da177e2005-04-16 15:20:36 -070078/dev/fd /proc/self/fd symbolic File descriptors
79/dev/stdin fd/0 symbolic stdin file descriptor
80/dev/stdout fd/1 symbolic stdout file descriptor
81/dev/stderr fd/2 symbolic stderr file descriptor
82/dev/nfsd socksys symbolic Required by iBCS-2
83/dev/X0R null symbolic Required by iBCS-2
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -030084=============== =============== =============== ===============================
Linus Torvalds1da177e2005-04-16 15:20:36 -070085
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -030086Note: ``/dev/X0R`` is <letter X>-<digit 0>-<letter R>.
Linus Torvalds1da177e2005-04-16 15:20:36 -070087
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -030088Recommended links
89+++++++++++++++++
Linus Torvalds1da177e2005-04-16 15:20:36 -070090
91It is recommended that these links exist on all systems:
92
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -030093
94=============== =============== =============== ===============================
Linus Torvalds1da177e2005-04-16 15:20:36 -070095/dev/core /proc/kcore symbolic Backward compatibility
96/dev/ramdisk ram0 symbolic Backward compatibility
97/dev/ftape qft0 symbolic Backward compatibility
98/dev/bttv0 video0 symbolic Backward compatibility
99/dev/radio radio0 symbolic Backward compatibility
100/dev/i2o* /dev/i2o/* symbolic Backward compatibility
101/dev/scd? sr? hard Alternate SCSI CD-ROM name
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300102=============== =============== =============== ===============================
Linus Torvalds1da177e2005-04-16 15:20:36 -0700103
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300104Locally defined links
105+++++++++++++++++++++
Linus Torvalds1da177e2005-04-16 15:20:36 -0700106
107The following links may be established locally to conform to the
108configuration of the system. This is merely a tabulation of existing
109practice, and does not constitute a recommendation. However, if they
110exist, they should have the following uses.
111
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300112=============== =============== =============== ===============================
Linus Torvalds1da177e2005-04-16 15:20:36 -0700113/dev/mouse mouse port symbolic Current mouse device
114/dev/tape tape device symbolic Current tape device
115/dev/cdrom CD-ROM device symbolic Current CD-ROM device
116/dev/cdwriter CD-writer symbolic Current CD-writer device
117/dev/scanner scanner symbolic Current scanner device
118/dev/modem modem port symbolic Current dialout device
119/dev/root root device symbolic Current root filesystem
120/dev/swap swap device symbolic Current swap device
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300121=============== =============== =============== ===============================
Linus Torvalds1da177e2005-04-16 15:20:36 -0700122
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300123``/dev/modem`` should not be used for a modem which supports dialin as
Linus Torvalds1da177e2005-04-16 15:20:36 -0700124well as dialout, as it tends to cause lock file problems. If it
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300125exists, ``/dev/modem`` should point to the appropriate primary TTY device
Linus Torvalds1da177e2005-04-16 15:20:36 -0700126(the use of the alternate callout devices is deprecated).
127
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300128For SCSI devices, ``/dev/tape`` and ``/dev/cdrom`` should point to the
129*cooked* devices (``/dev/st*`` and ``/dev/sr*``, respectively), whereas
130``/dev/cdwriter`` and /dev/scanner should point to the appropriate generic
Linus Torvalds1da177e2005-04-16 15:20:36 -0700131SCSI devices (/dev/sg*).
132
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300133``/dev/mouse`` may point to a primary serial TTY device, a hardware mouse
134device, or a socket for a mouse driver program (e.g. ``/dev/gpmdata``).
Linus Torvalds1da177e2005-04-16 15:20:36 -0700135
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300136Sockets and pipes
137+++++++++++++++++
Linus Torvalds1da177e2005-04-16 15:20:36 -0700138
139Non-transient sockets and named pipes may exist in /dev. Common entries are:
140
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300141=============== =============== ===============================================
Linus Torvalds1da177e2005-04-16 15:20:36 -0700142/dev/printer socket lpd local socket
143/dev/log socket syslog local socket
144/dev/gpmdata socket gpm mouse multiplexer
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300145=============== =============== ===============================================
Linus Torvalds1da177e2005-04-16 15:20:36 -0700146
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300147Mount points
148++++++++++++
Linus Torvalds1da177e2005-04-16 15:20:36 -0700149
150The following names are reserved for mounting special filesystems
151under /dev. These special filesystems provide kernel interfaces that
152cannot be provided with standard device nodes.
153
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300154=============== =============== ===============================================
Linus Torvalds1da177e2005-04-16 15:20:36 -0700155/dev/pts devpts PTY slave filesystem
156/dev/shm tmpfs POSIX shared memory maintenance access
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300157=============== =============== ===============================================
Linus Torvalds1da177e2005-04-16 15:20:36 -0700158
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300159Terminal devices
160----------------
Linus Torvalds1da177e2005-04-16 15:20:36 -0700161
162Terminal, or TTY devices are a special class of character devices. A
163terminal device is any device that could act as a controlling terminal
164for a session; this includes virtual consoles, serial ports, and
165pseudoterminals (PTYs).
166
167All terminal devices share a common set of capabilities known as line
Matt LaPlantefff92892006-10-03 22:47:42 +0200168disciplines; these include the common terminal line discipline as well
Linus Torvalds1da177e2005-04-16 15:20:36 -0700169as SLIP and PPP modes.
170
171All terminal devices are named similarly; this section explains the
172naming and use of the various types of TTYs. Note that the naming
173conventions include several historical warts; some of these are
174Linux-specific, some were inherited from other systems, and some
175reflect Linux outgrowing a borrowed convention.
176
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300177A hash mark (``#``) in a device name is used here to indicate a decimal
Linus Torvalds1da177e2005-04-16 15:20:36 -0700178number without leading zeroes.
179
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300180Virtual consoles and the console device
181+++++++++++++++++++++++++++++++++++++++
Linus Torvalds1da177e2005-04-16 15:20:36 -0700182
183Virtual consoles are full-screen terminal displays on the system video
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300184monitor. Virtual consoles are named ``/dev/tty#``, with numbering
185starting at ``/dev/tty1``; ``/dev/tty0`` is the current virtual console.
186``/dev/tty0`` is the device that should be used to access the system video
Linus Torvalds1da177e2005-04-16 15:20:36 -0700187card on those architectures for which the frame buffer devices
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300188(``/dev/fb*``) are not applicable. Do not use ``/dev/console``
Linus Torvalds1da177e2005-04-16 15:20:36 -0700189for this purpose.
190
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300191The console device, ``/dev/console``, is the device to which system
Linus Torvalds1da177e2005-04-16 15:20:36 -0700192messages should be sent, and on which logins should be permitted in
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300193single-user mode. Starting with Linux 2.1.71, ``/dev/console`` is managed
Linus Torvalds1da177e2005-04-16 15:20:36 -0700194by the kernel; for previous versions it should be a symbolic link to
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300195either ``/dev/tty0``, a specific virtual console such as ``/dev/tty1``, or to
196a serial port primary (``tty*``, not ``cu*``) device, depending on the
Linus Torvalds1da177e2005-04-16 15:20:36 -0700197configuration of the system.
198
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300199Serial ports
200++++++++++++
Linus Torvalds1da177e2005-04-16 15:20:36 -0700201
202Serial ports are RS-232 serial ports and any device which simulates
203one, either in hardware (such as internal modems) or in software (such
204as the ISDN driver.) Under Linux, each serial ports has two device
205names, the primary or callin device and the alternate or callout one.
206Each kind of device is indicated by a different letter. For any
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300207letter X, the names of the devices are ``/dev/ttyX#`` and ``/dev/cux#``,
208respectively; for historical reasons, ``/dev/ttyS#`` and ``/dev/ttyC#``
209correspond to ``/dev/cua#`` and ``/dev/cub#``. In the future, it should be
Linus Torvalds1da177e2005-04-16 15:20:36 -0700210expected that multiple letters will be used; all letters will be upper
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300211case for the "tty" device (e.g. ``/dev/ttyDP#``) and lower case for the
212"cu" device (e.g. ``/dev/cudp#``).
Linus Torvalds1da177e2005-04-16 15:20:36 -0700213
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300214The names ``/dev/ttyQ#`` and ``/dev/cuq#`` are reserved for local use.
Linus Torvalds1da177e2005-04-16 15:20:36 -0700215
216The alternate devices provide for kernel-based exclusion and somewhat
217different defaults than the primary devices. Their main purpose is to
218allow the use of serial ports with programs with no inherent or broken
219support for serial ports. Their use is deprecated, and they may be
220removed from a future version of Linux.
221
222Arbitration of serial ports is provided by the use of lock files with
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300223the names ``/var/lock/LCK..ttyX#``. The contents of the lock file should
Linus Torvalds1da177e2005-04-16 15:20:36 -0700224be the PID of the locking process as an ASCII number.
225
226It is common practice to install links such as /dev/modem
227which point to serial ports. In order to ensure proper locking in the
228presence of these links, it is recommended that software chase
229symlinks and lock all possible names; additionally, it is recommended
230that a lock file be installed with the corresponding alternate
231device. In order to avoid deadlocks, it is recommended that the locks
232are acquired in the following order, and released in the reverse:
233
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300234 1. The symbolic link name, if any (``/var/lock/LCK..modem``)
235 2. The "tty" name (``/var/lock/LCK..ttyS2``)
236 3. The alternate device name (``/var/lock/LCK..cua2``)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700237
238In the case of nested symbolic links, the lock files should be
239installed in the order the symlinks are resolved.
240
241Under no circumstances should an application hold a lock while waiting
242for another to be released. In addition, applications which attempt
243to create lock files for the corresponding alternate device names
244should take into account the possibility of being used on a non-serial
245port TTY, for which no alternate device would exist.
246
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300247Pseudoterminals (PTYs)
248++++++++++++++++++++++
Linus Torvalds1da177e2005-04-16 15:20:36 -0700249
250Pseudoterminals, or PTYs, are used to create login sessions or provide
Matt LaPlantefff92892006-10-03 22:47:42 +0200251other capabilities requiring a TTY line discipline (including SLIP or
Linus Torvalds1da177e2005-04-16 15:20:36 -0700252PPP capability) to arbitrary data-generation processes. Each PTY has
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300253a master side, named ``/dev/pty[p-za-e][0-9a-f]``, and a slave side, named
254``/dev/tty[p-za-e][0-9a-f]``. The kernel arbitrates the use of PTYs by
Linus Torvalds1da177e2005-04-16 15:20:36 -0700255allowing each master side to be opened only once.
256
257Once the master side has been opened, the corresponding slave device
258can be used in the same manner as any TTY device. The master and
259slave devices are connected by the kernel, generating the equivalent
260of a bidirectional pipe with TTY capabilities.
261
262Recent versions of the Linux kernels and GNU libc contain support for
263the System V/Unix98 naming scheme for PTYs, which assigns a common
Mauro Carvalho Chehabd9f92f92016-09-21 15:47:58 -0300264device, ``/dev/ptmx``, to all the masters (opening it will automatically
265give you a previously unassigned PTY) and a subdirectory, ``/dev/pts``,
266for the slaves; the slaves are named with decimal integers (``/dev/pts/#``
Linus Torvalds1da177e2005-04-16 15:20:36 -0700267in our notation). This removes the problem of exhausting the
268namespace and enables the kernel to automatically create the device
269nodes for the slaves on demand using the "devpts" filesystem.