1.. _admin_devices: 2 3Linux allocated devices (4.x+ version) 4====================================== 5 6This list is the Linux Device List, the official registry of allocated 7device numbers and ``/dev`` directory nodes for the Linux operating 8system. 9 10The version of this document at lanana.org is no longer maintained. This 11version in the mainline Linux kernel is the master document. Updates 12shall be sent as patches to the kernel maintainers (see the 13:ref:`Documentation/process/submitting-patches.rst <submittingpatches>` document). 14Specifically explore the sections titled "CHAR and MISC DRIVERS", and 15"BLOCK LAYER" in the MAINTAINERS file to find the right maintainers 16to involve for character and block devices. 17 18This document is included by reference into the Filesystem Hierarchy 19Standard (FHS). The FHS is available from https://www.pathname.com/fhs/. 20 21Allocations marked (68k/Amiga) apply to Linux/68k on the Amiga 22platform only. Allocations marked (68k/Atari) apply to Linux/68k on 23the Atari platform only. 24 25This document is in the public domain. The authors requests, however, 26that semantically altered versions are not distributed without 27permission of the authors, assuming the authors can be contacted without 28an unreasonable effort. 29 30 31.. attention:: 32 33 DEVICE DRIVERS AUTHORS PLEASE READ THIS 34 35 Linux now has extensive support for dynamic allocation of device numbering 36 and can use ``sysfs`` and ``udev`` (``systemd``) to handle the naming needs. 37 There are still some exceptions in the serial and boot device area. Before 38 asking for a device number make sure you actually need one. 39 40 To have a major number allocated, or a minor number in situations 41 where that applies (e.g. busmice), please submit a patch and send to 42 the authors as indicated above. 43 44 Keep the description of the device *in the same format 45 as this list*. The reason for this is that it is the only way we have 46 found to ensure we have all the requisite information to publish your 47 device and avoid conflicts. 48 49 Finally, sometimes we have to play "namespace police." Please don't be 50 offended. We often get submissions for ``/dev`` names that would be bound 51 to cause conflicts down the road. We are trying to avoid getting in a 52 situation where we would have to suffer an incompatible forward 53 change. Therefore, please consult with us **before** you make your 54 device names and numbers in any way public, at least to the point 55 where it would be at all difficult to get them changed. 56 57 Your cooperation is appreciated. 58 59.. include:: devices.txt 60 :literal: 61 62Additional ``/dev/`` directory entries 63-------------------------------------- 64 65This section details additional entries that should or may exist in 66the /dev directory. It is preferred that symbolic links use the same 67form (absolute or relative) as is indicated here. Links are 68classified as "hard" or "symbolic" depending on the preferred type of 69link; if possible, the indicated type of link should be used. 70 71Compulsory links 72++++++++++++++++ 73 74These links should exist on all systems: 75 76=============== =============== =============== =============================== 77/dev/fd /proc/self/fd symbolic File descriptors 78/dev/stdin fd/0 symbolic stdin file descriptor 79/dev/stdout fd/1 symbolic stdout file descriptor 80/dev/stderr fd/2 symbolic stderr file descriptor 81/dev/nfsd socksys symbolic Required by iBCS-2 82/dev/X0R null symbolic Required by iBCS-2 83=============== =============== =============== =============================== 84 85Note: ``/dev/X0R`` is <letter X>-<digit 0>-<letter R>. 86 87Recommended links 88+++++++++++++++++ 89 90It is recommended that these links exist on all systems: 91 92 93=============== =============== =============== =============================== 94/dev/core /proc/kcore symbolic Backward compatibility 95/dev/ramdisk ram0 symbolic Backward compatibility 96/dev/ftape qft0 symbolic Backward compatibility 97/dev/bttv0 video0 symbolic Backward compatibility 98/dev/radio radio0 symbolic Backward compatibility 99/dev/i2o* /dev/i2o/* symbolic Backward compatibility 100=============== =============== =============== =============================== 101 102Suggested earlier ``/dev/scd?`` alternative names for ``/dev/sr?`` 103CD-ROM and other optical drives (using SCSI commands) were removed 104in ``udev`` version 174 that was released in 2011. 105 106Locally defined links 107+++++++++++++++++++++ 108 109The following links may be established locally to conform to the 110configuration of the system. This is merely a tabulation of existing 111practice, and does not constitute a recommendation. However, if they 112exist, they should have the following uses. 113 114=============== =============== =============== =============================== 115/dev/mouse mouse port symbolic Current mouse device 116/dev/tape tape device symbolic Current tape device 117/dev/cdrom CD-ROM device symbolic Current CD-ROM device 118/dev/cdwriter CD-writer symbolic Current CD-writer device 119/dev/scanner scanner symbolic Current scanner device 120/dev/modem modem port symbolic Current dialout device 121/dev/root root device symbolic Current root filesystem 122/dev/swap swap device symbolic Current swap device 123=============== =============== =============== =============================== 124 125``/dev/modem`` should not be used for a modem which supports dialin as 126well as dialout, as it tends to cause lock file problems. If it 127exists, ``/dev/modem`` should point to the appropriate primary TTY device 128(the use of the alternate callout devices is deprecated). 129 130For SCSI devices, ``/dev/tape`` and ``/dev/cdrom`` should point to the 131*cooked* devices (``/dev/st*`` and ``/dev/sr*``, respectively), whereas 132``/dev/cdwriter`` and /dev/scanner should point to the appropriate generic 133SCSI devices (/dev/sg*). 134 135``/dev/mouse`` may point to a primary serial TTY device, a hardware mouse 136device, or a socket for a mouse driver program (e.g. ``/dev/gpmdata``). 137 138Sockets and pipes 139+++++++++++++++++ 140 141Non-transient sockets and named pipes may exist in /dev. Common entries are: 142 143=============== =============== =============================================== 144/dev/printer socket lpd local socket 145/dev/log socket syslog local socket 146/dev/gpmdata socket gpm mouse multiplexer 147=============== =============== =============================================== 148 149Mount points 150++++++++++++ 151 152The following names are reserved for mounting special filesystems 153under /dev. These special filesystems provide kernel interfaces that 154cannot be provided with standard device nodes. 155 156=============== =============== =============================================== 157/dev/pts devpts PTY slave filesystem 158/dev/shm tmpfs POSIX shared memory maintenance access 159=============== =============== =============================================== 160 161Terminal devices 162---------------- 163 164Terminal, or TTY devices are a special class of character devices. A 165terminal device is any device that could act as a controlling terminal 166for a session; this includes virtual consoles, serial ports, and 167pseudoterminals (PTYs). 168 169All terminal devices share a common set of capabilities known as line 170disciplines; these include the common terminal line discipline as well 171as SLIP and PPP modes. 172 173All terminal devices are named similarly; this section explains the 174naming and use of the various types of TTYs. Note that the naming 175conventions include several historical warts; some of these are 176Linux-specific, some were inherited from other systems, and some 177reflect Linux outgrowing a borrowed convention. 178 179A hash mark (``#``) in a device name is used here to indicate a decimal 180number without leading zeroes. 181 182Virtual consoles and the console device 183+++++++++++++++++++++++++++++++++++++++ 184 185Virtual consoles are full-screen terminal displays on the system video 186monitor. Virtual consoles are named ``/dev/tty#``, with numbering 187starting at ``/dev/tty1``; ``/dev/tty0`` is the current virtual console. 188``/dev/tty0`` is the device that should be used to access the system video 189card on those architectures for which the frame buffer devices 190(``/dev/fb*``) are not applicable. Do not use ``/dev/console`` 191for this purpose. 192 193The console device, ``/dev/console``, is the device to which system 194messages should be sent, and on which logins should be permitted in 195single-user mode. Starting with Linux 2.1.71, ``/dev/console`` is managed 196by the kernel; for previous versions it should be a symbolic link to 197either ``/dev/tty0``, a specific virtual console such as ``/dev/tty1``, or to 198a serial port primary (``tty*``, not ``cu*``) device, depending on the 199configuration of the system. 200 201Serial ports 202++++++++++++ 203 204Serial ports are RS-232 serial ports and any device which simulates 205one, either in hardware (such as internal modems) or in software (such 206as the ISDN driver.) Under Linux, each serial ports has two device 207names, the primary or callin device and the alternate or callout one. 208Each kind of device is indicated by a different letter. For any 209letter X, the names of the devices are ``/dev/ttyX#`` and ``/dev/cux#``, 210respectively; for historical reasons, ``/dev/ttyS#`` and ``/dev/ttyC#`` 211correspond to ``/dev/cua#`` and ``/dev/cub#``. In the future, it should be 212expected that multiple letters will be used; all letters will be upper 213case for the "tty" device (e.g. ``/dev/ttyDP#``) and lower case for the 214"cu" device (e.g. ``/dev/cudp#``). 215 216The names ``/dev/ttyQ#`` and ``/dev/cuq#`` are reserved for local use. 217 218The alternate devices provide for kernel-based exclusion and somewhat 219different defaults than the primary devices. Their main purpose is to 220allow the use of serial ports with programs with no inherent or broken 221support for serial ports. Their use is deprecated, and they may be 222removed from a future version of Linux. 223 224Arbitration of serial ports is provided by the use of lock files with 225the names ``/var/lock/LCK..ttyX#``. The contents of the lock file should 226be the PID of the locking process as an ASCII number. 227 228It is common practice to install links such as /dev/modem 229which point to serial ports. In order to ensure proper locking in the 230presence of these links, it is recommended that software chase 231symlinks and lock all possible names; additionally, it is recommended 232that a lock file be installed with the corresponding alternate 233device. In order to avoid deadlocks, it is recommended that the locks 234are acquired in the following order, and released in the reverse: 235 236 1. The symbolic link name, if any (``/var/lock/LCK..modem``) 237 2. The "tty" name (``/var/lock/LCK..ttyS2``) 238 3. The alternate device name (``/var/lock/LCK..cua2``) 239 240In the case of nested symbolic links, the lock files should be 241installed in the order the symlinks are resolved. 242 243Under no circumstances should an application hold a lock while waiting 244for another to be released. In addition, applications which attempt 245to create lock files for the corresponding alternate device names 246should take into account the possibility of being used on a non-serial 247port TTY, for which no alternate device would exist. 248 249Pseudoterminals (PTYs) 250++++++++++++++++++++++ 251 252Pseudoterminals, or PTYs, are used to create login sessions or provide 253other capabilities requiring a TTY line discipline (including SLIP or 254PPP capability) to arbitrary data-generation processes. Each PTY has 255a master side, named ``/dev/pty[p-za-e][0-9a-f]``, and a slave side, named 256``/dev/tty[p-za-e][0-9a-f]``. The kernel arbitrates the use of PTYs by 257allowing each master side to be opened only once. 258 259Once the master side has been opened, the corresponding slave device 260can be used in the same manner as any TTY device. The master and 261slave devices are connected by the kernel, generating the equivalent 262of a bidirectional pipe with TTY capabilities. 263 264Recent versions of the Linux kernels and GNU libc contain support for 265the System V/Unix98 naming scheme for PTYs, which assigns a common 266device, ``/dev/ptmx``, to all the masters (opening it will automatically 267give you a previously unassigned PTY) and a subdirectory, ``/dev/pts``, 268for the slaves; the slaves are named with decimal integers (``/dev/pts/#`` 269in our notation). This removes the problem of exhausting the 270namespace and enables the kernel to automatically create the device 271nodes for the slaves on demand using the "devpts" filesystem. 272