| ~~~~~~~~~~~~~~~~~~ |
| Device Identifiers |
| ~~~~~~~~~~~~~~~~~~ |
| |
| .. include:: prologue.rst |
| |
| Description |
| =========== |
| |
| The general syntax of a device identifier is: |
| |
| .. parsed-literal:: qualifier:parameter=value+... |
| |
| More specifically, with [brackets] meaning optional, the syntax is: |
| |
| .. parsed-literal:: [qualifier:][parameter=]value[+parameter=value]... |
| |
| The qualifier specifies which class of device is being identified. |
| It is separated from the rest of the device identifier by a colon (``:``). |
| It may be one of: |
| |
| ========== ======================= |
| Qualifier Assumed First Parameter |
| ---------- ----------------------- |
| serial: name= |
| usb: serialNumber= |
| bluetooth: address= |
| hid: address= |
| null: |
| ========== ======================= |
| |
| The qualifier is case insensitive, and any abbreviation may be used. |
| For backward compatibility (to when a device identifier was |
| strictly interpreted as the absolute path to a serial device), |
| the qualifier (along with its colon delimiter) is optional, |
| and, if it isn't supplied, ``serial`` is assumed. |
| |
| One or more parameters may be supplied after the qualifier. |
| Each parameter is specified as its name and its value, |
| in that order, separated by an equals (``=``) sign. |
| Parameters are separated from one another by a plus (``+``) sign. |
| Parameter names are case insensitive, and any abbreviation may be used. |
| Supplying a zero-length value means to use the parameter's default value. |
| |
| For backward compatibility |
| (to when device identifier parameters weren't supported), |
| the first supplied parameter is special |
| in that its name (along with its equals sign delimiter) is optional. |
| If the name of the first parameter isn't supplied then the |
| class-dependent parameter that most specifically identifies the device is assumed. |
| See the table above for which parameter is assumed for each class. |
| |
| It isn't possible to supply no parameters at all. |
| Specifying only the qualifier is equivalent to also specifying |
| a zero-length value for the assumed first parameter for that class. |
| For example, specifying ``usb:`` is equivalent to specifying ``usb:serialNumber=``. |
| |
| An example to illustrate the optionality of both the qualifier |
| and the name of the first supplied parameter: |
| |
| * On Linux, the name of the first serial device is ``ttyS0``. |
| All of the following device identifiers refer to the same serial device:: |
| |
| serial:name=ttyS0 |
| serial:ttyS0 |
| ttyS0 |
| name=ttyS0 |
| |
| Serial Device Identifiers |
| ------------------------- |
| |
| Serial device identifiers support the following parameters: |
| |
| =============== ========================================================= |
| Name Value |
| --------------- --------------------------------------------------------- |
| ``name`` name of, relative path to, or absolute path to the device |
| ``baud`` the data transmission/reception rate (bits per second) |
| ``dataBits`` the number of data bits per character |
| ``stopBits`` the number of stop bits per character |
| ``parity`` ``none``, ``odd``, ``even``, ``space``, ``mark`` |
| ``flowControl`` ``none``, ``hardware`` |
| =============== ========================================================= |
| |
| All of the parameters are optional, |
| although the ``name=`` parameter should be supplied. |
| It shouldn't normally be necessary to supply any of the others, |
| especially since, in most cases, the braille driver overrides them. |
| |
| ``name=`` |
| Specify the host device to use. It must be the name of the device, the |
| relative path to the device, or the absolute path to the device. If it's either |
| a name or a relative path then the host's device directory (usually ``/dev`` |
| on Unix-based platforms) is used. If this parameter isn't supplied then the |
| primary (first) serial device is assumed. |
| |
| ``baud=`` |
| Specify the speed, in bits per second, at which to communicate with the |
| device. It must be a positive integer. Typical values are: ``9600``, ``19200``, |
| ``38400``, ``57600``, ``115200``. If this parameter isn't supplied then |
| ``9600`` is assumed. |
| |
| ``dataBits=`` |
| Specify the number of bits to use to represent a character, not including |
| any metadata (start bit, stop bit(s), parity, etc). It must be a positive integer, |
| and is usually within the range ``5``-``8``. If this parameter isn't |
| supplied then ``8`` is assumed. |
| |
| ``stopBits=`` |
| Specify the number of stop bits to inject after a character has been |
| transmitted and to expect after a character has been received. It must be |
| a positive integer, and is usually either ``1`` (for higher speeds) or ``2`` (for |
| lower speeds). If this parameter isn't supplied then ``1`` is assumed. |
| |
| ``parity=`` |
| Specify the type of error detection to use. It must be one of: ``none``, |
| ``odd``, ``even``, ``space``, ``mark``. If this parameter isn't supplied |
| then ``none`` is assumed. |
| |
| ``flowControl=`` |
| Specify the kind of flow control to use. It must be one of: ``none``, |
| ``hardware``. If this parameter isn't supplied then ``none`` is assumed. |
| |
| USB Device Identifiers |
| ---------------------- |
| |
| USB device identifiers support the following parameters: |
| |
| ====================== =================================================== |
| Name Value |
| ---------------------- --------------------------------------------------- |
| ``serialNumber=`` one or more arbitrary characters |
| ``vendorIdentifier=`` an integer within the range 1-65535 (0X0001-0XFFFF) |
| ``productIdentifier=`` an integer within the range 1-65535 (0X0001-0XFFFF) |
| ``genericDevices=`` ``yes``, ``no`` |
| ====================== =================================================== |
| |
| All of the parameters are optional. It shouldn't normally be necessary to |
| supply any of them. |
| |
| ``serialNumber=`` |
| Specify the serial number that the device must have. The match is case |
| sensitive and must be exact. If this parameter isn't supplied then the |
| serial number of the device isn't verified. |
| |
| ``vendorIdentifier=`` |
| Specify the vendor identifier that the device must have. It must be an |
| integer within the range ``1``-``65535`` (or, in hexadecimal, |
| ``0X0001``-``0XFFFF``). If this parameter isn't supplied then the vendor |
| identifier of the device isn't verified. |
| |
| ``productIdentifier=`` |
| Specify the product identifier that the device must have. It must be an |
| integer within the range ``1``-``65535`` (or, in hexadecimal, |
| ``0X0001``-``0XFFFF``). If this parameter isn't supplied then the product |
| identifier of the device isn't verified. |
| ``genericDevices=`` |
| Specify whether or not a device that has a generic vendor/product identifier |
| pair may be used. It's value must be either ``yes`` or ``no``. The check is |
| case insensitive, and any abbreviation may be used. If this parameter isn't |
| supplied then ``yes`` is assumed. |
| |
| Bluetooth Device Identifiers |
| ---------------------------- |
| |
| Bluetooth device identifiers support the following parameters: |
| |
| ============= ============================================================= |
| Name Value |
| ------------- ------------------------------------------------------------- |
| ``address=`` six two-digit hexadecimal numbers separated by ``:`` or ``-`` |
| ``name=`` one or more arbitrary characters |
| ``channel=`` an integer within the range ``1``-``30`` |
| ``discover=`` ``yes``, ``no`` |
| ``timeout=`` an integer within the range ``1``-``59`` |
| ============= ============================================================= |
| |
| All of the parameters are optional except that |
| the ``address=`` parameter is required on platforms where |
| BRLTTY can't yet detect a Bluetooth device based on its name. |
| It shouldn't normally be necessary to supply any of the others. |
| |
| BRLTTY can detect a Bluetooth device by name on the following platforms: |
| |
| * Android |
| * Linux (if the Bluetooth version is at least 5) |
| * Windows |
| |
| ``address=`` |
| Specify the MAC address of the device. It must be six two-digit |
| hexadecimal numbers (the "letter" digits may be in either case) separated |
| from one another by either a colon (``:``) or a minus (``-``) sign. |
| |
| ``name=`` |
| Specify the name of the device. It must be one or more |
| arbitrary characters. They need only match the beginning (so not |
| necessarily all) of the name. Case is significant. |
| Only the names of paired devices are considered. |
| This parameter is ignored if the ``address=`` parameter has been specified. |
| |
| ``channel=`` |
| Specify the RFCOMM channel to use. It must be an integer within the range |
| ``1``-``30``. If this parameter isn't supplied then either a driver-supplied |
| default channel number is assumed or service discovery is performed. |
| |
| ``discover=`` |
| Specify whether or not service discovery is to be performed. In other words, |
| this parameter specifies whether or not the device is to be "asked" for the |
| RFCOMM channel number. It must be either ``yes`` or ``no``. The check is |
| case insensitive, and any abbreviation may be used. If this parameter isn't |
| supplied then whether or not service discovery is performed is decided |
| according to the following sequence of tests: |
| |
| 1) If the ``channel=`` parameter has been supplied, then **no**. |
| 2) If the driver has requested service discovery, then **yes**. |
| 3) If the driver has specified a default channel number, then **no**. |
| 4) Otherwise, **no**. |
| |
| ``timeout=`` |
| Specify the number of seconds to wait for a connection to the device to be |
| acquired. It must be an integer within the range ``1``-``59``. If this |
| parameter isn't supplied then a reasonable default is assumed. |
| |
| HID Device Identifiers |
| ---------------------- |
| |
| HID device identifiers support the following parameters: |
| |
| ================= ============================ |
| Name Value |
| ----------------- ---------------------------- |
| ``address=`` Bluetooth MAC address |
| ``name=`` Bluetooth device name |
| ``manufacturer=`` USB device manufacturer |
| ``description=`` USB product description |
| ``serialNumber=`` USB serial number |
| ``vendor=`` four hexadecimal digits |
| ``product=`` four hexadecimal digits |
| ================= ============================ |
| |
| All of the parameters are optional, although, in most cases, |
| either the ``serialNumber=`` parameter (for a USB device) |
| or the ``address=`` parameter (for a Bluetooth device) |
| should be supplied. |
| USB-specific and Bluetooth-specific parameters may not be combined. |
| |
| ``address=`` |
| The MAC address of a Bluetooth device. |
| It must be six two-digit hexadecimal numbers |
| separated from one another by a colon (``:``). |
| The letter digits may be in either case. |
| |
| ``name=`` |
| The name of a Bluetooth device. |
| Only the start of the name is matched. |
| Matching is case insensitive. |
| |
| ``manufacturer=`` |
| The name of the manufacturer of a USB device. |
| Only the start of the name is matched. |
| Matching is case insensitive. |
| |
| ``description=`` |
| The product description of a USB device. |
| Only the start of the description is matched. |
| Matching is case insensitive. |
| |
| ``serialNumber=`` |
| The serial number of a USB device. |
| Only the start of the serial number is matched. |
| Matching is case insensitive. |
| |
| ``vendor=`` |
| The vendor identifier of the device. |
| It must be four hexadecimal digits. |
| The letter digits may be in either case. |
| |
| ``product=`` |
| The product identifier of the device. |
| It must be four hexadecimal digits. |
| The letter digits may be in either case. |
| |
| Null Device Identifiers |
| ----------------------- |
| A ``null`` endpoint has the following properties: |
| |
| * It always indicates that input is available. |
| * Reading from it always yields end-of-file. |
| * Writing to it is always successful but does nothing. |
| |