|  | .. _admin_devices: | 
|  |  | 
|  | Linux allocated devices (4.x+ version) | 
|  | ====================================== | 
|  |  | 
|  | This list is the Linux Device List, the official registry of allocated | 
|  | device numbers and ``/dev`` directory nodes for the Linux operating | 
|  | system. | 
|  |  | 
|  | The LaTeX version of this document is no longer maintained, nor is | 
|  | the document that used to reside at lanana.org.  This version in the | 
|  | mainline Linux kernel is the master document.  Updates shall be sent | 
|  | as patches to the kernel maintainers (see the | 
|  | :ref:`Documentation/process/submitting-patches.rst <submittingpatches>` document). | 
|  | Specifically explore the sections titled "CHAR and MISC DRIVERS", and | 
|  | "BLOCK LAYER" in the MAINTAINERS file to find the right maintainers | 
|  | to involve for character and block devices. | 
|  |  | 
|  | This document is included by reference into the Filesystem Hierarchy | 
|  | Standard (FHS).	 The FHS is available from https://www.pathname.com/fhs/. | 
|  |  | 
|  | Allocations marked (68k/Amiga) apply to Linux/68k on the Amiga | 
|  | platform only.	Allocations marked (68k/Atari) apply to Linux/68k on | 
|  | the Atari platform only. | 
|  |  | 
|  | This document is in the public domain.	The authors requests, however, | 
|  | that semantically altered versions are not distributed without | 
|  | permission of the authors, assuming the authors can be contacted without | 
|  | an unreasonable effort. | 
|  |  | 
|  |  | 
|  | .. attention:: | 
|  |  | 
|  | DEVICE DRIVERS AUTHORS PLEASE READ THIS | 
|  |  | 
|  | Linux now has extensive support for dynamic allocation of device numbering | 
|  | and can use ``sysfs`` and ``udev`` (``systemd``) to handle the naming needs. | 
|  | There are still some exceptions in the serial and boot device area. Before | 
|  | asking   for a device number make sure you actually need one. | 
|  |  | 
|  | To have a major number allocated, or a minor number in situations | 
|  | where that applies (e.g. busmice), please submit a patch and send to | 
|  | the authors as indicated above. | 
|  |  | 
|  | Keep the description of the device *in the same format | 
|  | as this list*. The reason for this is that it is the only way we have | 
|  | found to ensure we have all the requisite information to publish your | 
|  | device and avoid conflicts. | 
|  |  | 
|  | Finally, sometimes we have to play "namespace police."  Please don't be | 
|  | offended.  We often get submissions for ``/dev`` names that would be bound | 
|  | to cause conflicts down the road.  We are trying to avoid getting in a | 
|  | situation where we would have to suffer an incompatible forward | 
|  | change.  Therefore, please consult with us **before** you make your | 
|  | device names and numbers in any way public, at least to the point | 
|  | where it would be at all difficult to get them changed. | 
|  |  | 
|  | Your cooperation is appreciated. | 
|  |  | 
|  | .. include:: devices.txt | 
|  | :literal: | 
|  |  | 
|  | Additional ``/dev/`` directory entries | 
|  | -------------------------------------- | 
|  |  | 
|  | This section details additional entries that should or may exist in | 
|  | the /dev directory.  It is preferred that symbolic links use the same | 
|  | form (absolute or relative) as is indicated here.  Links are | 
|  | classified as "hard" or "symbolic" depending on the preferred type of | 
|  | link; if possible, the indicated type of link should be used. | 
|  |  | 
|  | Compulsory links | 
|  | ++++++++++++++++ | 
|  |  | 
|  | These links should exist on all systems: | 
|  |  | 
|  | =============== =============== =============== =============================== | 
|  | /dev/fd		/proc/self/fd	symbolic	File descriptors | 
|  | /dev/stdin	fd/0		symbolic	stdin file descriptor | 
|  | /dev/stdout	fd/1		symbolic	stdout file descriptor | 
|  | /dev/stderr	fd/2		symbolic	stderr file descriptor | 
|  | /dev/nfsd	socksys		symbolic	Required by iBCS-2 | 
|  | /dev/X0R	null		symbolic	Required by iBCS-2 | 
|  | =============== =============== =============== =============================== | 
|  |  | 
|  | Note: ``/dev/X0R`` is <letter X>-<digit 0>-<letter R>. | 
|  |  | 
|  | Recommended links | 
|  | +++++++++++++++++ | 
|  |  | 
|  | It is recommended that these links exist on all systems: | 
|  |  | 
|  |  | 
|  | =============== =============== =============== =============================== | 
|  | /dev/core	/proc/kcore	symbolic	Backward compatibility | 
|  | /dev/ramdisk	ram0		symbolic	Backward compatibility | 
|  | /dev/ftape	qft0		symbolic	Backward compatibility | 
|  | /dev/bttv0	video0		symbolic	Backward compatibility | 
|  | /dev/radio	radio0		symbolic	Backward compatibility | 
|  | /dev/i2o*	/dev/i2o/*	symbolic	Backward compatibility | 
|  | /dev/scd?	sr?		hard		Alternate SCSI CD-ROM name | 
|  | =============== =============== =============== =============================== | 
|  |  | 
|  | Locally defined links | 
|  | +++++++++++++++++++++ | 
|  |  | 
|  | The following links may be established locally to conform to the | 
|  | configuration of the system.  This is merely a tabulation of existing | 
|  | practice, and does not constitute a recommendation.  However, if they | 
|  | exist, they should have the following uses. | 
|  |  | 
|  | =============== =============== =============== =============================== | 
|  | /dev/mouse	mouse port	symbolic	Current mouse device | 
|  | /dev/tape	tape device	symbolic	Current tape device | 
|  | /dev/cdrom	CD-ROM device	symbolic	Current CD-ROM device | 
|  | /dev/cdwriter	CD-writer	symbolic	Current CD-writer device | 
|  | /dev/scanner	scanner		symbolic	Current scanner device | 
|  | /dev/modem	modem port	symbolic	Current dialout device | 
|  | /dev/root	root device	symbolic	Current root filesystem | 
|  | /dev/swap	swap device	symbolic	Current swap device | 
|  | =============== =============== =============== =============================== | 
|  |  | 
|  | ``/dev/modem`` should not be used for a modem which supports dialin as | 
|  | well as dialout, as it tends to cause lock file problems.  If it | 
|  | exists, ``/dev/modem`` should point to the appropriate primary TTY device | 
|  | (the use of the alternate callout devices is deprecated). | 
|  |  | 
|  | For SCSI devices, ``/dev/tape`` and ``/dev/cdrom`` should point to the | 
|  | *cooked* devices (``/dev/st*`` and ``/dev/sr*``, respectively), whereas | 
|  | ``/dev/cdwriter`` and /dev/scanner should point to the appropriate generic | 
|  | SCSI devices (/dev/sg*). | 
|  |  | 
|  | ``/dev/mouse`` may point to a primary serial TTY device, a hardware mouse | 
|  | device, or a socket for a mouse driver program (e.g. ``/dev/gpmdata``). | 
|  |  | 
|  | Sockets and pipes | 
|  | +++++++++++++++++ | 
|  |  | 
|  | Non-transient sockets and named pipes may exist in /dev.  Common entries are: | 
|  |  | 
|  | =============== =============== =============================================== | 
|  | /dev/printer	socket		lpd local socket | 
|  | /dev/log	socket		syslog local socket | 
|  | /dev/gpmdata	socket		gpm mouse multiplexer | 
|  | =============== =============== =============================================== | 
|  |  | 
|  | Mount points | 
|  | ++++++++++++ | 
|  |  | 
|  | The following names are reserved for mounting special filesystems | 
|  | under /dev.  These special filesystems provide kernel interfaces that | 
|  | cannot be provided with standard device nodes. | 
|  |  | 
|  | =============== =============== =============================================== | 
|  | /dev/pts	devpts		PTY slave filesystem | 
|  | /dev/shm	tmpfs		POSIX shared memory maintenance access | 
|  | =============== =============== =============================================== | 
|  |  | 
|  | Terminal devices | 
|  | ---------------- | 
|  |  | 
|  | Terminal, or TTY devices are a special class of character devices.  A | 
|  | terminal device is any device that could act as a controlling terminal | 
|  | for a session; this includes virtual consoles, serial ports, and | 
|  | pseudoterminals (PTYs). | 
|  |  | 
|  | All terminal devices share a common set of capabilities known as line | 
|  | disciplines; these include the common terminal line discipline as well | 
|  | as SLIP and PPP modes. | 
|  |  | 
|  | All terminal devices are named similarly; this section explains the | 
|  | naming and use of the various types of TTYs.  Note that the naming | 
|  | conventions include several historical warts; some of these are | 
|  | Linux-specific, some were inherited from other systems, and some | 
|  | reflect Linux outgrowing a borrowed convention. | 
|  |  | 
|  | A hash mark (``#``) in a device name is used here to indicate a decimal | 
|  | number without leading zeroes. | 
|  |  | 
|  | Virtual consoles and the console device | 
|  | +++++++++++++++++++++++++++++++++++++++ | 
|  |  | 
|  | Virtual consoles are full-screen terminal displays on the system video | 
|  | monitor.  Virtual consoles are named ``/dev/tty#``, with numbering | 
|  | starting at ``/dev/tty1``; ``/dev/tty0`` is the current virtual console. | 
|  | ``/dev/tty0`` is the device that should be used to access the system video | 
|  | card on those architectures for which the frame buffer devices | 
|  | (``/dev/fb*``) are not applicable. Do not use ``/dev/console`` | 
|  | for this purpose. | 
|  |  | 
|  | The console device, ``/dev/console``, is the device to which system | 
|  | messages should be sent, and on which logins should be permitted in | 
|  | single-user mode.  Starting with Linux 2.1.71, ``/dev/console`` is managed | 
|  | by the kernel; for previous versions it should be a symbolic link to | 
|  | either ``/dev/tty0``, a specific virtual console such as ``/dev/tty1``, or to | 
|  | a serial port primary (``tty*``, not ``cu*``) device, depending on the | 
|  | configuration of the system. | 
|  |  | 
|  | Serial ports | 
|  | ++++++++++++ | 
|  |  | 
|  | Serial ports are RS-232 serial ports and any device which simulates | 
|  | one, either in hardware (such as internal modems) or in software (such | 
|  | as the ISDN driver.)  Under Linux, each serial ports has two device | 
|  | names, the primary or callin device and the alternate or callout one. | 
|  | Each kind of device is indicated by a different letter.	 For any | 
|  | letter X, the names of the devices are ``/dev/ttyX#`` and ``/dev/cux#``, | 
|  | respectively; for historical reasons, ``/dev/ttyS#`` and ``/dev/ttyC#`` | 
|  | correspond to ``/dev/cua#`` and ``/dev/cub#``. In the future, it should be | 
|  | expected that multiple letters will be used; all letters will be upper | 
|  | case for the "tty" device (e.g. ``/dev/ttyDP#``) and lower case for the | 
|  | "cu" device (e.g. ``/dev/cudp#``). | 
|  |  | 
|  | The names ``/dev/ttyQ#`` and ``/dev/cuq#`` are reserved for local use. | 
|  |  | 
|  | The alternate devices provide for kernel-based exclusion and somewhat | 
|  | different defaults than the primary devices.  Their main purpose is to | 
|  | allow the use of serial ports with programs with no inherent or broken | 
|  | support for serial ports.  Their use is deprecated, and they may be | 
|  | removed from a future version of Linux. | 
|  |  | 
|  | Arbitration of serial ports is provided by the use of lock files with | 
|  | the names ``/var/lock/LCK..ttyX#``. The contents of the lock file should | 
|  | be the PID of the locking process as an ASCII number. | 
|  |  | 
|  | It is common practice to install links such as /dev/modem | 
|  | which point to serial ports.  In order to ensure proper locking in the | 
|  | presence of these links, it is recommended that software chase | 
|  | symlinks and lock all possible names; additionally, it is recommended | 
|  | that a lock file be installed with the corresponding alternate | 
|  | device.	 In order to avoid deadlocks, it is recommended that the locks | 
|  | are acquired in the following order, and released in the reverse: | 
|  |  | 
|  | 1. The symbolic link name, if any (``/var/lock/LCK..modem``) | 
|  | 2. The "tty" name (``/var/lock/LCK..ttyS2``) | 
|  | 3. The alternate device name (``/var/lock/LCK..cua2``) | 
|  |  | 
|  | In the case of nested symbolic links, the lock files should be | 
|  | installed in the order the symlinks are resolved. | 
|  |  | 
|  | Under no circumstances should an application hold a lock while waiting | 
|  | for another to be released.  In addition, applications which attempt | 
|  | to create lock files for the corresponding alternate device names | 
|  | should take into account the possibility of being used on a non-serial | 
|  | port TTY, for which no alternate device would exist. | 
|  |  | 
|  | Pseudoterminals (PTYs) | 
|  | ++++++++++++++++++++++ | 
|  |  | 
|  | Pseudoterminals, or PTYs, are used to create login sessions or provide | 
|  | other capabilities requiring a TTY line discipline (including SLIP or | 
|  | PPP capability) to arbitrary data-generation processes.	 Each PTY has | 
|  | a master side, named ``/dev/pty[p-za-e][0-9a-f]``, and a slave side, named | 
|  | ``/dev/tty[p-za-e][0-9a-f]``.  The kernel arbitrates the use of PTYs by | 
|  | allowing each master side to be opened only once. | 
|  |  | 
|  | Once the master side has been opened, the corresponding slave device | 
|  | can be used in the same manner as any TTY device.  The master and | 
|  | slave devices are connected by the kernel, generating the equivalent | 
|  | of a bidirectional pipe with TTY capabilities. | 
|  |  | 
|  | Recent versions of the Linux kernels and GNU libc contain support for | 
|  | the System V/Unix98 naming scheme for PTYs, which assigns a common | 
|  | device, ``/dev/ptmx``, to all the masters (opening it will automatically | 
|  | give you a previously unassigned PTY) and a subdirectory, ``/dev/pts``, | 
|  | for the slaves; the slaves are named with decimal integers (``/dev/pts/#`` | 
|  | in our notation).  This removes the problem of exhausting the | 
|  | namespace and enables the kernel to automatically create the device | 
|  | nodes for the slaves on demand using the "devpts" filesystem. |