Managing Network Device Discovery Services (Task Map)
How Auto‐Discovery of Devices Works
Discovery of devices, including printers, is accomplished through the Hardware Abstraction Layer (HAL)
device registry (database) component. HAL uses D-BUS messaging to notify interested applications about
changes to its registry. D-BUS is a messaging bus that passes messages between applications
and broadcasts signals that interested applications are able to detect. This messaging service
is used by HAL and a number of other applications. HAL provides the
framework for device discovery and notification of device configuration changes on a system.
In the Solaris release, this support has been extended to detecting printers that
are added or removed from a local system.
The HAL daemon, hald, provides a view of devices that are attached to
a local system. This view is updated automatically, as a system's hardware configuration
changes, by hotplugging or by other methods. HAL's internal database, also called the
HAL device tree, is where device information is stored and maintained. HAL devices are uniquely identified
in the HAL database through a Universal Device Identifier (UDI). This database is populated with
properties of each device in the HAL database.
The automatic printing configuration feature works with the HAL daemon by listening for
sysevents. When a hotplug-capable printer is added to a system, HAL creates a
new node in the HAL device tree, as shown in the following example:
/org/freedesktop/Hal/devices/pci_0_0/pci1022_74606/pci108e_534d_3_1/printer_2_0_if0/print
When the device node has been successfully registered in the HAL database, HAL
signals interested applications that the device is available. Device removal works similarly.
For more information about HAL, see https://opensolaris.org/os/project/tamarack/.
The network device discovery components are standard service interfaces that are offered
by classes of network‐attached devices. This module is capable of actively scanning a
network for new devices. The service is directly controlled through the svcadm interface.
For more information, see the svcadm(1M) man page. svcadm(1M). To determine the device type, an
active scan is performed through a Simple Network Management Protocol version 1 (SNMPv1)
broadcast. Be default, the SNMP based network‐attached printer discovery service probes the network for
printers every 60 seconds. This property is configurable. See Configuring Auto-Discovery Settings for Network-Attached Printers. During this active
scan, SNMP determines the device type by attempting to connect to the device.
Note - Only active device discovery is available in this Solaris OS. Passive device discovery
through the Multicast DNS (mDNS) is not available.
Adding Newly Discovered Printers From the Desktop
You can use OpenSolaris Print Manager to configure newly discovered directly attached or
newly discovered network‐attached printers from the desktop. By default, the system automatically discovers
directly attached USB printers. The system also discovers network‐attached printers, if the network device
discovery service has been enabled. See How to Enable the Network Device Discovery Service.
Adding a Directly Attached USB Printer
When a new USB printer is connected to the system and discovered , the Add Printer Queue dialog, populated with printer configuration data, automatically opens on the desktop. From here, you can modify the existing configuration information and then create the new printer queue. After the new printer queue is created, it appears in the Queue pane of the Print Manager window. For more information, see How To Set Up Auto-Discovered Printers by Using the OpenSolaris Print Manager.
Adding a Network‐Attached Printer
Network‐attached printers are auto‐discovered the same way as directly attached printers. This support is designed and implemented through a HAL add-on module, /usr/lib/hal/hald-addon-network-discovery. When a new network‐attached printer is discovered by the system, a printer queue is automatically created. At the same time, a notification message is displayed next to a printer icon located in the panel notification area of the desktop. Clicking this notification message launches the OpenSolaris Print Manager application. From here, you can view or change the configuration data for the newly discovered network‐attached printer. To do so, select the printer queue in the Queue pane of the Print Manager window and choose Properties from the Printer menu. For more information, see How To Set Up Auto-Discovered Printers by Using the OpenSolaris Print Manager.
To utilize the network device discovery feature, the following conditions must be met:
The network device discovery service, network/device-discovery/printers:snmp, must be enabled.
You can enable this service from the desktop or by using SMF commands. For more information, see Managing Network Device Discovery Services (Task Map).
Network‐attached printers must support SNMP queries, which means the device must be “known” to the system.
For more information, see How to Determine Which Printers Are Known to the System.
Network-attached printers must be on the same subnet as the system that is querying the network.
The service is not capable of discovering network-attached printers that are more than one hop away.
OpenSolaris Print Manager Preferences for desktop notifications of network printing events must be turned on.
For more information, see Managing Print Manager and Printer Preferences.
Note - In the OpenSolaris 2008.11 release, attempts to enable the HAL add‐on module from
the desktop or by using SMF commands, cause the system to revert to
maintenance state. This problem does not occur if you are running a supported
Solaris Express Community Edition release. To enable this service in the OpenSolaris 2008.11
release, you must first install the SUNWSmmgr package. For detailed instructions, go to
https://www.opensolaris.org/os/project/indiana/resources/relnotes/200811/x86/.
Notification of Printing Events in the Desktop
The panel notification icon is a printer icon that is displayed in
panel notification area of the desktop to notify you when:
To get more information, click the printer icon.
If one or more print jobs are processing normally, a Job List window opens for each printer queue that has a pending print job.
If one or more printer queues have been discovered, the Printer Queue Properties dialog or the Print Manager application opens, allowing you to check the configuration of the new printer queues.
Note - Notification messages that are not manually closed disappear after 5 seconds.
Preferences for notification messages can be viewed and changed in the Printer Preferences
dialog. For more information, see Managing Print Manager and Printer Preferences.
Panel Notification Icon Context Menu
The following table describes the menu items that are available when you right-click
the panel notification icon.
When Print Jobs Are Processing Normally |
When Printers/Queues Are Discovered |
Show Queue:
Opens a Job List window for each queue in which you have a
pending print job. |
Open Print Manager: opens the Print Manager window, with the All Printers group
selected, and all new queues selected within the group. |
queuename Properties: Opens the associated Printer
Properties window. |
queue‐name Properties: Opens the associated Printer Properties window. Hidden if more than
one new queue was discovered. |
Print Manager Preferences: Opens the Print Manager Preferences dialog. |
Print Manager Preferences: Opens the Print
Manager Preferences dialog. |
For more information about viewing or changes preferences for notifications, see Managing Print Manager and Printer Preferences.
How to Enable the Network Device Discovery Service
By default, the OpenSolaris Print Manager automatically discovers and configures USB printers that
are directly connected to your system. Print Manager also has the ability to
discover and configure printers that are on a network after the network device
discovery service has been enabled.
Note - Note that in the OpenSolaris 2008.11 release, this service cannot be enabled from
the desktop until you install the SUNWSmmgr package. If you attempt to enable
the service before installing this package, the system reverts to maintenance state. For
detailed instructions, go to https://www.opensolaris.org/os/project/indiana/resources/relnotes/200811/x86/.
- From the Main Menubar, select:
System-> Administration-> Services
The Services settings window is displayed.
- To initiate the device discovery add-on module, select the Hardware Abstraction Layer network‐attached
printer discovery (network/device-discovery/printers:snmp) option.
- Save your changes.
To disable auto‐discovery of devices, deselect this option.
How to Initiate the Network Device Discovery Services by Using SMF
This procedure describes how to initiate, as well as disable, the network
device-discovery/printers service (the HAL add-on module) by using the SMF.
- Become superuser or assume an equivalent role.
- Determine whether the SMF device-discovery/printers service is online.
# svcs device-discovery/printers
If the service is online, the following output is displayed:
STATE STIME FMRI
online 13:30:22 svc:/network/device-discovery/printers:snmp
If the service is offline, the following output is displayed:
STATE STIME FMRI
disabled Dec_12 svc:/network/device-discovery/printers:snmp
- To enable or disable the service instance, use the appropriate command.
- Verify that the HAL add-on module has been enabled or disabled.
If the module has been successfully enabled, the output is as follows:
# svcs device-discovery/printers
STATE STIME FMRI
online 13:30:22 svc:/network/device-discovery/printers:snmp
If the module has been successfully disabled, the output is as follows:
# svcs device-discovery/printers
STATE STIME FMRI
disabled Dec_12 svc:/network/device-discovery/printers:snmp
How to Determine Which Printers Are Known to the System
Example 10-1 Determining Which Printers Are Known to the System
This example shows all of the devices discovered by the system, snoopy.
snoopy% hal-find-by-capability --capability printer
/org/freedesktop/Hal/devices/pci_0_0/pci1022_7460_6/pci108e_534d_3_1/printer_2_printer_0
snoopy%
Example 10-2 Obtaining Additional Details about Printers That Are Known to the System
zsh% for udi in $(hal-find-by-capability --capability printer) ; \ do ; lshal --show $udi --long ; done udi = \ '/org/freedesktop/Hal/devices/pci_0_0/pci1022_\ 7460_6/pci108e_534d_3_1/printer_2_printer_0'
info.claimed.uid = 24656 (0x6050) (int)
info.claimed.service = 'gnome-volume-manager' (string)
info.claimed = true (bool)
printer.commandset = {'PJL', 'MLC', 'BIDI-ECP', 'PCLXL', 'PCL',
'PDF', 'PJL', 'MIME', 'POSTSCRIPT'} (string list)
printer.description = 'Hewlett-Packard color LaserJet 4650' (string)
printer.serial = '00000D920NSL' (string)
printer.product = 'hp color LaserJet 4650' (string)
printer.vendor = 'Hewlett-Packard' (string)
printer.device = '/dev/printers/1' (string)
info.capabilities = {'printer'} (string list)
info.category = 'printer' (string)
info.solaris.driver = 'usbprn' (string)
solaris.devfs_path =
'/pci@0,0/pci1022,7460@6/pci108e,534d@3,1/printer@2:printer' (string)
info.product = 'printer' (string)
info.udi =
'/org/freedesktop/Hal/devices/pci_0_0/pci1022_7460_6/pci108e_534d_3_1/printer_2_printer_0'...)
info.parent =
'/org/freedesktop/Hal/devices/pci_0_0/pci1022_7460_6/pci108e_534d_3_1/printer_2_if0_0'...)
zsh%