HwProbe description syntax
Purpose
The HwProbe is a generalized agent to handle access to the libhd hardware
autoprobe library.
Implementation
The HwProbe probes the hardware when needed. There is no (more) probing at
initialization time. It's the sole responsibility of the underlying
libhd library to give a consistent view of the hardware.
The libhd data closely resembles the PCI view of hardware, namely classes and
subclasses. The class data is extended to included ISAPnP and other non-PCI
hardware. However, this implementation detail is transparently mapped.
Hardware probing repository paths
The hardware probing repository is accessed with the path prefix
.probe followed by sub-paths.
 A list of possible sub-paths can be retrieved with Dir (.probe)which currently results in:
(["has_pcmcia", "architecture", "boot_arch", "version", "boot_disk",
"cdb_isdn", "has_smp", "bios_video", "framebuffer", "status", "cdrom",
"floppy", "disk", "netif", "display", "mouse", "keyboard", "sound", "isdn",
"modem", "storage", "netcard", "monitor", "printer", "tv", "scanner",
"system", "camera", "chipcard", "usbctrl", "hub", "scsi", "ide", "memory",
"fbdev", "usb", "pci", "isapnp", "cpu", "braille", "joystick", "bios"])
There exists a useful ycp script source/tools/probeall.ycp which
probes and displays everything.
Explanation of .probe paths
pathtyperesultcomment .probe.cdrom YCPList list of hd-entries only returns component data for cd-rom like devices (cd-r, cd-rw, dvd) .probe.disk YCPList list of hd-entries only returns component data for disk like devices (harddisk, *not* floppy !) .probe.net YCPList list of hd-entries only returns component data for network like devices (ethernet, loopback (!), dummy (!)) .probe.has_pcmcia YCPBoolean true if the system has a pcmcia controller, false else used to decide if pcmcia software is to be installed and how .probe.has_eide YCPBoolean true if the system has a special EIDE controller, false else used to decide if a special kernel (with compiled-in driver) is to be installed .probe.architecture YCPString reports the system architecture, i.e. "intel" or "alpha" .probe.boot_arch YCPString .probe.system YCPString reports the system type if given, else "" (i.e. "MacRISC", "PReP", or "CHRP" on PPC) .probe.modem YCPList list of modems .probe.isdn YCPList list of isdn cards .probe.dsl YCPList list of DSL cards .probe.netcard YCPList list of network cards General layout of a hd-entry
As stated above, most 
Read(.probe) calls return a list of entries
matching a specific feature. All these entries have a common layout
(i.e. vendor-id) and some device specific data (i.e. geometry for harddisks,
hsync/vsync values for video monitors, etc.)
This chapter explains the general layout.
Each entry is a YCPMap with the following key/value pairs
Important: Always check for the existence of a key/value pair !!!keytypevaluecomment broken Boolean true hardware seems broken cardtype String AGP pci card in agp slot cardtype String PnP PnP device bus String (see below) name of bus baseclass String (see below) name of baseclass subclass String (see below) name of subclass class_id Integer (see libhd) baseclass id sub_class_id Integer (see libhd) subclass id device String name of device user readable format vendor String name of vendor user readable format sub_device String name of subdevice user readable format sub_vendor String name of subvendor user readable format device_id Integer value of device internal format vendor_id Integer value of vendor internal format sub_device_id Integer value of subdevice internal format sub_vendor_id Integer value of subvendor internal format unique_key String unique key for every hardware item consists of two parts: a position/slot dependent
part and one that is independent of the location of the card/device. They
are separated by a '.' (dot)
rev String revision code revision code is an integer compat_device String name of compatible device only used for ISA-PnP compat_vendor String name of compatible vendor only used for ISA-PnP attached_to Map recursive complete data of device dev_name String /dev/xxx associated device file driver info Map (see below) device specific driver information resource Map (see below) Map of resources used/needed by device Possible driver info
As 
driver info the following keys are definedmodulekeytypevaluecomment name String module name of driver/module active Boolean true if module is already loaded modprobe Boolean true/false if modprobe or insmod is to be used for loading args String module arguments arguments used for loading module conf String conf.modules entry data for conf.modules  
mousekeytypevaluecomment xf86 String XF86Config entry gpm String gpm parameter  
x11keytypevaluecomment server String X11 server might not be present in map (voodoo 1/2 special add ons don't need a server) version String X11 server version "3" ("server" is XFree 3.3.x Server) or "4" ("server" is XFree 4.x module) has_3d Boolean 3d accel hardware present c8 Boolean true/false 8 bpp support c15 Boolean true/false 15 bpp support c16 Boolean true/false 16 bpp support c24 Boolean true/false 24 bpp support c32 Boolean true/false 32 bpp support dacspeed Integer (value in MHz) packages List (of Strings) additional packages to install if applicable extensions List (of Strings) additional X extensions to load usually goes to 'Module' section, i.e. "glx.so" options List (of Strings) special server options usually goes to 'Device' section, i.e. "no_accel" raw String extra info to add to XF86Config to be inserted into 'Device' section  
displaykeytypevaluecomment width Integer height Integer min_vsync Integer max_vsync Integer min_hsync Integer max_hsync Integer bandwidth Integer  
dslkeytypevaluecomment name String driver name mode String capiadsl, pppoe 