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.
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.
| path | type | result | comment |
|---|---|---|---|
| .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 |
Each entry is a YCPMap with the following key/value pairs
| key | type | value | comment |
|---|---|---|---|
| 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 |
As driver info the following keys are defined
module
| key | type | value | comment |
|---|---|---|---|
| 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 |
mouse
| key | type | value | comment |
|---|---|---|---|
| xf86 | String | XF86Config entry | |
| gpm | String | gpm parameter |
x11
| key | type | value | comment |
|---|---|---|---|
| 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 |
display
| key | type | value | comment |
|---|---|---|---|
| width | Integer | ||
| height | Integer | ||
| min_vsync | Integer | ||
| max_vsync | Integer | ||
| min_hsync | Integer | ||
| max_hsync | Integer | ||
| bandwidth | Integer |
| key | type | value | comment |
|---|---|---|---|
| name | String | driver name | |
| mode | String | capiadsl, pppoe |