hal: Branch 'master'

Danny Kukawka dkukawka at kemper.freedesktop.org
Thu Oct 23 05:47:23 PDT 2008


 doc/spec/hal-spec-properties.xml | 4530 +++++++++++++++++++--------------------
 1 file changed, 2287 insertions(+), 2243 deletions(-)

New commits:
commit ccdd663ece77b265fa50d49a53f2b97e1a76cba9
Author: Danny Kukawka <danny.kukawka at web.de>
Date:   Thu Oct 23 14:46:44 2008 +0200

    reorganise spec: sort 'Functional Properties' alphabetical
    
    Reorganise spec: sort 'Functional Properties' in alphabetical order.

diff --git a/doc/spec/hal-spec-properties.xml b/doc/spec/hal-spec-properties.xml
index ff8abde..e5d6012 100644
--- a/doc/spec/hal-spec-properties.xml
+++ b/doc/spec/hal-spec-properties.xml
@@ -3393,14 +3393,13 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
       may have been merged from device information files or callouts.
     </para>
 
-    <sect2 id="device-properties-kernel">
+    <sect2 id="device-properties-ac_adapter">
       <title>
-        system namespace
+        ac_adapter namespace
       </title>
       <para>
-        This namespace is found on the toplevel "Computer" device,
-        and represents information about the system and the currently
-        running kernel.
+        Device objects with the capability <literal>ac_adapter</literal>
+        represent all the devices capable of powering the system from AC power
       </para>
       <informaltable>
         <tgroup cols="2">
@@ -3415,207 +3414,265 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
           <tbody>
             <row>
               <entry>
-                <literal>system.kernel.name</literal> (string)
+                <literal>ac_adapter.present</literal> (bool)
               </entry>
-              <entry>example: Linux</entry>
-              <entry>No</entry>
+              <entry></entry>
+              <entry>Yes</entry>
               <entry>
-                The name of the kernel, usually the equivalent of
-                <literal>uname -s</literal>.
+                The state of the adapter, i.e. whether it is providing power to
+                the unit from mains power.
               </entry>
             </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="device-properties-alsa">
+      <title>
+        alsa namespace
+      </title>
+      <para>
+        Device objects with the capability <literal>alsa</literal>
+        represent all the streams available through ALSA on a soundcard.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Key (type)</entry>
+              <entry>Values</entry>
+              <entry>Mandatory</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
             <row>
               <entry>
-                <literal>system.kernel.version</literal> (string)
+                <literal>alsa.card</literal> (int)
               </entry>
-              <entry>example: 2.6.5-7.104-default</entry>
-              <entry>No</entry>
+              <entry></entry>
+              <entry>Yes</entry>
               <entry>
-                The version of the currently running kernel.  Usually
-                the equivalent of <literal>uname -r</literal>.
+                Card number in system as registered by ALSA.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>system.kernel.machine</literal> (string)
+                <literal>alsa.card_id</literal> (string)
+              </entry>
+              <entry>
+                Examples: <literal>I82801DBICH4</literal>, <literal>MP3</literal>
               </entry>
-              <entry>example: i686</entry>
               <entry>No</entry>
               <entry>
-                The "machine hardware name" of the currently running kernel.
-                Usually the equivalent of <literal>uname -m</literal>.
+                Textual description of the card.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>system.formfactor</literal> (string)
+                <literal>alsa.device</literal> (int)
               </entry>
-              <entry>example: laptop, desktop, server, unknown</entry>
+              <entry></entry>
               <entry>Yes</entry>
               <entry>
-                The formfactor of the system. Usually the equivalent of
-                <literal>system.chassis.type</literal> or set from information
-                about ACPI/APM/PMU properties.
+                Device number assigned by ALSA for a current card.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>system.hardware.vendor</literal> (string)
+                <literal>alsa.device_file</literal> (string)
               </entry>
               <entry></entry>
-              <entry>No</entry>
+              <entry>Yes</entry>
               <entry>
-                The name of the manufacturer of the machine.
+                The device node to access the ALSA device.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>system.hardware.product</literal> (string)
+                <literal>alsa.device_id</literal> (string)
+              </entry>
+              <entry>
+                Examples: <literal>Intel 82801DB-ICH4 MIC2 ADC</literal>
               </entry>
-              <entry></entry>
               <entry>No</entry>
               <entry>
-                The product name of the machine.
+                Textual description of the specific device for a card
               </entry>
             </row>
             <row>
               <entry>
-                <literal>system.hardware.version</literal> (string)
+                <literal>alsa.pcm_class</literal> (string)
               </entry>
               <entry></entry>
               <entry>No</entry>
               <entry>
-                The version of the machine.
+                The PCM class of the device.
               </entry>
             </row>
             <row>
+              <entry></entry>
+              <entry>generic</entry>
+              <entry></entry>
               <entry>
-                <literal>system.hardware.serial</literal> (string)
+                A standard PCM sound device (SND_PCM_CLASS_GENERIC).
               </entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>multi</entry>
               <entry></entry>
-              <entry>No</entry>
               <entry>
-                The serial number of the machine.
+                A multichannel device PCM sound device (SND_PCM_CLASS_MULTI) which 
+		e.g. contains a generic and a modem device.
               </entry>
             </row>
             <row>
+              <entry></entry>
+              <entry>digitizer</entry>
+              <entry></entry>
               <entry>
-                <literal>system.hardware.uuid</literal> (string)
+                A PCM digitizer device (SND_PCM_CLASS_DIGITIZER).
               </entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>modem</entry>
               <entry></entry>
-              <entry>No</entry>
               <entry>
-                The unique ID of the machine.
+                A PCM modem device (SND_PCM_CLASS_MODEM).
               </entry>
             </row>
             <row>
+              <entry></entry>
+              <entry>unknown</entry>
+              <entry></entry>
               <entry>
-                <literal>system.hardware.primary_video.vendor</literal> (int)
+                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).
               </entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>none</entry>
               <entry></entry>
-              <entry>No</entry>
               <entry>
-                The PCI vendor ID of the primary graphics card in the system.
+                The value is 'none' if this there is no PCM class for this device.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>system.hardware.primary_video.product</literal> (int)
+                <literal>alsa.originating_device</literal> (string)
               </entry>
               <entry></entry>
-              <entry>No</entry>
+              <entry>Yes</entry>
               <entry>
-                The PCI device ID of the primary graphics card in the system.
+                UDI of the device the ALSA device is bound to.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>system.firmware.vendor</literal> (string)
+                <literal>alsa.type</literal> (string)
               </entry>
               <entry></entry>
-              <entry>No</entry>
+              <entry>Yes</entry>
               <entry>
-                The firmware vendor.
+                The type of the stream.
               </entry>
             </row>
             <row>
+              <entry></entry>
               <entry>
-                <literal>system.firmware.version</literal> (string)
+                <literal>control</literal>
               </entry>
               <entry></entry>
-              <entry>No</entry>
               <entry>
-                The firmware version.
+                Stream is control device.
               </entry>
             </row>
             <row>
+              <entry></entry>
               <entry>
-                <literal>system.firmware.release_date</literal> (string)
+                <literal>capture</literal>
               </entry>
               <entry></entry>
-              <entry>No</entry>
               <entry>
-                The release date of the firmware.
+                Stream is capture device.
               </entry>
             </row>
             <row>
+              <entry></entry>
               <entry>
-                <literal>system.chassis.manufacturer</literal> (string)
+                <literal>midi</literal>
               </entry>
               <entry></entry>
-              <entry>No</entry>
               <entry>
-                The manufacturer of the chassis.
+                Stream is MIDI device.
               </entry>
             </row>
             <row>
+              <entry></entry>
               <entry>
-                <literal>system.chassis.type</literal> (string)
+                <literal>playback</literal>
               </entry>
               <entry></entry>
-              <entry>No</entry>
               <entry>
-                The chassis type of the machine.
+                Stream is playback device.
+              </entry>
+            </row>
+	    <row>
+              <entry></entry>
+              <entry>
+                <literal>unknown</literal>
+              </entry>
+              <entry></entry>
+              <entry>
+                The type of the device is unknown.
               </entry>
             </row>
             <row>
+              <entry></entry>
               <entry>
-                <literal>system.board.vendor</literal> (string)
+                <literal>hw_specific</literal>
               </entry>
               <entry></entry>
-              <entry>No</entry>
               <entry>
-                The name of the manufacturer of the base board.
+                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. 
               </entry>
             </row>
             <row>
+              <entry></entry>
               <entry>
-                <literal>system.board.product</literal> (string)
+                <literal>timer</literal>
               </entry>
               <entry></entry>
-              <entry>No</entry>
               <entry>
-                The product name of the base board.
+                Stream is the global ALSA timer device.
+                This means, the device is for all ALSA devices/cards.
               </entry>
             </row>
             <row>
+              <entry></entry>
               <entry>
-                <literal>system.board.version</literal> (string)
+                <literal>sequencer</literal>
               </entry>
               <entry></entry>
-              <entry>No</entry>
               <entry>
-                The version of the base board.
+                Stream is the global ALSA sequencer device.
+                This means, the device is for all ALSA devices/cards.
               </entry>
             </row>
             <row>
+              <entry></entry>
               <entry>
-                <literal>system.board.serial</literal> (string)
+                <literal>unknown</literal>
               </entry>
               <entry></entry>
-              <entry>No</entry>
               <entry>
-                The serial number of the base board.
+                Stream is unknown device.
               </entry>
             </row>
           </tbody>
@@ -3623,18 +3680,14 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
       </informaltable>
     </sect2>
 
-    <sect2 id="device-properties-volume">
+    <sect2 id="device-properties-battery">
       <title>
-        volume namespace
+        battery namespace
       </title>
       <para>
-        This namespace is for device objects that represent storage
-        devices with a filesystem that can be mounted. Such device
-        objects will have the capability <literal>volume</literal> and
-        they will export the properties below. Note that device
-        objects can only have the <literal>volume</literal> capability
-        if they already have the capability <literal>block</literal>
-        and the property <literal>block.is_volume</literal> set to TRUE.
+        Device objects with the capability <literal>battery</literal>
+        represent all the devices having some battery (in many cases -
+        rechargeable) inside.
       </para>
       <informaltable>
         <tgroup cols="2">
@@ -3649,706 +3702,599 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
           <tbody>
             <row>
               <entry>
-                <literal>volume.ignore</literal> (bool)
+                <literal>battery.present</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>This 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.
+              <entry>
+                This is present as some smart batteries can have acpi/pmu
+                entries, and be physically missing.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>volume.is_mounted</literal> (bool)
+                <literal>battery.type</literal> (string)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>This property is TRUE if and only if the volume is mounted</entry>
+              <entry>
+                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.
+              </entry>
             </row>
             <row>
+              <entry></entry>
               <entry>
-                <literal>volume.is_mounted_read_only</literal> (bool)
+                <literal>pda</literal>
               </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>This property is TRUE if and only if the volume is mounted and
-                the volume's file-system is read-only.
+              <entry>
+                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
               </entry>
             </row>
             <row>
+              <entry></entry>
               <entry>
-                <literal>volume.mount_point</literal> (string)
+                <literal>ups</literal>
+              </entry>
+              <entry></entry>
+              <entry>
+                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.
               </entry>
-              <entry>example: /media/compact_flash1  </entry>
-              <entry>Yes (is blank only when volume.is_mounted is FALSE)</entry>
-              <entry>A fully qualified path to the mount point of the volume</entry>
             </row>
             <row>
+              <entry></entry>
               <entry>
-                <literal>volume.fsusage</literal> (string)
+                <literal>primary</literal>
               </entry>
-              <entry>example: filesystem</entry>
-              <entry>Yes</entry>
+              <entry></entry>
               <entry>
-                This property specifies the expected usage of the volume
+                The battery is a primary power source for the system - an
+                example are laptop batteries.
               </entry>
             </row>
             <row>
               <entry></entry>
-              <entry>filesystem</entry>
+              <entry>
+                <literal>mouse</literal>
+              </entry>
               <entry></entry>
-              <entry>The volume is a mountable filesystem</entry>
+              <entry>
+                The device containing the battery is a mouse.
+              </entry>
             </row>
             <row>
               <entry></entry>
-              <entry>partitiontable</entry>
+              <entry>
+                <literal>keyboard</literal>
+              </entry>
               <entry></entry>
               <entry>
-	        The volume contains a partitiontable.
-	      </entry>
+                The device containing the battery is a keyboard.
+              </entry>
             </row>
             <row>
               <entry></entry>
-              <entry>raid</entry>
+              <entry>
+                <literal>keyboard_mouse</literal>
+              </entry>
               <entry></entry>
-              <entry>The volume is a member of a raid set and not mountable</entry>
+              <entry>
+                The device containing the battery is a combined mouse and keyboard.
+              </entry>
             </row>
             <row>
               <entry></entry>
-              <entry>other</entry>
+              <entry>
+                <literal>camera</literal>
+              </entry>
               <entry></entry>
-              <entry>The volume is not mountable like a swap partition</entry>
+              <entry>
+                The device containing the battery is a camera.
+              </entry>
             </row>
             <row>
               <entry></entry>
-              <entry>unused</entry>
+              <entry>
+                <literal>usb</literal>
+              </entry>
               <entry></entry>
-              <entry>The volume is marked a unused or free</entry>
-            </row>
-            <row>
               <entry>
-                <literal>volume.fstype</literal> (string)
+                The device containing the battery is a generic usb device.
               </entry>
-              <entry>examples: ext3, vfat</entry>
-              <entry>Yes (is blank if the type is unknown)</entry>
-              <entry>The specific type of either the file system or what the volume is used for, cf. volume.fsusage</entry>
             </row>
             <row>
+              <entry></entry>
               <entry>
-                <literal>volume.fsversion</literal> (string)
+                <literal>unknown</literal>
               </entry>
-              <entry>example: FAT32</entry>
               <entry></entry>
-              <entry>Version number or subtype of the filesystem</entry>
-            </row>
-            <row>
               <entry>
-                <literal>volume.label</literal> (string)
+                The device containing the battery is not covered by other types.
               </entry>
-              <entry>example: 'Fedora Core 1.90' </entry>
-              <entry>Yes (is blank if no label is found)</entry>
-              <entry>The label of the volume</entry>
             </row>
             <row>
               <entry>
-                <literal>volume.uuid</literal> (string)
+                <literal>battery.charge_level.unit</literal> (string)
+              </entry>
+              <entry>Examples:
+                <literal>mWh</literal>,
+                <literal>percent</literal>
+              </entry>
+              <entry>No</entry>
+              <entry>
+                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.
               </entry>
-              <entry>example: 4060-6C11</entry>
-              <entry>Yes (is blank if no UUID is found)</entry>
-              <entry>The Universal Unique Identifer for the volume</entry>
             </row>
             <row>
               <entry>
-                <literal>volume.is_disc</literal> (bool)
+                <literal>battery.charge_level.design</literal> (int)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>If the volume stems from an optical disc, this
-                property is true and the device object will also have
-                the capability <literal>volume.disc</literal>
+              <entry>
+                The maximum level of charge the device was designed for.
+                Measured in <literal>"battery.charge_level.unit"</literal>
+                units.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>volume.block_size</literal> (string)
+                <literal>battery.charge_level.last_full</literal> (int)
               </entry>
               <entry></entry>
-              <entry>No</entry>
+              <entry>Yes</entry>
               <entry>
-                The block size of the volume
+                The maximum level of charge the device could hold the last
+                time it was full.
+                Measured in <literal>"battery.charge_level.unit"</literal>
+                units.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>volume.num_blocks</literal> (string)
+                <literal>battery.charge_level.current</literal> (int)
               </entry>
               <entry></entry>
-              <entry>No</entry>
+              <entry>Yes</entry>
               <entry>
-                Number of blocks on the volume
+                The current level of charge which the device can is holding.
+                Measured in <literal>"battery.charge_level.unit"</literal>
+                units.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>volume.size</literal> (uint64)
+                <literal>battery.charge_level.rate</literal> (int)
               </entry>
               <entry></entry>
               <entry>No</entry>
               <entry>
-                Size of the volume in bytes
+                The discharge/charge rate measured
+                in <literal>"battery.charge_level.unit"</literal>
+                units per second.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>volume.is_partition</literal> (bool)
+                <literal>battery.charge_level.warning</literal> (int)
               </entry>
               <entry></entry>
-              <entry>Yes</entry>
+              <entry>No</entry>
               <entry>
-                If the volume stems from a partition on e.g. a hard
-                disk, this property is set to <literal>TRUE</literal>.
+                Once the charge level of the battery drops below this value its
+                state changes to 'warning'.
+                Measured in <literal>"battery.charge_level.unit"</literal>
+                units.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>volume.linux.is_device_mapper</literal> (bool)
+                <literal>battery.charge_level.low</literal> (int)
               </entry>
               <entry></entry>
-              <entry>Yes, but only on Linux</entry>
+              <entry>No</entry>
               <entry>
-                If the volume stems from the Linux Device Mapper this property is set to <literal>TRUE</literal>.
+                Once the charge level of the battery drops below this value its
+                state changes to 'low'.
+                Measured in <literal>"battery.charge_level.unit"</literal>
+                units.
               </entry>
             </row>
-
             <row>
               <entry>
-                <literal>volume.partition.number</literal> (int)
+                <literal>battery.charge_level.granularity_1</literal> (int)
               </entry>
               <entry></entry>
+              <entry>No</entry>
               <entry>
-                If, and only if, <literal>volume.is_partition</literal>
-                is set to <literal>TRUE</literal>.
-              </entry>
-              <entry>
-                The number of the partition.
+                Granularity value one of the battery measured
+                in <literal>"battery.charge_level.unit"</literal>
+                units .
               </entry>
             </row>
-
-
             <row>
               <entry>
-                <literal>volume.partition.label</literal> (string)
+                <literal>battery.charge_level.granularity_2</literal> (int)
               </entry>
               <entry></entry>
+              <entry>No</entry>
               <entry>
-                If, and only if, <literal>volume.is_partition</literal>
-                is set to <literal>TRUE</literal>.
-              </entry>
-              <entry>
-	        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 <literal>volume.label</literal>.
+                Granularity value two of the battery measured
+                in <literal>"battery.charge_level.unit"</literal>
+                units.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>volume.partition.uuid</literal> (string)
+                <literal>battery.reporting.unit</literal> (string)
               </entry>
-              <entry></entry>
-              <entry>
-                If, and only if, <literal>volume.is_partition</literal>
-                is set to <literal>TRUE</literal>.
+              <entry>Examples:
+                <literal>mWh</literal>,
+                <literal>mAh</literal>,
+                <literal>percent</literal>
               </entry>
+              <entry>No</entry>
               <entry>
-                The UUID or GUID of the partition table entry. Only available for
-		"gpt" partition tables.
+                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.
               </entry>
             </row>
-
             <row>
               <entry>
-                <literal>volume.partition.scheme</literal> (string)
+                <literal>battery.reporting.design</literal> (int)
               </entry>
               <entry></entry>
+              <entry>Yes</entry>
               <entry>
-                If, and only if, <literal>volume.is_partition</literal>
-                is set to <literal>TRUE</literal>.
-              </entry>
-              <entry>
-                The scheme of the partition table this entry is part of.
-		Note that this is not necessarily the same as 
-		<literal>storage.partitioning_scheme</literal> as 
-		some partition tables can embed other partition tables.
+                The maximum level of charge the device was designed for,
+                as reported by the hardware.
+                Measured in <literal>"battery.reporting.unit"</literal>
+                units.
               </entry>
             </row>
             <row>
-              <entry></entry>
-              <entry>mbr</entry>
-              <entry></entry>
               <entry>
-                Master Boot Record
+                <literal>battery.reporting.last_full</literal> (int)
               </entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>embr</entry>
               <entry></entry>
+              <entry>No</entry>
               <entry>
-                Extended Master Boot Record
+                The maximum level of charge the device could hold the last
+                time it was full, as reported by the hardware.
+                Measured in <literal>"battery.reporting.unit"</literal>
+                units.
               </entry>
             </row>
             <row>
-              <entry></entry>
-              <entry>gpt</entry>
-              <entry></entry>
               <entry>
-                GUID Partition Table as defined by EFI
+                <literal>battery.reporting.current</literal> (int)
               </entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>apm</entry>
               <entry></entry>
+              <entry>No</entry>
               <entry>
-                Apple Partition Map
+                The current level of charge which the device is holding,
+                as reported by the hardware.
+                Measured in <literal>"battery.reporting.unit"</literal>
+                units.
               </entry>
             </row>
-
             <row>
               <entry>
-                <literal>volume.partition.type</literal> (string)
-              </entry>
-              <entry></entry>
-              <entry>
-                If, and only if, <literal>volume.is_partition</literal>
-                is set to <literal>TRUE</literal>.
-              </entry>
-              <entry>
-                The type of the partition table entry. Depends on 
-		<literal>volume.partition.scheme</literal>.
+                <literal>battery.reporting.rate</literal> (int)
               </entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry><literal>mbr</literal> and <literal>embr</literal> entries</entry>
               <entry></entry>
+              <entry>No</entry>
               <entry>
-	        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".
+                The discharge/charge rate as reported by the hardware measured
+                in <literal>"battery.reporting.unit"</literal>
+                units per second.
               </entry>
             </row>
             <row>
-              <entry></entry>
-              <entry><literal>gpt</literal> entries</entry>
-              <entry></entry>
               <entry>
-	        The GUID encoded as a string. See http://en.wikipedia.org/wiki/GUID_Partition_Table
-		for a list of well-known GUID's.
+                <literal>battery.reporting.warning</literal> (int)
               </entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry><literal>apm</literal> entries</entry>
               <entry></entry>
+              <entry>No</entry>
               <entry>
-	        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
+                Once the hardware charge level of the battery drops below
+                this value its state changes to 'warning'.
+                Measured in <literal>"battery.reporting.unit"</literal>
+                units.
               </entry>
             </row>
-
             <row>
               <entry>
-                <literal>volume.partition.flags</literal> (strlist)
+                <literal>battery.reporting.low</literal> (int)
               </entry>
               <entry></entry>
+              <entry>No</entry>
               <entry>
-                If, and only if, <literal>volume.is_partition</literal>
-                is set to <literal>TRUE</literal>.
-              </entry>
-              <entry>
-	        Flags conveying specific information about the partition
-		entry. Dependent on the partitioning scheme.
+                Once the hardware charge level of the battery drops below
+                this value its state changes to 'low'.
+                Measured in <literal>"battery.reporting.unit"</literal>
+                units.
               </entry>
             </row>
             <row>
-              <entry></entry>
-              <entry><literal>mbr</literal> and <literal>embr</literal> entries</entry>
-              <entry></entry>
               <entry>
-	        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.
+                <literal>battery.reporting.granularity_1</literal> (int)
               </entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry><literal>gpt</literal> entries</entry>
               <entry></entry>
+              <entry>No</entry>
               <entry>
-	        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."
+                Hardware granularity value one of the battery measured
+                in <literal>"battery.reporting.unit"</literal>
+                units .
               </entry>
             </row>
             <row>
+              <entry>
+                <literal>battery.reporting.granularity_2</literal> (int)
+              </entry>
               <entry></entry>
-              <entry><literal>apm</literal> entries</entry>
-              <entry></entry>
+              <entry>No</entry>
               <entry>
-	        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
+                Hardware granularity value two of the battery measured
+                in <literal>"battery.reporting.unit"</literal>
+                units.
               </entry>
             </row>
-
             <row>
               <entry>
-                <literal>volume.partition.media_size</literal> (uint64)
+                <literal>battery.charge_level.capacity_state</literal> (string)
               </entry>
-              <entry>example: 500107862016</entry>
               <entry>
-                If, and only if, <literal>volume.is_partition</literal>
-                is set to <literal>TRUE</literal>.
+                Examples: <literal>ok</literal>, <literal>critical</literal>
               </entry>
+              <entry>No</entry>
               <entry>
-                If available, size of the current media or the fixed disk in the storage device.
+                The capacity state of the battery.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>volume.partition.start</literal> (uint64)
+                <literal>battery.voltage.unit</literal> (string)
               </entry>
-              <entry>example: 32256</entry>
               <entry>
-                If, and only if, <literal>volume.is_partition</literal>
-                is set to <literal>TRUE</literal>.
+                Examples: <literal>mV</literal>
               </entry>
+              <entry>No</entry>
               <entry>
-                If available, the offset where the partition starts on the media or the fixed disk in the storage device.
+                The physical measurement unit used by the voltage properties
+                (design and current).
               </entry>
             </row>
-          </tbody>
-        </tgroup>
-      </informaltable>
-      <para>
-        Device objects with this capability may emit the following
-        device conditions
-      </para>
-      <informaltable>
-        <tgroup cols="2">
-          <thead>
-            <row>
-              <entry>Condition Name</entry>
-              <entry>Parameters</entry>
-              <entry>Example</entry>
-              <entry>Description</entry>
-            </row>
-          </thead>
-          <tbody>
             <row>
               <entry>
-                <literal>VolumeMount</literal>
-              </entry>
-              <entry>
-                <literal>block.device</literal> (string),
-                <literal>volume.mount_point</literal> (string)
+                <literal>battery.voltage.design</literal> (int)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
               <entry>
-                <literal>/dev/sda1</literal>,
-                <literal>/media/compact_flash</literal>
+                The voltage level for which the battery is designed for.
+                Measured in <literal>"battery.voltage.unit"</literal>
+                units.
               </entry>
-              <entry>Emitted when a volume is mounted</entry>
             </row>
             <row>
               <entry>
-                <literal>VolumeUnmount</literal>
-              </entry>
-              <entry>
-                <literal>block.device</literal> (string),
-                <literal>volume.mount_point</literal> (string)
+                <literal>battery.voltage.current</literal> (int)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
               <entry>
-                <literal>/dev/sda1</literal>,
-                <literal>/media/compact_flash</literal>
+                The voltage level currently emitted by the battery.
+                Measured in <literal>"battery.voltage.unit"</literal>
+                units.
               </entry>
-              <entry>Emitted when a volume is unmounted</entry>
             </row>
             <row>
               <entry>
-                <literal>VolumeUnmountForced</literal>
-              </entry>
-              <entry>
-                <literal>block.device</literal> (string),
-                <literal>volume.mount_point</literal> (string)
+                <literal>battery.alarm.unit</literal> (string)
               </entry>
               <entry>
-                <literal>/dev/sda1</literal>,
-                <literal>/media/compact_flash</literal>
+                Examples: <literal>mWh</literal>, <literal>mAh</literal>
               </entry>
+              <entry>No</entry>
               <entry>
-                Emitted when a volume is forcibly unmounted because
-                the media backing the volume was removed.
+                The physical measurement unit used by the alarm property.
               </entry>
             </row>
-          </tbody>
-        </tgroup>
-      </informaltable>
-    </sect2>
-    <sect2 id="device-properties-volume-disc">
-      <title>
-        volume.disc namespace
-      </title>
-      <para>
-        This namespace is for device objects that represent optical
-        discs, e.g. device objects with the capability
-        <literal>volume.disc</literal>. Such device objects will
-        also have the capability <literal>volume</literal>.
-      </para>
-      <informaltable>
-        <tgroup cols="2">
-          <thead>
-            <row>
-              <entry>Key (type)</entry>
-              <entry>Values</entry>
-              <entry>Mandatory</entry>
-              <entry>Description</entry>
-            </row>
-          </thead>
-          <tbody>
             <row>
               <entry>
-                <literal>volume.disc.has_audio</literal> (bool)
+                <literal>battery.alarm.design</literal> (int)
               </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>Is true only if the disc contains audio</entry>
-            </row>
-            <row>
+              <entry>No</entry>
               <entry>
-                <literal>volume.disc.has_data</literal> (bool)
+                Once the charge level of the battery drops below this value
+                its state changes to 'alarm'.
+                Measured in <literal>"battery.alarm.unit"</literal>
+                units.
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>Is true only if the disc contains data</entry>
             </row>
             <row>
               <entry>
-                <literal>volume.disc.is_vcd</literal> (bool)
+                <literal>battery.remaining_time</literal> (int)
               </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>Is true only if the disc is a Video CD</entry>
-            </row>
-            <row>
+              <entry>No</entry>
               <entry>
-                <literal>volume.disc.is_svcd</literal> (bool)
+                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.
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>Is true only if the disc is a Super Video CD</entry>
             </row>
             <row>
               <entry>
-                <literal>volume.disc.is_videodvd</literal> (bool)
+                <literal>battery.remaining_time.calculate_per_time</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>Is true only if the disc is a Video DVD</entry>
-            </row>
-            <row>
+              <entry>No</entry>
               <entry>
-                <literal>volume.disc.is_appendable</literal> (bool)
+                If this property is <literal>true</literal> the
+                <literal>battery.remaining_time</literal> becomes guessed from
+                <literal>battery.charge_level.current</literal> and time.
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>Is true only if it's possible to write additional data</entry>
             </row>
             <row>
               <entry>
-                <literal>volume.disc.is_blank</literal> (bool)
+                <literal>battery.charge_level.percentage</literal> (int)
               </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>Is true only if the disc is blank</entry>
-            </row>
-            <row>
+              <entry>No</entry>
               <entry>
-                <literal>volume.disc.is_rewritable</literal> (bool)
+                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.
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>Is true only if the disc is rewritable</entry>
             </row>
             <row>
               <entry>
-                <literal>volume.disc.capacity</literal> (uint64)
+                <literal>battery.is_rechargeable</literal> (bool)
               </entry>
               <entry></entry>
               <entry>No</entry>
-              <entry>Capacity of disc, in bytes</entry>
-            </row>
-            <row>
               <entry>
-                <literal>volume.disc.type</literal> (string)
+                True if the battery unit is rechargeable, false if its is
+                one-time (disposable after one usage).
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>This property specifies the physical type of the disc</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>cd_rom</entry>
-              <entry></entry>
-              <entry>CD-ROM disc</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>cd_r</entry>
-              <entry></entry>
-              <entry>CD-R disc</entry>
             </row>
             <row>
+              <entry>
+                <literal>battery.rechargeable.is_charging</literal> (bool)
+              </entry>
               <entry></entry>
-              <entry>cd_rw</entry>
-              <entry></entry>
-              <entry>CD-RW disc</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>dvd_rom</entry>
-              <entry></entry>
-              <entry>DVD-ROM disc</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>dvd_ram</entry>
-              <entry></entry>
-              <entry>DVD-RAM disc</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>dvd_r</entry>
-              <entry></entry>
-              <entry>DVD-R disc</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>dvd_rw</entry>
-              <entry></entry>
-              <entry>DVD-RW disc</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>dvd_r_dl</entry>
-              <entry></entry>
-              <entry>DVD-R dual layer disc</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>dvd_plus_r</entry>
-              <entry></entry>
-              <entry>DVD+R disc</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>dvd_plus_r_dl</entry>
-              <entry></entry>
-              <entry>DVD+R dual layer disc</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>dvd_plus_rw</entry>
-              <entry></entry>
-              <entry>DVD+RW disc</entry>
+              <entry>
+                Only if <literal>battery.is_rechargeable</literal> is TRUE
+              </entry>
+              <entry>
+                TRUE if, and only if, the battery is charging.
+              </entry>
             </row>
             <row>
+              <entry>
+                <literal>battery.rechargeable.is_discharging</literal> (bool)
+              </entry>
               <entry></entry>
-              <entry>dvd_plus_rw_dl</entry>
-              <entry></entry>
-              <entry>DVD+RW dual layer disc</entry>
+              <entry>
+                Only if <literal>battery.is_rechargeable</literal> is TRUE
+              </entry>
+              <entry>
+                TRUE if, and only if, the battery is discharging.
+              </entry>
             </row>
             <row>
+              <entry>
+                <literal>battery.command_interface</literal> (string)
+              </entry>
               <entry></entry>
-              <entry>bd_rom</entry>
-              <entry></entry>
-              <entry>BD-ROM disc</entry>
+              <entry>No</entry>
+              <entry>
+                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.
+              </entry>
             </row>
             <row>
+              <entry>
+                <literal>battery.vendor</literal> (string)
+              </entry>
               <entry></entry>
-              <entry>bd_r</entry>
-              <entry></entry>
-              <entry>BD-R disc</entry>
+              <entry>No</entry>
+              <entry>
+                Vendor of the battery.
+              </entry>
             </row>
             <row>
+              <entry>
+                <literal>battery.model</literal> (string)
+              </entry>
               <entry></entry>
-              <entry>bd_re</entry>
-              <entry></entry>
-              <entry>BD-RE disc</entry>
+              <entry>No</entry>
+              <entry>
+                Make of the battery.
+              </entry>
             </row>
             <row>
-              <entry></entry>
-              <entry>hddvd_rom</entry>
-              <entry></entry>
-              <entry>HD DVD-ROM disc</entry>
+              <entry>
+                <literal>battery.reporting.technology</literal> (string)
+              </entry>
+              <entry>example: LION</entry>
+              <entry>No</entry>
+              <entry>
+                The technology of the battery as reported by the hardware.
+              </entry>
             </row>
             <row>
-              <entry></entry>
-              <entry>hddvd_r</entry>
-              <entry></entry>
-              <entry>HD DVD-R disc</entry>
+              <entry>
+                <literal>battery.technology</literal> (string)
+              </entry>
+              <entry>
+                lead-acid, lithium-ion, lithium-polymer,
+                nickel-metal-hydride, unknown
+              </entry>
+              <entry>No</entry>
+              <entry>
+                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 <literal>battery.reporting.technology</literal>.
+              </entry>
             </row>
             <row>
+              <entry>
+                <literal>battery.serial</literal> (string)
+              </entry>
               <entry></entry>
-              <entry>hddvd_rw</entry>
-              <entry></entry>
-              <entry>HD DVD-Rewritable disc</entry>
+              <entry>No</entry>
+              <entry>
+                A string uniquely identifying the instance of the battery;
+                it will be different for two (otherwise) identical batteries.
+              </entry>
             </row>
             <row>
+              <entry>
+                <literal>battery.quirk.do_not_poll</literal> (bool)
+              </entry>
               <entry></entry>
-              <entry>unknown</entry>
-              <entry></entry>
-              <entry>Unknown type or lack of support from drive to determine the type</entry>
+              <entry>No</entry>
+              <entry>
+		True if HAL should not poll the battery, False or not available at all
+		if HAL should show the default behavior.
+              </entry>
             </row>
           </tbody>
         </tgroup>
       </informaltable>
     </sect2>
-    <sect2 id="device-properties-storage">
+
+    <sect2 id="device-properties-button">
       <title>
-        storage namespace
+        button namespace
       </title>
       <para>
-        This namespace is used to describe storage devices
-        and their capabilities. Such device objects will have the
-        capability <literal>storage</literal> and
-        they will export the properties below. Note that device
-        objects can only have the <literal>storage</literal> capability
-        if they already got capability <literal>block</literal> and the
-        property <literal>block.is_volume</literal> set to FALSE.
-        One significant between the <literal>storage</literal> and
-        <literal>block</literal> namespace is that the properties
-        exported in the <literal>storage</literal> represents
-        constant vital product information, whereas the properties
-        in the <literal>block</literal> namespace represent
-        variable system-dependent information.
+        Device objects with the capability <literal>button</literal>
+        represent the devices capable of providing a state to the system.
       </para>
       <informaltable>
         <tgroup cols="2">
@@ -4363,375 +4309,404 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
           <tbody>
             <row>
               <entry>
-                <literal>storage.bus</literal> (string)
+                <literal>button.type</literal> (string)
               </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>Interface the storage device is attached to</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>bdi</entry>
-              <entry></entry>
-              <entry>BDI (Backing Device Information) interface</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>ccw</entry>
-              <entry></entry>
-              <entry>IBM s390/s390x ccw interface</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>ide</entry>
-              <entry></entry>
-              <entry>IDE or ATA interface</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>ieee1394</entry>
-              <entry></entry>
-              <entry>IEEE 1394 interface</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>linux_raid</entry>
-              <entry></entry>
-              <entry>Linux MD (multi disk) RAID device</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>mmc</entry>
-              <entry></entry>
-              <entry>MultiMediaCard (MMC) interface</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>pci</entry>
-              <entry></entry>
-              <entry>PCI interface</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>pcmcia</entry>
-              <entry></entry>
-              <entry>PCMCIA interface</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>platform</entry>
-              <entry></entry>
-              <entry>Legacy device that is part of the platform</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>sata</entry>
-              <entry></entry>
-              <entry>SATA interface</entry>
+              <entry>No</entry>
+              <entry>The type of button</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>scsi</entry>
+              <entry>lid</entry>
               <entry></entry>
-              <entry>SCSI interface</entry>
+              <entry>
+                The switch on a laptop that senses whether the lid is
+                open or closed
+              </entry>
             </row>
             <row>
               <entry></entry>
-              <entry>usb</entry>
+              <entry>power</entry>
               <entry></entry>
-              <entry>USB interface</entry>
+              <entry>The main power button on the computer.</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>vio</entry>
+              <entry>sleep</entry>
               <entry></entry>
-              <entry>IBM pSeries/iSeries Vio interface</entry>
+              <entry>
+                The sleep button on a computer capable of putting the computer
+                into a suspend state
+              </entry>
             </row>
             <row>
+              <entry>
+                <literal>button.has_state</literal> (bool)
+              </entry>
               <entry></entry>
-              <entry></entry>
-              <entry></entry>
-              <entry></entry>
+              <entry>no</entry>
+              <entry>True if the button maintains state, e.g. can toggled on/off</entry>
             </row>
             <row>
               <entry>
-                <literal>storage.drive_type</literal> (string)
+                <literal>button.state.value</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>Yes</entry>
               <entry>
-                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.
+                Only when <literal>button.has_state</literal> is
+                TRUE
               </entry>
+              <entry>State of the button, TRUE if it is enabled</entry>
             </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+      <para>
+        Device objects with this capability may emit the following events.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
             <row>
-              <entry></entry>
-              <entry>disk</entry>
-              <entry></entry>
-              <entry>The device is a harddisk</entry>
+              <entry>Condition Name</entry>
+              <entry>Parameters</entry>
+              <entry>Example</entry>
+              <entry>Description</entry>
             </row>
+          </thead>
+          <tbody>
             <row>
-              <entry></entry>
-              <entry>cdrom</entry>
-              <entry></entry>
               <entry>
-                The device is an optical drive. The device object will also have the capability <literal>storage.cdrom</literal> in this case.
+                <literal>ButtonPressed</literal>
               </entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>floppy</entry>
-              <entry></entry>
-              <entry>The device is a floppy disk drive</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>tape</entry>
-              <entry></entry>
-              <entry>The device is a tape drive</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>compact_flash</entry>
-              <entry></entry>
-              <entry>The device is a card reader for Compact Flash memory cards</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>memory_stick</entry>
-              <entry></entry>
-              <entry>The device is a card reader for MemoryStick memory cards</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>smart_media</entry>
-              <entry></entry>
-              <entry>The device is a card reader for SmartMedia memory cards</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>sd_mmc</entry>
-              <entry></entry>
-              <entry>The device is a card reader for SecureDigital/MultiMediaCard memory cards</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry></entry>
-              <entry></entry>
-              <entry></entry>
-            </row>
-            <row>
               <entry>
-	        <literal>storage.removable</literal> (bool)
+                <literal>button.type (string)</literal>
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>Media can be removed from the storage device</entry>
+              <entry>sleep</entry>
+              <entry>Emitted when a button is pressed</entry>
             </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="device-properties-camera">
+      <title>
+        camera namespace
+      </title>
+      <para>
+        Device objects with the capability <literal>camera</literal>
+        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:
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
             <row>
-              <entry>
-	        <literal>storage.removable.media_available</literal> (bool)
-              </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>true, if and only if, media have been detected in storage device</entry>
+              <entry>Key (type)</entry>
+              <entry>Values</entry>
+              <entry>Mandatory</entry>
+              <entry>Description</entry>
             </row>
+          </thead>
+          <tbody>
             <row>
               <entry>
-	        <literal>storage.removable.media_size</literal> (uint64)
+                <literal>camera.access_method</literal> (string)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>Size of media in storage device. Available only if media have been detected in storage device.</entry>
+              <entry>This property defines how the device is accessed </entry>
             </row>
             <row>
-              <entry>
-	        <literal>storage.removable.support_async_notification</literal> (bool)
-              </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>Whether the drive reports asynchronous notification for media change.</entry>
-            </row>
-            <row>
+              <entry>storage</entry>
+              <entry></entry>
               <entry>
-	        <literal>storage.partitioning_scheme</literal> (string)
+                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
+                <literal>storage</literal> in order to access the
+                device.
               </entry>
-              <entry></entry>
-              <entry>Only when media is inserted and is partitioned</entry>
-              <entry>The partitioning scheme of the media.</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>mbr</entry>
+              <entry>user</entry>
               <entry></entry>
-              <entry>Master Boot Record partitioning scheme used in most PC's</entry>
+              <entry>
+                The device is accessed from userspace through
+                a userspace driver.
+              </entry>
             </row>
             <row>
               <entry></entry>
-              <entry>gpt</entry>
               <entry></entry>
-              <entry>GUID Partitioning Table as defined by UEFI</entry>
-            </row>
-            <row>
               <entry></entry>
-              <entry>apm</entry>
               <entry></entry>
-              <entry>Apple Partition Map, used in non-Intel Apple computers</entry>
             </row>
             <row>
               <entry>
-	        <literal>storage.size</literal> (uint64)
+                <literal>camera.libgphoto2.support</literal> (bool)
               </entry>
               <entry></entry>
               <entry>No</entry>
-              <entry>size in bytes of the storage device - only meaningful if storage.removable is FALSE</entry>
-            </row>
-            <row>
               <entry>
-                <literal>storage.requires_eject</literal> (bool)
+                If true, the device is supported by a userspace driver
+                from the libgphoto2 project.
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>The eject ioctl is required to properly eject the media</entry>
             </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="device-properties-input">
+      <title>
+        input namespace
+      </title>
+      <para>
+        This namespace is concerned with human input devices such as
+        keyboards, mice, pointing devices and game controllers. If a
+        device object has the capability <literal>input</literal> then
+        the following properties are available
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
             <row>
-              <entry>
-                <literal>storage.hotpluggable</literal> (bool)
-              </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>The storage device can be removed while the system is running</entry>
+              <entry>Key (type)</entry>
+              <entry>Values</entry>
+              <entry>Mandatory</entry>
+              <entry>Description</entry>
             </row>
+          </thead>
+          <tbody>
             <row>
               <entry>
-                <literal>storage.media_check_enabled</literal> (bool)
+                <literal>input.device</literal> (string)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>If this property is set to FALSE then HAL will not continuosly poll for media changes. </entry>
+              <entry>Special device file for recieving input events</entry>
             </row>
             <row>
               <entry>
-                <literal>storage.automount_enabled_hint</literal> (bool)
+                <literal>input.x11_driver</literal> (string)
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>This property is a hint to desktop file managers that they shouldn't automount volumes of the storage device when they appear.</entry>
+              <entry>e.g. "evdev"</entry>
+              <entry>No</entry>
+              <entry>X11 input driver to use</entry>
             </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="device-properties-input-joystick">
+      <title>
+        input.joystick namespace
+      </title>
+      <para>
+        The input device is a joystick. No namespace specific
+        properties.
+      </para>
+    </sect2>
+
+    <sect2 id="device-properties-input-keyboard">
+      <title>
+        input.keyboard namespace
+      </title>
+      <para>
+        The input device is a normal keyboard. No namespace specific
+        properties.
+      </para>
+    </sect2>
+
+    <sect2 id="device-properties-input-keymap">
+      <title>
+        input.keymap namespace
+      </title>
+      <para>
+        Device objects with the capability <literal>input.keymap</literal>
+        provide facilities to remap keyboard buttons.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Key (type)</entry>
+              <entry>Values</entry>
+              <entry>Mandatory</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
             <row>
               <entry>
-                <literal>storage.no_partitions_hint</literal> (bool)
+                <literal>input.keymap.data</literal> (strlist)
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
+              <entry>e.g. "e017:brightnessup"</entry>
+              <entry>No</entry>
               <entry>
-                This property is a hint to programs that maintain the
-                <literal>/etc/fstab</literal> 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).
+                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 <literal>input.keymap.data</literal>
+                values as there are keys to remap.
               </entry>
             </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="device-properties-input-keypad">
+      <title>
+        input.keypad namespace
+      </title>
+      <para>
+        The input device have keypad keys. No namespace
+        specific properties.
+      </para>
+    </sect2>
+
+    <sect2 id="device-properties-input-keys">
+      <title>
+        input.keys namespace
+      </title>
+      <para>
+        The input device have keys that can be pressed. No namespace
+        specific properties.
+      </para>
+    </sect2>
+
+    <sect2 id="device-properties-input-mouse">
+      <title>
+        input.mouse namespace
+      </title>
+      <para>
+        The input device is a mouse. No namespace specific
+        properties.
+      </para>
+    </sect2>
+
+    <sect2 id="device-properties-input-switch">
+      <title>
+        input.switch namespace
+      </title>
+      <para>
+        The input device is a switch, e.g. it has buttons with
+        state. No namespace specific properties.
+      </para>
+    </sect2>
+
+    <sect2 id="device-properties-input-tablet">
+      <title>
+        input.tablet namespace
+      </title>
+      <para>
+        The input device is a tablet. No namespace specific
+        properties.
+      </para>
+    </sect2>
+
+    <sect2 id="device-properties-input-xkb">
+      <title>
+        input.xkb namespace
+      </title>
+      <para>
+        Device objects with the capability <literal>input.keys</literal>
+        can provide information about their physical layout.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Key (type)</entry>
+              <entry>Values</entry>
+              <entry>Mandatory</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
             <row>
               <entry>
-                <literal>storage.originating_device</literal> (string)
+                <literal>input.xkb.rules</literal> (string)
               </entry>
-              <entry></entry>
+              <entry>e.g. "base"</entry>
               <entry>Yes</entry>
               <entry>
-                This contains the UDI of the device object
-                representing the device or blank if
-                there is no such device.
+                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.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>storage.model</literal> (string)
+                <literal>input.xkb.model</literal> (string)
               </entry>
-              <entry></entry>
+              <entry>e.g. "logicdp"</entry>
               <entry>Yes</entry>
-              <entry>The name of the drive</entry>
-            </row>
-            <row>
               <entry>
-                <literal>storage.vendor</literal> (string)
+                Physical keyboard model (e.g. Logitech Cordless Freedom
+                Pro), as given to XKB.
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>The vendor of the drive</entry>
             </row>
             <row>
               <entry>
-                <literal>storage.serial</literal> (string)
+                <literal>input.xkb.layout</literal> (string)
               </entry>
-              <entry></entry>
-              <entry>No</entry>
-              <entry>The serial number of the drive</entry>
-            </row>
-            <row>
+              <entry>e.g. "us"</entry>
+              <entry>Yes</entry>
               <entry>
-                <literal>storage.firmware_revision</literal> (string)
+                Keyboard layout (as engraved on the keys).
               </entry>
-              <entry></entry>
-              <entry>No</entry>
-              <entry>The revision of the firmware of the drive</entry>
             </row>
             <row>
               <entry>
-                <literal>storage.icon.drive</literal> (string)
+                <literal>input.xkb.variant</literal> (string)
               </entry>
-              <entry></entry>
+              <entry>e.g. "nodeadkeys"</entry>
               <entry>No</entry>
               <entry>
-                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 <literal>/usr/share/icons/hicolor</literal>
-                a device information file matching their device.
+                Variant of the XKB layout (if any) to use.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>storage.icon.volume</literal> (string)
+                <literal>input.xkb.options</literal> (strlist)
               </entry>
-              <entry></entry>
+              <entry>e.g. "ctrl:nocaps"</entry>
               <entry>No</entry>
               <entry>
-                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 <literal>/usr/share/icons/hicolor</literal>
-                a device information file matching their device.
+                Options to be provided to XKB.
               </entry>
             </row>
           </tbody>
         </tgroup>
       </informaltable>
     </sect2>
-    <sect2 id="device-properties-storage-cdrom">
+
+    <sect2 id="device-properties-killswitch">
       <title>
-        storage.cdrom namespace
+        killswitch namespace
       </title>
       <para>
-        This namespace is used to describe optical storage drives
-        and their capabilities.Such device objects will have the
-        capability <literal>storage.cdrom</literal> and
-        they will export the properties below. Note that device
-        objects can only have the <literal>storage.cdrom</literal> capability
-        if they already got the capability <literal>storage</literal>.
+        Device objects with the capability <literal>killswitch</literal>
+        represent switches to turn a radio on and off. See also <xref linkend="interface-device-killswitch"/>.
       </para>
       <informaltable>
         <tgroup cols="2">
@@ -4746,224 +4721,167 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
           <tbody>
             <row>
               <entry>
-                <literal>storage.cdrom.cdr</literal> (bool)
-              </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE when the optical drive can write CD-R discs</entry>
-            </row>
-            <row>
-              <entry>
-                <literal>storage.cdrom.cdrw</literal> (bool)
+                <literal>killswitch.type</literal> (string)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>TRUE when the optical drive can blank and write to CD-RW discs</entry>
+              <entry>Type of the kill switch</entry>
             </row>
             <row>
-              <entry>
-                <literal>storage.cdrom.dvd</literal> (bool)
-              </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE when the optical drive can read DVD-ROM discs</entry>
-            </row>
-            <row>
-              <entry>
-                <literal>storage.cdrom.dvdr</literal> (bool)
-              </entry>
+              <entry>wlan</entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE when the optical drive can write to DVD-R discs</entry>
+              <entry>Kill switch is for turning Wireless LAN (WLAN) networking on/off</entry>
             </row>
             <row>
-              <entry>
-                <literal>storage.cdrom.dvdrw</literal> (bool)
-              </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE when the optical drive can blank and write to DVD-RW discs</entry>
-            </row>
-            <row>
-              <entry>
-                <literal>storage.cdrom.dvdrdl</literal> (bool)
-              </entry>
+              <entry>bluetooth</entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE when the optical drive can write to DVD-R Dual-Layer discs</entry>
+              <entry>Kill switch is for turning Bluetooth on/off</entry>
             </row>
             <row>
-              <entry>
-                <literal>storage.cdrom.dvdram</literal> (bool)
-              </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE when the optical drive can write to DVD-RAM discs</entry>
-            </row>
-            <row>
-              <entry>
-                <literal>storage.cdrom.dvdplusr</literal> (bool)
-              </entry>
+              <entry>wwan</entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE when the optical drive can write to DVD+R discs</entry>
+              <entry>Kill switch is for turning Wireless WAN (WWAN) networking on/off</entry>
             </row>
             <row>
               <entry>
-                <literal>storage.cdrom.dvdplusrw</literal> (bool)
+                <literal>killswitch.name</literal> (string)
               </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE when the optical drive can blank and write to DVD+RW discs</entry>
+              <entry>No</entry>
+              <entry>Name of the kill switch (as reported by the kernel).</entry>
             </row>
             <row>
               <entry>
-                <literal>storage.cdrom.dvdplusrwdl</literal> (bool)
+                <literal>killswitch.access_method</literal> (string)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>TRUE when the optical drive can blank and write to DVD+RW Dual-Layer discs</entry>
+              <entry>How HAL should program the switch</entry>
             </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="device-properties-laptop-panel">
+      <title>
+        laptop_panel namespace
+      </title>
+      <para>
+        Device objects with the capability <literal>laptop_panel</literal>
+        represent devices capable of changing the brightness of the display.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
             <row>
-              <entry>
-                <literal>storage.cdrom.dvdplusrdl</literal> (bool)
-              </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE when the optical drive can write to DVD+R Dual-Layer discs</entry>
+              <entry>Key (type)</entry>
+              <entry>Values</entry>
+              <entry>Mandatory</entry>
+              <entry>Description</entry>
             </row>
+          </thead>
+          <tbody>
             <row>
               <entry>
-                <literal>storage.cdrom.bd</literal> (bool)
+                <literal>laptop_panel.num_levels</literal> (int)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>TRUE when the optical drive can read Blu-ray ROM discs</entry>
-            </row>
-            <row>
               <entry>
-                <literal>storage.cdrom.bdr</literal> (bool)
+                The brightness levels supported by the adaptor.
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE when the optical drive can write to Blu-ray Recordable discs</entry>
             </row>
             <row>
               <entry>
-                <literal>storage.cdrom.bdre</literal> (bool)
+                <literal>laptop_panel.access_method</literal> (string)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>TRUE when the optical drive can write to Blu-ray Rewritable discs</entry>
-            </row>
-            <row>
               <entry>
-                <literal>storage.cdrom.hddvd</literal> (bool)
+                The access method to use in scripts, e.g. pmu, toshiba, ibm, sony.
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE when the optical drive can read Read-only HD DVD discs</entry>
             </row>
             <row>
               <entry>
-                <literal>storage.cdrom.hddvdr</literal> (bool)
+                <literal>laptop_panel.brightness_in_hardware</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE when the optical drive can write to Write-once HD DVD discs</entry>
-            </row>
-            <row>
+              <entry>No</entry>
               <entry>
-                <literal>storage.cdrom.hddvdrw</literal> (bool)
+                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.
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE when the optical drive can write to Rewritable HD DVD discs</entry>
             </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+      <para>
+        The following methods exist on the interface
+        <literal>org.freedesktop.Hal.Device.LaptopPanel</literal>.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
             <row>
-              <entry>
-                <literal>storage.cdrom.mrw</literal> (bool)
-              </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE when the optical drive can read MRW (Mount Rainier Rewrite) discs</entry>
+              <entry>Method (parameter types)</entry>
+              <entry>Parameters</entry>
+              <entry>Mandatory</entry>
+              <entry>Description</entry>
             </row>
+          </thead>
+          <tbody>
             <row>
               <entry>
-                <literal>storage.cdrom.mrw_w</literal> (bool)
+                <literal>SetBrightness</literal> (integer)
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE when the optical drive can write MRW (Mount Rainier Rewrite) discs</entry>
-            </row>
-            <row>
               <entry>
-                <literal>storage.cdrom.mo</literal> (bool)
+                The hardware brightness state, which should be between 0 and 
+                <literal>laptop_panel.num_levels</literal> - 1.
               </entry>
-              <entry></entry>
               <entry>No</entry>
-              <entry>TRUE when the optical drive is a MO (Magneto Optical) device.</entry>
-            </row>
-            <row>
               <entry>
-                <literal>storage.cdrom.support_multisession</literal> (bool)
-              </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE if the drive can read multisession discs</entry>
-            </row>
-            <row>
-              <entry>
-                <literal>storage.cdrom.support_media_changed</literal> (bool)
+                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.
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>TRUE if the drive can generate media changed events</entry>
             </row>
             <row>
               <entry>
-                <literal>storage.cdrom.read_speed</literal> (int)
+                integer <literal>GetBrightness</literal> (void)
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>The maximum reading speed, in kb/s</entry>
-            </row>
-            <row>
               <entry>
-                <literal>storage.cdrom.write_speed</literal> (int)
+                Returns the hardware brightness state, which should be
+                between 0 and <literal>laptop_panel.num_levels</literal> - 1.
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>The maximum writing speed, in kb/s</entry>
-            </row>
-            <row>
+              <entry>No</entry>
               <entry>
-                <literal>storage.cdrom.write_speeds</literal> (strlist)
+                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.
               </entry>
-              <entry></entry>
-              <entry>No</entry>
-              <entry>By the device supported write speeds in kb/s</entry>
             </row>
           </tbody>
         </tgroup>
       </informaltable>
     </sect2>
-    <sect2 id="device-properties-storage-linux-raid">
+
+    <sect2 id="device-properties-light-sensor">
       <title>
-        storage.linux_raid namespace
+        light_sensor namespace
       </title>
       <para>
-        This namespace is used to describe logical Software RAID
-        devices under Linux using the <literal>md</literal> driver. By
-        and large, all the same properties under
-        the <literal>storage</literal> name space applies except
-        that <literal>storage.serial</literal> is set to the UUID of
-        the RAID set, <literal>storage.firmware_version</literal> is
-        set to the version of the <literal>md</literal> driver and the
-        value of <literal>storage.hotpluggable</literal> is taken from
-        the enclosing drive of the first RAID component
-        encountered. In addition, the following properties are
-        available.
+        Device objects with the capability <literal>sensor</literal>
+        represent light sensors in the system.
       </para>
       <informaltable>
         <tgroup cols="2">
@@ -4978,85 +4896,33 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
           <tbody>
             <row>
               <entry>
-                <literal>storage.linux_raid.level</literal> (string)
-              </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>the RAID level of the device as reported by the kernel (linear, raid0, raid1, raid4, raid5, raid6, raid10)</entry>
-            </row>
-            <row>
-              <entry>
-                <literal>storage.linux_raid.sysfs_path</literal> (string)
-              </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>sysfs path of device, e.g. /sys/block/md0</entry>
-            </row>
-            <row>
-              <entry>
-                <literal>storage.linux_raid.num_components</literal> (int)
-              </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>Number of components in the RAID array</entry>
-            </row>
-            <row>
-              <entry>
-                <literal>storage.linux_raid.num_components_active</literal> (int)
+                <literal>light_sensor.sensor_locations</literal> (strlist)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>
-                Number of active components in the RAID array. If less
-                than <literal>storage.linux_raid.num_components</literal>
-                it means that the RAID array is running in degraded
-                mode.
-              </entry>
+              <entry>The locations of the sensors</entry>
             </row>
             <row>
               <entry>
-                <literal>storage.linux_raid.components</literal> (strlist)
+                <literal>light_sensor.num_sensors</literal> (int)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>UDI's of the volumes constituting the array.</entry>
+              <entry>Number of physical sensors</entry>
             </row>
             <row>
               <entry>
-                <literal>storage.linux_raid.is_syncing</literal> (bool)
+                <literal>light_sensor.num_levels</literal> (int)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>TRUE if, and only if, the array is currently syncing</entry>
-            </row>
-            <row>
-              <entry>
-                <literal>storage.linux_raid.sync.action</literal> (string)
-              </entry>
-              <entry></entry>
-              <entry>only if <literal>.is_syncing</literal> is TRUE</entry>
-              <entry>The syncing mechanism as reported by the kernel (idle, resync, check, repair, recover)</entry>
-            </row>
-            <row>
-              <entry>
-                <literal>storage.linux_raid.sync.progress</literal> (double)
-              </entry>
-              <entry></entry>
-              <entry>only if <literal>.is_syncing</literal> is TRUE</entry>
-              <entry>Number between 0 and 1 representing progress of the sync operation. This is updated regulary when syncing is happening.</entry>
-            </row>
-            <row>
-              <entry>
-                <literal>storage.linux_raid.sync.speed</literal> (uint64)
-              </entry>
-              <entry></entry>
-              <entry>only if <literal>.is_syncing</literal> is TRUE</entry>
-              <entry>Speed of the sync operation, in kB/s. This is updated regulary when syncing is happening.</entry>
+              <entry>The number of levels of the sensors</entry>
             </row>
           </tbody>
         </tgroup>
       </informaltable>
     </sect2>
+
     <sect2 id="device-properties-net">
       <title>
         net namespace
@@ -5143,6 +5009,7 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
         </tgroup>
       </informaltable>
     </sect2>
+
     <sect2 id="device-properties-net-80203">
       <title>
         net.80203 namespace
@@ -5210,6 +5077,7 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
       <para>
       </para>
     </sect2>
+
     <sect2 id="device-properties-net-80211">
       <title>
         net.80211 namespace
@@ -5249,59 +5117,24 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
       <para>
       </para>
     </sect2>
-    <sect2 id="device-properties-net-bridge">
+
+    <sect2 id="device-properties-net-80211control">
       <title>
-        net.bridge namespace
+        net.80211control namespace
       </title>
       <para>
-        Bridge ethernet networking devices is described in this namespace
-        for device objects with the capability
-        <literal>net.bridge</literal>.
-        Note that device
-        objects can only have the <literal>net.bridge</literal> capability
-        if they already have the capability <literal>net</literal>.
+        Control devices for Wireless ethernet networking devices are described in 
+	this namespace for device objects with the capability
+        <literal>net.80211control</literal>.
+        Note that device objects can only have the <literal>net.80211control</literal> 
+	capability if they already have the capability <literal>net</literal>.
+	Warning: You should know what you do if you touch this devices. They are 
+	not always stable and can cause (kernel) crashes (on linux).
       </para>
-      <informaltable>
-        <tgroup cols="2">
-          <thead>
-            <row>
-              <entry>Key (type)</entry>
-              <entry>Values</entry>
-              <entry>Mandatory</entry>
-              <entry>Description</entry>
-            </row>
-          </thead>
-          <tbody>
-            <row>
-              <entry>
-                <literal>net.bridge.mac_address</literal> (uint64)
-              </entry>
-              <entry>example: 0x0010605d8ef4</entry>
-              <entry>
-                Only if the <literal>net.bridge</literal> capability is set
-              </entry>
-              <entry>48-bit address</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </informaltable>
       <para>
       </para>
     </sect2>
-    <sect2 id="device-properties-net-loopback">
-      <title>
-        net.loopback namespace
-      </title>
-      <para>
-        Loopback networking devices are described in this namespace
-        for device objects with the capability <literal>net.loopback</literal>.
 
-        Note that device objects can only have the <literal>net.loopback</literal> capability
-	if they already have the capability <literal>net</literal>.
-	
-	No namespace specific properties.
-      </para>
-    </sect2>
     <sect2 id="device-properties-net-bluetooth">
       <title>
         net.bluetooth namespace
@@ -5361,6 +5194,47 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
       <para>
       </para>
     </sect2>
+
+    <sect2 id="device-properties-net-bridge">
+      <title>
+        net.bridge namespace
+      </title>
+      <para>
+        Bridge ethernet networking devices is described in this namespace
+        for device objects with the capability
+        <literal>net.bridge</literal>.
+        Note that device
+        objects can only have the <literal>net.bridge</literal> capability
+        if they already have the capability <literal>net</literal>.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Key (type)</entry>
+              <entry>Values</entry>
+              <entry>Mandatory</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
+            <row>
+              <entry>
+                <literal>net.bridge.mac_address</literal> (uint64)
+              </entry>
+              <entry>example: 0x0010605d8ef4</entry>
+              <entry>
+                Only if the <literal>net.bridge</literal> capability is set
+              </entry>
+              <entry>48-bit address</entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+      <para>
+      </para>
+    </sect2>
+
     <sect2 id="device-properties-net-irda">
       <title>
         net.irda namespace
@@ -5375,31 +5249,31 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
       <para>
       </para>
     </sect2>
-    <sect2 id="device-properties-net-80211control">
+
+    <sect2 id="device-properties-net-loopback">
       <title>
-        net.80211control namespace
+        net.loopback namespace
       </title>
       <para>
-        Control devices for Wireless ethernet networking devices are described in 
-	this namespace for device objects with the capability
-        <literal>net.80211control</literal>.
-        Note that device objects can only have the <literal>net.80211control</literal> 
-	capability if they already have the capability <literal>net</literal>.
-	Warning: You should know what you do if you touch this devices. They are 
-	not always stable and can cause (kernel) crashes (on linux).
-      </para>
-      <para>
+        Loopback networking devices are described in this namespace
+        for device objects with the capability <literal>net.loopback</literal>.
+
+        Note that device objects can only have the <literal>net.loopback</literal> capability
+	if they already have the capability <literal>net</literal>.
+	
+	No namespace specific properties.
       </para>
     </sect2>
-    <sect2 id="device-properties-input">
+
+    <sect2 id="device-properties-obex">
       <title>
-        input namespace
+        obex namespace
       </title>
       <para>
-        This namespace is concerned with human input devices such as
-        keyboards, mice, pointing devices and game controllers. If a
-        device object has the capability <literal>input</literal> then
-        the following properties are available
+        Device objects with the capability <literal>obex</literal>
+        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.
       </para>
       <informaltable>
         <tgroup cols="2">
@@ -5414,94 +5288,60 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
           <tbody>
             <row>
               <entry>
-                <literal>input.device</literal> (string)
+                <literal>obex.type</literal> (sting)
+              </entry>
+              <entry>example: pcsuite, syncml</entry>
+              <entry>No</entry>
+              <entry>
               </entry>
+            </row>
+            <row>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>Special device file for recieving input events</entry>
+              <entry>pcsuite</entry>
+              <entry>No</entry>
+              <entry>
+		 Device is meant to be used with Nokia PC Suite application. Standardized OBEX file
+                 transfer is supported and possibly proprietary extensions.
+              </entry>
             </row>
             <row>
+              <entry></entry>
+              <entry>syncml</entry>
+              <entry>No</entry>
               <entry>
-                <literal>input.x11_driver</literal> (string)
+		Device supports SyncML over OBEX protocol.
               </entry>
-              <entry>e.g. "evdev"</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>syncml-sync</entry>
               <entry>No</entry>
-              <entry>X11 input driver to use</entry>
+              <entry>
+		Device supports SyncML over OBEX protocol for data synchronization.
+              </entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>syncml-dm</entry>
+              <entry>No</entry>
+              <entry>
+		Device supports SyncML over OBEX protocol for data management.
+              </entry>
             </row>
           </tbody>
         </tgroup>
       </informaltable>
     </sect2>
-    <sect2 id="device-properties-input-keys">
-      <title>
-        input.keys namespace
-      </title>
-      <para>
-        The input device have keys that can be pressed. No namespace
-        specific properties.
-      </para>
-    </sect2>
-    <sect2 id="device-properties-input-keypad">
-      <title>
-        input.keypad namespace
-      </title>
-      <para>
-        The input device have keypad keys. No namespace
-        specific properties.
-      </para>
-    </sect2>
-    <sect2 id="device-properties-input-keyboard">
-      <title>
-        input.keyboard namespace
-      </title>
-      <para>
-        The input device is a normal keyboard. No namespace specific
-        properties.
-      </para>
-    </sect2>
-    <sect2 id="device-properties-input-mouse">
-      <title>
-        input.mouse namespace
-      </title>
-      <para>
-        The input device is a mouse. No namespace specific
-        properties.
-      </para>
-    </sect2>
-    <sect2 id="device-properties-input-switch">
-      <title>
-        input.switch namespace
-      </title>
-      <para>
-        The input device is a switch, e.g. it has buttons with
-        state. No namespace specific properties.
-      </para>
-    </sect2>
-    <sect2 id="device-properties-input-joystick">
-      <title>
-        input.joystick namespace
-      </title>
-      <para>
-        The input device is a joystick. No namespace specific
-        properties.
-      </para>
-    </sect2>
-    <sect2 id="device-properties-input-tablet">
-      <title>
-        input.tablet namespace
-      </title>
-      <para>
-        The input device is a tablet. No namespace specific
-        properties.
-      </para>
-    </sect2>
-    <sect2 id="device-properties-input-keymap">
+
+    <sect2 id="device-properties-of_platform">
       <title>
-        input.keymap namespace
+        of_platform namespace
       </title>
       <para>
-        Device objects with the capability <literal>input.keymap</literal>
-        provide facilities to remap keyboard buttons.
+        Devices on the virtual 'of_platform' bus are represented
+        by device objects where <literal>info.subsystem</literal>
+        equals <literal>of_platform</literal>. The following
+        properties are available for such device objects.
       </para>
       <informaltable>
         <tgroup cols="2">
@@ -5516,31 +5356,25 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
           <tbody>
             <row>
               <entry>
-                <literal>input.keymap.data</literal> (strlist)
-              </entry>
-              <entry>e.g. "e017:brightnessup"</entry>
-              <entry>No</entry>
-              <entry>
-                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 <literal>input.keymap.data</literal>
-                values as there are keys to remap.
+                <literal>of_platform.id</literal> (string)
               </entry>
+              <entry>example: f0003000.ethernet</entry>
+              <entry>Yes</entry>
+              <entry>Device identification</entry>
             </row>
           </tbody>
         </tgroup>
       </informaltable>
     </sect2>
-    <sect2 id="device-properties-input-xkb">
+
+    <sect2 id="device-properties-oss">
       <title>
-        input.xkb namespace
+        oss namespace
       </title>
       <para>
-        Device objects with the capability <literal>input.keys</literal>
-        can provide information about their physical layout.
+        Device objects with the capability <literal>oss</literal>
+        represent all the streams available through OSS on a soundcard.
+        OSS devices could be emulated by ALSA.
       </para>
       <informaltable>
         <tgroup cols="2">
@@ -5555,61 +5389,134 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
           <tbody>
             <row>
               <entry>
-                <literal>input.xkb.rules</literal> (string)
+                <literal>oss.card</literal> (int)
               </entry>
-              <entry>e.g. "base"</entry>
+              <entry></entry>
               <entry>Yes</entry>
               <entry>
-                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.
+                Card number in system as registered by OSS (and/or ALSA).
               </entry>
             </row>
             <row>
               <entry>
-                <literal>input.xkb.model</literal> (string)
+                <literal>oss.card_id</literal> (string)
               </entry>
-              <entry>e.g. "logicdp"</entry>
+              <entry>
+                Examples: <literal>I82801DBICH4</literal>, <literal>MP3</literal>
+              </entry>
+              <entry>No</entry>
+              <entry>
+                Textual description of the card.
+              </entry>
+            </row>
+            <row>
+              <entry>
+                <literal>oss.device</literal> (int)
+              </entry>
+              <entry></entry>
               <entry>Yes</entry>
               <entry>
-                Physical keyboard model (e.g. Logitech Cordless Freedom
-                Pro), as given to XKB.
+                Device number assigned by OSS/ALSA for a current card.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>input.xkb.layout</literal> (string)
+                <literal>oss.device_file</literal> (string)
               </entry>
-              <entry>e.g. "us"</entry>
+              <entry></entry>
               <entry>Yes</entry>
               <entry>
-                Keyboard layout (as engraved on the keys).
+                The device node to access the OSS device.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>input.xkb.variant</literal> (string)
+                <literal>oss.device_id</literal> (string)
+              </entry>
+              <entry>
+                Examples: <literal>Intel 82801DB-ICH4 MIC2 ADC</literal>
               </entry>
-              <entry>e.g. "nodeadkeys"</entry>
               <entry>No</entry>
               <entry>
-                Variant of the XKB layout (if any) to use.
+                Textual description of the specific device for a card
               </entry>
             </row>
             <row>
               <entry>
-                <literal>input.xkb.options</literal> (strlist)
+                <literal>oss.originating_device</literal> (string)
               </entry>
-              <entry>e.g. "ctrl:nocaps"</entry>
-              <entry>No</entry>
+              <entry></entry>
+              <entry>Yes</entry>
               <entry>
-                Options to be provided to XKB.
+                UDI of the device the OSS device is bound to.
+              </entry>
+            </row>
+            <row>
+              <entry>
+                <literal>oss.type</literal> (string)
+              </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>
+                The type of the stream.
+              </entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>
+                <literal>mixer</literal>
+              </entry>
+              <entry></entry>
+              <entry>
+                Stream is control/mixer device.
+              </entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>
+                <literal>pcm</literal>
+              </entry>
+              <entry></entry>
+              <entry>
+                Stream is PCM device.
+              </entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>
+                <literal>midi</literal>
+              </entry>
+              <entry></entry>
+              <entry>
+                Stream is MIDI device.
+              </entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>
+                <literal>sequencer</literal>
+              </entry>
+              <entry></entry>
+              <entry>
+                Stream is a global OSS sequencer device.
+                This means, the device is for all OSS devices/cards.
+              </entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>
+                <literal>unknown</literal>
+              </entry>
+              <entry></entry>
+              <entry>
+                Stream is unknown device.
               </entry>
             </row>
           </tbody>
         </tgroup>
       </informaltable>
     </sect2>
+
     <sect2 id="device-properties-pcmcia_socket">
       <title>
         pcmcia_socket namespace
@@ -5643,13 +5550,14 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
         </tgroup>
       </informaltable>
     </sect2>
-    <sect2 id="device-properties-printer">
+
+    <sect2 id="device-properties-pda">
       <title>
-        printer namespace
+        pda namespace
       </title>
       <para>
-        Device objects with the capability <literal>printer</literal>
-        represent printers. The following properties are available.
+        Device objects with the capability <literal>pda</literal>
+        represent Personal Digital Assistant (PDA) devices.
       </para>
       <informaltable>
         <tgroup cols="2">
@@ -5664,56 +5572,226 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
           <tbody>
             <row>
               <entry>
-                <literal>printer.device</literal> (string)
+                <literal>pda.platform</literal> (string)
+              </entry>
+              <entry>e.g. palm or pocketpc</entry>
+              <entry>Yes</entry>
+              <entry>The type of the PDA platform</entry>
+            </row>
+            <row>
+              <entry>
+                <literal>pda.palm.hotsync_interface</literal> (string)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>TODO</entry>
+              <entry>
+		Path to the Palm hotsync interface e.g. a linux device file (e.g. USB) or a 
+		serial device.
+	      </entry>
             </row>
             <row>
               <entry>
-                <literal>printer.vendor</literal> (string)
+                <literal>pda.pocketpc.hotsync_interface</literal> (string)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>TODO</entry>
+              <entry>
+		Path to the Pocket PC (e.g. HP iPAQ) hotsync interface e.g. a linux device file 
+		(e.g. USB) or a serial device.
+	      </entry>
             </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="device-properties-power-management">
+      <title>
+        power_management namespace
+      </title>
+      <para>
+        Keys with the prefix <literal>power_management</literal>
+        provide information about power management supported by
+        the system.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Key (type)</entry>
+              <entry>Values</entry>
+              <entry>Mandatory</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
             <row>
               <entry>
-                <literal>printer.product</literal> (string)
+                <literal>power_management.type</literal> (string)
+              </entry>
+              <entry>Examples:
+                <literal>apm</literal>,
+                <literal>acpi</literal>,
+                <literal>pmu</literal>
+              </entry>
+              <entry>Yes</entry>
+              <entry>
+                The power management subsystem used on the computer.
+              </entry>
+            </row>
+            <row>
+              <entry>
+                <literal>power_management.can_suspend</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>TODO</entry>
+              <entry>
+                If suspend support is compiled into the kernel.
+                NB. This may not mean the machine is able to suspend
+                successfully.
+              </entry>
             </row>
             <row>
               <entry>
-                <literal>printer.serial</literal> (string)
+                <literal>power_management.can_suspend_hybrid</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>TODO</entry>
+              <entry>
+                If the system is capable of hybrid suspend.
+              </entry>
             </row>
             <row>
               <entry>
-                <literal>printer.description</literal> (string)
+                <literal>power_management.can_hibernate</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>TODO</entry>
+              <entry>
+                If hibernation support is compiled into the kernel.
+                NB. This may not mean the machine is able to hibernate
+                successfully.
+              </entry>
             </row>
             <row>
               <entry>
-                <literal>printer.commandset</literal> (strlist)
+                <literal>power_management.is_powersave_set</literal> (bool)
+              </entry>
+              <entry/>
+              <entry>Yes</entry>
+              <entry>
+                Is the last value passed to the SetPowerSave method.
+              </entry>
+            </row>
+            <row>
+              <entry>
+                <literal>power_management.quirk.s3_bios</literal> (bool)
               </entry>
               <entry></entry>
               <entry>No</entry>
-              <entry>List of supported commands / printer languages.</entry>
+              <entry>Use the S3_BIOS kernel command for suspend.</entry>
+            </row>
+            <row>
+              <entry>
+                <literal>power_management.quirk.s3_mode</literal> (bool)
+              </entry>
+              <entry></entry>
+              <entry>No</entry>
+              <entry>Use the S3_MODE kernel command for suspend.</entry>
+            </row>
+            <row>
+              <entry>
+                <literal>power_management.quirk.dpms_suspend</literal> (bool)
+              </entry>
+              <entry></entry>
+              <entry>No</entry>
+              <entry>Suspend the video card via DPMS on suspend.</entry>
+            </row>
+            <row>
+              <entry>
+                <literal>power_management.quirk.vga_mode_3</literal> (bool)
+              </entry>
+              <entry></entry>
+              <entry>No</entry>
+              <entry>Reset the VGA text mode to mode 3 on resume.</entry>
+            </row>
+            <row>
+              <entry>
+                <literal>power_management.quirk.dpms_on</literal> (bool)
+              </entry>
+              <entry></entry>
+              <entry>No</entry>
+              <entry>Reactivate the screen with DPMS on resume.</entry>
+            </row>
+            <row>
+              <entry>
+                <literal>power_management.quirk.vbe_post</literal> (bool)
+              </entry>
+              <entry></entry>
+              <entry>No</entry>
+              <entry>Run the VGA BIOS Power On Self Test (POST) on resume.</entry>
+            </row>
+            <row>
+              <entry>
+                <literal>power_management.quirk.vbestate_restore</literal> (bool)
+              </entry>
+              <entry></entry>
+              <entry>No</entry>
+              <entry>Save the VGA BIOS state before suspend, and restore it on resume.</entry>
+            </row>
+            <row>
+              <entry>
+                <literal>power_management.quirk.vbemode_restore</literal> (bool)
+              </entry>
+              <entry></entry>
+              <entry>No</entry>
+              <entry>Save the VGA BIOS mode before suspend, and restore it on resume.</entry>
+            </row>
+            <row>
+              <entry>
+                <literal>power_management.quirk.pci_save</literal> (bool)
+              </entry>
+              <entry></entry>
+              <entry>No</entry>
+              <entry>saving the PCI config space of the graphic card before suspend, restoring it after</entry>
+            </row>
+            <row>
+              <entry>
+                <literal>power_management.quirk.radeon_off</literal> (bool)
+              </entry>
+              <entry></entry>
+              <entry>No</entry>
+              <entry>Turn off the Radeon DAC off before suspend.</entry>
+            </row>
+            <row>
+              <entry>
+                <literal>power_management.quirk.reset_brightness</literal> (bool)
+              </entry>
+              <entry></entry>
+              <entry>No</entry>
+              <entry>Reset the brightness state after resume.</entry>
+            </row>
+            <row>
+              <entry>
+                <literal>power_management.quirk.no_fb</literal> (bool)
+              </entry>
+              <entry></entry>
+              <entry>No</entry>
+              <entry>True if the machine can only suspend when not using framebuffer.</entry>
+            </row>
+            <row>
+              <entry>
+                <literal>power_management.quirk.none</literal> (bool)
+              </entry>
+              <entry></entry>
+              <entry>No</entry>
+              <entry>No quirks are necessary for suspend or resume.</entry>
             </row>
           </tbody>
         </tgroup>
       </informaltable>
     </sect2>
+    
     <sect2 id="device-properties-portable_audio_player">
       <title>
         portable_audio_player namespace
@@ -5882,13 +5960,14 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
         </tgroup>
       </informaltable>
     </sect2>
-    <sect2 id="device-properties-alsa">
+
+    <sect2 id="device-properties-printer">
       <title>
-        alsa namespace
+        printer namespace
       </title>
       <para>
-        Device objects with the capability <literal>alsa</literal>
-        represent all the streams available through ALSA on a soundcard.
+        Device objects with the capability <literal>printer</literal>
+        represent printers. The following properties are available.
       </para>
       <informaltable>
         <tgroup cols="2">
@@ -5903,631 +5982,564 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
           <tbody>
             <row>
               <entry>
-                <literal>alsa.card</literal> (int)
+                <literal>printer.device</literal> (string)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>
-                Card number in system as registered by ALSA.
-              </entry>
+              <entry>TODO</entry>
             </row>
             <row>
               <entry>
-                <literal>alsa.card_id</literal> (string)
-              </entry>
-              <entry>
-                Examples: <literal>I82801DBICH4</literal>, <literal>MP3</literal>
-              </entry>
-              <entry>No</entry>
-              <entry>
-                Textual description of the card.
+                <literal>printer.vendor</literal> (string)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>TODO</entry>
             </row>
             <row>
               <entry>
-                <literal>alsa.device</literal> (int)
+                <literal>printer.product</literal> (string)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>
-                Device number assigned by ALSA for a current card.
-              </entry>
+              <entry>TODO</entry>
             </row>
             <row>
               <entry>
-                <literal>alsa.device_file</literal> (string)
+                <literal>printer.serial</literal> (string)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
+              <entry>TODO</entry>
+            </row>
+            <row>
               <entry>
-                The device node to access the ALSA device.
+                <literal>printer.description</literal> (string)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>TODO</entry>
             </row>
             <row>
               <entry>
-                <literal>alsa.device_id</literal> (string)
+                <literal>printer.commandset</literal> (strlist)
               </entry>
+              <entry></entry>
+              <entry>No</entry>
+              <entry>List of supported commands / printer languages.</entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="device-properties-processor">
+      <title>
+        processor namespace
+      </title>
+      <para>
+        Device objects with the capability <literal>processor</literal>
+        represent CPU's in the system.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Key (type)</entry>
+              <entry>Values</entry>
+              <entry>Mandatory</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
+            <row>
               <entry>
-                Examples: <literal>Intel 82801DB-ICH4 MIC2 ADC</literal>
+                <literal>processor.number</literal> (int)
               </entry>
-              <entry>No</entry>
+              <entry></entry>
+              <entry>Yes</entry>
               <entry>
-                Textual description of the specific device for a card
+                The internal processor number in the system, starting from zero
               </entry>
             </row>
             <row>
               <entry>
-                <literal>alsa.pcm_class</literal> (string)
+                <literal>processor.can_throttle</literal> (bool)
               </entry>
               <entry></entry>
               <entry>No</entry>
               <entry>
-                The PCM class of the device.
+                Whether the processor supports throttling to decrease it's
+                own clock speed
               </entry>
             </row>
             <row>
-              <entry></entry>
-              <entry>generic</entry>
-              <entry></entry>
               <entry>
-                A standard PCM sound device (SND_PCM_CLASS_GENERIC).
+                <literal>processor.maximum_speed</literal> (long)
               </entry>
+              <entry>example: 2200</entry>
+              <entry>No</entry>
+              <entry>The maximum speed of the processor in units of MHz</entry>
             </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="device-properties-scanner">
+      <title>
+        scanner namespace
+      </title>
+      <para>
+        Device objects with the capability <literal>scanner</literal>
+        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:
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Key (type)</entry>
+              <entry>Values</entry>
+              <entry>Mandatory</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
             <row>
-              <entry></entry>
-              <entry>multi</entry>
-              <entry></entry>
               <entry>
-                A multichannel device PCM sound device (SND_PCM_CLASS_MULTI) which 
-		e.g. contains a generic and a modem device.
+                <literal>scanner.access_method</literal> (string)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>This property defines how the device is accessed </entry>
             </row>
             <row>
               <entry></entry>
-              <entry>digitizer</entry>
+              <entry>proprietary</entry>
               <entry></entry>
               <entry>
-                A PCM digitizer device (SND_PCM_CLASS_DIGITIZER).
+                The device is accessed from userspace through
+                a userspace driver such as SANE.
               </entry>
             </row>
             <row>
               <entry></entry>
-              <entry>modem</entry>
               <entry></entry>
+              <entry></entry>
+              <entry></entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="device-properties-storage">
+      <title>
+        storage namespace
+      </title>
+      <para>
+        This namespace is used to describe storage devices
+        and their capabilities. Such device objects will have the
+        capability <literal>storage</literal> and
+        they will export the properties below. Note that device
+        objects can only have the <literal>storage</literal> capability
+        if they already got capability <literal>block</literal> and the
+        property <literal>block.is_volume</literal> set to FALSE.
+        One significant between the <literal>storage</literal> and
+        <literal>block</literal> namespace is that the properties
+        exported in the <literal>storage</literal> represents
+        constant vital product information, whereas the properties
+        in the <literal>block</literal> namespace represent
+        variable system-dependent information.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Key (type)</entry>
+              <entry>Values</entry>
+              <entry>Mandatory</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
+            <row>
               <entry>
-                A PCM modem device (SND_PCM_CLASS_MODEM).
+                <literal>storage.bus</literal> (string)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>Interface the storage device is attached to</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>unknown</entry>
+              <entry>bdi</entry>
               <entry></entry>
-              <entry>
-                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).
-              </entry>
+              <entry>BDI (Backing Device Information) interface</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>none</entry>
+              <entry>ccw</entry>
               <entry></entry>
-              <entry>
-                The value is 'none' if this there is no PCM class for this device.
-              </entry>
+              <entry>IBM s390/s390x ccw interface</entry>
             </row>
             <row>
-              <entry>
-                <literal>alsa.originating_device</literal> (string)
-              </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>
-                UDI of the device the ALSA device is bound to.
-              </entry>
+              <entry>ide</entry>
+              <entry></entry>
+              <entry>IDE or ATA interface</entry>
             </row>
             <row>
-              <entry>
-                <literal>alsa.type</literal> (string)
-              </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>
-                The type of the stream.
-              </entry>
+              <entry>ieee1394</entry>
+              <entry></entry>
+              <entry>IEEE 1394 interface</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>
-                <literal>control</literal>
-              </entry>
+              <entry>linux_raid</entry>
               <entry></entry>
-              <entry>
-                Stream is control device.
-              </entry>
+              <entry>Linux MD (multi disk) RAID device</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>
-                <literal>capture</literal>
-              </entry>
+              <entry>mmc</entry>
               <entry></entry>
-              <entry>
-                Stream is capture device.
-              </entry>
+              <entry>MultiMediaCard (MMC) interface</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>
-                <literal>midi</literal>
-              </entry>
+              <entry>pci</entry>
               <entry></entry>
-              <entry>
-                Stream is MIDI device.
-              </entry>
+              <entry>PCI interface</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>
-                <literal>playback</literal>
-              </entry>
+              <entry>pcmcia</entry>
               <entry></entry>
-              <entry>
-                Stream is playback device.
-              </entry>
+              <entry>PCMCIA interface</entry>
             </row>
-	    <row>
+            <row>
               <entry></entry>
-              <entry>
-                <literal>unknown</literal>
-              </entry>
+              <entry>platform</entry>
               <entry></entry>
-              <entry>
-                The type of the device is unknown.
-              </entry>
+              <entry>Legacy device that is part of the platform</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>
-                <literal>hw_specific</literal>
-              </entry>
+              <entry>sata</entry>
               <entry></entry>
-              <entry>
-                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. 
-              </entry>
+              <entry>SATA interface</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>
-                <literal>timer</literal>
-              </entry>
+              <entry>scsi</entry>
               <entry></entry>
-              <entry>
-                Stream is the global ALSA timer device.
-                This means, the device is for all ALSA devices/cards.
-              </entry>
+              <entry>SCSI interface</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>
-                <literal>sequencer</literal>
-              </entry>
+              <entry>usb</entry>
               <entry></entry>
-              <entry>
-                Stream is the global ALSA sequencer device.
-                This means, the device is for all ALSA devices/cards.
-              </entry>
+              <entry>USB interface</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>
-                <literal>unknown</literal>
-              </entry>
+              <entry>vio</entry>
               <entry></entry>
-              <entry>
-                Stream is unknown device.
-              </entry>
+              <entry>IBM pSeries/iSeries Vio interface</entry>
             </row>
-          </tbody>
-        </tgroup>
-      </informaltable>
-    </sect2>
-    <sect2 id="device-properties-oss">
-      <title>
-        oss namespace
-      </title>
-      <para>
-        Device objects with the capability <literal>oss</literal>
-        represent all the streams available through OSS on a soundcard.
-        OSS devices could be emulated by ALSA.
-      </para>
-      <informaltable>
-        <tgroup cols="2">
-          <thead>
             <row>
-              <entry>Key (type)</entry>
-              <entry>Values</entry>
-              <entry>Mandatory</entry>
-              <entry>Description</entry>
+              <entry></entry>
+              <entry></entry>
+              <entry></entry>
+              <entry></entry>
             </row>
-          </thead>
-          <tbody>
             <row>
               <entry>
-                <literal>oss.card</literal> (int)
+                <literal>storage.drive_type</literal> (string)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
               <entry>
-                Card number in system as registered by OSS (and/or ALSA).
+                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.
               </entry>
             </row>
             <row>
-              <entry>
-                <literal>oss.card_id</literal> (string)
-              </entry>
-              <entry>
-                Examples: <literal>I82801DBICH4</literal>, <literal>MP3</literal>
-              </entry>
-              <entry>No</entry>
-              <entry>
-                Textual description of the card.
-              </entry>
+              <entry></entry>
+              <entry>disk</entry>
+              <entry></entry>
+              <entry>The device is a harddisk</entry>
             </row>
             <row>
-              <entry>
-                <literal>oss.device</literal> (int)
-              </entry>
               <entry></entry>
-              <entry>Yes</entry>
+              <entry>cdrom</entry>
+              <entry></entry>
               <entry>
-                Device number assigned by OSS/ALSA for a current card.
+                The device is an optical drive. The device object will also have the capability <literal>storage.cdrom</literal> in this case.
               </entry>
             </row>
             <row>
-              <entry>
-                <literal>oss.device_file</literal> (string)
-              </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>
-                The device node to access the OSS device.
-              </entry>
+              <entry>floppy</entry>
+              <entry></entry>
+              <entry>The device is a floppy disk drive</entry>
             </row>
             <row>
-              <entry>
-                <literal>oss.device_id</literal> (string)
-              </entry>
-              <entry>
-                Examples: <literal>Intel 82801DB-ICH4 MIC2 ADC</literal>
-              </entry>
-              <entry>No</entry>
-              <entry>
-                Textual description of the specific device for a card
-              </entry>
+              <entry></entry>
+              <entry>tape</entry>
+              <entry></entry>
+              <entry>The device is a tape drive</entry>
             </row>
             <row>
-              <entry>
-                <literal>oss.originating_device</literal> (string)
-              </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>
-                UDI of the device the OSS device is bound to.
-              </entry>
+              <entry>compact_flash</entry>
+              <entry></entry>
+              <entry>The device is a card reader for Compact Flash memory cards</entry>
             </row>
             <row>
-              <entry>
-                <literal>oss.type</literal> (string)
-              </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>
-                The type of the stream.
-              </entry>
+              <entry>memory_stick</entry>
+              <entry></entry>
+              <entry>The device is a card reader for MemoryStick memory cards</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>
-                <literal>mixer</literal>
-              </entry>
+              <entry>smart_media</entry>
               <entry></entry>
-              <entry>
-                Stream is control/mixer device.
-              </entry>
+              <entry>The device is a card reader for SmartMedia memory cards</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>
-                <literal>pcm</literal>
-              </entry>
+              <entry>sd_mmc</entry>
               <entry></entry>
-              <entry>
-                Stream is PCM device.
-              </entry>
+              <entry>The device is a card reader for SecureDigital/MultiMediaCard memory cards</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>
-                <literal>midi</literal>
-              </entry>
               <entry></entry>
-              <entry>
-                Stream is MIDI device.
-              </entry>
+              <entry></entry>
+              <entry></entry>
             </row>
             <row>
-              <entry></entry>
               <entry>
-                <literal>sequencer</literal>
+	        <literal>storage.removable</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>
-                Stream is a global OSS sequencer device.
-                This means, the device is for all OSS devices/cards.
-              </entry>
+              <entry>Yes</entry>
+              <entry>Media can be removed from the storage device</entry>
             </row>
             <row>
-              <entry></entry>
               <entry>
-                <literal>unknown</literal>
+	        <literal>storage.removable.media_available</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>
-                Stream is unknown device.
-              </entry>
+              <entry>Yes</entry>
+              <entry>true, if and only if, media have been detected in storage device</entry>
             </row>
-          </tbody>
-        </tgroup>
-      </informaltable>
-    </sect2>
-    <sect2 id="device-properties-camera">
-      <title>
-        camera namespace
-      </title>
-      <para>
-        Device objects with the capability <literal>camera</literal>
-        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:
-      </para>
-      <informaltable>
-        <tgroup cols="2">
-          <thead>
             <row>
-              <entry>Key (type)</entry>
-              <entry>Values</entry>
-              <entry>Mandatory</entry>
-              <entry>Description</entry>
+              <entry>
+	        <literal>storage.removable.media_size</literal> (uint64)
+              </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>Size of media in storage device. Available only if media have been detected in storage device.</entry>
             </row>
-          </thead>
-          <tbody>
             <row>
               <entry>
-                <literal>camera.access_method</literal> (string)
+	        <literal>storage.removable.support_async_notification</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>This property defines how the device is accessed </entry>
+              <entry>Whether the drive reports asynchronous notification for media change.</entry>
             </row>
             <row>
-              <entry></entry>
-              <entry>storage</entry>
-              <entry></entry>
               <entry>
-                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
-                <literal>storage</literal> in order to access the
-                device.
+	        <literal>storage.partitioning_scheme</literal> (string)
               </entry>
+              <entry></entry>
+              <entry>Only when media is inserted and is partitioned</entry>
+              <entry>The partitioning scheme of the media.</entry>
             </row>
             <row>
               <entry></entry>
-              <entry>user</entry>
+              <entry>mbr</entry>
               <entry></entry>
-              <entry>
-                The device is accessed from userspace through
-                a userspace driver.
-              </entry>
+              <entry>Master Boot Record partitioning scheme used in most PC's</entry>
             </row>
             <row>
               <entry></entry>
+              <entry>gpt</entry>
               <entry></entry>
+              <entry>GUID Partitioning Table as defined by UEFI</entry>
+            </row>
+            <row>
               <entry></entry>
+              <entry>apm</entry>
               <entry></entry>
+              <entry>Apple Partition Map, used in non-Intel Apple computers</entry>
             </row>
             <row>
               <entry>
-                <literal>camera.libgphoto2.support</literal> (bool)
+	        <literal>storage.size</literal> (uint64)
               </entry>
               <entry></entry>
               <entry>No</entry>
-              <entry>
-                If true, the device is supported by a userspace driver
-                from the libgphoto2 project.
-              </entry>
+              <entry>size in bytes of the storage device - only meaningful if storage.removable is FALSE</entry>
             </row>
-          </tbody>
-        </tgroup>
-      </informaltable>
-    </sect2>
-    <sect2 id="device-properties-scanner">
-      <title>
-        scanner namespace
-      </title>
-      <para>
-        Device objects with the capability <literal>scanner</literal>
-        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:
-      </para>
-      <informaltable>
-        <tgroup cols="2">
-          <thead>
-            <row>
-              <entry>Key (type)</entry>
-              <entry>Values</entry>
-              <entry>Mandatory</entry>
-              <entry>Description</entry>
-            </row>
-          </thead>
-          <tbody>
             <row>
               <entry>
-                <literal>scanner.access_method</literal> (string)
+                <literal>storage.requires_eject</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>This property defines how the device is accessed </entry>
+              <entry>The eject ioctl is required to properly eject the media</entry>
             </row>
             <row>
-              <entry></entry>
-              <entry>proprietary</entry>
-              <entry></entry>
               <entry>
-                The device is accessed from userspace through
-                a userspace driver such as SANE.
+                <literal>storage.hotpluggable</literal> (bool)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>The storage device can be removed while the system is running</entry>
             </row>
             <row>
+              <entry>
+                <literal>storage.media_check_enabled</literal> (bool)
+              </entry>
               <entry></entry>
-              <entry></entry>
-              <entry></entry>
-              <entry></entry>
+              <entry>Yes</entry>
+              <entry>If this property is set to FALSE then HAL will not continuosly poll for media changes. </entry>
             </row>
-          </tbody>
-        </tgroup>
-      </informaltable>
-    </sect2>
-    <sect2 id="device-properties-laptop-panel">
-      <title>
-        laptop_panel namespace
-      </title>
-      <para>
-        Device objects with the capability <literal>laptop_panel</literal>
-        represent devices capable of changing the brightness of the display.
-      </para>
-      <informaltable>
-        <tgroup cols="2">
-          <thead>
             <row>
-              <entry>Key (type)</entry>
-              <entry>Values</entry>
-              <entry>Mandatory</entry>
-              <entry>Description</entry>
+              <entry>
+                <literal>storage.automount_enabled_hint</literal> (bool)
+              </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>This property is a hint to desktop file managers that they shouldn't automount volumes of the storage device when they appear.</entry>
             </row>
-          </thead>
-          <tbody>
             <row>
               <entry>
-                <literal>laptop_panel.num_levels</literal> (int)
+                <literal>storage.no_partitions_hint</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
               <entry>
-                The brightness levels supported by the adaptor.
+                This property is a hint to programs that maintain the
+                <literal>/etc/fstab</literal> 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).
               </entry>
             </row>
             <row>
               <entry>
-                <literal>laptop_panel.access_method</literal> (string)
+                <literal>storage.originating_device</literal> (string)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
               <entry>
-                The access method to use in scripts, e.g. pmu, toshiba, ibm, sony.
+                This contains the UDI of the device object
+                representing the device or blank if
+                there is no such device.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>laptop_panel.brightness_in_hardware</literal> (bool)
+                <literal>storage.model</literal> (string)
               </entry>
               <entry></entry>
-              <entry>No</entry>
+              <entry>Yes</entry>
+              <entry>The name of the drive</entry>
+            </row>
+            <row>
               <entry>
-                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.
+                <literal>storage.vendor</literal> (string)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>The vendor of the drive</entry>
             </row>
-          </tbody>
-        </tgroup>
-      </informaltable>
-      <para>
-        The following methods exist on the interface
-        <literal>org.freedesktop.Hal.Device.LaptopPanel</literal>.
-      </para>
-      <informaltable>
-        <tgroup cols="2">
-          <thead>
             <row>
-              <entry>Method (parameter types)</entry>
-              <entry>Parameters</entry>
-              <entry>Mandatory</entry>
-              <entry>Description</entry>
+              <entry>
+                <literal>storage.serial</literal> (string)
+              </entry>
+              <entry></entry>
+              <entry>No</entry>
+              <entry>The serial number of the drive</entry>
             </row>
-          </thead>
-          <tbody>
             <row>
               <entry>
-                <literal>SetBrightness</literal> (integer)
+                <literal>storage.firmware_revision</literal> (string)
               </entry>
+              <entry></entry>
+              <entry>No</entry>
+              <entry>The revision of the firmware of the drive</entry>
+            </row>
+            <row>
               <entry>
-                The hardware brightness state, which should be between 0 and 
-                <literal>laptop_panel.num_levels</literal> - 1.
+                <literal>storage.icon.drive</literal> (string)
               </entry>
+              <entry></entry>
               <entry>No</entry>
               <entry>
-                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.
+                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 <literal>/usr/share/icons/hicolor</literal>
+                a device information file matching their device.
               </entry>
             </row>
             <row>
               <entry>
-                integer <literal>GetBrightness</literal> (void)
-              </entry>
-              <entry>
-                Returns the hardware brightness state, which should be
-                between 0 and <literal>laptop_panel.num_levels</literal> - 1.
+                <literal>storage.icon.volume</literal> (string)
               </entry>
+              <entry></entry>
               <entry>No</entry>
               <entry>
-                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.
+                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 <literal>/usr/share/icons/hicolor</literal>
+                a device information file matching their device.
               </entry>
             </row>
           </tbody>
         </tgroup>
       </informaltable>
     </sect2>
-    <sect2 id="device-properties-ac_adapter">
+
+    <sect2 id="device-properties-storage-cdrom">
       <title>
-        ac_adapter namespace
+        storage.cdrom namespace
       </title>
       <para>
-        Device objects with the capability <literal>ac_adapter</literal>
-        represent all the devices capable of powering the system from AC power
+        This namespace is used to describe optical storage drives
+        and their capabilities.Such device objects will have the
+        capability <literal>storage.cdrom</literal> and
+        they will export the properties below. Note that device
+        objects can only have the <literal>storage.cdrom</literal> capability
+        if they already got the capability <literal>storage</literal>.
       </para>
       <informaltable>
         <tgroup cols="2">
@@ -6542,633 +6554,556 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
           <tbody>
             <row>
               <entry>
-                <literal>ac_adapter.present</literal> (bool)
+                <literal>storage.cdrom.cdr</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>
-                The state of the adapter, i.e. whether it is providing power to
-                the unit from mains power.
-              </entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </informaltable>
-    </sect2>
-    <sect2 id="device-properties-battery">
-      <title>
-        battery namespace
-      </title>
-      <para>
-        Device objects with the capability <literal>battery</literal>
-        represent all the devices having some battery (in many cases -
-        rechargeable) inside.
-      </para>
-      <informaltable>
-        <tgroup cols="2">
-          <thead>
-            <row>
-              <entry>Key (type)</entry>
-              <entry>Values</entry>
-              <entry>Mandatory</entry>
-              <entry>Description</entry>
+              <entry>TRUE when the optical drive can write CD-R discs</entry>
             </row>
-          </thead>
-          <tbody>
             <row>
               <entry>
-                <literal>battery.present</literal> (bool)
+                <literal>storage.cdrom.cdrw</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>
-                This is present as some smart batteries can have acpi/pmu
-                entries, and be physically missing.
-              </entry>
+              <entry>TRUE when the optical drive can blank and write to CD-RW discs</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.type</literal> (string)
+                <literal>storage.cdrom.dvd</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>
-                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.
-              </entry>
+              <entry>TRUE when the optical drive can read DVD-ROM discs</entry>
             </row>
             <row>
-              <entry></entry>
               <entry>
-                <literal>pda</literal>
+                <literal>storage.cdrom.dvdr</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>
-                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
-              </entry>
+              <entry>Yes</entry>
+              <entry>TRUE when the optical drive can write to DVD-R discs</entry>
             </row>
             <row>
-              <entry></entry>
               <entry>
-                <literal>ups</literal>
+                <literal>storage.cdrom.dvdrw</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>
-                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.
-              </entry>
+              <entry>Yes</entry>
+              <entry>TRUE when the optical drive can blank and write to DVD-RW discs</entry>
             </row>
             <row>
-              <entry></entry>
               <entry>
-                <literal>primary</literal>
+                <literal>storage.cdrom.dvdrdl</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>
-                The battery is a primary power source for the system - an
-                example are laptop batteries.
-              </entry>
+              <entry>Yes</entry>
+              <entry>TRUE when the optical drive can write to DVD-R Dual-Layer discs</entry>
             </row>
             <row>
-              <entry></entry>
               <entry>
-                <literal>mouse</literal>
+                <literal>storage.cdrom.dvdram</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>
-                The device containing the battery is a mouse.
-              </entry>
+              <entry>Yes</entry>
+              <entry>TRUE when the optical drive can write to DVD-RAM discs</entry>
             </row>
             <row>
-              <entry></entry>
               <entry>
-                <literal>keyboard</literal>
+                <literal>storage.cdrom.dvdplusr</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>
-                The device containing the battery is a keyboard.
-              </entry>
+              <entry>Yes</entry>
+              <entry>TRUE when the optical drive can write to DVD+R discs</entry>
             </row>
             <row>
-              <entry></entry>
               <entry>
-                <literal>keyboard_mouse</literal>
+                <literal>storage.cdrom.dvdplusrw</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>
-                The device containing the battery is a combined mouse and keyboard.
-              </entry>
+              <entry>Yes</entry>
+              <entry>TRUE when the optical drive can blank and write to DVD+RW discs</entry>
             </row>
             <row>
-              <entry></entry>
               <entry>
-                <literal>camera</literal>
+                <literal>storage.cdrom.dvdplusrwdl</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>
-                The device containing the battery is a camera.
-              </entry>
+              <entry>Yes</entry>
+              <entry>TRUE when the optical drive can blank and write to DVD+RW Dual-Layer discs</entry>
             </row>
             <row>
-              <entry></entry>
               <entry>
-                <literal>usb</literal>
+                <literal>storage.cdrom.dvdplusrdl</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>
-                The device containing the battery is a generic usb device.
-              </entry>
+              <entry>Yes</entry>
+              <entry>TRUE when the optical drive can write to DVD+R Dual-Layer discs</entry>
             </row>
             <row>
-              <entry></entry>
               <entry>
-                <literal>unknown</literal>
+                <literal>storage.cdrom.bd</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>
-                The device containing the battery is not covered by other types.
-              </entry>
+              <entry>Yes</entry>
+              <entry>TRUE when the optical drive can read Blu-ray ROM discs</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.charge_level.unit</literal> (string)
-              </entry>
-              <entry>Examples:
-                <literal>mWh</literal>,
-                <literal>percent</literal>
-              </entry>
-              <entry>No</entry>
-              <entry>
-                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.
+                <literal>storage.cdrom.bdr</literal> (bool)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>TRUE when the optical drive can write to Blu-ray Recordable discs</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.charge_level.design</literal> (int)
+                <literal>storage.cdrom.bdre</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>
-                The maximum level of charge the device was designed for.
-                Measured in <literal>"battery.charge_level.unit"</literal>
-                units.
-              </entry>
+              <entry>TRUE when the optical drive can write to Blu-ray Rewritable discs</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.charge_level.last_full</literal> (int)
+                <literal>storage.cdrom.hddvd</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>
-                The maximum level of charge the device could hold the last
-                time it was full.
-                Measured in <literal>"battery.charge_level.unit"</literal>
-                units.
-              </entry>
+              <entry>TRUE when the optical drive can read Read-only HD DVD discs</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.charge_level.current</literal> (int)
+                <literal>storage.cdrom.hddvdr</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>
-                The current level of charge which the device can is holding.
-                Measured in <literal>"battery.charge_level.unit"</literal>
-                units.
-              </entry>
+              <entry>TRUE when the optical drive can write to Write-once HD DVD discs</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.charge_level.rate</literal> (int)
+                <literal>storage.cdrom.hddvdrw</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>No</entry>
-              <entry>
-                The discharge/charge rate measured
-                in <literal>"battery.charge_level.unit"</literal>
-                units per second.
-              </entry>
+              <entry>Yes</entry>
+              <entry>TRUE when the optical drive can write to Rewritable HD DVD discs</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.charge_level.warning</literal> (int)
+                <literal>storage.cdrom.mrw</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>No</entry>
-              <entry>
-                Once the charge level of the battery drops below this value its
-                state changes to 'warning'.
-                Measured in <literal>"battery.charge_level.unit"</literal>
-                units.
-              </entry>
+              <entry>Yes</entry>
+              <entry>TRUE when the optical drive can read MRW (Mount Rainier Rewrite) discs</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.charge_level.low</literal> (int)
+                <literal>storage.cdrom.mrw_w</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>No</entry>
-              <entry>
-                Once the charge level of the battery drops below this value its
-                state changes to 'low'.
-                Measured in <literal>"battery.charge_level.unit"</literal>
-                units.
-              </entry>
+              <entry>Yes</entry>
+              <entry>TRUE when the optical drive can write MRW (Mount Rainier Rewrite) discs</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.charge_level.granularity_1</literal> (int)
+                <literal>storage.cdrom.mo</literal> (bool)
               </entry>
               <entry></entry>
               <entry>No</entry>
-              <entry>
-                Granularity value one of the battery measured
-                in <literal>"battery.charge_level.unit"</literal>
-                units .
-              </entry>
+              <entry>TRUE when the optical drive is a MO (Magneto Optical) device.</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.charge_level.granularity_2</literal> (int)
+                <literal>storage.cdrom.support_multisession</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>No</entry>
-              <entry>
-                Granularity value two of the battery measured
-                in <literal>"battery.charge_level.unit"</literal>
-                units.
-              </entry>
+              <entry>Yes</entry>
+              <entry>TRUE if the drive can read multisession discs</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.reporting.unit</literal> (string)
-              </entry>
-              <entry>Examples:
-                <literal>mWh</literal>,
-                <literal>mAh</literal>,
-                <literal>percent</literal>
-              </entry>
-              <entry>No</entry>
-              <entry>
-                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.
+                <literal>storage.cdrom.support_media_changed</literal> (bool)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>TRUE if the drive can generate media changed events</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.reporting.design</literal> (int)
+                <literal>storage.cdrom.read_speed</literal> (int)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
+              <entry>The maximum reading speed, in kb/s</entry>
+            </row>
+            <row>
               <entry>
-                The maximum level of charge the device was designed for,
-                as reported by the hardware.
-                Measured in <literal>"battery.reporting.unit"</literal>
-                units.
+                <literal>storage.cdrom.write_speed</literal> (int)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>The maximum writing speed, in kb/s</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.reporting.last_full</literal> (int)
+                <literal>storage.cdrom.write_speeds</literal> (strlist)
               </entry>
               <entry></entry>
               <entry>No</entry>
+              <entry>By the device supported write speeds in kb/s</entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="device-properties-storage-linux-raid">
+      <title>
+        storage.linux_raid namespace
+      </title>
+      <para>
+        This namespace is used to describe logical Software RAID
+        devices under Linux using the <literal>md</literal> driver. By
+        and large, all the same properties under
+        the <literal>storage</literal> name space applies except
+        that <literal>storage.serial</literal> is set to the UUID of
+        the RAID set, <literal>storage.firmware_version</literal> is
+        set to the version of the <literal>md</literal> driver and the
+        value of <literal>storage.hotpluggable</literal> is taken from
+        the enclosing drive of the first RAID component
+        encountered. In addition, the following properties are
+        available.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Key (type)</entry>
+              <entry>Values</entry>
+              <entry>Mandatory</entry>
+              <entry>Description</entry>
+            </row>
+          </thead>
+          <tbody>
+            <row>
               <entry>
-                The maximum level of charge the device could hold the last
-                time it was full, as reported by the hardware.
-                Measured in <literal>"battery.reporting.unit"</literal>
-                units.
+                <literal>storage.linux_raid.level</literal> (string)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>the RAID level of the device as reported by the kernel (linear, raid0, raid1, raid4, raid5, raid6, raid10)</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.reporting.current</literal> (int)
+                <literal>storage.linux_raid.sysfs_path</literal> (string)
               </entry>
               <entry></entry>
-              <entry>No</entry>
+              <entry>Yes</entry>
+              <entry>sysfs path of device, e.g. /sys/block/md0</entry>
+            </row>
+            <row>
               <entry>
-                The current level of charge which the device is holding,
-                as reported by the hardware.
-                Measured in <literal>"battery.reporting.unit"</literal>
-                units.
+                <literal>storage.linux_raid.num_components</literal> (int)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>Number of components in the RAID array</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.reporting.rate</literal> (int)
+                <literal>storage.linux_raid.num_components_active</literal> (int)
               </entry>
               <entry></entry>
-              <entry>No</entry>
+              <entry>Yes</entry>
               <entry>
-                The discharge/charge rate as reported by the hardware measured
-                in <literal>"battery.reporting.unit"</literal>
-                units per second.
+                Number of active components in the RAID array. If less
+                than <literal>storage.linux_raid.num_components</literal>
+                it means that the RAID array is running in degraded
+                mode.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.reporting.warning</literal> (int)
+                <literal>storage.linux_raid.components</literal> (strlist)
               </entry>
               <entry></entry>
-              <entry>No</entry>
-              <entry>
-                Once the hardware charge level of the battery drops below
-                this value its state changes to 'warning'.
-                Measured in <literal>"battery.reporting.unit"</literal>
-                units.
-              </entry>
+              <entry>Yes</entry>
+              <entry>UDI's of the volumes constituting the array.</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.reporting.low</literal> (int)
+                <literal>storage.linux_raid.is_syncing</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>No</entry>
+              <entry>Yes</entry>
+              <entry>TRUE if, and only if, the array is currently syncing</entry>
+            </row>
+            <row>
               <entry>
-                Once the hardware charge level of the battery drops below
-                this value its state changes to 'low'.
-                Measured in <literal>"battery.reporting.unit"</literal>
-                units.
+                <literal>storage.linux_raid.sync.action</literal> (string)
               </entry>
+              <entry></entry>
+              <entry>only if <literal>.is_syncing</literal> is TRUE</entry>
+              <entry>The syncing mechanism as reported by the kernel (idle, resync, check, repair, recover)</entry>
             </row>
             <row>
               <entry>
-                <literal>battery.reporting.granularity_1</literal> (int)
+                <literal>storage.linux_raid.sync.progress</literal> (double)
               </entry>
               <entry></entry>
-              <entry>No</entry>
+              <entry>only if <literal>.is_syncing</literal> is TRUE</entry>
+              <entry>Number between 0 and 1 representing progress of the sync operation. This is updated regulary when syncing is happening.</entry>
+            </row>
+            <row>
               <entry>
-                Hardware granularity value one of the battery measured
-                in <literal>"battery.reporting.unit"</literal>
-                units .
+                <literal>storage.linux_raid.sync.speed</literal> (uint64)
               </entry>
+              <entry></entry>
+              <entry>only if <literal>.is_syncing</literal> is TRUE</entry>
+              <entry>Speed of the sync operation, in kB/s. This is updated regulary when syncing is happening.</entry>
+            </row>
+          </tbody>
+        </tgroup>
+      </informaltable>
+    </sect2>
+
+    <sect2 id="device-properties-system">
+      <title>
+        system namespace
+      </title>
+      <para>
+        This namespace is found on the toplevel "Computer" device,
+        and represents information about the system and the currently
+        running kernel.
+      </para>
+      <informaltable>
+        <tgroup cols="2">
+          <thead>
+            <row>
+              <entry>Key (type)</entry>
+              <entry>Values</entry>
+              <entry>Mandatory</entry>
+              <entry>Description</entry>
             </row>
+          </thead>
+          <tbody>
             <row>
               <entry>
-                <literal>battery.reporting.granularity_2</literal> (int)
+                <literal>system.kernel.name</literal> (string)
               </entry>
-              <entry></entry>
+              <entry>example: Linux</entry>
               <entry>No</entry>
               <entry>
-                Hardware granularity value two of the battery measured
-                in <literal>"battery.reporting.unit"</literal>
-                units.
+                The name of the kernel, usually the equivalent of
+                <literal>uname -s</literal>.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.charge_level.capacity_state</literal> (string)
-              </entry>
-              <entry>
-                Examples: <literal>ok</literal>, <literal>critical</literal>
+                <literal>system.kernel.version</literal> (string)
               </entry>
+              <entry>example: 2.6.5-7.104-default</entry>
               <entry>No</entry>
               <entry>
-                The capacity state of the battery.
+                The version of the currently running kernel.  Usually
+                the equivalent of <literal>uname -r</literal>.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.voltage.unit</literal> (string)
-              </entry>
-              <entry>
-                Examples: <literal>mV</literal>
+                <literal>system.kernel.machine</literal> (string)
               </entry>
+              <entry>example: i686</entry>
               <entry>No</entry>
               <entry>
-                The physical measurement unit used by the voltage properties
-                (design and current).
+                The "machine hardware name" of the currently running kernel.
+                Usually the equivalent of <literal>uname -m</literal>.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.voltage.design</literal> (int)
+                <literal>system.formfactor</literal> (string)
               </entry>
-              <entry></entry>
+              <entry>example: laptop, desktop, server, unknown</entry>
               <entry>Yes</entry>
               <entry>
-                The voltage level for which the battery is designed for.
-                Measured in <literal>"battery.voltage.unit"</literal>
-                units.
+                The formfactor of the system. Usually the equivalent of
+                <literal>system.chassis.type</literal> or set from information
+                about ACPI/APM/PMU properties.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.voltage.current</literal> (int)
+                <literal>system.hardware.vendor</literal> (string)
               </entry>
               <entry></entry>
-              <entry>Yes</entry>
+              <entry>No</entry>
               <entry>
-                The voltage level currently emitted by the battery.
-                Measured in <literal>"battery.voltage.unit"</literal>
-                units.
+                The name of the manufacturer of the machine.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.alarm.unit</literal> (string)
-              </entry>
-              <entry>
-                Examples: <literal>mWh</literal>, <literal>mAh</literal>
+                <literal>system.hardware.product</literal> (string)
               </entry>
+              <entry></entry>
               <entry>No</entry>
               <entry>
-                The physical measurement unit used by the alarm property.
+                The product name of the machine.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.alarm.design</literal> (int)
+                <literal>system.hardware.version</literal> (string)
               </entry>
               <entry></entry>
               <entry>No</entry>
               <entry>
-                Once the charge level of the battery drops below this value
-                its state changes to 'alarm'.
-                Measured in <literal>"battery.alarm.unit"</literal>
-                units.
+                The version of the machine.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.remaining_time</literal> (int)
+                <literal>system.hardware.serial</literal> (string)
               </entry>
               <entry></entry>
               <entry>No</entry>
               <entry>
-                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.
+                The serial number of the machine.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.remaining_time.calculate_per_time</literal> (bool)
+                <literal>system.hardware.uuid</literal> (string)
               </entry>
               <entry></entry>
               <entry>No</entry>
               <entry>
-                If this property is <literal>true</literal> the
-                <literal>battery.remaining_time</literal> becomes guessed from
-                <literal>battery.charge_level.current</literal> and time.
+                The unique ID of the machine.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.charge_level.percentage</literal> (int)
+                <literal>system.hardware.primary_video.vendor</literal> (int)
               </entry>
               <entry></entry>
               <entry>No</entry>
               <entry>
-                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.
+                The PCI vendor ID of the primary graphics card in the system.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.is_rechargeable</literal> (bool)
+                <literal>system.hardware.primary_video.product</literal> (int)
               </entry>
               <entry></entry>
               <entry>No</entry>
               <entry>
-                True if the battery unit is rechargeable, false if its is
-                one-time (disposable after one usage).
+                The PCI device ID of the primary graphics card in the system.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.rechargeable.is_charging</literal> (bool)
+                <literal>system.firmware.vendor</literal> (string)
               </entry>
               <entry></entry>
+              <entry>No</entry>
               <entry>
-                Only if <literal>battery.is_rechargeable</literal> is TRUE
-              </entry>
-              <entry>
-                TRUE if, and only if, the battery is charging.
+                The firmware vendor.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.rechargeable.is_discharging</literal> (bool)
+                <literal>system.firmware.version</literal> (string)
               </entry>
               <entry></entry>
+              <entry>No</entry>
               <entry>
-                Only if <literal>battery.is_rechargeable</literal> is TRUE
-              </entry>
-              <entry>
-                TRUE if, and only if, the battery is discharging.
+                The firmware version.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.command_interface</literal> (string)
+                <literal>system.firmware.release_date</literal> (string)
               </entry>
               <entry></entry>
               <entry>No</entry>
               <entry>
-                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.
+                The release date of the firmware.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.vendor</literal> (string)
+                <literal>system.chassis.manufacturer</literal> (string)
               </entry>
               <entry></entry>
               <entry>No</entry>
               <entry>
-                Vendor of the battery.
+                The manufacturer of the chassis.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.model</literal> (string)
+                <literal>system.chassis.type</literal> (string)
               </entry>
               <entry></entry>
               <entry>No</entry>
               <entry>
-                Make of the battery.
+                The chassis type of the machine.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.reporting.technology</literal> (string)
+                <literal>system.board.vendor</literal> (string)
               </entry>
-              <entry>example: LION</entry>
+              <entry></entry>
               <entry>No</entry>
               <entry>
-                The technology of the battery as reported by the hardware.
+                The name of the manufacturer of the base board.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.technology</literal> (string)
-              </entry>
-              <entry>
-                lead-acid, lithium-ion, lithium-polymer,
-                nickel-metal-hydride, unknown
+                <literal>system.board.product</literal> (string)
               </entry>
+              <entry></entry>
               <entry>No</entry>
               <entry>
-                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 <literal>battery.reporting.technology</literal>.
+                The product name of the base board.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.serial</literal> (string)
+                <literal>system.board.version</literal> (string)
               </entry>
               <entry></entry>
               <entry>No</entry>
               <entry>
-                A string uniquely identifying the instance of the battery;
-                it will be different for two (otherwise) identical batteries.
+                The version of the base board.
               </entry>
             </row>
             <row>
               <entry>
-                <literal>battery.quirk.do_not_poll</literal> (bool)
+                <literal>system.board.serial</literal> (string)
               </entry>
               <entry></entry>
               <entry>No</entry>
               <entry>
-		True if HAL should not poll the battery, False or not available at all
-		if HAL should show the default behavior.
+                The serial number of the base board.
               </entry>
             </row>
           </tbody>
         </tgroup>
       </informaltable>
     </sect2>
-    <sect2 id="device-properties-button">
+
+    <sect2 id="device-properties-tape">
       <title>
-        button namespace
+        tape namespace
       </title>
       <para>
-        Device objects with the capability <literal>button</literal>
-        represent the devices capable of providing a state to the system.
+        Device objects with the capability <literal>tape</literal>
+        represent tape devices.
       </para>
       <informaltable>
         <tgroup cols="2">
@@ -7183,93 +7118,32 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
           <tbody>
             <row>
               <entry>
-                <literal>button.type</literal> (string)
-              </entry>
-              <entry></entry>
-              <entry>No</entry>
-              <entry>The type of button</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>lid</entry>
-              <entry></entry>
-              <entry>
-                The switch on a laptop that senses whether the lid is
-                open or closed
-              </entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>power</entry>
-              <entry></entry>
-              <entry>The main power button on the computer.</entry>
-            </row>
-            <row>
-              <entry></entry>
-              <entry>sleep</entry>
-              <entry></entry>
-              <entry>
-                The sleep button on a computer capable of putting the computer
-                into a suspend state
-              </entry>
-            </row>
-            <row>
-              <entry>
-                <literal>button.has_state</literal> (bool)
-              </entry>
-              <entry></entry>
-              <entry>no</entry>
-              <entry>True if the button maintains state, e.g. can toggled on/off</entry>
-            </row>
-            <row>
-              <entry>
-                <literal>button.state.value</literal> (bool)
-              </entry>
-              <entry></entry>
-              <entry>
-                Only when <literal>button.has_state</literal> is
-                TRUE
+                <literal>tape.major</literal> (int)
               </entry>
-              <entry>State of the button, TRUE if it is enabled</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </informaltable>
-      <para>
-        Device objects with this capability may emit the following events.
-      </para>
-      <informaltable>
-        <tgroup cols="2">
-          <thead>
-            <row>
-              <entry>Condition Name</entry>
-              <entry>Parameters</entry>
-              <entry>Example</entry>
-              <entry>Description</entry>
+              <entry>example: 254</entry>
+              <entry>Yes</entry>
+              <entry>The device's major number</entry>
             </row>
-          </thead>
-          <tbody>
             <row>
               <entry>
-                <literal>ButtonPressed</literal>
-              </entry>
-              <entry>
-                <literal>button.type (string)</literal>
+                <literal>tape.minor</literal> (int)
               </entry>
-              <entry>sleep</entry>
-              <entry>Emitted when a button is pressed</entry>
+              <entry>example: 0</entry>
+              <entry>Yes</entry>
+              <entry>The device's minor number</entry>
             </row>
           </tbody>
         </tgroup>
       </informaltable>
     </sect2>
-    <sect2 id="device-properties-processor">
+
+    <sect2 id="device-properties-video4linux">
       <title>
-        processor namespace
+        video4linux namespace
       </title>
       <para>
-        Device objects with the capability <literal>processor</literal>
-        represent CPU's in the system.
+        Device objects with the capability <literal>video4linux</literal>
+        represent Video4Linux devices.
       </para>
       <informaltable>
         <tgroup cols="2">
@@ -7284,44 +7158,100 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
           <tbody>
             <row>
               <entry>
-                <literal>processor.number</literal> (int)
+                <literal>video4linux.device</literal> (string)
               </entry>
-              <entry></entry>
+              <entry>Example: /dev/video0</entry>
               <entry>Yes</entry>
-              <entry>
-                The internal processor number in the system, starting from zero
-              </entry>
+              <entry>The device node to access the Video4Linux device.</entry>
             </row>
             <row>
               <entry>
-                <literal>processor.can_throttle</literal> (bool)
-              </entry>
-              <entry></entry>
-              <entry>No</entry>
-              <entry>
-                Whether the processor supports throttling to decrease it's
-                own clock speed
+                <literal>video4linux.version</literal> (string)
               </entry>
-            </row>
-            <row>
+              <entry>Example: 2</entry>
+              <entry>Yes</entry>
               <entry>
-                <literal>processor.maximum_speed</literal> (long)
+                The highest Video4Linux API version supported by the device.
               </entry>
-              <entry>example: 2200</entry>
-              <entry>No</entry>
-              <entry>The maximum speed of the processor in units of MHz</entry>
             </row>
           </tbody>
         </tgroup>
       </informaltable>
     </sect2>
-    <sect2 id="device-properties-light-sensor">
+
+    <sect2 id="device-properties-video4linux-audio">
       <title>
-        light_sensor namespace
+        video4linux.audio namespace
       </title>
       <para>
-        Device objects with the capability <literal>sensor</literal>
-        represent light sensors in the system.
+        The video4linux device has audio inputs or outputs.
+        No namespace specific properties.
+      </para>
+    </sect2>
+
+    <sect2 id="device-properties-video4linux-radio">
+      <title>
+        video4linux.radio namespace
+      </title>
+      <para>
+        The video4linux device is a radio device.
+        No namespace specific properties.
+      </para>
+    </sect2>
+
+    <sect2 id="device-properties-video4linux-tuner">
+      <title>
+        video4linux.tuner namespace
+      </title>
+      <para>
+        The video4linux device has some sort of tuner or modulator to receive
+        or emit RF-modulated video signals.
+        No namespace specific properties.
+      </para>
+    </sect2>
+
+    <sect2 id="device-properties-video4linux-video-capture">
+      <title>
+        video4linux.video_capture namespace
+      </title>
+      <para>
+        The video4linux device can capture video.
+        No namespace specific properties.
+      </para>
+    </sect2>
+
+    <sect2 id="device-properties-video4linux-video-output">
+      <title>
+        video4linux.video_output namespace
+      </title>
+      <para>
+        The video4linux device can output video.
+        No namespace specific properties.
+      </para>
+    </sect2>
+
+    <sect2 id="device-properties-video4linux-video-overlay">
+      <title>
+        video4linux.video_overlay namespace
+      </title>
+      <para>
+        The video4linux device can overlay video.
+        No namespace specific properties.
+      </para>
+    </sect2>
+
+    <sect2 id="device-properties-volume">
+      <title>
+        volume namespace
+      </title>
+      <para>
+        This namespace is for device objects that represent storage
+        devices with a filesystem that can be mounted. Such device
+        objects will have the capability <literal>volume</literal> and
+        they will export the properties below. Note that device
+        objects can only have the <literal>volume</literal> capability
+        if they already have the capability <literal>block</literal>
+        and the property <literal>block.is_volume</literal> set to TRUE.
       </para>
       <informaltable>
         <tgroup cols="2">
@@ -7336,481 +7266,478 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
           <tbody>
             <row>
               <entry>
-                <literal>light_sensor.sensor_locations</literal> (strlist)
+                <literal>volume.ignore</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>The locations of the sensors</entry>
+              <entry>This 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.
+              </entry>
             </row>
             <row>
               <entry>
-                <literal>light_sensor.num_sensors</literal> (int)
+                <literal>volume.is_mounted</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>Number of physical sensors</entry>
+              <entry>This property is TRUE if and only if the volume is mounted</entry>
             </row>
             <row>
               <entry>
-                <literal>light_sensor.num_levels</literal> (int)
+                <literal>volume.is_mounted_read_only</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>The number of levels of the sensors</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </informaltable>
-    </sect2>
-    <sect2 id="device-properties-pda">
-      <title>
-        PDA namespace
-      </title>
-      <para>
-        Device objects with the capability <literal>pda</literal>
-        represent Personal Digital Assistant (PDA) devices.
-      </para>
-      <informaltable>
-        <tgroup cols="2">
-          <thead>
-            <row>
-              <entry>Key (type)</entry>
-              <entry>Values</entry>
-              <entry>Mandatory</entry>
-              <entry>Description</entry>
+              <entry>This property is TRUE if and only if the volume is mounted and
+                the volume's file-system is read-only.
+              </entry>
             </row>
-          </thead>
-          <tbody>
             <row>
               <entry>
-                <literal>pda.platform</literal> (string)
+                <literal>volume.mount_point</literal> (string)
               </entry>
-              <entry>e.g. palm or pocketpc</entry>
-              <entry>Yes</entry>
-              <entry>The type of the PDA platform</entry>
+              <entry>example: /media/compact_flash1  </entry>
+              <entry>Yes (is blank only when volume.is_mounted is FALSE)</entry>
+              <entry>A fully qualified path to the mount point of the volume</entry>
             </row>
             <row>
               <entry>
-                <literal>pda.palm.hotsync_interface</literal> (string)
+                <literal>volume.fsusage</literal> (string)
               </entry>
-              <entry></entry>
+              <entry>example: filesystem</entry>
               <entry>Yes</entry>
               <entry>
-		Path to the Palm hotsync interface e.g. a linux device file (e.g. USB) or a 
-		serial device.
-	      </entry>
+                This property specifies the expected usage of the volume
+              </entry>
             </row>
             <row>
-              <entry>
-                <literal>pda.pocketpc.hotsync_interface</literal> (string)
-              </entry>
               <entry></entry>
-              <entry>Yes</entry>
+              <entry>filesystem</entry>
+              <entry></entry>
+              <entry>The volume is a mountable filesystem</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>partitiontable</entry>
+              <entry></entry>
               <entry>
-		Path to the Pocket PC (e.g. HP iPAQ) hotsync interface e.g. a linux device file 
-		(e.g. USB) or a serial device.
+	        The volume contains a partitiontable.
 	      </entry>
             </row>
-          </tbody>
-        </tgroup>
-      </informaltable>
-    </sect2>
-    <sect2 id="device-properties-power-management">
-      <title>
-        power_management namespace
-      </title>
-      <para>
-        Keys with the prefix <literal>power_management</literal>
-        provide information about power management supported by
-        the system.
-      </para>
-      <informaltable>
-        <tgroup cols="2">
-          <thead>
             <row>
-              <entry>Key (type)</entry>
-              <entry>Values</entry>
-              <entry>Mandatory</entry>
-              <entry>Description</entry>
+              <entry></entry>
+              <entry>raid</entry>
+              <entry></entry>
+              <entry>The volume is a member of a raid set and not mountable</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>other</entry>
+              <entry></entry>
+              <entry>The volume is not mountable like a swap partition</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>unused</entry>
+              <entry></entry>
+              <entry>The volume is marked a unused or free</entry>
             </row>
-          </thead>
-          <tbody>
             <row>
               <entry>
-                <literal>power_management.type</literal> (string)
-              </entry>
-              <entry>Examples:
-                <literal>apm</literal>,
-                <literal>acpi</literal>,
-                <literal>pmu</literal>
-              </entry>
-              <entry>Yes</entry>
-              <entry>
-                The power management subsystem used on the computer.
+                <literal>volume.fstype</literal> (string)
               </entry>
+              <entry>examples: ext3, vfat</entry>
+              <entry>Yes (is blank if the type is unknown)</entry>
+              <entry>The specific type of either the file system or what the volume is used for, cf. volume.fsusage</entry>
             </row>
             <row>
               <entry>
-                <literal>power_management.can_suspend</literal> (bool)
+                <literal>volume.fsversion</literal> (string)
               </entry>
+              <entry>example: FAT32</entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>
-                If suspend support is compiled into the kernel.
-                NB. This may not mean the machine is able to suspend
-                successfully.
-              </entry>
+              <entry>Version number or subtype of the filesystem</entry>
             </row>
             <row>
               <entry>
-                <literal>power_management.can_suspend_hybrid</literal> (bool)
+                <literal>volume.label</literal> (string)
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
+              <entry>example: 'Fedora Core 1.90' </entry>
+              <entry>Yes (is blank if no label is found)</entry>
+              <entry>The label of the volume</entry>
+            </row>
+            <row>
               <entry>
-                If the system is capable of hybrid suspend.
+                <literal>volume.uuid</literal> (string)
               </entry>
+              <entry>example: 4060-6C11</entry>
+              <entry>Yes (is blank if no UUID is found)</entry>
+              <entry>The Universal Unique Identifer for the volume</entry>
             </row>
             <row>
               <entry>
-                <literal>power_management.can_hibernate</literal> (bool)
+                <literal>volume.is_disc</literal> (bool)
               </entry>
               <entry></entry>
               <entry>Yes</entry>
-              <entry>
-                If hibernation support is compiled into the kernel.
-                NB. This may not mean the machine is able to hibernate
-                successfully.
+              <entry>If the volume stems from an optical disc, this
+                property is true and the device object will also have
+                the capability <literal>volume.disc</literal>
               </entry>
             </row>
             <row>
               <entry>
-                <literal>power_management.is_powersave_set</literal> (bool)
+                <literal>volume.block_size</literal> (string)
               </entry>
-              <entry/>
-              <entry>Yes</entry>
+              <entry></entry>
+              <entry>No</entry>
               <entry>
-                Is the last value passed to the SetPowerSave method.
+                The block size of the volume
               </entry>
             </row>
             <row>
               <entry>
-                <literal>power_management.quirk.s3_bios</literal> (bool)
+                <literal>volume.num_blocks</literal> (string)
               </entry>
               <entry></entry>
               <entry>No</entry>
-              <entry>Use the S3_BIOS kernel command for suspend.</entry>
+              <entry>
+                Number of blocks on the volume
+              </entry>
             </row>
             <row>
               <entry>
-                <literal>power_management.quirk.s3_mode</literal> (bool)
+                <literal>volume.size</literal> (uint64)
               </entry>
               <entry></entry>
               <entry>No</entry>
-              <entry>Use the S3_MODE kernel command for suspend.</entry>
+              <entry>
+                Size of the volume in bytes
+              </entry>
             </row>
             <row>
               <entry>
-                <literal>power_management.quirk.dpms_suspend</literal> (bool)
+                <literal>volume.is_partition</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>No</entry>
-              <entry>Suspend the video card via DPMS on suspend.</entry>
+              <entry>Yes</entry>
+              <entry>
+                If the volume stems from a partition on e.g. a hard
+                disk, this property is set to <literal>TRUE</literal>.
+              </entry>
             </row>
             <row>
               <entry>
-                <literal>power_management.quirk.vga_mode_3</literal> (bool)
+                <literal>volume.linux.is_device_mapper</literal> (bool)
               </entry>
               <entry></entry>
-              <entry>No</entry>
-              <entry>Reset the VGA text mode to mode 3 on resume.</entry>
+              <entry>Yes, but only on Linux</entry>
+              <entry>
+                If the volume stems from the Linux Device Mapper this property is set to <literal>TRUE</literal>.
+              </entry>
             </row>
+
             <row>
               <entry>
-                <literal>power_management.quirk.dpms_on</literal> (bool)
+                <literal>volume.partition.number</literal> (int)
               </entry>
               <entry></entry>
-              <entry>No</entry>
-              <entry>Reactivate the screen with DPMS on resume.</entry>
+              <entry>
+                If, and only if, <literal>volume.is_partition</literal>
+                is set to <literal>TRUE</literal>.
+              </entry>
+              <entry>
+                The number of the partition.
+              </entry>
             </row>
+
             <row>
               <entry>
-                <literal>power_management.quirk.vbe_post</literal> (bool)
+                <literal>volume.partition.label</literal> (string)
               </entry>
               <entry></entry>
-              <entry>No</entry>
-              <entry>Run the VGA BIOS Power On Self Test (POST) on resume.</entry>
+              <entry>
+                If, and only if, <literal>volume.is_partition</literal>
+                is set to <literal>TRUE</literal>.
+              </entry>
+              <entry>
+	        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 <literal>volume.label</literal>.
+              </entry>
             </row>
             <row>
               <entry>
-                <literal>power_management.quirk.vbestate_restore</literal> (bool)
+                <literal>volume.partition.uuid</literal> (string)
               </entry>
               <entry></entry>
-              <entry>No</entry>
-              <entry>Save the VGA BIOS state before suspend, and restore it on resume.</entry>
+              <entry>
+                If, and only if, <literal>volume.is_partition</literal>
+                is set to <literal>TRUE</literal>.
+              </entry>
+              <entry>
+                The UUID or GUID of the partition table entry. Only available for
+		"gpt" partition tables.
+              </entry>
             </row>
+
             <row>
               <entry>
-                <literal>power_management.quirk.vbemode_restore</literal> (bool)
+                <literal>volume.partition.scheme</literal> (string)
               </entry>
               <entry></entry>
-              <entry>No</entry>
-              <entry>Save the VGA BIOS mode before suspend, and restore it on resume.</entry>
+              <entry>
+                If, and only if, <literal>volume.is_partition</literal>
+                is set to <literal>TRUE</literal>.
+              </entry>
+              <entry>
+                The scheme of the partition table this entry is part of.
+		Note that this is not necessarily the same as 
+		<literal>storage.partitioning_scheme</literal> as 
+		some partition tables can embed other partition tables.
+              </entry>
             </row>
             <row>
+              <entry></entry>
+              <entry>mbr</entry>
+              <entry></entry>
               <entry>
-                <literal>power_management.quirk.pci_save</literal> (bool)
+                Master Boot Record
               </entry>
-              <entry></entry>
-              <entry>No</entry>
-              <entry>saving the PCI config space of the graphic card before suspend, restoring it after</entry>
             </row>
             <row>
+              <entry></entry>
+              <entry>embr</entry>
+              <entry></entry>
               <entry>
-                <literal>power_management.quirk.radeon_off</literal> (bool)
+                Extended Master Boot Record
               </entry>
-              <entry></entry>
-              <entry>No</entry>
-              <entry>Turn off the Radeon DAC off before suspend.</entry>
             </row>
             <row>
+              <entry></entry>
+              <entry>gpt</entry>
+              <entry></entry>
               <entry>
-                <literal>power_management.quirk.reset_brightness</literal> (bool)
+                GUID Partition Table as defined by EFI
               </entry>
-              <entry></entry>
-              <entry>No</entry>
-              <entry>Reset the brightness state after resume.</entry>
             </row>
             <row>
+              <entry></entry>
+              <entry>apm</entry>
+              <entry></entry>
               <entry>
-                <literal>power_management.quirk.no_fb</literal> (bool)
+                Apple Partition Map
               </entry>
-              <entry></entry>
-              <entry>No</entry>
-              <entry>True if the machine can only suspend when not using framebuffer.</entry>
             </row>
+
             <row>
               <entry>
-                <literal>power_management.quirk.none</literal> (bool)
+                <literal>volume.partition.type</literal> (string)
               </entry>
               <entry></entry>
-              <entry>No</entry>
-              <entry>No quirks are necessary for suspend or resume.</entry>
-            </row>
-          </tbody>
-        </tgroup>
-      </informaltable>
-    </sect2>
-    <sect2 id="device-properties-tape">
-      <title>
-        tape namespace
-      </title>
-      <para>
-        Device objects with the capability <literal>tape</literal>
-        represent tape devices.
-      </para>
-      <informaltable>
-        <tgroup cols="2">
-          <thead>
-            <row>
-              <entry>Key (type)</entry>
-              <entry>Values</entry>
-              <entry>Mandatory</entry>
-              <entry>Description</entry>
+              <entry>
+                If, and only if, <literal>volume.is_partition</literal>
+                is set to <literal>TRUE</literal>.
+              </entry>
+              <entry>
+                The type of the partition table entry. Depends on 
+		<literal>volume.partition.scheme</literal>.
+              </entry>
             </row>
-          </thead>
-          <tbody>
             <row>
+              <entry></entry>
+              <entry><literal>mbr</literal> and <literal>embr</literal> entries</entry>
+              <entry></entry>
               <entry>
-                <literal>tape.major</literal> (int)
+	        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".
               </entry>
-              <entry>example: 254</entry>
-              <entry>Yes</entry>
-              <entry>The device's major number</entry>
             </row>
             <row>
+              <entry></entry>
+              <entry><literal>gpt</literal> entries</entry>
+              <entry></entry>
               <entry>
-                <literal>tape.minor</literal> (int)
+	        The GUID encoded as a string. See http://en.wikipedia.org/wiki/GUID_Partition_Table
+		for a list of well-known GUID's.
               </entry>
-              <entry>example: 0</entry>
-              <entry>Yes</entry>
-              <entry>The device's minor number</entry>
             </row>
-          </tbody>
-        </tgroup>
-      </informaltable>
-    </sect2>
-    <sect2 id="device-properties-killswitch">
-      <title>
-        killswitch namespace
-      </title>
-      <para>
-        Device objects with the capability <literal>killswitch</literal>
-        represent switches to turn a radio on and off. See also <xref linkend="interface-device-killswitch"/>.
-      </para>
-      <informaltable>
-        <tgroup cols="2">
-          <thead>
             <row>
-              <entry>Key (type)</entry>
-              <entry>Values</entry>
-              <entry>Mandatory</entry>
-              <entry>Description</entry>
+              <entry></entry>
+              <entry><literal>apm</literal> entries</entry>
+              <entry></entry>
+              <entry>
+	        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
+              </entry>
             </row>
-          </thead>
-          <tbody>
+
             <row>
               <entry>
-                <literal>killswitch.type</literal> (string)
+                <literal>volume.partition.flags</literal> (strlist)
               </entry>
               <entry></entry>
-              <entry>Yes</entry>
-              <entry>Type of the kill switch</entry>
+              <entry>
+                If, and only if, <literal>volume.is_partition</literal>
+                is set to <literal>TRUE</literal>.
+              </entry>
+              <entry>
+	        Flags conveying specific information about the partition
+		entry. Dependent on the partitioning scheme.
+              </entry>
             </row>
             <row>
               <entry></entry>
-              <entry>wlan</entry>
+              <entry><literal>mbr</literal> and <literal>embr</literal> entries</entry>
               <entry></entry>
-              <entry>Kill switch is for turning Wireless LAN (WLAN) networking on/off</entry>
+              <entry>
+	        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.
+              </entry>
             </row>
             <row>
               <entry></entry>
-              <entry>bluetooth</entry>
+              <entry><literal>gpt</literal> entries</entry>
               <entry></entry>
-              <entry>Kill switch is for turning Bluetooth on/off</entry>
+              <entry>
+	        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."
+              </entry>
             </row>
             <row>
               <entry></entry>
-              <entry>wwan</entry>
+              <entry><literal>apm</literal> entries</entry>
               <entry></entry>
-              <entry>Kill switch is for turning Wireless WAN (WWAN) networking on/off</entry>
+              <entry>
+	        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
+              </entry>
             </row>
+
             <row>
               <entry>
-                <literal>killswitch.name</literal> (string)
+                <literal>volume.partition.media_size</literal> (uint64)
+              </entry>
+              <entry>example: 500107862016</entry>
+              <entry>
+                If, and only if, <literal>volume.is_partition</literal>
+                is set to <literal>TRUE</literal>.
+              </entry>
+              <entry>
+                If available, size of the current media or the fixed disk in the storage device.
               </entry>
-              <entry></entry>
-              <entry>No</entry>
-              <entry>Name of the kill switch (as reported by the kernel).</entry>
             </row>
             <row>
               <entry>
-                <literal>killswitch.access_method</literal> (string)
+                <literal>volume.partition.start</literal> (uint64)
+              </entry>
+              <entry>example: 32256</entry>
+              <entry>
+                If, and only if, <literal>volume.is_partition</literal>
+                is set to <literal>TRUE</literal>.
+              </entry>
+              <entry>
+                If available, the offset where the partition starts on the media or the fixed disk in the storage device.
               </entry>
-              <entry></entry>
-              <entry>Yes</entry>
-              <entry>How HAL should program the switch</entry>
             </row>
           </tbody>
         </tgroup>
       </informaltable>
-    </sect2>
-    <sect2 id="device-properties-video4linux">
-      <title>
-        video4linux namespace
-      </title>
       <para>
-        Device objects with the capability <literal>video4linux</literal>
-        represent Video4Linux devices.
+        Device objects with this capability may emit the following
+        device conditions
       </para>
       <informaltable>
         <tgroup cols="2">
           <thead>
             <row>
-              <entry>Key (type)</entry>
-              <entry>Values</entry>
-              <entry>Mandatory</entry>
+              <entry>Condition Name</entry>
+              <entry>Parameters</entry>
+              <entry>Example</entry>
               <entry>Description</entry>
             </row>
           </thead>
           <tbody>
             <row>
               <entry>
-                <literal>video4linux.device</literal> (string)
+                <literal>VolumeMount</literal>
               </entry>
-              <entry>Example: /dev/video0</entry>
-              <entry>Yes</entry>
-              <entry>The device node to access the Video4Linux device.</entry>
+              <entry>
+                <literal>block.device</literal> (string),
+                <literal>volume.mount_point</literal> (string)
+              </entry>
+              <entry>
+                <literal>/dev/sda1</literal>,
+                <literal>/media/compact_flash</literal>
+              </entry>
+              <entry>Emitted when a volume is mounted</entry>
             </row>
             <row>
               <entry>
-                <literal>video4linux.version</literal> (string)
+                <literal>VolumeUnmount</literal>
               </entry>
-              <entry>Example: 2</entry>
-              <entry>Yes</entry>
               <entry>
-                The highest Video4Linux API version supported by the device.
+                <literal>block.device</literal> (string),
+                <literal>volume.mount_point</literal> (string)
+              </entry>
+              <entry>
+                <literal>/dev/sda1</literal>,
+                <literal>/media/compact_flash</literal>
+              </entry>
+              <entry>Emitted when a volume is unmounted</entry>
+            </row>
+            <row>
+              <entry>
+                <literal>VolumeUnmountForced</literal>
+              </entry>
+              <entry>
+                <literal>block.device</literal> (string),
+                <literal>volume.mount_point</literal> (string)
+              </entry>
+              <entry>
+                <literal>/dev/sda1</literal>,
+                <literal>/media/compact_flash</literal>
+              </entry>
+              <entry>
+                Emitted when a volume is forcibly unmounted because
+                the media backing the volume was removed.
               </entry>
             </row>
           </tbody>
         </tgroup>
       </informaltable>
     </sect2>
-    <sect2 id="device-properties-video4linux-video-capture">
-      <title>
-        video4linux.video_capture namespace
-      </title>
-      <para>
-        The video4linux device can capture video.
-        No namespace specific properties.
-      </para>
-    </sect2>
-    <sect2 id="device-properties-video4linux-video-output">
-      <title>
-        video4linux.video_output namespace
-      </title>
-      <para>
-        The video4linux device can output video.
-        No namespace specific properties.
-      </para>
-    </sect2>
-    <sect2 id="device-properties-video4linux-video-overlay">
-      <title>
-        video4linux.video_overlay namespace
-      </title>
-      <para>
-        The video4linux device can overlay video.
-        No namespace specific properties.
-      </para>
-    </sect2>
-    <sect2 id="device-properties-video4linux-audio">
-      <title>
-        video4linux.audio namespace
-      </title>
-      <para>
-        The video4linux device has audio inputs or outputs.
-        No namespace specific properties.
-      </para>
-    </sect2>
-    <sect2 id="device-properties-video4linux-tuner">
-      <title>
-        video4linux.tuner namespace
-      </title>
-      <para>
-        The video4linux device has some sort of tuner or modulator to receive
-        or emit RF-modulated video signals.
-        No namespace specific properties.
-      </para>
-    </sect2>
-    <sect2 id="device-properties-video4linux-radio">
-      <title>
-        video4linux.radio namespace
-      </title>
-      <para>
-        The video4linux device is a radio device.
-        No namespace specific properties.
-      </para>
-    </sect2>
 
-    <sect2 id="device-properties-of_platform">
+    <sect2 id="device-properties-volume-disc">
       <title>
-        of_platform namespace
+        volume.disc namespace
       </title>
       <para>
-        Devices on the virtual 'of_platform' bus are represented
-        by device objects where <literal>info.subsystem</literal>
-        equals <literal>of_platform</literal>. The following
-        properties are available for such device objects.
+        This namespace is for device objects that represent optical
+        discs, e.g. device objects with the capability
+        <literal>volume.disc</literal>. Such device objects will
+        also have the capability <literal>volume</literal>.
       </para>
       <informaltable>
         <tgroup cols="2">
@@ -7825,85 +7752,202 @@ org.freedesktop.Hal.Device.Volume.method_signatures = {'ssas', 'as', 'as'}
           <tbody>
             <row>
               <entry>
-                <literal>of_platform.id</literal> (string)
+                <literal>volume.disc.has_audio</literal> (bool)
               </entry>
-              <entry>example: f0003000.ethernet</entry>
+              <entry></entry>
               <entry>Yes</entry>
-              <entry>Device identification</entry>
+              <entry>Is true only if the disc contains audio</entry>
             </row>
-          </tbody>
-        </tgroup>
-      </informaltable>
-    </sect2>
-
-    <sect2 id="device-properties-obex">
-      <title>
-        obex namespace
-      </title>
-      <para>
-        Device objects with the capability <literal>obex</literal>
-        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.
-      </para>
-      <informaltable>
-        <tgroup cols="2">
-          <thead>
             <row>
-              <entry>Key (type)</entry>
-              <entry>Values</entry>
-              <entry>Mandatory</entry>
-              <entry>Description</entry>
+              <entry>
+                <literal>volume.disc.has_data</literal> (bool)
+              </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>Is true only if the disc contains data</entry>
             </row>
-          </thead>
-          <tbody>
             <row>
               <entry>
-                <literal>obex.type</literal> (sting)
+                <literal>volume.disc.is_vcd</literal> (bool)
               </entry>
-              <entry>example: pcsuite, syncml</entry>
-              <entry>No</entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>Is true only if the disc is a Video CD</entry>
+            </row>
+            <row>
               <entry>
+                <literal>volume.disc.is_svcd</literal> (bool)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>Is true only if the disc is a Super Video CD</entry>
             </row>
             <row>
-              <entry></entry>
-              <entry>pcsuite</entry>
-              <entry>No</entry>
               <entry>
-		 Device is meant to be used with Nokia PC Suite application. Standardized OBEX file
-                 transfer is supported and possibly proprietary extensions.
+                <literal>volume.disc.is_videodvd</literal> (bool)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>Is true only if the disc is a Video DVD</entry>
             </row>
             <row>
-              <entry></entry>
-              <entry>syncml</entry>
-              <entry>No</entry>
               <entry>
-		Device supports SyncML over OBEX protocol.
+                <literal>volume.disc.is_appendable</literal> (bool)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>Is true only if it's possible to write additional data</entry>
             </row>
             <row>
+              <entry>
+                <literal>volume.disc.is_blank</literal> (bool)
+              </entry>
               <entry></entry>
-              <entry>syncml-sync</entry>
-              <entry>No</entry>
+              <entry>Yes</entry>
+              <entry>Is true only if the disc is blank</entry>
+            </row>
+            <row>
               <entry>
-		Device supports SyncML over OBEX protocol for data synchronization.
+                <literal>volume.disc.is_rewritable</literal> (bool)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>Is true only if the disc is rewritable</entry>
             </row>
             <row>
+              <entry>
+                <literal>volume.disc.capacity</literal> (uint64)
+              </entry>
               <entry></entry>
-              <entry>syncml-dm</entry>
               <entry>No</entry>
+              <entry>Capacity of disc, in bytes</entry>
+            </row>
+            <row>
               <entry>
-		Device supports SyncML over OBEX protocol for data management.
+                <literal>volume.disc.type</literal> (string)
               </entry>
+              <entry></entry>
+              <entry>Yes</entry>
+              <entry>This property specifies the physical type of the disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>cd_rom</entry>
+              <entry></entry>
+              <entry>CD-ROM disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>cd_r</entry>
+              <entry></entry>
+              <entry>CD-R disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>cd_rw</entry>
+              <entry></entry>
+              <entry>CD-RW disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>dvd_rom</entry>
+              <entry></entry>
+              <entry>DVD-ROM disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>dvd_ram</entry>
+              <entry></entry>
+              <entry>DVD-RAM disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>dvd_r</entry>
+              <entry></entry>
+              <entry>DVD-R disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>dvd_rw</entry>
+              <entry></entry>
+              <entry>DVD-RW disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>dvd_r_dl</entry>
+              <entry></entry>
+              <entry>DVD-R dual layer disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>dvd_plus_r</entry>
+              <entry></entry>
+              <entry>DVD+R disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>dvd_plus_r_dl</entry>
+              <entry></entry>
+              <entry>DVD+R dual layer disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>dvd_plus_rw</entry>
+              <entry></entry>
+              <entry>DVD+RW disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>dvd_plus_rw_dl</entry>
+              <entry></entry>
+              <entry>DVD+RW dual layer disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>bd_rom</entry>
+              <entry></entry>
+              <entry>BD-ROM disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>bd_r</entry>
+              <entry></entry>
+              <entry>BD-R disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>bd_re</entry>
+              <entry></entry>
+              <entry>BD-RE disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>hddvd_rom</entry>
+              <entry></entry>
+              <entry>HD DVD-ROM disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>hddvd_r</entry>
+              <entry></entry>
+              <entry>HD DVD-R disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>hddvd_rw</entry>
+              <entry></entry>
+              <entry>HD DVD-Rewritable disc</entry>
+            </row>
+            <row>
+              <entry></entry>
+              <entry>unknown</entry>
+              <entry></entry>
+              <entry>Unknown type or lack of support from drive to determine the type</entry>
             </row>
           </tbody>
         </tgroup>
       </informaltable>
     </sect2>
-
   </sect1>
 
   <sect1 id="properties-misc">


More information about the hal-commit mailing list