585 lines
19 KiB
Plaintext
585 lines
19 KiB
Plaintext
What: /sys/bus/usb/devices/<INTERFACE>/authorized
|
|
Date: August 2015
|
|
Description:
|
|
This allows to authorize (1) or deauthorize (0)
|
|
individual interfaces instead a whole device
|
|
in contrast to the device authorization.
|
|
If a deauthorized interface will be authorized
|
|
so the driver probing must be triggered manually
|
|
by writing INTERFACE to /sys/bus/usb/drivers_probe
|
|
This allows to avoid side-effects with drivers
|
|
that need multiple interfaces.
|
|
|
|
A deauthorized interface cannot be probed or claimed.
|
|
|
|
What: /sys/bus/usb/devices/usbX/interface_authorized_default
|
|
Date: August 2015
|
|
Description:
|
|
This is used as value that determines if interfaces
|
|
would be authorized by default.
|
|
The value can be 1 or 0. It's by default 1.
|
|
|
|
What: /sys/bus/usb/device/.../authorized
|
|
Date: July 2008
|
|
KernelVersion: 2.6.26
|
|
Contact: David Vrabel <david.vrabel@csr.com>
|
|
Description:
|
|
Authorized devices are available for use by device
|
|
drivers, non-authorized one are not. By default, wired
|
|
USB devices are authorized.
|
|
|
|
Certified Wireless USB devices are not authorized
|
|
initially and should be (by writing 1) after the
|
|
device has been authenticated.
|
|
|
|
What: /sys/bus/usb/device/.../wusb_cdid
|
|
Date: July 2008
|
|
KernelVersion: 2.6.27
|
|
Contact: David Vrabel <david.vrabel@csr.com>
|
|
Description:
|
|
For Certified Wireless USB devices only.
|
|
|
|
A devices's CDID, as 16 space-separated hex octets.
|
|
|
|
What: /sys/bus/usb/device/.../wusb_ck
|
|
Date: July 2008
|
|
KernelVersion: 2.6.27
|
|
Contact: David Vrabel <david.vrabel@csr.com>
|
|
Description:
|
|
For Certified Wireless USB devices only.
|
|
|
|
Write the device's connection key (CK) to start the
|
|
authentication of the device. The CK is 16
|
|
space-separated hex octets.
|
|
|
|
What: /sys/bus/usb/device/.../wusb_disconnect
|
|
Date: July 2008
|
|
KernelVersion: 2.6.27
|
|
Contact: David Vrabel <david.vrabel@csr.com>
|
|
Description:
|
|
For Certified Wireless USB devices only.
|
|
|
|
Write a 1 to force the device to disconnect
|
|
(equivalent to unplugging a wired USB device).
|
|
|
|
What: /sys/bus/usb/drivers/.../new_id
|
|
Date: October 2011
|
|
Contact: linux-usb@vger.kernel.org
|
|
Description:
|
|
Writing a device ID to this file will attempt to
|
|
dynamically add a new device ID to a USB device driver.
|
|
This may allow the driver to support more hardware than
|
|
was included in the driver's static device ID support
|
|
table at compile time. The format for the device ID is:
|
|
idVendor idProduct bInterfaceClass RefIdVendor RefIdProduct
|
|
The vendor ID and device ID fields are required, the
|
|
rest is optional. The `Ref*` tuple can be used to tell the
|
|
driver to use the same driver_data for the new device as
|
|
it is used for the reference device.
|
|
Upon successfully adding an ID, the driver will probe
|
|
for the device and attempt to bind to it. For example::
|
|
|
|
# echo "8086 10f5" > /sys/bus/usb/drivers/foo/new_id
|
|
|
|
Here add a new device (0458:7045) using driver_data from
|
|
an already supported device (0458:704c)::
|
|
|
|
# echo "0458 7045 0 0458 704c" > /sys/bus/usb/drivers/foo/new_id
|
|
|
|
Reading from this file will list all dynamically added
|
|
device IDs in the same format, with one entry per
|
|
line. For example::
|
|
|
|
# cat /sys/bus/usb/drivers/foo/new_id
|
|
8086 10f5
|
|
dead beef 06
|
|
f00d cafe
|
|
|
|
The list will be truncated at PAGE_SIZE bytes due to
|
|
sysfs restrictions.
|
|
|
|
What: /sys/bus/usb-serial/drivers/.../new_id
|
|
Date: October 2011
|
|
Contact: linux-usb@vger.kernel.org
|
|
Description:
|
|
For serial USB drivers, this attribute appears under the
|
|
extra bus folder "usb-serial" in sysfs; apart from that
|
|
difference, all descriptions from the entry
|
|
"/sys/bus/usb/drivers/.../new_id" apply.
|
|
|
|
What: /sys/bus/usb/drivers/.../remove_id
|
|
Date: November 2009
|
|
Contact: CHENG Renquan <rqcheng@smu.edu.sg>
|
|
Description:
|
|
Writing a device ID to this file will remove an ID
|
|
that was dynamically added via the new_id sysfs entry.
|
|
The format for the device ID is:
|
|
idVendor idProduct. After successfully
|
|
removing an ID, the driver will no longer support the
|
|
device. This is useful to ensure auto probing won't
|
|
match the driver to the device. For example:
|
|
# echo "046d c315" > /sys/bus/usb/drivers/foo/remove_id
|
|
|
|
Reading from this file will list the dynamically added
|
|
device IDs, exactly like reading from the entry
|
|
"/sys/bus/usb/drivers/.../new_id"
|
|
|
|
What: /sys/bus/usb/devices/.../power/usb2_hardware_lpm
|
|
Date: September 2011
|
|
Contact: Andiry Xu <andiry.xu@amd.com>
|
|
Description:
|
|
If CONFIG_PM is set and a USB 2.0 lpm-capable device is plugged
|
|
in to a xHCI host which support link PM, it will perform a LPM
|
|
test; if the test is passed and host supports USB2 hardware LPM
|
|
(xHCI 1.0 feature), USB2 hardware LPM will be enabled for the
|
|
device and the USB device directory will contain a file named
|
|
power/usb2_hardware_lpm. The file holds a string value (enable
|
|
or disable) indicating whether or not USB2 hardware LPM is
|
|
enabled for the device. Developer can write y/Y/1 or n/N/0 to
|
|
the file to enable/disable the feature.
|
|
|
|
What: /sys/bus/usb/devices/.../power/usb3_hardware_lpm_u1
|
|
/sys/bus/usb/devices/.../power/usb3_hardware_lpm_u2
|
|
Date: November 2015
|
|
Contact: Kevin Strasser <kevin.strasser@linux.intel.com>
|
|
Lu Baolu <baolu.lu@linux.intel.com>
|
|
Description:
|
|
If CONFIG_PM is set and a USB 3.0 lpm-capable device is plugged
|
|
in to a xHCI host which supports link PM, it will check if U1
|
|
and U2 exit latencies have been set in the BOS descriptor; if
|
|
the check is passed and the host supports USB3 hardware LPM,
|
|
USB3 hardware LPM will be enabled for the device and the USB
|
|
device directory will contain two files named
|
|
power/usb3_hardware_lpm_u1 and power/usb3_hardware_lpm_u2. These
|
|
files hold a string value (enable or disable) indicating whether
|
|
or not USB3 hardware LPM U1 or U2 is enabled for the device.
|
|
|
|
What: /sys/bus/usb/devices/.../ltm_capable
|
|
Date: July 2012
|
|
Contact: Sarah Sharp <sarah.a.sharp@linux.intel.com>
|
|
Description:
|
|
USB 3.0 devices may optionally support Latency Tolerance
|
|
Messaging (LTM). They indicate their support by setting a bit
|
|
in the bmAttributes field of their SuperSpeed BOS descriptors.
|
|
If that bit is set for the device, ltm_capable will read "yes".
|
|
If the device doesn't support LTM, the file will read "no".
|
|
The file will be present for all speeds of USB devices, and will
|
|
always read "no" for USB 1.1 and USB 2.0 devices.
|
|
|
|
What: /sys/bus/usb/devices/.../<hub_interface>/port<X>
|
|
Date: August 2012
|
|
Contact: Lan Tianyu <tianyu.lan@intel.com>
|
|
Description:
|
|
The /sys/bus/usb/devices/.../<hub_interface>/port<X>
|
|
is usb port device's sysfs directory.
|
|
|
|
What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/connect_type
|
|
Date: January 2013
|
|
Contact: Lan Tianyu <tianyu.lan@intel.com>
|
|
Description:
|
|
Some platforms provide usb port connect types through ACPI.
|
|
This attribute is to expose these information to user space.
|
|
The file will read "hotplug", "hardwired" and "not used" if the
|
|
information is available, and "unknown" otherwise.
|
|
|
|
What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/location
|
|
Date: October 2018
|
|
Contact: Bjørn Mork <bjorn@mork.no>
|
|
Description:
|
|
Some platforms provide usb port physical location through
|
|
firmware. This is used by the kernel to pair up logical ports
|
|
mapping to the same physical connector. The attribute exposes the
|
|
raw location value as a hex integer.
|
|
|
|
|
|
What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/quirks
|
|
Date: May 2018
|
|
Contact: Nicolas Boichat <drinkcat@chromium.org>
|
|
Description:
|
|
In some cases, we care about time-to-active for devices
|
|
connected on a specific port (e.g. non-standard USB port like
|
|
pogo pins), where the device to be connected is known in
|
|
advance, and behaves well according to the specification.
|
|
This attribute is a bit-field that controls the behavior of
|
|
a specific port:
|
|
|
|
- Bit 0 of this field selects the "old" enumeration scheme,
|
|
as it is considerably faster (it only causes one USB reset
|
|
instead of 2).
|
|
|
|
The old enumeration scheme can also be selected globally
|
|
using /sys/module/usbcore/parameters/old_scheme_first, but
|
|
it is often not desirable as the new scheme was introduced to
|
|
increase compatibility with more devices.
|
|
- Bit 1 reduces TRSTRCY to the 10 ms that are required by the
|
|
USB 2.0 specification, instead of the 50 ms that are normally
|
|
used to help make enumeration work better on some high speed
|
|
devices.
|
|
|
|
What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/over_current_count
|
|
Date: February 2018
|
|
Contact: Richard Leitner <richard.leitner@skidata.com>
|
|
Description:
|
|
Most hubs are able to detect over-current situations on their
|
|
ports and report them to the kernel. This attribute is to expose
|
|
the number of over-current situation occurred on a specific port
|
|
to user space. This file will contain an unsigned 32 bit value
|
|
which wraps to 0 after its maximum is reached. This file supports
|
|
poll() for monitoring changes to this value in user space.
|
|
|
|
Any time this value changes the corresponding hub device will send a
|
|
udev event with the following attributes::
|
|
|
|
OVER_CURRENT_PORT=/sys/bus/usb/devices/.../<hub_interface>/port<X>
|
|
OVER_CURRENT_COUNT=[current value of this sysfs attribute]
|
|
|
|
What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/usb3_lpm_permit
|
|
Date: November 2015
|
|
Contact: Lu Baolu <baolu.lu@linux.intel.com>
|
|
Description:
|
|
Some USB3.0 devices are not friendly to USB3 LPM. usb3_lpm_permit
|
|
attribute allows enabling/disabling usb3 lpm of a port. It takes
|
|
effect both before and after a usb device is enumerated. Supported
|
|
values are "0" if both u1 and u2 are NOT permitted, "u1" if only u1
|
|
is permitted, "u2" if only u2 is permitted, "u1_u2" if both u1 and
|
|
u2 are permitted.
|
|
|
|
What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/connector
|
|
Date: December 2021
|
|
Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
|
|
Description:
|
|
Link to the USB Type-C connector when available. This link is
|
|
only created when USB Type-C Connector Class is enabled, and
|
|
only if the system firmware is capable of describing the
|
|
connection between a port and its connector.
|
|
|
|
What: /sys/bus/usb/devices/.../<hub_interface>/port<X>/disable
|
|
Date: June 2022
|
|
Contact: Michael Grzeschik <m.grzeschik@pengutronix.de>
|
|
Description:
|
|
This file controls the state of a USB port, including
|
|
Vbus power output (but only on hubs that support
|
|
power switching -- most hubs don't support it). If
|
|
a port is disabled, the port is unusable: Devices
|
|
attached to the port will not be detected, initialized,
|
|
or enumerated.
|
|
|
|
What: /sys/bus/usb/devices/.../power/usb2_lpm_l1_timeout
|
|
Date: May 2013
|
|
Contact: Mathias Nyman <mathias.nyman@linux.intel.com>
|
|
Description:
|
|
USB 2.0 devices may support hardware link power management (LPM)
|
|
L1 sleep state. The usb2_lpm_l1_timeout attribute allows
|
|
tuning the timeout for L1 inactivity timer (LPM timer), e.g.
|
|
needed inactivity time before host requests the device to go to L1 sleep.
|
|
Useful for power management tuning.
|
|
Supported values are 0 - 65535 microseconds.
|
|
|
|
What: /sys/bus/usb/devices/.../power/usb2_lpm_besl
|
|
Date: May 2013
|
|
Contact: Mathias Nyman <mathias.nyman@linux.intel.com>
|
|
Description:
|
|
USB 2.0 devices that support hardware link power management (LPM)
|
|
L1 sleep state now use a best effort service latency value (BESL) to
|
|
indicate the best effort to resumption of service to the device after the
|
|
initiation of the resume event.
|
|
If the device does not have a preferred besl value then the host can select
|
|
one instead. This usb2_lpm_besl attribute allows to tune the host selected besl
|
|
value in order to tune power saving and service latency.
|
|
|
|
Supported values are 0 - 15.
|
|
More information on how besl values map to microseconds can be found in
|
|
USB 2.0 ECN Errata for Link Power Management, section 4.10)
|
|
|
|
What: /sys/bus/usb/devices/.../rx_lanes
|
|
Date: March 2018
|
|
Contact: Mathias Nyman <mathias.nyman@linux.intel.com>
|
|
Description:
|
|
Number of rx lanes the device is using.
|
|
USB 3.2 adds Dual-lane support, 2 rx and 2 tx lanes over Type-C.
|
|
Inter-Chip SSIC devices support asymmetric lanes up to 4 lanes per
|
|
direction. Devices before USB 3.2 are single lane (rx_lanes = 1)
|
|
|
|
What: /sys/bus/usb/devices/.../tx_lanes
|
|
Date: March 2018
|
|
Contact: Mathias Nyman <mathias.nyman@linux.intel.com>
|
|
Description:
|
|
Number of tx lanes the device is using.
|
|
USB 3.2 adds Dual-lane support, 2 rx and 2 tx -lanes over Type-C.
|
|
Inter-Chip SSIC devices support asymmetric lanes up to 4 lanes per
|
|
direction. Devices before USB 3.2 are single lane (tx_lanes = 1)
|
|
|
|
What: /sys/bus/usb/devices/usbX/bAlternateSetting
|
|
Description:
|
|
The current interface alternate setting number, in decimal.
|
|
|
|
See USB specs for its meaning.
|
|
|
|
What: /sys/bus/usb/devices/usbX/bcdDevice
|
|
Description:
|
|
The device's release number, in hexadecimal.
|
|
|
|
See USB specs for its meaning.
|
|
|
|
What: /sys/bus/usb/devices/usbX/bConfigurationValue
|
|
Description:
|
|
While a USB device typically have just one configuration
|
|
setting, some devices support multiple configurations.
|
|
|
|
This value shows the current configuration, in decimal.
|
|
|
|
Changing its value will change the device's configuration
|
|
to another setting.
|
|
|
|
The number of configurations supported by a device is at:
|
|
|
|
/sys/bus/usb/devices/usbX/bNumConfigurations
|
|
|
|
See USB specs for its meaning.
|
|
|
|
What: /sys/bus/usb/devices/usbX/bDeviceClass
|
|
Description:
|
|
Class code of the device, in hexadecimal.
|
|
|
|
See USB specs for its meaning.
|
|
|
|
What: /sys/bus/usb/devices/usbX/bDeviceProtocol
|
|
Description:
|
|
Protocol code of the device, in hexadecimal.
|
|
|
|
See USB specs for its meaning.
|
|
|
|
What: /sys/bus/usb/devices/usbX/bDeviceSubClass
|
|
Description:
|
|
Subclass code of the device, in hexadecimal.
|
|
|
|
See USB specs for its meaning.
|
|
|
|
What: /sys/bus/usb/devices/usbX/bInterfaceClass
|
|
Description:
|
|
Class code of the interface, in hexadecimal.
|
|
|
|
See USB specs for its meaning.
|
|
|
|
What: /sys/bus/usb/devices/usbX/bInterfaceNumber
|
|
Description:
|
|
Interface number, in hexadecimal.
|
|
|
|
See USB specs for its meaning.
|
|
|
|
What: /sys/bus/usb/devices/usbX/bInterfaceProtocol
|
|
Description:
|
|
Protocol code of the interface, in hexadecimal.
|
|
|
|
See USB specs for its meaning.
|
|
|
|
What: /sys/bus/usb/devices/usbX/bInterfaceSubClass
|
|
Description:
|
|
Subclass code of the interface, in hexadecimal.
|
|
|
|
See USB specs for its meaning.
|
|
|
|
What: /sys/bus/usb/devices/usbX/bmAttributes
|
|
Description:
|
|
Attributes of the current configuration, in hexadecimal.
|
|
|
|
See USB specs for its meaning.
|
|
|
|
What: /sys/bus/usb/devices/usbX/bMaxPacketSize0
|
|
Description:
|
|
Maximum endpoint 0 packet size, in decimal.
|
|
|
|
See USB specs for its meaning.
|
|
|
|
What: /sys/bus/usb/devices/usbX/bMaxPower
|
|
Description:
|
|
Maximum power consumption of the active configuration of
|
|
the device, in miliamperes.
|
|
|
|
What: /sys/bus/usb/devices/usbX/bNumConfigurations
|
|
Description:
|
|
Number of the possible configurations of the device, in
|
|
decimal. The current configuration is controlled via:
|
|
|
|
/sys/bus/usb/devices/usbX/bConfigurationValue
|
|
|
|
See USB specs for its meaning.
|
|
|
|
What: /sys/bus/usb/devices/usbX/bNumEndpoints
|
|
Description:
|
|
Number of endpoints used on this interface, in hexadecimal.
|
|
|
|
See USB specs for its meaning.
|
|
|
|
What: /sys/bus/usb/devices/usbX/bNumInterfaces
|
|
Description:
|
|
Number of interfaces on this device, in decimal.
|
|
|
|
What: /sys/bus/usb/devices/usbX/busnum
|
|
Description:
|
|
Number of the bus.
|
|
|
|
What: /sys/bus/usb/devices/usbX/configuration
|
|
Description:
|
|
Contents of the string descriptor associated with the
|
|
current configuration. It may include the firmware version
|
|
of a device and/or its serial number.
|
|
|
|
What: /sys/bus/usb/devices/usbX/descriptors
|
|
Description:
|
|
Contains the interface descriptors, in binary.
|
|
|
|
What: /sys/bus/usb/devices/usbX/idProduct
|
|
Description:
|
|
Product ID, in hexadecimal.
|
|
|
|
What: /sys/bus/usb/devices/usbX/idVendor
|
|
Description:
|
|
Vendor ID, in hexadecimal.
|
|
|
|
What: /sys/bus/usb/devices/usbX/devspec
|
|
Description:
|
|
Displays the Device Tree Open Firmware node of the interface.
|
|
|
|
What: /sys/bus/usb/devices/usbX/avoid_reset_quirk
|
|
Description:
|
|
Most devices have this set to zero.
|
|
|
|
If the value is 1, enable a USB quirk that prevents this
|
|
device to use reset.
|
|
|
|
(read/write)
|
|
|
|
What: /sys/bus/usb/devices/usbX/devnum
|
|
Description:
|
|
USB interface device number, in decimal.
|
|
|
|
What: /sys/bus/usb/devices/usbX/devpath
|
|
Description:
|
|
String containing the USB interface device path.
|
|
|
|
What: /sys/bus/usb/devices/usbX/manufacturer
|
|
Description:
|
|
Vendor specific string containing the name of the
|
|
manufacturer of the device.
|
|
|
|
What: /sys/bus/usb/devices/usbX/maxchild
|
|
Description:
|
|
Number of ports of an USB hub
|
|
|
|
What: /sys/bus/usb/devices/usbX/persist
|
|
Description:
|
|
Keeps the device even if it gets disconnected.
|
|
|
|
What: /sys/bus/usb/devices/usbX/product
|
|
Description:
|
|
Vendor specific string containing the name of the
|
|
device's product.
|
|
|
|
What: /sys/bus/usb/devices/usbX/speed
|
|
Description:
|
|
Shows the device's max speed, according to the USB version,
|
|
in Mbps.
|
|
Can be:
|
|
|
|
======= ====================
|
|
Unknown speed unknown
|
|
1.5 Low speed
|
|
15 Full speed
|
|
480 High Speed
|
|
5000 Super Speed
|
|
10000 Super Speed+
|
|
20000 Super Speed+ Gen 2x2
|
|
======= ====================
|
|
|
|
What: /sys/bus/usb/devices/usbX/supports_autosuspend
|
|
Description:
|
|
Returns 1 if the device doesn't support autosuspend.
|
|
Otherwise, returns 0.
|
|
|
|
What: /sys/bus/usb/devices/usbX/urbnum
|
|
Description:
|
|
Number of URBs submitted for the whole device.
|
|
|
|
What: /sys/bus/usb/devices/usbX/version
|
|
Description:
|
|
String containing the USB device version, as encoded
|
|
at the BCD descriptor.
|
|
|
|
What: /sys/bus/usb/devices/usbX/power/autosuspend
|
|
Description:
|
|
Time in milliseconds for the device to autosuspend. If the
|
|
value is negative, then autosuspend is prevented.
|
|
|
|
(read/write)
|
|
|
|
What: /sys/bus/usb/devices/usbX/power/active_duration
|
|
Description:
|
|
The total time the device has not been suspended.
|
|
|
|
What: /sys/bus/usb/devices/usbX/power/connected_duration
|
|
Description:
|
|
The total time (in msec) that the device has been connected.
|
|
|
|
What: /sys/bus/usb/devices/usbX/power/level
|
|
Description:
|
|
|
|
What: /sys/bus/usb/devices/usbX/ep_<N>/bEndpointAddress
|
|
Description:
|
|
The address of the endpoint described by this descriptor,
|
|
in hexadecimal. The endpoint direction on this bitmapped field
|
|
is also shown at:
|
|
|
|
/sys/bus/usb/devices/usbX/ep_<N>/direction
|
|
|
|
See USB specs for its meaning.
|
|
|
|
What: /sys/bus/usb/devices/usbX/ep_<N>/bInterval
|
|
Description:
|
|
The interval of the endpoint as described on its descriptor,
|
|
in hexadecimal. The actual interval depends on the version
|
|
of the USB. Also shown in time units at
|
|
/sys/bus/usb/devices/usbX/ep_<N>/interval.
|
|
|
|
What: /sys/bus/usb/devices/usbX/ep_<N>/bLength
|
|
Description:
|
|
Number of bytes of the endpoint descriptor, in hexadecimal.
|
|
|
|
What: /sys/bus/usb/devices/usbX/ep_<N>/bmAttributes
|
|
Description:
|
|
Attributes which apply to the endpoint as described on its
|
|
descriptor, in hexadecimal. The endpoint type on this
|
|
bitmapped field is also shown at:
|
|
|
|
/sys/bus/usb/devices/usbX/ep_<N>/type
|
|
|
|
See USB specs for its meaning.
|
|
|
|
What: /sys/bus/usb/devices/usbX/ep_<N>/direction
|
|
Description:
|
|
Direction of the endpoint. Can be:
|
|
|
|
- both (on control endpoints)
|
|
- in
|
|
- out
|
|
|
|
What: /sys/bus/usb/devices/usbX/ep_<N>/interval
|
|
Description:
|
|
Interval for polling endpoint for data transfers, in
|
|
milisseconds or microseconds.
|
|
|
|
What: /sys/bus/usb/devices/usbX/ep_<N>/type
|
|
Description:
|
|
Descriptor type. Can be:
|
|
|
|
- Control
|
|
- Isoc
|
|
- Bulk
|
|
- Interrupt
|
|
- unknown
|
|
|
|
What: /sys/bus/usb/devices/usbX/ep_<N>/wMaxPacketSize
|
|
Description:
|
|
Maximum packet size this endpoint is capable of
|
|
sending or receiving, in hexadecimal.
|