Device Properties
Properties are arranged in a namespaces using ''.'' as a separator
and are key/value pairs. The value may assume different types; currently
int32, double, bool, UTF8 strings and UTF8 string lists are supported.
The key of a property is always an ASCII string without any whitespace.
When a property changes, HAL will emit a D-Bus signal that applications
can catch.
org.freedesktop.Hal namespace
The org.freedesktop.Hal namespace contain properties that
can be considered metadata about HAL itself and not about device objects. They
are only available at the root object (/org/freedesktop/Hal/devices/computer)
and allow to query information about HAL from fdi files.
Key (type)ValuesMandatoryDescriptionorg.freedesktop.Hal.version (string)
example: 0.5.13YesThe version number of the running HAL daemon.org.freedesktop.Hal.version.major (int)
example: 0YesThe major version number of the running HAL daemon.org.freedesktop.Hal.version.minor (int)
example: 5YesThe minor version number of the running HAL daemon.org.freedesktop.Hal.version.micro (int)
example: 13YesThe micro version number of the running HAL daemon.General Properties
The section represents properties that aren't tied to either
physical or functional characteristics of what the device
object represents.
info namespace
The info namespace contain properties that
can be considered metadata about device objects. These
properties are always available.
Key (type)ValuesMandatoryDescriptioninfo.subsystem (string)
example: pci, usb, ide_host, ide, block, usbif, scsi_host, scsiYesDescribes what subsystem the device is connected toinfo.udi (string)
example: /org/freedesktop/Hal/devices/pci_10ec_8139YesThe HAL unique device idinfo.capabilities (strlist)
example: 'block, storage, storage.cdrom'NoA string list of capabilities describing what the devices doesinfo.category (string)
example: storage.cdromNoThe prominent capability describing what the device isinfo.product (string)
examples: ''SleekKeyboard'', ''MouseMan 2003'', ''Volume'', ''LS-120 SLIM3 00 UHD Floppy''NoThe name of the device; should not be used in any UI; use subsystem / capability specific properties instead.info.vendor (string)
examples: Logitch, MustekNoThe name of the vendor of the device; should not be used in any UI; use subsystem / capability specific properties instead.info.parent (string)
example: /org/freedesktop/Hal/devices/computerYes, for all non-root device objectsThe UDI of the device object that this device object
is connected to.
info.locked (bool)
No
If this property is available and set
to TRUE it means that a process
is using the device that the hal device object in
question represents and no other process should attempt
to use or configure the device. The lock is only
advisory.
info.locked.reason (string)
example: ''The optical drive is currently being used to
record a CD-RW disc.''
Only available if info.locked is set
to TRUE.
A localized text suitable for UI displayinfo.locked.dbus_service (string)
example: :1.278
Only available if info.locked is set
to TRUE.
The base D-BUS service of the process holding the lock.info.is_recalled (bool)
No
This is set if the hardware may be recalled and should
be checked for any potential problem.
info.recall.vendor (string)
Dell, Sony, HP, Panasonic, etc.Yes, if info.is_recalled is TRUE
The vendor responsible for the hardware recall.
info.recall.website_url (string)
Yes, if info.is_recalled is TRUE
Users should check this website for more details and if their
hardware may affected by any possible fault.
linux namespace
The linux namespace contain properties that
can be considered metadata about device objects in Linux systems. These
properties are available only on Linux systems.
Key (type)ValuesMandatoryDescriptionlinux.subsystem (string)
pci, usb, ide_host, ide, block, usb, usbif, scsi_host, scsiYesDescribes what Linux subsystem the device is connected to. This can
differ from info.subsystemlinux.sysfs_path (string)
for example: /sys/class/sound/seqNoPath to the devuce in the sysfs. Could also be *.linux.sysfs_path
depending on the subsystem in some cases.
linux.device_file (string)
for example: /dev/snd/pcmC0D1c or /dev/input/event6NoPath to the corresponding device file in /dev/ on linux system.
info.linux.driver (string)
for example: pcspkr, vesafb, serial8250NoName of the driver/module corresponding to the device and/or subsystem.
linux.hotplug_type (int)
YesThe type of hotplug event in a linux system.
linux.acpi_type (int)
No (except for ACPI devices)The type of ACPI device. Normaly only for HAL internal use.
linux.apm_type (int)
No (except for APM devices)The type of APM device. Normaly only for HAL internal use.
linux.pmu_type (int)
No (except for PMU devices)The type of PMU device. Normaly only for HAL internal use.
Callouts
Callouts are programs invoked when the device object are added
and removed. As such, callouts can be used to maintain
system-wide policy (that may be specific to the particular OS)
such as changing permissions on device nodes, updating the
systemwide
/etc/fstab file or configuring the networking
subsystem.
There are three different classes of callouts. A callout
involves sequentially invoking all executable programs in the
string list in listed order.
All callouts are searched for and execute in a minimal
environment. In addition, the UDI of the device object is
exported in the environment
variable UDI. All properties of the device
object are exported in the environment prefixed
with HAL_PROP_. If a device is added or
removed is exported in the environment
variable HALD_ACTION
. The search path for the callout includes the
following paths:
$libexecdir (typically /usr/libexec (e.g. Red Hat) or /usr/lib/hal (e.g. Debian))
$libdir/hal/scripts (typically /usr/lib/hal/scripts or
/usr/lib64/hal/scripts)
$bindir/ (typically /usr/bin)
including $PATH the HAL daemon was started with during system
initialization. Depending on the distribution, this typically
includes /sbin,
/usr/sbin,
/bin,
/usr/sbin. If the program to run is not
found in any of these paths, the it will
not run even if the given path is absolute. To be
portable across operating systems, third party packages
providing callouts must therefore only
use $libdir/hal/scripts.
If ConsoleKit support is enabled, the variables
CK_NUM_SEATS (number of seats),
CK_NUM_SESSIONS (number of sessions),
CK_SEATS (tab sep. list of seat-id's),
CK_SEAT_seat-id (tab sep. list of session-id's for a seat),
CK_SEAT_NUM_SESSIONS_seat-id (number of sessions on a seat),
CK_SESSION_SEAT_session-id (the seat that a session belongs to) and
CK_SESSION_IS_ACTIVE_session-id (whether a given session is active) and
CK_SESSION_UID_session-id (the user of the session) and
CK_SESSION_IS_LOCAL_session-id (whether a session is local),
CK_SESSION_HOSTNAME_session-id (host name of session's display if it's not local),
will be exported as well. Example:
CK_NUM_SEATS=1
CK_NUM_SESSIONS=2
CK_SEATS=Seat1
CK_SEAT_Seat1=Session1 Session3
CK_SEAT_NUM_SESSIONS_Seat1=2
CK_SESSION_IS_ACTIVE_Session1=true
CK_SESSION_IS_ACTIVE_Session3=false
CK_SESSION_IS_LOCAL_Session1=true
CK_SESSION_IS_LOCAL_Session3=true
CK_SESSION_SEAT_Session1=Seat1
CK_SESSION_SEAT_Session3=Seat1
CK_SESSION_UID_Session1=500
CK_SESSION_UID_Session3=501
Note that all ConsoleKit object paths given are just base
names; the real D-Bus object path can be reconstructed by
appending /org/freedesktop/ConsoleKit/
prepended to the given identifer.
The HAL daemon is not suspended while callouts are executing. Thus,
callouts can communicate with the HAL daemon using the D-BUS network
API. Hence, one application of callouts is to merge or modify
properties on a device object.
To reduce round trips and increase privacy, callouts can (and
should) communicate with the HAL daemon using a peer to peer
D-Bus connection specified by
the HALD_DIRECT_ADDR environment
variable. There is convience API in libhal to do this.
Key (type)ValuesMandatoryDescriptioninfo.callouts.add (string list)
No
A string list with the programs which should be
executed (with HALD_ACTION=add)
when the device is added to the GDL (global device
list) but just before it is announced through the
D-BUS network API.
info.callouts.remove (string list)
No
A string list with the programs that should be
executed (with HALD_ACTION=remove)
when the device is removed from the GDL (global device
list). The device isn't removed before the last
callout has finished.
info.callouts.preprobe (string list)
No
A string list with the programs that should be
executed
(with HALD_ACTION=preprobe) before
the device is probed (e.g. investigated) and can be
used to avoid causing unnecessary I/O.
info.callouts.session_add (string list)
No
A string list with all programs that should be
executed
(with HALD_ACTION=session_add) when
a session is added. Can only be set on the root
computer device object. The environment also contains
the variables
HALD_SESSION_ADD_SESSION_ID,
HALD_SESSION_ADD_SESSION_UID and
HALD_SESSION_ADD_SESSION_IS_ACTIVE
to identify the session. This is only used when HAL is
built with ConsoleKit support.
info.callouts.session_remove (string list)
No
A string list with all programs which should be
executed
(with HALD_ACTION=session_remove)
when a session is removed. Can only be set on the root
computer device object. The environment also contains
the variables
HALD_SESSION_REMOVE_SESSION_ID,
HALD_SESSION_REMOVE_SESSION_UID and
HALD_SESSION_REMOVE_SESSION_IS_ACTIVE
to identify the session. This is only used when HAL is
built with ConsoleKit support.
Addons
Addons are programs that run for the life time of the device
object. They are searched for and execute in the same
environment as callouts
(e.g. with HAL_PROP_* set in the
environment to represent the device properties) and are
launched just before the device is announced on D-Bus (but
just after the last add callouts have finished). When the
device object goes away, HAL will send
a SIGTERM to the process.
Key (type)ValuesMandatoryDescriptioninfo.addons (strlist)
No
List of programs to run when device is added. Each
program will need to call
the AddonIsReady() method in order
for the device to show up on D-Bus.
Singleton Addons
Singleton Addons are programs that are started by HAL to
handle a set of devices. They are identified by the command line
used to start them. They MUST implement the
org.freedesktop.Hal.SingletonAddon
interface. on the path
/org/freedesktop/Hal/Singleton path on
the direct connection to the HAL daemon.
When a device is added with an info.addons.singleton
string list key, the elements of that key are used as the command line
to start the singleton if the singleton is not already running.
Once the singleton has called SingletonAddonIsReady on
org.freedesktop.Hal.Manager
interface, it will receive
DeviceAdded calls on its
org.freedesktop.Hal.SingletonAddon
interface for all devices that have
its commandline in info.addons.singletona.
If a device is added and the singleton specified in
info.addons.singleton is already running, the
singleton will recieve DeviceAdded on its
org.freedesktop.Hal.SingletonAddon
interface for that new device.
When a device is removed that is being handled by a singleton, the
singleton will recieve DeviceRemoved on
org.freedesktop.Hal.SingletonAddon
.
When it is no longer handling any more devices it should exit cleanly.
Key (type)ValuesMandatoryDescriptioninfo.addons.singleton (strlist)
No
A list of commandlines for singleton addons which should
service this device.
Method calls
Method calls on a specific interface on a device object can be
implemented by the HAL daemon running a program. Note that
this is not the only way to implement support for method
calls; if you expect a lot of method calls it is preferable to
implement an addon and use
the ClaimInterface() API since it reduces
the overhead of spawning a process and it can handle both
complex incoming and return types as well. See for
details on claiming interfaces via an addon..
Note that method calls implemented via running a program are
limited to the return type being an a signed 32-bit integer
(this will change in a future release). The incoming
parameters are limited to only basic types and arrays of
strings. The parameters are passed via stdin using a textual
representation. As such, there is a lot of overhead with
handling method calls by spawning programs and as such it
should only be used for situtations where the nature of the
method call is that it will not be frequently used.
As with addons, method calls are searched for and execute in
the same minimal environment as callouts
(e.g. with HAL_PROP_* set in the
environment to represent the device properties) and in
addition the environment variables
HAL_METHOD_INVOKED_BY_UID (the uid of the caller)
and
HAL_METHOD_INVOKED_BY_SYSTEMBUS_CONNECTION_NAME
(the unique system bus connection name of the caller) are
set. Additionally, if HAL is built with ConsoleKit support,
HAL_METHOD_INVOKED_BY_PID and
HAL_METHOD_INVOKED_BY_SELINUX_CONTEXT (but
only if the running system have SELinux enabled) will be
set. If HAL itself, or a HAL addon, is invoking a method, then
these variables will not be present. Here's an example
HAL_METHOD_INVOKED_BY_UID=500
HAL_METHOD_INVOKED_BY_PID=22553
HAL_METHOD_INVOKED_BY_SELINUX_CONTEXT=user_u:system_r:unconfined_t
HAL_METHOD_INVOKED_BY_SYSTEMBUS_CONNECTION_NAME=:1.138
In addition, with ConsoleKit
support, HAL_METHOD_INVOKED_BY_SESSION will
be set to (the basename) of the ConsoleKit session object path
but only if the caller is in a session. The method handler can
then use the previously
mentioned CK_SESSION_* to learn everything
about the context of the caller.
Key (type)ValuesMandatoryDescriptioninfo.interfaces (strlist)
No
A list of D-Bus interfaces that the device object
supports apart from the
standard org.freedesktop.Hal.Device
interface.
<iface>.method_names (strlist)
example: 'Foo', 'Bar', 'Baz'No
If a D-Bus interface is implemented by executing a
program for every method, this property contains an
ordered list of the method names.
<iface>.method_argnames (strlist)
example: 'foo_arg1 foo_arg2', '', 'baz_arg1'No
This property contains the names of the arguments for
each method. Each entry is a white-space separated
list for that particular method.
<iface>.method_signatures (strlist)
example: 'si', '', 'as'No
This property contains the D-Bus signature for each
method. The signature should only cover incoming
arguments; each method is defined as returning an
integer.
<iface>.method_execpaths (strlist)
example: 'foo-binary', 'bar-binary', 'baz-binary'No
This property contains the name of the program to
execute when this method is called. The return code
of the program will be passed as the integer result
to the D-Bus caller.
If a program wants to return an error, it just needs
to write two lines to stderr; the first line is the
exception name to throw and the second line is the
exception detail.
Items in the <iface>.* clearly must
correspond with each other. The whole mechanism is best
explained by an example:
info.interfaces = {'org.freedesktop.Hal.Device.Volume'}
org.freedesktop.Hal.Device.Volume.method_argnames = {'mount_point fstype extra_options', 'extra_options', 'extra_options'}
org.freedesktop.Hal.Device.Volume.method_execpaths = {'hal-storage-mount', 'hal-storage-unmount', 'hal-storage-eject'}
org.freedesktop.Hal.Device.Volume.method_names = {'Mount', 'Unmount', 'Eject'}
org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
which, for example, shows that the Mount()
method on the
interface org.freedesktop.Hal.Device.Volume
takes three arguments: mount_point (a
string), fstype (a string)
and extra_options (an array of strings).
Subsystem-Specific Properties
In this section properties for device objects that represent
addressable hardware is described. Availability of
these depends on the value of the info.subsystem
property. These properties are not of particular interest to
application developers, instead they are useful for libraries
and userspace drivers that needs to interact with the device
given a UDI. Knowledge of various subsystem-specific
technologies is assumed for this section to be useful.
bluetooth_acl namespace
Device objects representing Asynchronous Connection-oriented Links.
Key (type)ValuesMandatoryDescriptionbluetooth_acl.address (uint64)YesAddress of the device at the other end of the connection.bluetooth_acl.originating_device (string)YesThe UDI of the Bluetooth HCI (of
capability bluetooth_hci) that the
connection is made through.
bluetooth_hci namespace
Device objects representing a Bluetooth Host Controller Interface.
Key (type)ValuesMandatoryDescriptionbluetooth_hci.address (uint64)YesAddress of the host controller interface.bluetooth_hci.originating_device (string)YesThe UDI of the physical device (e.g. an USB interface) that provides the HCI hardware.bluetooth_sco namespace
Device objects representing Synchronous Connection-Oriented links.
Key (type)ValuesMandatoryDescriptionbluetooth_sco.address (uint64)YesAddress of the device at the other end of the connection.bluetooth_sco.originating_device (string)YesThe UDI of the Bluetooth HCI (of
capability bluetooth_hci) that the
connection is made through.
block namespace
Device objects representing addressable block devices, such as
drives and partitions, will have info.subsystem
set to block and will export a number of
properties in the block namespace.
Key (type)ValuesMandatoryDescriptionblock.device (string)
example: /dev/sda YesSpecial device file to interact with the block deviceblock.major (int)
example: 8YesMajor number of special file to interact with the
device
block.minor (int)
example: 1YesMinor number of special file to interact with the
device
block.is_volume (bool)
YesTrue only when the block device is a volume that can
be mounted into the file system. In this case the
volume capability will be set and
thus, properties, in the volume
namespace are available.
block.no_partitions (bool)
YesFor toplevel block devices, this is TRUE only
when no known partition tables have been found on the
media (In this case, if the storage device contain a
file system it will be accessible using the same
special device file as the one for this device object
and the device object representing the filesystem will
appear as a separate device object as a child). For
the child, that is
when block.is_volume is true, this
property is TRUE exactly when it was created for a
storage device with
the storage.no_partitions_hint set
to TRUE.
block.have_scanned (bool)
Yes
An internal property used by HAL to specify whether a top
level block device have already been scanned for filesystems.
ccw namespace
Device objects that represent s390 ccw devices (when info.subsystem
is set to ccw) are represented by the
properties below.
Key (type)ValuesMandatoryDescriptionccw.devtype (string)
example: 1732/01YesDevice type/model or n/accw.cutype (string)
example: 1731/01YesControl unit type/modelccw.cmb_enable (int)
example: 1YesIf channel measurements are enabledccw.availability (string)
example: goodYesCan be one of 'good', 'boxed', 'no path',
or 'no device'
ccw.online (int)
example: 1YesOnline statusccw.bus_id (string)
example: 0.0.f588YesThe device's bus id in sysfsccw.subchannel.pim (int)
example: 0x80Nopath installed maskccw.subchannel.pam (int)
example: 0x80Nopath available maskccw.subchannel.pom (int)
example: 0xffNopath operational maskccw.subchannel.chpid0..7 (int)
example: 0x40Nochannel path ids
The following properties describe ccw devices where
linux.driver is either dasd-eckd
or dasd-fba.
Key (type)ValuesMandatoryDescriptionccw.dasd.use_diag (int)
example: 0YesIf the device driver shall use diagnose calls to access
the device
ccw.dasd.readonly (int)
example: 0YesIf the device can only be accessed readonlyccw.dasd.discipline (string)
example: ECKDNoThe dasd discipline used to access the device
The following properties describe ccw devices where
linux.driver is zfcp. They are
only present when ccw.online = 1.
Key (type)ValuesMandatoryDescriptionccw.zfcp.in_recovery (int)
example: 0YesShows whether the adapter is currently in recoveryccw.zfcp.failed (int)
example: 0YesShows whether the adapter is in failed state
The following properties describe ccw devices where
linux.driver is of the form tape_3xxx
.
Key (type)ValuesMandatoryDescriptionccw.tape.state (string)
example: IN_USEYesThe current status of the tapeccw.tape.operation (string)
example: REWYesA three-letter mnemonic of the current tape operation
ccw.tape.medium_state (string)
example: no mediumNo
If ccw.online = 1, shows whether a tape
is loaded
ccw.tape.blocksize (int)
example: 512No
If ccw.online = 1, shows the blocksize
used for reads and writes to the tape
The following properties describe ccw devices where
linux.driver is 3270.
Key (type)ValuesMandatoryDescriptionccw.3270.model (int)
example: 3YesThe model of the device, determining rows and columns
ccw.3270.rows (int)
example: 32YesThe number of rowsccw.3270.columns (int)
example: 80YesThe number of columns
ccwgroup namespace
Device objects that represent groups of ccw devices
(when info.subsystem is set to ccwgroup
have the properties specified below.
Key (type)ValuesMandatoryDescriptionccwgroup.online (int)
example: 1YesOnline statusccwgroup.bus_id (string)
example: 0.0.f588YesThe device's bus id in sysfs
The following properties describe ccwgroup devices
where linux.driver is qeth.
Key (type)ValuesMandatoryDescriptionccwgroup.qeth.large_send (string)
example: TSONoWhether large send is provided. Can be "no", "EDDP"
(software) or "TSO" (hardware).
ccwgroup.qeth.card_type (string)
example: OSD_1000YesType of the cardccwgroup.qeth.checksumming (string)
example: sw checksummingNoThe method used to checksum incoming packetsccwgroup.qeth.canonical_macaddr (int)
example: 0NoSpecifies the token ring macaddress format. Not valid in
layer2 mode and for ethernet devices.
ccwgroup.qeth.broadcast_mode (string)
example: broadcast_allringsNoThe scope of token ring broadcasts. Not valid in layer2
mode and for ethernet devices.
ccwgroup.qeth.fake_broadcast (int)
example: 0NoWhether to fake broadcast capability. Not valid in layer2
mode.
ccwgroup.qeth.fake_ll (int)
example: 0NoWhether to add a faked link level header to packets.
Not valid in layer2 mode.
ccwgroup.qeth.layer2 (int)
example: 0NoWhether the card operates in layer 2 modeccwgroup.qeth.portname (string)
example: OSAPORTNoThe port name which has been specified for the cardccwgroup.qeth.portno (int)
example: 0NoThe relative port number on the cardccwgroup.qeth.buffer_count (int)
example: 16YesNumber of inbound buffers usedccwgroup.qeth.add_hhlen (int)
example: 0NoHow much additional space is provided in the hardware
header in skbs in front of packets
ccwgroup.qeth.priority_queueing
(string)
example: always queue 2NoWhich priority queueing algorithm is to be usedccwgroup.qeth.route4 (string)
example: noNoWhether the card has a routing functionality for ipv4.
Not valid in layer2 mode.
ccwgroup.qeth.route6 (string)
example: noNoWhether the card has a routing functionality for ipv6.
Not valid in layer2 mode.
ccwgroup.qeth.state (string)
example: UP (LAN ONLINE)YesThe device's current state
The following properties describe ccwgroup devices
where linux.driver is ctc.
Key (type)ValuesMandatoryDescriptionccwgroup.ctc.protocol (int)
example: 0YesThe protocol/method used by the connectionccwgroup.ctc.type (string)
example: CTC/AYesThe device/connection typeccwgroup.ctc.buffer (int)
example: 32768NoThe maximum buffer size of the connection
The following properties describe ccwgroup devices
where linux.driver is lcs.
Key (type)ValuesMandatoryDescriptionccwgroup.lcs.portnumber (int)
example: 0YesThe port on the card that is usedccwgroup.lcs.type (string)
example: OSA LCS cardYesThe type of the cardccwgroup.lcs.lancmd_timeout (int)
example: 5YesThe timeout value for LAN commands in seconds
The following properties describe ccwgroup devices
where linux.driver is claw.
Key (type)ValuesMandatoryDescriptionccwgroup.claw.api_type (string)
YesDetermines the packing algorithm for outgoing pakets
(matching the remote peer)
IPUsing the IP protocolPACKEDUsing an enhanced packing algorithmTCPIPUsing the TCP/IP protocolccwgroup.claw.adapter_name (string)
example: RS1YesThe host name of the remote communication peer.ccwgroup.claw.host_name (string)
example: LNX1YesThe host name of the local adapter.ccwgroup.claw.read_buffer (int)
example: 4YesThe number of read buffers allocatedccwgroup.claw.write_buffer (int)
example: 5YesThe number of write buffers allocateddrm namespace
The drm namespace is present for Direct Rendering Manager device objects.
They represent a Direct Rendering Interface.
Key (type)ValuesMandatoryDescriptiondrm.dri_library (string)YesName of the dri (Direct Rendering Interface) library (e.g. i915).drm.version (string)YesThe drm version (of the kernel module/diver).ibmebus namespace
Devices on the BM Ebus are represented by device objects where
info.subsystem equals ibmebus.
The following properties are available for such device objects.
Key (type)ValuesMandatoryDescriptionibmebus.devspec (string)example: /lhea@23c00100/ethernet@23e0010 YesThe IBM Ebus device spec.ibmebus.type (string)example: YesThe type of IBM Ebus device
ide namespace
ATA and IDE drives are represented by device objects where
info.subsystem equals ide. The
following properties are available for such device objects.
Key (type)ValuesMandatoryDescriptionide.host (int)
YesCorresponds
to ide_host.host_number of
the ide_host device that is the
parent of this device object
ide.channel (int)
YesIdentifies the IDE channel of the host interface
ide_host namespace
The ide_host namespace is present for
device objects where info.subsystem is set
to ide_host. Such device objects represent
IDE and ATA host adaptors for harddisks and optical drives as
found in the majority of computer systems.
Key (type)ValuesMandatoryDescriptionide_host.number (int)
YesA unique number identifying the IDE host adaptoride_host.linux.sysfs_path (string)
example: /sys/devices/pci0000:00/0000:00:07.1/ide0Yes (only on Linux)
Equals linux.sysfs_path
ieee1394 namespace
Device objects with info.subsystem set to
ieee1394 represent IEEE 1394 devices. The
following properties are available for such device objects.
Key (type)ValuesMandatoryDescriptionieee1394.specifier_id (int)
YesTODO
ieee1394_host namespace
Device objects with info.subsystem set to
ieee1394_host represent IEEE 1394 host
adaptors. The following properties are available for such
device objects.
Key (type)ValuesMandatoryDescriptionieee1394_host.is_busmgr (bool)
YesTODOieee1394_host.is_irn (bool)
YesTODOieee1394_host.is_root (bool)
YesTODOieee1394_host.node_count (int)
YesTODOieee1394_host.nodes_active (int)
YesTODO
ieee1394_node namespace
Device objects with info.subsystem set to
ieee1394_node represent IEEE 1394 nodes on
a IEEE 1394 bus. The following properties are available for
such device objects.
Key (type)ValuesMandatoryDescriptionieee1394_node.capabilities (int)
YesTODOieee1394_node.guid (int)
YesTODOieee1394_node.nodeid (int)
YesTODOieee1394_node.vendor (int)
YesTODOieee1394_node.vendor_id (int)
YesTODO
iucv namespace
Device objects with info.subsystem set to iucv
are using the "Intra-User Comminication Vehicle" and are
described by the following properties.
Key (type)ValuesMandatoryDescriptioniucv.bus_id (string)
example: netiucv0YesThe device's bus id in sysfs
The following properties describe iucv devices
where linux.driver is netiucv.
Key (type)ValuesMandatoryDescriptioniucv.netiucv.user (string)
example: linux12YesThe guest name of the connection's targetiucv.netiucv.buffer (int)
example: 32768YesThe maximum buffer size of the connection
leds namespace
Device objects with info.subsystem set to leds
are LED (light-emitting diode) devices.
Key (type)ValuesMandatoryDescriptionleds.device_name (string)
example: iwl-phy0, tpacpiYesThe name of the related led deviceleds.colour (string)
example: green, orangeNoThe colour of the LEDleds.function (string)
example: radio, power, standby, battYesThe function of the LED.leds.num_levels (int)
Yes
The brightness levels supported by the LED device.
modem namespace
Serial device objectes that are known to be modems should also gain the
modem capability in their
info.capabilities list. Modem device objects must
also be serial device objects.
Key (type)ValuesMandatoryDescriptionmodem.command_sets (string)
example: GSM-07.07, GSM-07.05YesThis property defines the command sets the modem device supports.IS-707-AYesThis modem supports the IS-707-A standard AT commands (commonly used by CDMA cellular devices). Implies V.250 support.GSM-07.07YesThis modem supports the GSM-07.07 standard AT commands (commonly used by GSM-based cellular devices). Implies V.250 support.GSM-07.05YesThis modem supports the GSM-07.05 standard AT commands (commonly used by GSM-based cellular devices). Implies V.250 support.ITU-V.250YesThis modem supports the ITU V.250 standard AT commands (also known as Hayes-compatible).
memstick namespace
Device objects with the capability memstick represent
a Sony MemoryStick device. No namespace specific properties.
memstick_host namespace
Device objects with info.subsystem set to
memstick_host represent Sony MemoryStick
host adaptors. The following properties are available for such
device objects.
Key (type)ValuesMandatoryDescriptionmemstick_host.host (int)
YesA unique number identifying the Sony MemoryStick host adaptor
mmc namespace
Device objects with info.subsystem set to
mmc represent MultiMediaCard or Secure
Digital cards. The following properties are available for
such device objects.
Key (type)ValuesMandatoryDescriptionmmc.cid (string)
example: 0150415330303842413a1a8083003a9dYesCard Identification Data register (unique for every card
in existence)
mmc.csd (string)
example: 005d013213598067b6d9cfff1640002dYesCard Specific Data registermmc.scr (string)
example: 00a5000000410000Only for SD cardsSD Card Registermmc.rca (int)
example: 8083YesCard bus addressmmc.oem (string)
YesCard OEM distributormmc.date (string)
example: 10/2003YesManufacturing datemmc.serial (int)
example: 0x3a1a8083YesCard serial numbermmc.hwrev (int)
example: 4YesHardware revisionmmc.fwrev (int)
example: 1YesFirmware revisionmmc.type (string)
example: SDIONoCard type
mmc_host namespace
Device objects with info.subsystem set to
mmc_host represent MultiMediaCard or
Secure Digital host adaptors. The following properties
are available for such device objects.
Key (type)ValuesMandatoryDescriptionmmc_host.host (int)
YesA unique number identifying the MMC/SD host adaptormmc_host.slot_name (string)
example: internal, externalNoA unique string identifying the slot name
pci namespace
This namespace contains properties for device objects representing
functions on devices on a PCI bus. These properties are available
exactly when info.subsystem equals pci.
Key (type)ValuesMandatoryDescriptionpci.device_class (int)
example: 3YesDevice Classpci.device_subclass (int)
example: 0YesPCI Device Sub Classpci.device_protocol (int)
example: 0YesDevice Protocolpci.product_id (int)
example: 0x4c4dYesProduct IDpci.vendor_id (int)
example: 0x1002YesVendor IDpci.subsys_product_id (int)
example: 0x009eYesSubsystem product idpci.subsys_vendor_id (int)
example: 0x1028YesSubsystem vendor idpci.linux.sysfs_path (string)
example: /sys/devices/pci0000:00/0000:00:01/0000:01:00.0Yes (only on Linux)
Equals linux.sysfs_pathpci.product (string)
Rage Mobility P/M AGP 2xNoName of the product per the PCI databasepci.vendor (string)
ATI Technologies IncNoName of the vendor per the PCI databasepci.subsys_product (string)
Inspiron 7500NoName of the subsystem product per the PCI databasepci.subsys_vendor (string)
Dell Computer CorporationNoName of the subsystem vendor per the PCI database
(FIXME: Some key PCI information (bus, slot, port, function
etc.) is missing here)
platform namespace
Devices that are built into the platform or present on busses that
cannot be properly enumerated (e.g. ISA) are represented by device
objects where info.subsystem equals
platform. These kind of devices are commonly,
somewhat incorrectly, called legacy devices.
Key (type)ValuesMandatoryDescriptionplatform.id (string)
example: serialYesDevice identification
pnp namespace
Device objects that represent Plug and Play (PnP) devices (e.g. System Board or PS/2 Port for PS/2-style Mice).
For these devices info.subsystem is set to 'pnp'.
Key (type)ValuesMandatoryDescriptionpnp.id (string)
example: PNP0a03 or SMCf010YesThis property contains the PnP ID of the device.pnp.description (string)
example: 'ECP printer port'No
Description from the pnp.ids file. Only available if: HAL was compiled with
support for pnp.ids, if the file is available and if the ID was part of the file.
pnp.serial.irq (int)
example: 5No
Only available if the PnP device is a serial device (as e.g. serial Wacom Tablet devices).
Contains the prefered irq of the device.
pnp.serial.port (string)
example: 0x200No
Only available if the PnP device is a serial device (as e.g. serial Wacom Tablet devices).
contains info about the prefered serial port of the device.
pnp.serial.baud_base (int)
example: 38400No
Only available if the PnP device is a serial device (as e.g. serial Wacom Tablet devices).
Contains info about the needed baud_base to setup the device correctly.
ppdev namespace
The namespace for parallel port devices. No namespace specific properties.
ps3_system_bus namespace
Devices on the PlayStation 3 system bus are represented by device
objects where info.subsystem equals
ps3_system_bus. The following properties are
available for such device objects.
Key (type)ValuesMandatoryDescriptionps3_system_bus.id (string)
example: serialYesDevice identification
scsi namespace
SCSI devices are represented by device objects where
info.subsystem equals scsi.
The following properties are available for such device objects.
Key (type)ValuesMandatoryDescriptionscsi.host (int)
Yes
Corresponds to scsi_host.host
of the scsi_host device that is the
parent of this device object
scsi.bus (int)
YesSCSI channel numberscsi.target (int)
YesSCSI identifier numberscsi.lun (int)
YesSCSI Logical Unit Numberscsi.hotpluggable (bool)
NoThe SCSI device can be removed while the system is running (e.g. in case of eSATA)scsi.type (string)
Example: diskYesSCSI device typecdromThis is a SCSI cdrom device.commThis is a SCSI communication device.diskThis is a SCSI disk device.medium_changerThis is a SCSI media changer (e.g. for CD/Tape).printerThis is a SCSI printer.processorThis is a SCSI processor device.raidThis is a SCSI raid device.scannerThis is a SCSI scanner.tapeThis is a SCSI tape device.unknownThe type of this SCSI device is unknwon.scsi.transport (string)
Example: FCNoThe SCSI Transport protocol used by the device.FCThis is a SCSI FiberChannel device.iSCSIThis is a iSCSI (internet Small Computer System Interface) device.SASThis is a SAS (Serial Attached SCSI) device.
scsi_host namespace
The scsi_host namespace is present for
device objects where info.subsystem is set
to scsi_host. Such device objects represent
SCSI host adaptors for SCSI devices as found in some computer
systems.
Key (type)ValuesMandatoryDescriptionscsi_host.host (int)
YesA unique number identifying the SCSI host adaptorscsi_host.hotpluggable (bool)
NoThe host device can be removed while the system is running
sdio namespace
Device objects with info.subsystem set to
sdio represent MultiMediaCard or Secure
Digital cards with SDIO interface. The following properties
are available for such device objects.
Key (type)ValuesMandatoryDescriptionsdio.rca (int)
example: 8083YesCard bus addresssdio.card_id (int)
example: 1YesSDIO Class for the interfacesdio.class_id (int)
example: 0x03YesSDIO Class for the interfacesdio.product_id (int)
example: 0x046aYesProduct IDsdio.vendor_id (int)
example: 0x039dYesVendor IDsdio.product (string)
SQN1130 WiMAX Network CardNoName of the product per the SDIO databasesdio.vendor (string)
Sequans CommunicationsNoName of the vendor per the SDIO database
serial namespace
Device objects that represent serial devices (e.g. /dev/ttyS* or
/dev/ttyUSB*).
Key (type)ValuesMandatoryDescriptionserial.originating_device (string)
example: /org/freedesktop/Hal/devices/pnp_PNP0501YesUDI of the device the serial device is bound to.serial.device (string)
example: /dev/ttyS0YesThe device node to access the OSS device.serial.port (int)
example: 0Yes
The port number of the device. For USB serial devices it's the port number of the
serial device itself. For other serial devices, where is no device port info
available, it's based on the number in serial.device.
serial.type (string)
example: platform, usb, unknownYesThis property defines the type of the serial device.ssb namespace
Devices on the Sonics Silicon Backplane (SSB) bus are represented by
device objects where info.subsystem equals
virtio. The following properties are available for
such device objects.
Key (type)ValuesMandatoryDescriptionssb.bus_id (string)example: YesThe SSB Bus ID of the device
usb_device namespace
For device objects representing USB devices the property
info.subsystem will be usb_device,
and the following properties will be available. Note that the
corresponding USB interfaces are represented by separate
device objects as children.
Key (type)ValuesMandatoryDescriptionusb_device.bus_number (int)
example: 1YesThe USB bus the device is attached tousb_device.configuration_value (int)
example: 1YesThe current configuration the USB device is in;
starting from 1
usb_device.configuration (int)
example: Bulk transfer configurationNoHuman-readable description of the current configuration the USB device is in
usb_device.num_configurations (int)
example: 1YesNumber of configurations this USB device
can assume
usb_device.device_class (int)
example: 0YesUSB Device Classusb_device.device_subclass (int)
example: 0YesUSB Device Sub Classusb_device.device_protocol (int)
example: 0YesUSB Device Protocolusb_device.is_self_powered (bool)
example: falseYesThe device, in the current configuration, is self
powered
usb_device.can_wake_up (bool)
example: trueYesThe device, in the current configuration, can wake upusb_device.max_power (int)
example: 98YesMax power drain of device, in mAusb_device.num_interfaces (int)
example: 1YesNumber of USB Interfaces in the current configurationusb_device.num_ports (int)
example: 0YesNumber of ports on a hub. Zero for non-hubsusb_device.port_number (int)
example: 1YesThe port number on the parent hub that the device is attached to, starting from 1usb_device.speed (double)
examples: 1.5, 12.0, 480.0YesSpeed of device, in Mbit/susb_device.version (double)
examples: 1.0, 1.1, 2.0YesUSB version of deviceusb_device.level_number (int)
example: 2YesDepth in USB tree, where the virtual root hub
is at depth 0
usb_device.linux.device_number (string)
example: 19Yes (only on Linux)USB Device Number as assigned by the Linux kernelusb_device.linux.parent_number (string)
example: 19Yes (only on Linux)Device number of parent device as assigned by the
Linux kernel
usb_device.linux.sysfs_path (string)
example: /sys/devices/pci0000:00/0000:00:07.2/usb1/1-1/1-1.1Yes (only on Linux)
Equals linux.sysfs_pathusb_device.product_id (int)
example: 0x3005YesUSB Product IDusb_device.vendor_id (int)
example: 0x04b3YesUSB Vendor IDusb_device.device_revision_bcd (int)
example: 0x0100YesDevice Revision Number encoded in BCD with two decimalsusb_device.serial (string)
NoA string uniquely identifying the instance
of the device; ie. it will be different for two devices
of the same type. Note that the serial number is broken
on some USB devices.
usb_device.product (string)
example: IBM USB HUB KEYBOARDNoName of the product per the USB ID Databaseusb_device.vendor (string)
example: IBM Corp.NoName of the vendor per the USB ID Database
usb namespace
Device objects that represent USB interfaces, ie. when
info.subsystem assumes usb,
are represented by the properties below. In addition all
the usb_device.* properties from the parent
USB device is available in this namespace but only with
the usb prefix instead of
usb_device.
Key (type)ValuesMandatoryDescriptionusb.interface.class (int)
example: 0x03YesUSB Class for the interfaceusb.interface.subclass (int)
example: 0x01YesUSB Sub Class for this interfaceusb.interface.protocol (int)
example: 0x01YesUSB Protocol for the interfaceusb.interface.description (int)
example: SyncML interfaceNoHuman-readable description for the interface provided by the deviceusb.interface.number (int)
example: 1YesNumber of this interface, starting from zerousb.linux.sysfs_path (string)
example: /sys/devices/pci0000:00/0000:00:07.2/usb1/1-1/1-1.1/1-1.1:1.0Yes (only on Linux)
Equals linux.sysfs_path
vio namespace
Devices on the IBM pSeries/iSeries 'vio' bus are represented
by device objects where info.subsystem
equals vio. The following properties are
available for such device objects.
Key (type)ValuesMandatoryDescriptionvio.id (string)
example: 1,10,3dYesDevice identificationvio.type (string)
example: viodasd, v-scsi, l-lanYesDevice type.
virtio namespace
Devices on the VirtIO bus are represented by device
objects where info.subsystem equals
virtio. The following properties are
available for such device objects.
Key (type)ValuesMandatoryDescriptionvirtio.id (string)
example: serialYesDevice identification
vmbus namespace
Virtual devices of the VMBus, which is part of the Hyper-V technologies
(which is a hypervisor based virtualization solution) included in the
Windows Server 2008, are represented by device objects where
info.subsystem equals vmbus.
The following properties are available for such device objects.
Key (type)ValuesMandatoryDescriptionvmbus.bus_id (string)
example: vmbus_0_0, vmbus_0_1YesID of the bus.vmbus.bus_number (int)
YesThe VMBus the device is attached to.vmbus.device_id (string)
example: {5558a04b-62a7-48f5-ae07f1d51ae62faa}YesID of the device.vmbus.device_number (int)
YesThe number of the device on a bus.vmbus.class_id (string)
example: {f8615163-df3e-46c5-913ff2d2f965ed0e}YesClass identifier of the device.xen namespace
Device objects representing virtual devices under the Xen
Virtual Machine Monitor, such as frontend network or block
devices, will have info.subsystem set to
block and will export a number of
properties in then xen namespace.
Key (type)ValuesMandatoryDescriptionxen.bus_id (string)example: vif-0 YesThe XenBus ID of the devicexen.path (string)example: device/vif/0 YesThe XenBus path of the devicexen.type (string)example: vifYesThe type of Xen deviceFunctional Properties
The section describe functional properties of device objects,
that is, properties that are merged onto device objects
representing addressable hardware. In most
circumstances such properties stem from a kernel level
driver attached to the device represented by the device object,
however, as HAL can merge properties from anywhere, they
may have been merged from device information files or callouts.
ac_adapter namespace
Device objects with the capability ac_adapter
represent all the devices capable of powering the system from AC power
Key (type)ValuesMandatoryDescriptionac_adapter.present (bool)
Yes
The state of the adapter, i.e. whether it is providing power to
the unit from mains power.
alsa namespace
Device objects with the capability alsa
represent all the streams available through ALSA on a soundcard.
Key (type)ValuesMandatoryDescriptionalsa.card (int)
Yes
Card number in system as registered by ALSA.
alsa.card_id (string)
Examples: I82801DBICH4, MP3No
Textual description of the card.
alsa.device (int)
Yes
Device number assigned by ALSA for a current card.
alsa.device_file (string)
Yes
The device node to access the ALSA device.
alsa.device_id (string)
Examples: Intel 82801DB-ICH4 MIC2 ADCNo
Textual description of the specific device for a card
alsa.pcm_class (string)
No
The PCM class of the device.
generic
A standard PCM sound device (SND_PCM_CLASS_GENERIC).
multi
A multichannel device PCM sound device (SND_PCM_CLASS_MULTI) which
e.g. contains a generic and a modem device.
digitizer
A PCM digitizer device (SND_PCM_CLASS_DIGITIZER).
modem
A PCM modem device (SND_PCM_CLASS_MODEM).
unknown
The value is 'unknown' if the kernel provide no information about the
PCM device class of the device (e.g. the file pcm_class is missing).
none
The value is 'none' if this there is no PCM class for this device.
alsa.originating_device (string)
Yes
UDI of the device the ALSA device is bound to.
alsa.type (string)
Yes
The type of the stream.
control
Stream is control device.
capture
Stream is capture device.
midi
Stream is MIDI device.
playback
Stream is playback device.
unknown
The type of the device is unknown.
hw_specific
This is a hardware specific device (as e.g. from snd_fm801 for Fortemedia FM801
PCI Audio). The driver can use it freely for purposes that are not covered by
standard ALSA API.
timer
Stream is the global ALSA timer device.
This means, the device is for all ALSA devices/cards.
sequencer
Stream is the global ALSA sequencer device.
This means, the device is for all ALSA devices/cards.
unknown
Stream is unknown device.
battery namespace
Device objects with the capability battery
represent all the devices having some battery (in many cases -
rechargeable) inside.
Key (type)ValuesMandatoryDescriptionbattery.present (bool)
Yes
This is present as some smart batteries can have acpi/pmu
entries, and be physically missing.
battery.type (string)
Yes
This property defines the type of the device holding the
battery. This property is defined for the development
simplicity - battery indicators can use it to find the
proper iconic representation.
pda
The device containing the battery is a personal digital
assistant, e.g. a device that looks like a handheld computer
to do specific tasks such as keeping notes or containing
a personal database
ups
A battery powered power supply that is
guaranteed to provide power to a computer in the event of
interruptions in the incoming electrical power. Most of the
time this is an external device.
primary
The battery is a primary power source for the system - an
example are laptop batteries.
mouse
The device containing the battery is a mouse.
keyboard
The device containing the battery is a keyboard.
keyboard_mouse
The device containing the battery is a combined mouse and keyboard.
camera
The device containing the battery is a camera.
usb
The device containing the battery is a generic usb device.
unknown
The device containing the battery is not covered by other types.
battery.charge_level.unit (string)
Examples:
mWh,
percentNo
The physical unit used by the charge level properties
(maximum and current). In many cases, this property is
omitted - which indicates that the charge properties
are measured in some unknown units.
The units should never be mAh as this is not a measurement
of charge.
battery.charge_level.design (int)
Yes
The maximum level of charge the device was designed for.
Measured in "battery.charge_level.unit"
units.
battery.charge_level.last_full (int)
Yes
The maximum level of charge the device could hold the last
time it was full.
Measured in "battery.charge_level.unit"
units.
battery.charge_level.current (int)
Yes
The current level of charge which the device can is holding.
Measured in "battery.charge_level.unit"
units.
battery.charge_level.rate (int)
No
The discharge/charge rate measured
in "battery.charge_level.unit"
units per second.
battery.charge_level.warning (int)
No
Once the charge level of the battery drops below this value its
state changes to 'warning'.
Measured in "battery.charge_level.unit"
units.
battery.charge_level.low (int)
No
Once the charge level of the battery drops below this value its
state changes to 'low'.
Measured in "battery.charge_level.unit"
units.
battery.charge_level.granularity_1 (int)
No
Granularity value one of the battery measured
in "battery.charge_level.unit"
units .
battery.charge_level.granularity_2 (int)
No
Granularity value two of the battery measured
in "battery.charge_level.unit"
units.
battery.reporting.unit (string)
Examples:
mWh,
mAh,
percentNo
The physical unit used by the charge level properties
(maximum and current) as reported by the hardware.
In many cases, this property is omitted - which indicates
that the charge properties are measured in some unknown units.
battery.reporting.design (int)
Yes
The maximum level of charge the device was designed for,
as reported by the hardware.
Measured in "battery.reporting.unit"
units.
battery.reporting.last_full (int)
No
The maximum level of charge the device could hold the last
time it was full, as reported by the hardware.
Measured in "battery.reporting.unit"
units.
battery.reporting.current (int)
No
The current level of charge which the device is holding,
as reported by the hardware.
Measured in "battery.reporting.unit"
units.
battery.reporting.rate (int)
No
The discharge/charge rate as reported by the hardware measured
in "battery.reporting.unit"
units per second.
battery.reporting.warning (int)
No
Once the hardware charge level of the battery drops below
this value its state changes to 'warning'.
Measured in "battery.reporting.unit"
units.
battery.reporting.low (int)
No
Once the hardware charge level of the battery drops below
this value its state changes to 'low'.
Measured in "battery.reporting.unit"
units.
battery.reporting.granularity_1 (int)
No
Hardware granularity value one of the battery measured
in "battery.reporting.unit"
units .
battery.reporting.granularity_2 (int)
No
Hardware granularity value two of the battery measured
in "battery.reporting.unit"
units.
battery.charge_level.capacity_state (string)
Examples: ok, criticalNo
The capacity state of the battery.
battery.voltage.unit (string)
Examples: mVNo
The physical measurement unit used by the voltage properties
(design and current).
battery.voltage.design (int)
Yes
The voltage level for which the battery is designed for.
Measured in "battery.voltage.unit"
units.
battery.voltage.current (int)
Yes
The voltage level currently emitted by the battery.
Measured in "battery.voltage.unit"
units.
battery.alarm.unit (string)
Examples: mWh, mAhNo
The physical measurement unit used by the alarm property.
battery.alarm.design (int)
No
Once the charge level of the battery drops below this value
its state changes to 'alarm'.
Measured in "battery.alarm.unit"
units.
battery.remaining_time (int)
No
Remaining time, in seconds, that the battery can provide
power (if discharging) or the time until charged (if charging).
This is an estimate and may be imprecise.
This key is not present for invalid data.
battery.remaining_time.calculate_per_time (bool)
No
If this property is true the
battery.remaining_time becomes guessed from
battery.charge_level.current and time.
battery.charge_level.percentage (int)
No
Charge, normalised to percent. This is useful if an application
does not want to process the raw values and do all the extra
checks on the result. This key is not present for invalid data.
battery.is_rechargeable (bool)
No
True if the battery unit is rechargeable, false if its is
one-time (disposable after one usage).
battery.rechargeable.is_charging (bool)
Only if battery.is_rechargeable is TRUE
TRUE if, and only if, the battery is charging.
battery.rechargeable.is_discharging (bool)
Only if battery.is_rechargeable is TRUE
TRUE if, and only if, the battery is discharging.
battery.command_interface (string)
No
The abstract name allowing daemons and/or user-level apps
to distinguish some groups of devices having similar
programming interface. Introduced mostly for the daemons'
coding simplicity.
battery.vendor (string)
No
Vendor of the battery.
battery.model (string)
No
Make of the battery.
battery.reporting.technology (string)
example: LIONNo
The technology of the battery as reported by the hardware.
battery.technology (string)
lead-acid, lithium-ion, lithium-polymer,
nickel-metal-hydride, unknown
No
The technology of the battery processed to a few standard types.
This key is needed as the hardware often does not specify the
description text for a battery, and so we have to calculate it
from the output of battery.reporting.technology.
battery.serial (string)
No
A string uniquely identifying the instance of the battery;
it will be different for two (otherwise) identical batteries.
battery.quirk.do_not_poll (bool)
No
True if HAL should not poll the battery, False or not available at all
if HAL should show the default behavior.
biometric namespace
Device objects with the capability biometric represent
a biometric device (e.g. fingerprint reader) . No namespace specific
properties.
biometric.fingerprint_reader namespace
Device objects with the capabilities biometric.fingerprint_reader
and biometric represent a biometric fingerprint reader.
Key (type)ValuesMandatoryDescriptionbiometric.fingerprint_reader.access_method (strlist)
example: libfprintNo
Indicates installed device driver libraries that can handle this device.
These drivers can export information in
biometric.fingerprint_reader.[access_method] sub-namespaces.
Can also be used by libraries or programs providing extra device information
to indicate the presence of this information in the appropriate sub-namespace.
button namespace
Device objects with the capability button
represent the devices capable of providing a state to the system.
Key (type)ValuesMandatoryDescriptionbutton.type (string)
NoThe type of buttonlid
The switch on a laptop that senses whether the lid is
open or closed
powerThe main power button on the computer.sleep
The sleep button on a computer capable of putting the computer
into a suspend state
button.has_state (bool)
noTrue if the button maintains state, e.g. can toggled on/offbutton.state.value (bool)
Only when button.has_state is
TRUE
State of the button, TRUE if it is enabled
Device objects with this capability may emit the following events.
Condition NameParametersExampleDescriptionButtonPressedbutton.type (string)sleepEmitted when a button is pressed
camera namespace
Device objects with the capability camera
represent digital still cameras that can be attached to a
computer to exchange files. This does not include card readers
for memory cards used for cameras. This capability can't, in
general, be reliably probed from the hardware so the
information needs to be merged from either device information
files or callouts. Therefore this capability should be merged
on the appropriate device object that represents the
addressable piece of hardware that is the digital still
camera; for USB devices this would be the device object
representing the appropriate USB interface. The following
properties are available:
Key (type)ValuesMandatoryDescriptioncamera.access_method (string)
YesThis property defines how the device is accessed storage
The device is accessed as a Mass Storage device
through a kernel driver. Application Developers
should descent down the device object tree to find the
device object of capability
storage in order to access the
device.
user
The device is accessed from userspace through
a userspace driver.
camera.libgphoto2.support (bool)
No
If true, the device is supported by a userspace driver
from the libgphoto2 project.
input namespace
This namespace is concerned with human input devices such as
keyboards, mice, pointing devices and game controllers. If a
device object has the capability input then
the following properties are available
Key (type)ValuesMandatoryDescriptioninput.device (string)
YesSpecial device file for recieving input eventsinput.x11_driver (string)
e.g. "evdev"NoX11 input driver to use
input.joystick namespace
The input device is a joystick. No namespace specific
properties.
input.keyboard namespace
The input device is a normal keyboard. No namespace specific
properties.
input.keymap namespace
Device objects with the capability input.keymap
provide facilities to remap keyboard buttons.
Key (type)ValuesMandatoryDescriptioninput.keymap.data (strlist)
e.g. "e017:brightnessup"No
The scancode is represented in hex and the keycode name as
as string. The keycode name is not case sensitive.
On Linux, the keycode name should be the same constant as
present in /usr/include/linux/input.h with the 'KEY_'
prefix removed, e.g. 'KEY_SLEEP' -> 'sleep'.
You can append as many input.keymap.data
values as there are keys to remap.
input.keypad namespace
The input device have keypad keys. No namespace
specific properties.
input.keys namespace
The input device have keys that can be pressed. No namespace
specific properties.
input.mouse namespace
The input device is a mouse. No namespace specific
properties.
input.switch namespace
The input device is a switch, e.g. it has buttons with
state. No namespace specific properties.
input.tablet namespace
The input device is a tablet. No namespace specific
properties.
input.xkb namespace
Device objects with the capability input.keys
can provide information about their physical layout.
Key (type)ValuesMandatoryDescriptioninput.xkb.rules (string)
e.g. "base"Yes
XKB rules file to use; 'base' is standard, but 'xorg'
or 'xfree86' may be needed for backwards compatibility
with very old versions of XKB data.
input.xkb.model (string)
e.g. "logicdp"Yes
Physical keyboard model (e.g. Logitech Cordless Freedom
Pro), as given to XKB.
input.xkb.layout (string)
e.g. "us"Yes
Keyboard layout (as engraved on the keys).
input.xkb.variant (string)
e.g. "nodeadkeys"No
Variant of the XKB layout (if any) to use.
input.xkb.options (strlist)
e.g. "ctrl:nocaps"No
Options to be provided to XKB.
keyboard_backlight namespace
Device objects with the capability keyboard_backlight
represent all the devices capable handling the keyboard backlight. (Note:
normally those devices have also the leds capability.)
Key (type)ValuesMandatoryDescriptionkeyboard_backlight.num_levels (bool)
Yes
The brightness levels supported by the LED device.
killswitch namespace
Device objects with the capability killswitch
represent switches to turn a radio on and off. See also .
Key (type)ValuesMandatoryDescriptionkillswitch.type (string)
YesType of the kill switchwlanKill switch is for turning Wireless LAN (WLAN) networking on/offbluetoothKill switch is for turning Bluetooth on/offwwanKill switch is for turning Wireless WAN (WWAN) networking on/offkillswitch.state (int)
NoCurrent state of the killswitch (as reported by the kernel)0Radio output is blocked1Radio output is allowed/enabled2Radio output is (hard) blocked, non-overrideable via SetPower()killswitch.name (string)
NoName of the kill switch (as reported by the kernel).killswitch.access_method (string)
YesHow HAL should program the switch
laptop_panel namespace
Device objects with the capability laptop_panel
represent devices capable of changing the brightness of the display.
Key (type)ValuesMandatoryDescriptionlaptop_panel.num_levels (int)
Yes
The brightness levels supported by the adaptor.
laptop_panel.access_method (string)
Yes
The access method to use in scripts, e.g. pmu, toshiba, ibm, sony.
laptop_panel.brightness_in_hardware (bool)
No
On some laptops, the brightness control is all done in hardware
but the hardware also synthesizes keypresses when the
brightness is changed.
If this key is set true, then any power manager software should
not attempt to set any new values on brightness keypress, as it
may cause the panel to flash uncontrollably.
The following methods exist on the interface
org.freedesktop.Hal.Device.LaptopPanel.
Method (parameter types)ParametersMandatoryDescriptionSetBrightness (integer)
The hardware brightness state, which should be between 0 and
laptop_panel.num_levels - 1.
No
This method adjusts the brightness on an laptop screen.
The values are returned as hardware values rather than
percentages as we cannot easily to floating point rounding in
shell code and therefore use the raw values to prevent integer
rounding errors.
integer GetBrightness (void)
Returns the hardware brightness state, which should be
between 0 and laptop_panel.num_levels - 1.
No
This method gets the hardware brightness of the laptop screen,
which we may need to do fairly regually on hardware that
changes the values in hardware without a software event.
light_sensor namespace
Device objects with the capability sensor
represent light sensors in the system.
Key (type)ValuesMandatoryDescriptionlight_sensor.sensor_locations (strlist)
YesThe locations of the sensorslight_sensor.num_sensors (int)
YesNumber of physical sensorslight_sensor.num_levels (int)
YesThe number of levels of the sensors
net namespace
This namespace is used to describe networking devices and
their capabilities.Such device objects will have the
capability net and they will export the
properties below. This namespace only describe the generic
aspect of networking devices; specific networking technologies
such as IEEE 802.3, IEEE 802.11 and Bluetooth have separate
namespaces.
Key (type)ValuesMandatoryDescriptionnet.address (string)
YesHardware address as a string. Is hardware dependantnet.arp_proto_hw_id (string)
YesARP protocol hardware identifiernet.interface (string)
YesName of the interface; may change if an interface is
renamed
net.interface_up (bool)
NoWhether the interface is upnet.linux.ifindex (string)
Yes (only on Linux)Index of the interfacenet.originating_device (string)
YesUDI of the device the network device is bound to.net.media (string)
example: EthernetYesTextual description of the networking media
net.80203 namespace
Ethernet networking devices is described in this namespace
for device objects with the capability
net.80203.
Note that device
objects can only have the net.80203 capability
if they already have the capability net.
Key (type)ValuesMandatoryDescriptionnet.80203.link (bool)
Only if the net.80203 capability is set
and net.interface_up is
TRUE.
True if the ethernet adaptor is connected to a
another transceiver. NOTE: property not implemented yet.
net.80203.rate (uint64)
example: 100000000
Only if the net.80203 capability is set
and net.80203.link is
TRUE.
Bandwidth of connection, in bits/s. NOTE: property not
implemented yet.
net.80203.mac_address (uint64)
example: 0x0010605d8ef4
Only if the net.80203 is set
48-bit address
net.80211 namespace
Wireless ethernet networking devices is described in this namespace
for device objects with the capability
net.80211.
Note that device
objects can only have the net.80211 capability
if they already have the capability net.
Key (type)ValuesMandatoryDescriptionnet.80211.mac_address (uint64)
example: 0x0010605d8ef4
Only if the net.80211 capability is set
48-bit address
net.80211control namespace
Control devices for Wireless ethernet networking devices are described in
this namespace for device objects with the capability
net.80211control.
Note that device objects can only have the net.80211control
capability if they already have the capability net.
Warning: You should know what you do if you touch this devices. They are
not always stable and can cause (kernel) crashes (on linux).
net.bluetooth namespace
Bluetooth ethernet networking devices is described in this namespace
for device objects with the capability
net.bluetooth.
Note that device
objects can only have the net.bluetooth capability
if they already have the capability net.
Key (type)ValuesMandatoryDescriptionnet.bluetooth.mac_address (uint64)
example: 0x0010605d8ef4
Only if the net.bluetooth capability is set
48-bit addressnet.bluetooth.name (string)
example: Network Access Point Service
Only if the net.bluetooth capability is set and Bluez is being used.
Displayable Name for network connectionnet.bluetooth.uuid (string)
example: 00001116-0000-1000-8000-00805f9b34fb
Only if the net.bluetooth capability is set and Bluez is being used.
Universal Unique Identifier for network connection
net.bridge namespace
Bridge ethernet networking devices is described in this namespace
for device objects with the capability
net.bridge.
Note that device
objects can only have the net.bridge capability
if they already have the capability net.
Key (type)ValuesMandatoryDescriptionnet.bridge.mac_address (uint64)
example: 0x0010605d8ef4
Only if the net.bridge capability is set
48-bit address
net.irda namespace
IrDA (Infrared Data Association) Networking devices are described in
this namespace for device objects with the capability
net.irda.
Note that device objects can only have the net.irda
capability if they already have the capability net.
net.loopback namespace
Loopback networking devices are described in this namespace
for device objects with the capability net.loopback.
Note that device objects can only have the net.loopback capability
if they already have the capability net.
No namespace specific properties.
obex namespace
Device objects with the capability obex
represent devices that have implemented OBject EXchange protocol for communication.
Typically such devices are mobile phones and the protocol is used to transfer files,
synchronize data and manage mobile phone configuration. No namespace specific properties.
Key (type)ValuesMandatoryDescriptionobex.type (sting)
example: pcsuite, syncmlNopcsuiteNo
Device is meant to be used with Nokia PC Suite application. Standardized OBEX file
transfer is supported and possibly proprietary extensions.
syncmlNo
Device supports SyncML over OBEX protocol.
syncml-syncNo
Device supports SyncML over OBEX protocol for data synchronization.
syncml-dmNo
Device supports SyncML over OBEX protocol for data management.
of_platform namespace
Devices on the virtual 'of_platform' bus are represented
by device objects where info.subsystem
equals of_platform. The following
properties are available for such device objects.
Key (type)ValuesMandatoryDescriptionof_platform.id (string)
example: f0003000.ethernetYesDevice identification
oss namespace
Device objects with the capability oss
represent all the streams available through OSS on a soundcard.
OSS devices could be emulated by ALSA.
Key (type)ValuesMandatoryDescriptionoss.card (int)
Yes
Card number in system as registered by OSS (and/or ALSA).
oss.card_id (string)
Examples: I82801DBICH4, MP3No
Textual description of the card.
oss.device (int)
Yes
Device number assigned by OSS/ALSA for a current card.
oss.device_file (string)
Yes
The device node to access the OSS device.
oss.device_id (string)
Examples: Intel 82801DB-ICH4 MIC2 ADCNo
Textual description of the specific device for a card
oss.originating_device (string)
Yes
UDI of the device the OSS device is bound to.
oss.type (string)
Yes
The type of the stream.
mixer
Stream is control/mixer device.
pcm
Stream is PCM device.
midi
Stream is MIDI device.
sequencer
Stream is a global OSS sequencer device.
This means, the device is for all OSS devices/cards.
unknown
Stream is unknown device.
pcmcia_socket namespace
Device objects with the capability pcmcia_socket
represent bridge devices (the actual bus of the device may differ)
that PCMCIA cards can be attached to. The following properties are
available.
Key (type)ValuesMandatoryDescriptionpcmcia_socket.number (int)
YesPCMCIA socket number, starting from zero
pda namespace
Device objects with the capability pda
represent Personal Digital Assistant (PDA) devices.
Key (type)ValuesMandatoryDescriptionpda.platform (string)
e.g. palm or pocketpcYesThe type of the PDA platformpda.palm.hotsync_interface (string)
Yes
Path to the Palm hotsync interface e.g. a linux device file (e.g. USB) or a
serial device.
pda.pocketpc.hotsync_interface (string)
Yes
Path to the Pocket PC (e.g. HP iPAQ) hotsync interface e.g. a linux device file
(e.g. USB) or a serial device.
power_management namespace
Keys with the prefix power_management
provide information about power management supported by
the system.
Key (type)ValuesMandatoryDescriptionpower_management.type (string)
Examples:
apm,
acpi,
pmuYes
The power management subsystem used on the computer.
power_management.can_suspend (bool)
Yes
If suspend support is compiled into the kernel.
NB. This may not mean the machine is able to suspend
successfully.
power_management.can_suspend_hybrid (bool)
Yes
If the system is capable of hybrid suspend.
power_management.can_hibernate (bool)
Yes
If hibernation support is compiled into the kernel.
NB. This may not mean the machine is able to hibernate
successfully.
power_management.is_powersave_set (bool)
Yes
Is the last value passed to the SetPowerSave method.
power_management.quirk.s3_bios (bool)
NoUse the S3_BIOS kernel command for suspend.power_management.quirk.s3_mode (bool)
NoUse the S3_MODE kernel command for suspend.power_management.quirk.dpms_suspend (bool)
NoSuspend the video card via DPMS on suspend.power_management.quirk.vga_mode_3 (bool)
NoReset the VGA text mode to mode 3 on resume.power_management.quirk.dpms_on (bool)
NoReactivate the screen with DPMS on resume.power_management.quirk.vbe_post (bool)
NoRun the VGA BIOS Power On Self Test (POST) on resume.power_management.quirk.vbestate_restore (bool)
NoSave the VGA BIOS state before suspend, and restore it on resume.power_management.quirk.vbemode_restore (bool)
NoSave the VGA BIOS mode before suspend, and restore it on resume.power_management.quirk.pci_save (bool)
Nosaving the PCI config space of the graphic card before suspend, restoring it afterpower_management.quirk.radeon_off (bool)
NoTurn off the Radeon DAC off before suspend.power_management.quirk.reset_brightness (bool)
NoReset the brightness state after resume.power_management.quirk.no_fb (bool)
NoTrue if the machine can only suspend when not using framebuffer.power_management.quirk.none (bool)
NoNo quirks are necessary for suspend or resume.
portable_audio_player namespace
Device objects with the capability
portable_audio_player represent portable
audio players that can be attached to a computer to exchange
files. They can also playback audio. Sometimes they can also
record audio. This capability can't, in general, be reliably
probed from the hardware so the information needs to be merged
from either device information files or callouts. Therefore
this capability should be merged on the appropriate device
object that represents the addressable piece of hardware that
is the portable music player; for USB devices this would be
the device object representing the appropriate USB
interface. The following properties are available:
Key (type)ValuesMandatoryDescriptionportable_audio_player.access_method.protocols (strlist)
example: storage ipod mtp pde iriver karmaYes
Indicates transfer protocols that this device can speak.
storage indicates USB Mass Storage (UMS) is an access
protocol. ipod indicates UMS plus an iTunes-style database.
mtp indicates a device using Microsoft's Media Transfer Protocol.
Arbitrary values for newer or obscure protocols are allowed but
entities providing this information should try to ensure that
they are not duplicating protocols under a different name.
portable_audio_player.access_method.drivers (strlist)
example: libgpod, libmtp, libnjb, libifp, libkarmaNo
Indicates installed device driver libraries that can
handle this device. These drivers can export information
in portable_audio_player.[drivername] sub-namespaces.
Can also be used by libraries or programs providing extra device information
to indicate the presence of this information in the appropriate sub-namespace.
portable_audio_player.[drivername].protocol (strlist)
example: mtpIf portable_audio_player.drivers is set
This entry is required for drivers listed in
portable_audio_player.access_method.drivers. Indicates which
protocol in portable_audio_player.access_method.protocols
a particular driver will use. If the driver is providing information only, this
should be set to information.
portable_audio_player.output_formats (strlist)
example: audio/mpeg audio/x-ms-wmaYes
A string list of MIME-types representing the kind of audio
formats that the device can play back.
portable_audio_player.input_formats (strlist)
example: audio/x-wavYes
A string list of MIME-types representing the kind of audio
formats that the device can record. If empty, it means that
the device is not capable of recording.
portable_audio_player.folder_depth (int)
example: 1 (If the device only supports one sub-folder)No
If portable_audio_player.access_method.protocols contains "storage",
this tells applications exactly how deep of directory hierarchies
files should be placed in. If all files are put in a
sub-folder (with the audio_folders property), only the depth within
that sub-folder should be entered here. If the device does not have
a limit, do not set this property.
portable_audio_player.audio_folders (strlist)
example: music/ voice/ linein/No
If portable_audio_player.access_method.protocols contains "storage",
this may contain a string list of folders in which music
can be found. Paths are relative to the mount point of the
device. If there is one or more entry in this property, the
first one is where files will be written to by applications.
Do not enter a folder and a parent of that folder.
If the device places files in its root directory, then do not
set this property.
portable_audio_player.playlist_format (strlist)
example: audio/x-mpegurl audio/x-somethingelseNo
A string list of the MIME-type of the playlist formats accepted by
this device. Leave blank if none.
portable_audio_player.playlist_path (string)
examples: playlists/%File or Playlist.m3uNo
Set to the path to which playlists should be written. Leave
blank if playlist files are not supported. If the device supports a single playlist with a specific name/path,
set this to the path relative to the mount point that it should be saved to. If it supports multiple
playlists, use the %File variable as needed. Applications are responsible for substituting %File with the
desired playlist file name, noting that it's use in this string is optional.
portable_audio_player.storage_device (string)
examples: a udiNo
Set to the udi of the portable_audio_player device if portable_audio_player.access_method.protocols
contains storage for a USB Mass Storage (UMS) music player. Mandatory for storage.
printer namespace
Device objects with the capability printer
represent printers. The following properties are available.
Key (type)ValuesMandatoryDescriptionprinter.device (string)
YesSpecial device file to interact with the printer device.printer.vendor (string)
YesName of the device vendorprinter.product (string)
YesName of the product.printer.serial (string)
Yes
A string uniquely identifying the instance of the device;
ie. it will be different for two devices of the same type.
Note that the serial number is broken on some USB devices.
printer.description (string)
NoDescription for the device.printer.commandset (strlist)
NoList of supported commands / printer languages.
processor namespace
Device objects with the capability processor
represent CPU's in the system.
Key (type)ValuesMandatoryDescriptionprocessor.number (int)
Yes
The internal processor number in the system, starting from zero
processor.can_throttle (bool)
No
Whether the processor supports throttling to decrease it's
own clock speed
processor.maximum_speed (long)
example: 2200NoThe maximum speed of the processor in units of MHz
scanner namespace
Device objects with the capability scanner
represent image scanners. This capability should be merged
on the appropriate device object that represents the
addressable piece of hardware that is the digital still
camera; for USB devices this would be the device object
representing the appropriate USB interface. The following
properties are available:
Key (type)ValuesMandatoryDescriptionscanner.access_method (string)
YesThis property defines how the device is accessed proprietary
The device is accessed from userspace through
a userspace driver such as SANE.
smart_card_reader namespace
Device objects with the capability smart_card_reader represent
a smart card device/systems (e.g. smart card reader) . No namespace specific
properties.
smart_card_reader.card_reader namespace
Device objects with the capabilities smart_card_reader
and smart_card_reader.card_reader represent a
smart card reader. No namespace specific properties.
smart_card_reader.crypto_token namespace
Device objects with the capabilities smart_card_reader and
smart_card_reader.crypto_token represent a smart token, a
device where the smart card and the smart card reader are in one device. No
namespace specific properties.
storage namespace
This namespace is used to describe storage devices
and their capabilities. Such device objects will have the
capability storage and
they will export the properties below. Note that device
objects can only have the storage capability
if they already got capability block and the
property block.is_volume set to FALSE.
One significant between the storage and
block namespace is that the properties
exported in the storage represents
constant vital product information, whereas the properties
in the block namespace represent
variable system-dependent information.
Key (type)ValuesMandatoryDescriptionstorage.bus (string)
YesInterface the storage device is attached toccissHP Smart Array CCISS interfaceccwIBM s390/s390x ccw interfaceideIDE or ATA interfaceieee1394IEEE 1394 interfacelinux_raidLinux MD (multi disk) RAID devicememstickSony MemoryStick device/interfacemmcMultiMediaCard (MMC) interfacepciPCI interfacepcmciaPCMCIA interfaceplatformLegacy device that is part of the platformsataSATA interfacescsiSCSI interfaceusbUSB interfacevioIBM pSeries/iSeries Vio interfacestorage.drive_type (string)
Yes
The type of the drive. Note that it may not be
possible to probe for some of these properties so in
some cases memory card readers may appear as
harddisks. Device information files can be used to
override this value.
diskThe device is a harddiskcdrom
The device is an optical drive. The device object will also have the capability storage.cdrom in this case.
floppyThe device is a floppy disk drivetapeThe device is a tape drivecompact_flashThe device is a card reader for Compact Flash memory cardsmemory_stickThe device is a card reader for MemoryStick memory cardssmart_mediaThe device is a card reader for SmartMedia memory cardssd_mmcThe device is a card reader for SecureDigital/MultiMediaCard memory cardsstorage.removable (bool)
YesMedia can be removed from the storage devicestorage.removable.media_available (bool)
Yestrue, if and only if, media have been detected in storage devicestorage.removable.media_size (uint64)
YesSize of media in storage device. Available only if media have been detected in storage device.storage.removable.support_async_notification (bool)
YesWhether the drive reports asynchronous notification for media change.storage.partitioning_scheme (string)
Only when media is inserted and is partitionedThe partitioning scheme of the media.mbrMaster Boot Record partitioning scheme used in most PC'sgptGUID Partitioning Table as defined by UEFIapmApple Partition Map, used in non-Intel Apple computersstorage.size (uint64)
Nosize in bytes of the storage device - only meaningful if storage.removable is FALSEstorage.requires_eject (bool)
YesThe eject ioctl is required to properly eject the mediastorage.hotpluggable (bool)
YesThe storage device can be removed while the system is runningstorage.media_check_enabled (bool)
YesIf this property is set to FALSE then HAL will not continuosly poll for media changes. storage.automount_enabled_hint (bool)
YesThis property is a hint to desktop file managers that they shouldn't automount volumes of the storage device when they appear.storage.no_partitions_hint (bool)
Yes
This property is a hint to programs that maintain the
/etc/fstab file to signal, when
TRUE, that the storage drive (such as floppy or
optical drives) is used for media with no partition
table so an entry can be added ahead of media
insertion time. Note that this is only a hint; media
may be inserted that has partition tables that the
kernel may respect. Conversely, when this is FALSE
media without partition tables may be inserted (an
example is a Compact Flash card; this media is normally
formatted with a PC style partition table and a single
FAT partition. However, it may be formatted with just
a single FAT partition and no partition table).
storage.originating_device (string)
Yes
This contains the UDI of the device object
representing the device or blank if
there is no such device.
storage.model (string)
YesThe name of the drivestorage.vendor (string)
YesThe vendor of the drivestorage.serial (string)
NoThe serial number of the drivestorage.firmware_revision (string)
NoThe revision of the firmware of the drivestorage.icon.drive (string)
No
Name of icon to use for displaying the drive. The name
must comply with freedesktop.org icon-theme specification
and must not be an absolute path.
This property exists such that e.g. OEM's can install
icons in /usr/share/icons/hicolor
a device information file matching their device.
storage.icon.volume (string)
No
Name of icon to use for displaying volumes from the drive.
The name must comply with freedesktop.org icon-theme
specification and must not be an absolute path.
This property exists such that e.g. OEM's can install
icons in /usr/share/icons/hicolor
a device information file matching their device.
storage.cdrom namespace
This namespace is used to describe optical storage drives
and their capabilities.Such device objects will have the
capability storage.cdrom and
they will export the properties below. Note that device
objects can only have the storage.cdrom capability
if they already got the capability storage.
Key (type)ValuesMandatoryDescriptionstorage.cdrom.cdr (bool)
YesTRUE when the optical drive can write CD-R discsstorage.cdrom.cdrw (bool)
YesTRUE when the optical drive can blank and write to CD-RW discsstorage.cdrom.dvd (bool)
YesTRUE when the optical drive can read DVD-ROM discsstorage.cdrom.dvdr (bool)
YesTRUE when the optical drive can write to DVD-R discsstorage.cdrom.dvdrw (bool)
YesTRUE when the optical drive can blank and write to DVD-RW discsstorage.cdrom.dvdrdl (bool)
YesTRUE when the optical drive can write to DVD-R Dual-Layer discsstorage.cdrom.dvdram (bool)
YesTRUE when the optical drive can write to DVD-RAM discsstorage.cdrom.dvdplusr (bool)
YesTRUE when the optical drive can write to DVD+R discsstorage.cdrom.dvdplusrw (bool)
YesTRUE when the optical drive can blank and write to DVD+RW discsstorage.cdrom.dvdplusrwdl (bool)
YesTRUE when the optical drive can blank and write to DVD+RW Dual-Layer discsstorage.cdrom.dvdplusrdl (bool)
YesTRUE when the optical drive can write to DVD+R Dual-Layer discsstorage.cdrom.bd (bool)
YesTRUE when the optical drive can read Blu-ray ROM discsstorage.cdrom.bdr (bool)
YesTRUE when the optical drive can write to Blu-ray Recordable discsstorage.cdrom.bdre (bool)
YesTRUE when the optical drive can write to Blu-ray Rewritable discsstorage.cdrom.hddvd (bool)
YesTRUE when the optical drive can read Read-only HD DVD discsstorage.cdrom.hddvdr (bool)
YesTRUE when the optical drive can write to Write-once HD DVD discsstorage.cdrom.hddvdrw (bool)
YesTRUE when the optical drive can write to Rewritable HD DVD discsstorage.cdrom.mrw (bool)
YesTRUE when the optical drive can read MRW (Mount Rainier Rewrite) discsstorage.cdrom.mrw_w (bool)
YesTRUE when the optical drive can write MRW (Mount Rainier Rewrite) discsstorage.cdrom.mo (bool)
NoTRUE when the optical drive is a MO (Magneto Optical) device.storage.cdrom.support_multisession (bool)
YesTRUE if the drive can read multisession discsstorage.cdrom.support_media_changed (bool)
YesTRUE if the drive can generate media changed eventsstorage.cdrom.read_speed (int)
YesThe maximum reading speed, in kb/sstorage.cdrom.write_speed (int)
YesThe maximum writing speed, in kb/sstorage.cdrom.write_speeds (strlist)
NoBy the device supported write speeds in kb/s
storage.linux_raid namespace
This namespace is used to describe logical Software RAID
devices under Linux using the md driver. By
and large, all the same properties under
the storage name space applies except
that storage.serial is set to the UUID of
the RAID set, storage.firmware_version is
set to the version of the md driver and the
value of storage.hotpluggable is taken from
the enclosing drive of the first RAID component
encountered. In addition, the following properties are
available.
Key (type)ValuesMandatoryDescriptionstorage.linux_raid.level (string)
Yesthe RAID level of the device as reported by the kernel (linear, raid0, raid1, raid4, raid5, raid6, raid10)storage.linux_raid.sysfs_path (string)
Yessysfs path of device, e.g. /sys/block/md0storage.linux_raid.num_components (int)
YesNumber of components in the RAID arraystorage.linux_raid.num_components_active (int)
Yes
Number of active components in the RAID array. If less
than storage.linux_raid.num_components
it means that the RAID array is running in degraded
mode.
storage.linux_raid.components (strlist)
YesUDI's of the volumes constituting the array.storage.linux_raid.is_syncing (bool)
YesTRUE if, and only if, the array is currently syncingstorage.linux_raid.sync.action (string)
only if .is_syncing is TRUEThe syncing mechanism as reported by the kernel (idle, resync, check, repair, recover)storage.linux_raid.sync.progress (double)
only if .is_syncing is TRUENumber between 0 and 1 representing progress of the sync operation. This is updated regulary when syncing is happening.storage.linux_raid.sync.speed (uint64)
only if .is_syncing is TRUESpeed of the sync operation, in kB/s. This is updated regulary when syncing is happening.
system namespace
This namespace is found on the toplevel "Computer" device,
and represents information about the system and the currently
running kernel.
Key (type)ValuesMandatoryDescriptionsystem.kernel.name (string)
example: LinuxNo
The name of the kernel, usually the equivalent of
uname -s.
system.kernel.version (string)
example: 2.6.5-7.104-defaultNo
The version of the currently running kernel. Usually
the equivalent of uname -r.
system.kernel.version.major (int)
example: 2NoThe major version number of the running kernel.system.kernel.version.minor (int)
example: 6NoThe minor version number of the running kernel.system.kernel.version.micro (int)
example: 28NoThe micro version number of the running kernel.system.kernel.machine (string)
example: i686No
The "machine hardware name" of the currently running kernel.
Usually the equivalent of uname -m.
system.formfactor (string)
example: laptop, desktop, server, unknownYes
The formfactor of the system. Usually the equivalent of
system.chassis.type or set from information
about ACPI/APM/PMU properties.
system.hardware.vendor (string)
No
The name of the manufacturer of the machine.
system.hardware.product (string)
No
The product name of the machine.
system.hardware.version (string)
No
The version of the machine.
system.hardware.serial (string)
No
The serial number of the machine.
system.hardware.uuid (string)
No
The unique ID of the machine.
system.hardware.primary_video.vendor (int)
No
The PCI vendor ID of the primary graphics card in the system.
system.hardware.primary_video.product (int)
No
The PCI device ID of the primary graphics card in the system.
system.firmware.vendor (string)
No
The firmware vendor.
system.firmware.version (string)
No
The firmware version.
system.firmware.release_date (string)
No
The release date of the firmware.
system.chassis.manufacturer (string)
No
The manufacturer of the chassis.
system.chassis.type (string)
No
The chassis type of the machine.
system.board.vendor (string)
No
The name of the manufacturer of the base board.
system.board.product (string)
No
The product name of the base board.
system.board.version (string)
No
The version of the base board.
system.board.serial (string)
No
The serial number of the base board.
system.lsb.version (string)
example: 'core-2.0-ia64:core-2.0-noarch:graphics-2.0-ia64:graphics-2.0-noarch'No
The version of the LSB specification against which the distribution is compliant (as provided by lsb_release).
system.lsb.distributor_id (string)
example: MyDistribNo
The LSB distributor ID (as provided by lsb_release).
system.lsb.description (string)
example: 'I enjoy using my distrib'No
The LSB single line text description of the distribution (as provided by lsb_release).
system.lsb.release (string)
example: 1.0RC4No
The LSB release number of the distribution (as provided by lsb_release).
system.lsb.codename (string)
example: TryItNo
The LSB codename according to the distribution release (as provided by lsb_release).
tape namespace
Device objects with the capability tape
represent tape devices.
Key (type)ValuesMandatoryDescriptiontape.major (int)
example: 254YesThe device's major numbertape.minor (int)
example: 0YesThe device's minor number
video4linux namespace
Device objects with the capability video4linux
represent Video4Linux devices.
Key (type)ValuesMandatoryDescriptionvideo4linux.device (string)
Example: /dev/video0YesThe device node to access the Video4Linux device.video4linux.version (string)
Example: 2Yes
The highest Video4Linux API version supported by the device.
video4linux.audio namespace
The video4linux device has audio inputs or outputs.
No namespace specific properties.
video4linux.radio namespace
The video4linux device is a radio device.
No namespace specific properties.
video4linux.tuner namespace
The video4linux device has some sort of tuner or modulator to receive
or emit RF-modulated video signals.
No namespace specific properties.
video4linux.video_capture namespace
The video4linux device can capture video.
No namespace specific properties.
video4linux.video_output namespace
The video4linux device can output video.
No namespace specific properties.
video4linux.video_overlay namespace
The video4linux device can overlay video.
No namespace specific properties.
volume namespace
This namespace is for device objects that represent storage
devices with a filesystem that can be mounted. Such device
objects will have the capability volume and
they will export the properties below. Note that device
objects can only have the volume capability
if they already have the capability block
and the property block.is_volume set to TRUE.
Key (type)ValuesMandatoryDescriptionvolume.ignore (bool)
YesThis is a hint to software higher in the stack
that this volume should be ignored. If TRUE, the volume
should be invisible in the UI and mount wrappers should
refuse to mount it on behalf on an unprivileged
user. This is useful for hiding e.g. firmware partitions
(e.g. bootstrap on Mac's) and OS reinstall partitions on
e.g. OEM systems.
volume.is_mounted (bool)
YesThis property is TRUE if and only if the volume is mountedvolume.is_mounted_read_only (bool)
YesThis property is TRUE if and only if the volume is mounted and
the volume's file-system is read-only.
volume.mount_point (string)
example: /media/compact_flash1 Yes (is blank only when volume.is_mounted is FALSE)A fully qualified path to the mount point of the volumevolume.fsusage (string)
example: filesystemYes
This property specifies the expected usage of the volume
filesystemThe volume is a mountable filesystempartitiontable
The volume contains a partitiontable.
raidThe volume is a member of a raid set and not mountableotherThe volume is not mountable like a swap partitionunusedThe volume is marked a unused or freevolume.fstype (string)
examples: ext3, vfatYes (is blank if the type is unknown)The specific type of either the file system or what the volume is used for, cf. volume.fsusagevolume.mount.valid_options (string list)
examples: ro, sync, noexec
Yes, if the org.freedesktop.Hal.Device.Volume interface is
defined.
List of the allowed (valid) mount options for the defined fstype.volume.unmount.valid_options (string list)
examples: lazy
No (only available if the org.freedesktop.Hal.Device.Volume
interface is defined)
List of the allowed (valid) unmount options for the defined fstype.volume.fstype.alternative (string list)
examples: ntfs-3g, ntfs-fuseNo (only if there is a alternative mount handler)The allowed (and installed) alternative mount handler/filesystem(s).volume.fstype.alternative.preferred (string)
examples: ntfs-3gNo
The preferred alternative mount handler/filesystem. Allows e.g. a distributor
do define a preferred of the alternative handlers.
If not set, the default filesystem (defined by volume.fstype)
should be used (or let the fstype parameter of Mount() empty),
otherwise it must be the name of one of the alternative handlers, as in
volume.fstype.alternative.
volume.mount.[alternative].valid_options (string list)
examples: locale=, uid=
Yes, if volume.fstype.alternative is set and if the
org.freedesktop.Hal.Device.Volume interface is defined.
List of the allowed (valid) mount options for the defined alternative filesystem
handler. Replace [alternative] in the property string with the
name of the alternative filesystem handler. For e.g. ntfs-3g the property would be:
volume.mount.ntfs-3g.valid_options.
NOTE: To mount the volume with the alternative handler/filesystem you have
to pass the correct (alternative) fstype parameter to the Mount() method
of the org.freedesktop.Hal.Device.Volume interface
volume.unmount.[alternative].valid_options (string list)
examples: lazy
No, only available if volume.fstype.alternative is set and
if the org.freedesktop.Hal.Device.Volume interface is defined.
List of the allowed (valid) unmount options for the defined alternative filesystem
handler. Replace [alternative] in the property string with the
name of the alternative filesystem handler. For e.g. ntfs-3g the property would be:
volume.unmount.ntfs-3g.valid_optionsvolume.fsversion (string)
example: FAT32Version number or subtype of the filesystemvolume.label (string)
example: 'Fedora Core 1.90' Yes (is blank if no label is found)The label of the volumevolume.uuid (string)
example: 4060-6C11Yes (is blank if no UUID is found)The Universal Unique Identifer for the volumevolume.is_disc (bool)
YesIf the volume stems from an optical disc, this
property is true and the device object will also have
the capability volume.discvolume.block_size (string)
No
The block size of the volume
volume.num_blocks (string)
No
Number of blocks on the volume
volume.size (uint64)
No
Size of the volume in bytes
volume.is_partition (bool)
Yes
If the volume stems from a partition on e.g. a hard
disk, this property is set to TRUE.
volume.linux.is_device_mapper (bool)
Yes, but only on Linux
If the volume stems from the Linux Device Mapper this property is set to TRUE.
volume.partition.number (int)
If, and only if, volume.is_partition
is set to TRUE.
The number of the partition.
volume.partition.label (string)
If, and only if, volume.is_partition
is set to TRUE.
Label of partition. Only available for "apm" and "gpt"
partition tables. Note that this is not the same as the
file system label defined in volume.label.
volume.partition.uuid (string)
If, and only if, volume.is_partition
is set to TRUE.
The UUID or GUID of the partition table entry. Only available for
"gpt" partition tables.
volume.partition.scheme (string)
If, and only if, volume.is_partition
is set to TRUE.
The scheme of the partition table this entry is part of.
Note that this is not necessarily the same as
storage.partitioning_scheme as
some partition tables can embed other partition tables.
mbr
Master Boot Record
embr
Extended Master Boot Record
gpt
GUID Partition Table as defined by EFI
apm
Apple Partition Map
volume.partition.type (string)
If, and only if, volume.is_partition
is set to TRUE.
The type of the partition table entry. Depends on
volume.partition.scheme.
mbr and embr entries
The hexadecimal encoding of the 8-bit partition type, see
http://www.win.tue.nl/~aeb/partitions/partition_types-1.html
for a list. For example the Linux partition type is represented
as the string "0x83".
gpt entries
The GUID encoded as a string. See http://en.wikipedia.org/wiki/GUID_Partition_Table
for a list of well-known GUID's.
apm entries
Defined in http://developer.apple.com/documentation/mac/Devices/Devices-126.html.
Also note that for FAT file systems, it appears that "DOS_FAT_32", "DOS_FAT_16"
and "DOS_FAT_12" are also recognized under Mac OS X (I've tested this too) cf.
http://lists.apple.com/archives/Darwin-drivers/2003/May/msg00021.html
volume.partition.flags (strlist)
If, and only if, volume.is_partition
is set to TRUE.
Flags conveying specific information about the partition
entry. Dependent on the partitioning scheme.
mbr and embr entries
Only one flag, "boot", is defined. This is used by some BIOS'es and
boot loaders to populate a boot menu. It means that a partition is
bootable.
gpt entries
Only the flag "required" is recognized. This corresponds to
bit 0 of the attibutes (at offset 48), meaning
"Required for the platform to function. The system cannot
function normally if this partition is removed. This
partition should be considered as part of the hardware of the
system, and if it is removed the system may not boot. It may
contain diagnostics, recovery tools, or other code or data that is
critical to the functioning of a system independent of any OS."
apm entries
The following flags are recognized:
"allocated" if the partition is already allocated; and
"in_use" if the partition is in use; may be cleared after a system reset; and
"boot" if partition contains valid boot information; and
"allow_read" if partition allows reading; and
"allow_write"; if partition allows writing; and
"boot_code_is_pic"; if boot code is position independent
volume.partition.media_size (uint64)
example: 500107862016
If, and only if, volume.is_partition
is set to TRUE.
If available, size of the current media or the fixed disk in the storage device.
volume.partition.start (uint64)
example: 32256
If, and only if, volume.is_partition
is set to TRUE.
If available, the offset where the partition starts on the media or the fixed disk in the storage device.
Device objects with this capability may emit the following
device conditions
Condition NameParametersExampleDescriptionVolumeMountblock.device (string),
volume.mount_point (string)
/dev/sda1,
/media/compact_flashEmitted when a volume is mountedVolumeUnmountblock.device (string),
volume.mount_point (string)
/dev/sda1,
/media/compact_flashEmitted when a volume is unmountedVolumeUnmountForcedblock.device (string),
volume.mount_point (string)
/dev/sda1,
/media/compact_flash
Emitted when a volume is forcibly unmounted because
the media backing the volume was removed.
volume.disc namespace
This namespace is for device objects that represent optical
discs, e.g. device objects with the capability
volume.disc. Such device objects will
also have the capability volume.
Key (type)ValuesMandatoryDescriptionvolume.disc.has_audio (bool)
YesIs true only if the disc contains audiovolume.disc.has_data (bool)
YesIs true only if the disc contains datavolume.disc.is_vcd (bool)
YesIs true only if the disc is a Video CDvolume.disc.is_svcd (bool)
YesIs true only if the disc is a Super Video CDvolume.disc.is_videodvd (bool)
YesIs true only if the disc is a Video DVDvolume.disc.is_appendable (bool)
YesIs true only if it's possible to write additional datavolume.disc.is_blank (bool)
YesIs true only if the disc is blankvolume.disc.is_rewritable (bool)
YesIs true only if the disc is rewritablevolume.disc.capacity (uint64)
NoCapacity of disc, in bytesvolume.disc.type (string)
YesThis property specifies the physical type of the disccd_romCD-ROM disccd_rCD-R disccd_rwCD-RW discdvd_romDVD-ROM discdvd_ramDVD-RAM discdvd_rDVD-R discdvd_rwDVD-RW discdvd_r_dlDVD-R dual layer discdvd_plus_rDVD+R discdvd_plus_r_dlDVD+R dual layer discdvd_plus_rwDVD+RW discdvd_plus_rw_dlDVD+RW dual layer discbd_romBD-ROM discbd_rBD-R discbd_reBD-RE dischddvd_romHD DVD-ROM dischddvd_rHD DVD-R dischddvd_rwHD DVD-Rewritable discunknownUnknown type or lack of support from drive to determine the typeMisc. Properties
access_control namespace
Device objects with the
capability access_control represent devices
where access to a special device file can be granted/revoked
to unprivileged users.
Key (type)ValuesMandatoryDescriptionaccess_control.file (string)
Example: /dev/snd/pcmC0D1pYes
Path to the special device file that access can be granted to.
access_control.type (string)
Example: cdromYes
Type of access - only makes sense when PolicyKit
support is enabled; it's used by PolicyKit to compute
what privilege to check for by
prepending org.freedesktop.hal.device-access. to the
value.
access_control.grant_user (strlist)
Example: "gdm, flumotion"No
List of UNIX user names to always grant access to the
device. This is useful for 3rd party system-wide
packages that need access to a device to function
properly.
access_control.grant_group (strlist)
Example: "pvr_software, staff"No
List of UNIX group names to always grant access to the
device. This is useful for 3rd party system-wide
packages that need access to a device to function
properly.
See also .
Deprecated Properties
The section represents properties that are deprecated and should be no longer used.
The properties/keys will be removed, but not before the date in the following table:
Key (type)ReplacementRemove (date)Notes () ()xxxx-xx-xx