mkdir -p './foomatic/direct'
mkdir -p './gnome-settings-daemon/xrandr'
mkdir -p './hotplug/pci'
+mkdir -p './lvm/cache'
mkdir -p './php/embed-php5.3/ext'
mkdir -p './php/embed-php5.3/ext-active'
mkdir -p './pm/power.d'
maybe chmod 0644 './conf.d/apache2'
maybe chmod 0644 './conf.d/auditd'
maybe chmod 0644 './conf.d/autofs'
-maybe chmod 0644 './conf.d/bluetooth'
maybe chmod 0644 './conf.d/bootmisc'
maybe chmod 0644 './conf.d/consolefont'
maybe chmod 0644 './conf.d/crypto-loop'
maybe chmod 0644 './conf.d/pydoc-2.7'
maybe chmod 0644 './conf.d/pydoc-3.1'
maybe chmod 0644 './conf.d/radvd'
+maybe chmod 0644 './conf.d/rfcomm'
maybe chmod 0644 './conf.d/rpcbind'
maybe chmod 0644 './conf.d/rsyncd'
maybe chmod 0644 './conf.d/samba'
maybe chmod 0755 './config-archive/etc/bash'
maybe chmod 0644 './config-archive/etc/bash/bashrc'
maybe chmod 0644 './config-archive/etc/bash/bashrc.dist.new'
+maybe chmod 0755 './config-archive/etc/bluetooth'
+maybe chmod 0644 './config-archive/etc/bluetooth/main.conf'
+maybe chmod 0644 './config-archive/etc/bluetooth/main.conf.dist'
maybe chmod 0755 './config-archive/etc/conf.d'
+maybe chmod 0644 './config-archive/etc/conf.d/fsck'
+maybe chmod 0644 './config-archive/etc/conf.d/fsck.dist'
+maybe chmod 0644 './config-archive/etc/conf.d/hwclock'
+maybe chmod 0644 './config-archive/etc/conf.d/hwclock.dist.new'
+maybe chmod 0644 './config-archive/etc/conf.d/keymaps'
+maybe chmod 0644 './config-archive/etc/conf.d/keymaps.dist.new'
maybe chmod 0644 './config-archive/etc/conf.d/ntpd'
maybe chmod 0644 './config-archive/etc/conf.d/ntpd.dist.new'
+maybe chmod 0644 './config-archive/etc/conf.d/udev'
+maybe chmod 0644 './config-archive/etc/conf.d/udev.dist'
+maybe chmod 0644 './config-archive/etc/conf.d/urandom'
+maybe chmod 0644 './config-archive/etc/conf.d/urandom.dist'
+maybe chmod 0755 './config-archive/etc/cron.daily'
+maybe chmod 0755 './config-archive/etc/cron.daily/logrotate.cron'
+maybe chmod 0755 './config-archive/etc/cron.daily/logrotate.cron.dist.new'
+maybe chmod 0755 './config-archive/etc/dbus-1'
+maybe chmod 0755 './config-archive/etc/dbus-1/system.d'
+maybe chmod 0644 './config-archive/etc/dbus-1/system.d/bluetooth.conf'
+maybe chmod 0644 './config-archive/etc/dbus-1/system.d/bluetooth.conf.dist'
maybe chmod 0644 './config-archive/etc/dispatch-conf.conf'
maybe chmod 0644 './config-archive/etc/dispatch-conf.conf.dist.new'
maybe chmod 0755 './config-archive/etc/etckeeper'
maybe chmod 0644 './config-archive/etc/etckeeper/etckeeper.conf'
maybe chmod 0644 './config-archive/etc/etckeeper/etckeeper.conf.dist.new'
+maybe chmod 0755 './config-archive/etc/hotplug'
+maybe chmod 0755 './config-archive/etc/hotplug/usb'
+maybe chmod 0644 './config-archive/etc/hotplug/usb/libsane.usermap'
+maybe chmod 0644 './config-archive/etc/hotplug/usb/libsane.usermap.dist'
+maybe chmod 0644 './config-archive/etc/idmapd.conf'
+maybe chmod 0644 './config-archive/etc/idmapd.conf.dist'
+maybe chmod 0755 './config-archive/etc/init.d'
+maybe chmod 0755 './config-archive/etc/init.d/bluetooth'
+maybe chmod 0755 './config-archive/etc/init.d/bluetooth.dist'
+maybe chmod 0755 './config-archive/etc/init.d/bootmisc'
+maybe chmod 0755 './config-archive/etc/init.d/bootmisc.dist'
+maybe chmod 0755 './config-archive/etc/init.d/consolefont'
+maybe chmod 0755 './config-archive/etc/init.d/consolefont.dist'
+maybe chmod 0755 './config-archive/etc/init.d/fsck'
+maybe chmod 0755 './config-archive/etc/init.d/fsck.dist'
+maybe chmod 0755 './config-archive/etc/init.d/hwclock'
+maybe chmod 0755 './config-archive/etc/init.d/hwclock.dist'
+maybe chmod 0755 './config-archive/etc/init.d/keymaps'
+maybe chmod 0755 './config-archive/etc/init.d/keymaps.dist'
+maybe chmod 0755 './config-archive/etc/init.d/modules'
+maybe chmod 0755 './config-archive/etc/init.d/modules.dist'
+maybe chmod 0755 './config-archive/etc/init.d/net.lo'
+maybe chmod 0755 './config-archive/etc/init.d/net.lo.dist'
+maybe chmod 0755 './config-archive/etc/init.d/network'
+maybe chmod 0755 './config-archive/etc/init.d/network.dist'
+maybe chmod 0755 './config-archive/etc/init.d/numlock'
+maybe chmod 0755 './config-archive/etc/init.d/numlock.dist'
+maybe chmod 0755 './config-archive/etc/init.d/staticroute'
+maybe chmod 0755 './config-archive/etc/init.d/staticroute.dist'
+maybe chmod 0755 './config-archive/etc/init.d/sysfs'
+maybe chmod 0755 './config-archive/etc/init.d/sysfs.dist'
+maybe chmod 0755 './config-archive/etc/init.d/termencoding'
+maybe chmod 0755 './config-archive/etc/init.d/termencoding.dist'
+maybe chmod 0755 './config-archive/etc/init.d/udev'
+maybe chmod 0755 './config-archive/etc/init.d/udev-mount'
+maybe chmod 0755 './config-archive/etc/init.d/udev-mount.dist'
+maybe chmod 0755 './config-archive/etc/init.d/udev-postmount'
+maybe chmod 0755 './config-archive/etc/init.d/udev-postmount.dist'
+maybe chmod 0755 './config-archive/etc/init.d/udev.dist'
+maybe chmod 0755 './config-archive/etc/init.d/urandom'
+maybe chmod 0755 './config-archive/etc/init.d/urandom.dist'
+maybe chmod 0644 './config-archive/etc/logrotate.conf'
+maybe chmod 0644 './config-archive/etc/logrotate.conf.dist.new'
+maybe chmod 0755 './config-archive/etc/lvm'
+maybe chmod 0644 './config-archive/etc/lvm/lvm.conf'
+maybe chmod 0644 './config-archive/etc/lvm/lvm.conf.dist'
maybe chmod 0644 './config-archive/etc/man.conf'
maybe chmod 0644 './config-archive/etc/man.conf.dist'
maybe chmod 0755 './config-archive/etc/pam.d'
maybe chmod 0755 './config-archive/etc/pulse'
maybe chmod 0644 './config-archive/etc/pulse/default.pa'
maybe chmod 0644 './config-archive/etc/pulse/default.pa.dist'
+maybe chmod 0644 './config-archive/etc/rc.conf'
+maybe chmod 0644 './config-archive/etc/rc.conf.dist.new'
+maybe chmod 0644 './config-archive/etc/sensors3.conf'
+maybe chmod 0644 './config-archive/etc/sensors3.conf.dist'
maybe chmod 0755 './config-archive/etc/ssh'
maybe chmod 0644 './config-archive/etc/ssh/ssh_config'
maybe chmod 0644 './config-archive/etc/ssh/ssh_config.dist'
maybe chmod 0644 './config-archive/etc/texmf/language.dat.lua.d/language.texlive-langgerman.dat.lua.dist'
maybe chmod 0600 './config-archive/etc/ulogd.conf'
maybe chmod 0600 './config-archive/etc/ulogd.conf.dist.new'
+maybe chmod 0755 './config-archive/usr'
+maybe chmod 0755 './config-archive/usr/share'
+maybe chmod 0755 './config-archive/usr/share/config'
+maybe chmod 0755 './config-archive/usr/share/config/kdm'
+maybe chmod 0644 './config-archive/usr/share/config/kdm/backgroundrc'
+maybe chmod 0644 './config-archive/usr/share/config/kdm/backgroundrc.dist.new'
+maybe chmod 0644 './config-archive/usr/share/config/kdm/kdmrc'
+maybe chmod 0644 './config-archive/usr/share/config/kdm/kdmrc.dist.new'
maybe chown mail './courier'
maybe chgrp mail './courier'
maybe chmod 0755 './courier'
maybe chmod 0755 './init.d/pydoc-3.1'
maybe chmod 0755 './init.d/radvd'
maybe chmod 0755 './init.d/reboot.sh'
+maybe chmod 0755 './init.d/rfcomm'
maybe chmod 0755 './init.d/root'
maybe chmod 0755 './init.d/rpc.gssd'
maybe chmod 0755 './init.d/rpc.idmapd'
maybe chmod 0755 './init.d/timidity'
maybe chmod 0755 './init.d/twistd'
maybe chmod 0755 './init.d/udev'
-maybe chmod 0755 './init.d/udev-dev-tarball'
maybe chmod 0755 './init.d/udev-mount'
maybe chmod 0755 './init.d/udev-postmount'
maybe chmod 0755 './init.d/ulogd'
maybe chmod 0600 './lvm/backup/vg0'
maybe chmod 0600 './lvm/backup/vg1'
maybe chmod 0700 './lvm/cache'
-maybe chmod 0600 './lvm/cache/.cache'
maybe chmod 0644 './lvm/lvm.conf'
maybe chmod 0644 './lxdvdrip.conf'
maybe chmod 0644 './machine-id'
maybe chmod 0755 './revdep-rebuild'
maybe chmod 0644 './revdep-rebuild/60-java'
maybe chmod 0644 './revdep-rebuild/61-icedtea6-bin'
+maybe chmod 0644 './revdep-rebuild/61-sun-jdk-1.6'
+maybe chmod 0644 './revdep-rebuild/61-sun-jre-bin-1.6'
maybe chmod 0644 './revdep-rebuild/90opera'
maybe chmod 0644 './revdep-rebuild/99revdep-rebuild'
maybe chmod 0755 './rmt'
# The value is in seconds. Defaults is 30.
DiscoverSchedulerInterval = 30
+# Automatic connection for bonded devices driven by platform/user events.
+# If a platform plugin uses this mechanism, automatic connections will be
+# enabled during the interval defined below. Initially, this feature
+# intends to be used to establish connections to ATT channels.
+AutoConnectTimeout = 60
+
# What value should be assumed for the adapter Powered property when
# SetProperty(Powered, ...) hasn't been called yet. Defaults to true
InitiallyPowered = true
# that they were created for.
DebugKeys = false
-# Enable Low Energy support if the dongle supports. Default is false.
-# Enable/Disable interleave discovery and attribute server over LE.
-EnableLE = false
-
# Enable the GATT Attribute Server. Default is false, because it is only
-# useful for testing. Attribute server is not enabled over LE if EnableLE
-# is false.
+# useful for testing.
AttributeServer = false
+++ /dev/null
-# Bluetooth configuraton file
-
-# Bind rfcomm devices (allowed values are "true" and "false")
-RFCOMM_ENABLE=true
-
-# Config file for rfcomm
-RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf"
#fsck_passno=">1"
#fsck_passno="<2"
+# If passno is not enough granularity, you can also specify mountpoints to
+# check. This should NOT be used for the default non-multiplexed fsck, or your
+# system might not be checked. Additionally, it is mutually exclusive with
+# the fsck_passno setting.
+#fsck_mnt=""
+#fsck_mnt="/home"
+
# Most modern fs's don't require a full fsck on boot, but for those that do
# it may be advisable to skip this when running on battery.
# WARNING: Do not turn this off if you have any JFS partitions.
--- /dev/null
+# Bind rfcomm devices (allowed values are "true" and "false")
+RFCOMM_ENABLE=true
+
+# Config file for rfcomm
+RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf"
# as /dev/{cdrom,cdrw,dvd,dvdrw}
persistent_cd_disable="no"
-# Set to "yes" if you want to save /dev to a tarball on shutdown
-# and restore it on startup. This is useful if you have a lot of
-# custom device nodes that udev does not handle/know about.
-#
-# As this option is fragile, we recommend you
-# to create your devices in /lib64/udev/devices.
-# These will be copied to /dev on boot.
-#rc_device_tarball="NO"
-
# udev can trigger coldplug events which cause services to start and
# kernel modules to be loaded.
# Services are deferred to start in the boot runlevel.
# Expert options:
-# Disable warning about unreliable kernel/udev combination
-#unreliable_kernel_warning="no"
-
# Timeout in seconds to wait for processing of uevents at boot.
# There should be no need to change this.
#udev_settle_timeout="60"
# udevd --help for possible values
#udev_opts=""
-# Run udevd --debug and write output to /dev/.udev/udev.log
+# Run udevd --debug and write output to $RUNDIR/udev.log
# Should not be kept on as it fills diskspace slowly
#udev_debug="YES"
# Run udevadmin monitor to get a log of all events
-# in /dev/.udev/udevmonitor.log
+# in $RUNDIR/udevmonitor.log
#udev_monitor="YES"
# Keep udevmonitor running after populating /dev.
# (say for crypt swap), so you will need to customize this
# behavior. If you have /var on a separate partition, then
# make sure this path lives on your root device somewhere.
-urandom_seed="/var/run/random-seed"
+urandom_seed="/var/lib/misc/random-seed"
--- /dev/null
+[General]
+
+# List of plugins that should not be loaded on bluetoothd startup
+#DisablePlugins = network,input
+
+# Default adaper name
+# %h - substituted for hostname
+# %d - substituted for adapter id
+Name = %h-%d
+
+# Default device class. Only the major and minor device class bits are
+# considered.
+Class = 0x000100
+
+# How long to stay in discoverable mode before going back to non-discoverable
+# The value is in seconds. Default is 180, i.e. 3 minutes.
+# 0 = disable timer, i.e. stay discoverable forever
+DiscoverableTimeout = 0
+
+# How long to stay in pairable mode before going back to non-discoverable
+# The value is in seconds. Default is 0.
+# 0 = disable timer, i.e. stay pairable forever
+PairableTimeout = 0
+
+# Use some other page timeout than the controller default one
+# which is 16384 (10 seconds).
+PageTimeout = 8192
+
+# Discover scheduler interval used in Adapter.DiscoverDevices
+# The value is in seconds. Defaults is 30.
+DiscoverSchedulerInterval = 30
+
+# What value should be assumed for the adapter Powered property when
+# SetProperty(Powered, ...) hasn't been called yet. Defaults to true
+InitiallyPowered = true
+
+# Remember the previously stored Powered state when initializing adapters
+RememberPowered = true
+
+# Use vendor, product and version information for DID profile support.
+# The values are separated by ":" and VID, PID and version.
+#DeviceID = 1234:5678:abcd
+
+# Do reverse service discovery for previously unknown devices that connect to
+# us. This option is really only needed for qualification since the BITE tester
+# doesn't like us doing reverse SDP for some test cases (though there could in
+# theory be other useful purposes for this too). Defaults to true.
+ReverseServiceDiscovery = true
+
+# Enable name resolving after inquiry. Set it to 'false' if you don't need
+# remote devices name and want shorter discovery cycle. Defaults to 'true'.
+NameResolving = true
+
+# Enable runtime persistency of debug link keys. Default is false which
+# makes debug link keys valid only for the duration of the connection
+# that they were created for.
+DebugKeys = false
+
+# Enable Low Energy support if the dongle supports. Default is false.
+# Enable/Disable interleave discovery and attribute server over LE.
+EnableLE = false
+
+# Enable the GATT Attribute Server. Default is false, because it is only
+# useful for testing. Attribute server is not enabled over LE if EnableLE
+# is false.
+AttributeServer = false
--- /dev/null
+[General]
+
+# List of plugins that should not be loaded on bluetoothd startup
+#DisablePlugins = network,input
+
+# Default adaper name
+# %h - substituted for hostname
+# %d - substituted for adapter id
+Name = %h-%d
+
+# Default device class. Only the major and minor device class bits are
+# considered.
+Class = 0x000100
+
+# How long to stay in discoverable mode before going back to non-discoverable
+# The value is in seconds. Default is 180, i.e. 3 minutes.
+# 0 = disable timer, i.e. stay discoverable forever
+DiscoverableTimeout = 0
+
+# How long to stay in pairable mode before going back to non-discoverable
+# The value is in seconds. Default is 0.
+# 0 = disable timer, i.e. stay pairable forever
+PairableTimeout = 0
+
+# Use some other page timeout than the controller default one
+# which is 16384 (10 seconds).
+PageTimeout = 8192
+
+# Discover scheduler interval used in Adapter.DiscoverDevices
+# The value is in seconds. Defaults is 30.
+DiscoverSchedulerInterval = 30
+
+# Automatic connection for bonded devices driven by platform/user events.
+# If a platform plugin uses this mechanism, automatic connections will be
+# enabled during the interval defined below. Initially, this feature
+# intends to be used to establish connections to ATT channels.
+AutoConnectTimeout = 60
+
+# What value should be assumed for the adapter Powered property when
+# SetProperty(Powered, ...) hasn't been called yet. Defaults to true
+InitiallyPowered = true
+
+# Remember the previously stored Powered state when initializing adapters
+RememberPowered = true
+
+# Use vendor, product and version information for DID profile support.
+# The values are separated by ":" and VID, PID and version.
+#DeviceID = 1234:5678:abcd
+
+# Do reverse service discovery for previously unknown devices that connect to
+# us. This option is really only needed for qualification since the BITE tester
+# doesn't like us doing reverse SDP for some test cases (though there could in
+# theory be other useful purposes for this too). Defaults to true.
+ReverseServiceDiscovery = true
+
+# Enable name resolving after inquiry. Set it to 'false' if you don't need
+# remote devices name and want shorter discovery cycle. Defaults to 'true'.
+NameResolving = true
+
+# Enable runtime persistency of debug link keys. Default is false which
+# makes debug link keys valid only for the duration of the connection
+# that they were created for.
+DebugKeys = false
+
+# Enable the GATT Attribute Server. Default is false, because it is only
+# useful for testing.
+AttributeServer = false
--- /dev/null
+# Pass any arguments to fsck.
+# By default we preen.
+# Linux systems also force -C0 and -T.
+# If fsck_args is not specified then Linux systems also use -A
+# (and -R if / is rw)
+#fsck_args="-p"
+
+# We can also specify the passno in /etc/fstab to check
+# If you multiplex fsck (ie ln -s fsck /etc/init.d/fsck.late) then you can
+# do an fsck outside of the normal scope, say for /home.
+# Here are some exampes:-
+#fsck_passno="=1 =2"
+#fsck_passno=">1"
+#fsck_passno="<2"
+
+# Most modern fs's don't require a full fsck on boot, but for those that do
+# it may be advisable to skip this when running on battery.
+# WARNING: Do not turn this off if you have any JFS partitions.
+fsck_on_battery="YES"
+
+# fsck_shutdown causes fsck to trigger during shutdown as well as startup.
+# The end result of this is that if any periodic non-root filesystem checks are
+# scheduled, under normal circumstances the actual check will happen during
+# shutdown rather than at next boot.
+# This is useful when periodic filesystem checks are causing undesirable
+# delays at startup, but such delays at shutdown are acceptable.
+fsck_shutdown="NO"
--- /dev/null
+# Pass any arguments to fsck.
+# By default we preen.
+# Linux systems also force -C0 and -T.
+# If fsck_args is not specified then Linux systems also use -A
+# (and -R if / is rw)
+#fsck_args="-p"
+
+# We can also specify the passno in /etc/fstab to check
+# If you multiplex fsck (ie ln -s fsck /etc/init.d/fsck.late) then you can
+# do an fsck outside of the normal scope, say for /home.
+# Here are some exampes:-
+#fsck_passno="=1 =2"
+#fsck_passno=">1"
+#fsck_passno="<2"
+
+# If passno is not enough granularity, you can also specify mountpoints to
+# check. This should NOT be used for the default non-multiplexed fsck, or your
+# system might not be checked. Additionally, it is mutually exclusive with
+# the fsck_passno setting.
+#fsck_mnt=""
+#fsck_mnt="/home"
+
+# Most modern fs's don't require a full fsck on boot, but for those that do
+# it may be advisable to skip this when running on battery.
+# WARNING: Do not turn this off if you have any JFS partitions.
+fsck_on_battery="YES"
+
+# fsck_shutdown causes fsck to trigger during shutdown as well as startup.
+# The end result of this is that if any periodic non-root filesystem checks are
+# scheduled, under normal circumstances the actual check will happen during
+# shutdown rather than at next boot.
+# This is useful when periodic filesystem checks are causing undesirable
+# delays at startup, but such delays at shutdown are acceptable.
+fsck_shutdown="NO"
--- /dev/null
+# Set CLOCK to "UTC" if your Hardware Clock is set to UTC (also known as
+# Greenwich Mean Time). If that clock is set to the local time, then
+# set CLOCK to "local". Note that if you dual boot with Windows, then
+# you should set it to "local".
+clock="UTC"
+
+# If you want to set the Hardware Clock to the current System Time
+# (software clock) during shutdown, then say "YES" here.
+# You normally don't need to do this if you run a ntp daemon.
+clock_systohc="YES"
+
+# If you want to set the system time to the current hardware clock
+# during bootup, then say "YES" here. You do not need this if you are
+# running a modern kernel with CONFIG_RTC_HCTOSYS set to y.
+# Also, be aware that if you set this to "NO", the system time will
+# never be saved to the hardware clock unless you set
+# clock_systohc="YES" above.
+clock_hctosys="YES"
+
+# If you wish to pass any other arguments to hwclock during bootup,
+# you may do so here. Alpha users may wish to use --arc or --srm here.
+clock_args=""
--- /dev/null
+# Set CLOCK to "UTC" if your Hardware Clock is set to UTC (also known as
+# Greenwich Mean Time). If that clock is set to the local time, then
+# set CLOCK to "local". Note that if you dual boot with Windows, then
+# you should set it to "local".
+clock="UTC"
+
+# If you want to set the Hardware Clock to the current System Time
+# (software clock) during shutdown, then say "YES" here.
+# You normally don't need to do this if you run a ntp daemon.
+clock_systohc="NO"
+
+# If you want to set the system time to the current hardware clock
+# during bootup, then say "YES" here. You do not need this if you are
+# running a modern kernel with CONFIG_RTC_HCTOSYS set to y.
+# Also, be aware that if you set this to "NO", the system time will
+# never be saved to the hardware clock unless you set
+# clock_systohc="YES" above.
+clock_hctosys="YES"
+
+# If you wish to pass any other arguments to hwclock during bootup,
+# you may do so here. Alpha users may wish to use --arc or --srm here.
+clock_args=""
--- /dev/null
+# Use keymap to specify the default console keymap. There is a complete tree
+# of keymaps in /usr/share/keymaps to choose from.
+#keymap="us"
+keymap="de-latin1-nodeadkeys"
+
+# Should we first load the 'windowkeys' console keymap? Most x86 users will
+# say "yes" here. Note that non-x86 users should leave it as "no".
+# Loading this keymap will enable VT switching (like ALT+Left/Right)
+# using the special windows keys on the linux console.
+windowkeys="YES"
+
+# The maps to load for extended keyboards. Most users will leave this as is.
+extended_keymaps=""
+#extended_keymaps="backspace keypad euro2"
+
+# Tell dumpkeys(1) to interpret character action codes to be
+# from the specified character set.
+# This only matters if you set unicode="yes" in /etc/rc.conf.
+# For a list of valid sets, run `dumpkeys --help`
+dumpkeys_charset=""
+
+# Some fonts map AltGr-E to the currency symbol ¤ instead of the Euro €
+# To fix this, set to "yes"
+fix_euro="NO"
--- /dev/null
+# Use keymap to specify the default console keymap. There is a complete tree
+# of keymaps in /usr/share/keymaps to choose from.
+keymap="us"
+
+# Should we first load the 'windowkeys' console keymap? Most x86 users will
+# say "yes" here. Note that non-x86 users should leave it as "no".
+# Loading this keymap will enable VT switching (like ALT+Left/Right)
+# using the special windows keys on the linux console.
+windowkeys="YES"
+
+# The maps to load for extended keyboards. Most users will leave this as is.
+extended_keymaps=""
+#extended_keymaps="backspace keypad euro2"
+
+# Tell dumpkeys(1) to interpret character action codes to be
+# from the specified character set.
+# This only matters if you set unicode="yes" in /etc/rc.conf.
+# For a list of valid sets, run `dumpkeys --help`
+dumpkeys_charset=""
+
+# Some fonts map AltGr-E to the currency symbol ¤ instead of the Euro €
+# To fix this, set to "yes"
+fix_euro="NO"
--- /dev/null
+# /etc/conf.d/udev: config file for udev
+
+# We discourage to disable persistent-net!!
+# this may lead to random interface naming
+
+# Disable adding new rules for persistent-net
+persistent_net_disable="no"
+
+# Disable adding new rules for persistent-cd
+# Disabling this will stop new cdrom devices to appear
+# as /dev/{cdrom,cdrw,dvd,dvdrw}
+persistent_cd_disable="no"
+
+# Set to "yes" if you want to save /dev to a tarball on shutdown
+# and restore it on startup. This is useful if you have a lot of
+# custom device nodes that udev does not handle/know about.
+#
+# As this option is fragile, we recommend you
+# to create your devices in /lib64/udev/devices.
+# These will be copied to /dev on boot.
+#rc_device_tarball="NO"
+
+# udev can trigger coldplug events which cause services to start and
+# kernel modules to be loaded.
+# Services are deferred to start in the boot runlevel.
+# Set rc_coldplug="NO" if you don't want this.
+# If you want module coldplugging but not coldplugging of services then you
+# can disable service coldplugging in baselayout/openrc config files.
+# The setting is named different in different versions.
+# in /etc/rc.conf: rc_hotplug="!*" or
+# in /etc/conf.d/rc: rc_plug_services="!*"
+#rc_coldplug="YES"
+
+
+
+
+# Expert options:
+
+# Disable warning about unreliable kernel/udev combination
+#unreliable_kernel_warning="no"
+
+# Timeout in seconds to wait for processing of uevents at boot.
+# There should be no need to change this.
+#udev_settle_timeout="60"
+
+# Add extra command line options to udevd, use with care
+# udevd --help for possible values
+#udev_opts=""
+
+# Run udevd --debug and write output to /dev/.udev/udev.log
+# Should not be kept on as it fills diskspace slowly
+#udev_debug="YES"
+
+# Run udevadmin monitor to get a log of all events
+# in /dev/.udev/udevmonitor.log
+#udev_monitor="YES"
+
+# Keep udevmonitor running after populating /dev.
+#udev_monitor_keep_running="no"
+
+# Set cmdline options for udevmonitor.
+# could be some of --env --kernel --udev
+#udev_monitor_opts="--env"
+
--- /dev/null
+# /etc/conf.d/udev: config file for udev
+
+# We discourage to disable persistent-net!!
+# this may lead to random interface naming
+
+# Disable adding new rules for persistent-net
+persistent_net_disable="no"
+
+# Disable adding new rules for persistent-cd
+# Disabling this will stop new cdrom devices to appear
+# as /dev/{cdrom,cdrw,dvd,dvdrw}
+persistent_cd_disable="no"
+
+# udev can trigger coldplug events which cause services to start and
+# kernel modules to be loaded.
+# Services are deferred to start in the boot runlevel.
+# Set rc_coldplug="NO" if you don't want this.
+# If you want module coldplugging but not coldplugging of services then you
+# can disable service coldplugging in baselayout/openrc config files.
+# The setting is named different in different versions.
+# in /etc/rc.conf: rc_hotplug="!*" or
+# in /etc/conf.d/rc: rc_plug_services="!*"
+#rc_coldplug="YES"
+
+
+
+
+# Expert options:
+
+# Timeout in seconds to wait for processing of uevents at boot.
+# There should be no need to change this.
+#udev_settle_timeout="60"
+
+# Add extra command line options to udevd, use with care
+# udevd --help for possible values
+#udev_opts=""
+
+# Run udevd --debug and write output to $RUNDIR/udev.log
+# Should not be kept on as it fills diskspace slowly
+#udev_debug="YES"
+
+# Run udevadmin monitor to get a log of all events
+# in $RUNDIR/udevmonitor.log
+#udev_monitor="YES"
+
+# Keep udevmonitor running after populating /dev.
+#udev_monitor_keep_running="no"
+
+# Set cmdline options for udevmonitor.
+# could be some of --env --kernel --udev
+#udev_monitor_opts="--env"
+
--- /dev/null
+# Sometimes you want to have urandom start before "localmount"
+# (say for crypt swap), so you will need to customize this
+# behavior. If you have /var on a separate partition, then
+# make sure this path lives on your root device somewhere.
+urandom_seed="/var/run/random-seed"
--- /dev/null
+# Sometimes you want to have urandom start before "localmount"
+# (say for crypt swap), so you will need to customize this
+# behavior. If you have /var on a separate partition, then
+# make sure this path lives on your root device somewhere.
+urandom_seed="/var/lib/misc/random-seed"
--- /dev/null
+#! /bin/sh
+
+#/usr/sbin/logrotate /etc/logrotate.conf
+if [ -x /usr/scripts/logrotate.pl ] ; then
+ /usr/scripts/logrotate.pl -v >>/var/log/logrotate.log
+fi
--- /dev/null
+#! /bin/sh
+
+/usr/sbin/logrotate /etc/logrotate.conf
--- /dev/null
+<!-- This configuration file specifies the required security policies
+ for Bluetooth core daemon to work. -->
+
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+
+ <!-- ../system.conf have denied everything, so we just punch some holes -->
+
+ <policy user="root">
+ <allow own="org.bluez"/>
+ <allow send_destination="org.bluez"/>
+ <allow send_interface="org.bluez.Agent"/>
+ <allow send_interface="org.bluez.HandsfreeAgent"/>
+ <allow send_interface="org.bluez.MediaEndpoint"/>
+ <allow send_interface="org.bluez.Watcher"/>
+ </policy>
+
+ <policy at_console="true">
+ <allow send_destination="org.bluez"/>
+ </policy>
+
+ <!-- allow users of lp group (printing subsystem) to
+ communicate with bluetoothd -->
+ <policy group="lp">
+ <allow send_destination="org.bluez"/>
+ </policy>
+
+ <policy context="default">
+ <deny send_destination="org.bluez"/>
+ </policy>
+
+</busconfig>
--- /dev/null
+<!-- This configuration file specifies the required security policies
+ for Bluetooth core daemon to work. -->
+
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+
+ <!-- ../system.conf have denied everything, so we just punch some holes -->
+
+ <policy user="root">
+ <allow own="org.bluez"/>
+ <allow send_destination="org.bluez"/>
+ <allow send_interface="org.bluez.Agent"/>
+ <allow send_interface="org.bluez.HandsfreeAgent"/>
+ <allow send_interface="org.bluez.MediaEndpoint"/>
+ <allow send_interface="org.bluez.MediaPlayer"/>
+ <allow send_interface="org.bluez.Watcher"/>
+ <allow send_interface="org.bluez.ThermometerWatcher"/>
+ </policy>
+
+ <policy at_console="true">
+ <allow send_destination="org.bluez"/>
+ </policy>
+
+ <!-- allow users of lp group (printing subsystem) to
+ communicate with bluetoothd -->
+ <policy group="lp">
+ <allow send_destination="org.bluez"/>
+ </policy>
+
+ <policy context="default">
+ <deny send_destination="org.bluez"/>
+ </policy>
+
+</busconfig>
--- /dev/null
+# This file was automatically created based on description files (*.desc)
+# by sane-desc 3.5 from sane-backends 1.0.22 on Mon Jan 16 20:59:57 2012
+#
+# The entries below are used to detect a USB device and change owner
+# and permissions on the "device node" used by libusb.
+#
+# The 0x0003 match flag means the device is matched by its vendor and
+# product IDs.
+#
+# Sample entry (replace 0xVVVV and 0xPPPP with vendor ID and product ID
+# respectively):
+#
+# libusbscanner 0x0003 0xVVVV 0xPPPP 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# usb module match_flags idVendor idProduct bcdDevice_lo bcdDevice_hi bDeviceClass bDeviceSubClass bDeviceProtocol bInterfaceClass bInterfaceSubClass bInterfaceProtocol driver_info
+#
+# If your scanner isn't listed below, you can add it as explained above.
+#
+# If your scanner is supported by some external backend (brother, epkowa,
+# hpaio, etc) please ask the author of the backend to provide proper
+# device detection support for your OS
+#
+# If the scanner is supported by sane-backends, please mail the entry to
+# the sane-devel mailing list (sane-devel@lists.alioth.debian.org).
+#
+# Hewlett-Packard ScanJet 4100C
+libusbscanner 0x0003 0x03f0 0x0101 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 4200C | Hewlett-Packard ScanJet 4200Cxi | Hewlett-Packard ScanJet 4200Cse
+libusbscanner 0x0003 0x03f0 0x0105 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 6200C | Hewlett-Packard ScanJet 6250C
+libusbscanner 0x0003 0x03f0 0x0201 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 3300c
+libusbscanner 0x0003 0x03f0 0x0205 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 4300c
+libusbscanner 0x0003 0x03f0 0x0305 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 5200C
+libusbscanner 0x0003 0x03f0 0x0401 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 3400c
+libusbscanner 0x0003 0x03f0 0x0405 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 2100C
+libusbscanner 0x0003 0x03f0 0x0505 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 6300C | Hewlett-Packard ScanJet 6350C | Hewlett-Packard ScanJet 6390C
+libusbscanner 0x0003 0x03f0 0x0601 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 2200C
+libusbscanner 0x0003 0x03f0 0x0605 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 5300C | Hewlett-Packard ScanJet 5370C
+libusbscanner 0x0003 0x03f0 0x0701 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard scanjet 4400c
+libusbscanner 0x0003 0x03f0 0x0705 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 7400c | Hewlett-Packard ScanJet 7450c | Hewlett-Packard ScanJet 7490c
+libusbscanner 0x0003 0x03f0 0x0801 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard scanjet 4470c
+libusbscanner 0x0003 0x03f0 0x0805 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 2300C
+libusbscanner 0x0003 0x03f0 0x0901 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 2400C | Hewlett-Packard ScanJet G2410
+libusbscanner 0x0003 0x03f0 0x0a01 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 8200 | Hewlett-Packard ScanJet 8250 | Hewlett-Packard ScanJet 8290 | Hewlett Packard ScanJet 8200
+libusbscanner 0x0003 0x03f0 0x0b01 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 5400c
+libusbscanner 0x0003 0x03f0 0x1005 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 5470c
+libusbscanner 0x0003 0x03f0 0x1105 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 4500C | Hewlett-Packard ScanJet 5550C
+libusbscanner 0x0003 0x03f0 0x1205 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 4570C | Hewlett-Packard ScanJet 5500C
+libusbscanner 0x0003 0x03f0 0x1305 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 3670C | Hewlett-Packard ScanJet 3690C
+libusbscanner 0x0003 0x03f0 0x1405 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 5590
+libusbscanner 0x0003 0x03f0 0x1705 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 7650
+libusbscanner 0x0003 0x03f0 0x1805 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 3530C | Hewlett-Packard ScanJet 3570C
+libusbscanner 0x0003 0x03f0 0x2005 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 3500C
+libusbscanner 0x0003 0x03f0 0x2205 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 3970c
+libusbscanner 0x0003 0x03f0 0x2305 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 4070 Photosmart
+libusbscanner 0x0003 0x03f0 0x2405 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett Packard ScanJet 3770
+libusbscanner 0x0003 0x03f0 0x2505 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 3800
+libusbscanner 0x0003 0x03f0 0x2605 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet G2710
+libusbscanner 0x0003 0x03f0 0x2805 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 8300 | Hewlett-Packard ScanJet 8350 | Hewlett-Packard ScanJet 8390
+libusbscanner 0x0003 0x03f0 0x3805 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 8270
+libusbscanner 0x0003 0x03f0 0x3905 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard LaserJet M1005 MFP
+libusbscanner 0x0003 0x03f0 0x3b17 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 4370
+libusbscanner 0x0003 0x03f0 0x4105 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet G3010
+libusbscanner 0x0003 0x03f0 0x4205 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet G3110
+libusbscanner 0x0003 0x03f0 0x4305 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet G4010
+libusbscanner 0x0003 0x03f0 0x4505 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet G4050
+libusbscanner 0x0003 0x03f0 0x4605 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard LaserJet M1120 MFP
+libusbscanner 0x0003 0x03f0 0x5617 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard LaserJet M1120n MFP
+libusbscanner 0x0003 0x03f0 0x5717 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 1200
+libusbscanner 0x0003 0x0400 0x1000 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 1200 | Mustek BearPaw 2400
+libusbscanner 0x0003 0x0400 0x1001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Kodak i30
+libusbscanner 0x0003 0x040a 0x6001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Kodak i40
+libusbscanner 0x0003 0x040a 0x6002 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Kodak i50 | Kodak i55
+libusbscanner 0x0003 0x040a 0x6003 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Kodak i60 | Kodak i65
+libusbscanner 0x0003 0x040a 0x6004 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Kodak i80
+libusbscanner 0x0003 0x040a 0x6005 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Creative WebCam Go Mini
+libusbscanner 0x0003 0x041e 0x4007 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Lexmark X70 | Lexmark X73
+libusbscanner 0x0003 0x043d 0x002d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Lexmark X74
+libusbscanner 0x0003 0x043d 0x0060 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Lexmark X1110 | Lexmark X1130 | Lexmark X1140 | Lexmark X1150 | Lexmark X1170 | Lexmark X1180 | Lexmark X1185 | Lexmark X1195
+libusbscanner 0x0003 0x043d 0x007c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Lexmark X12xx
+libusbscanner 0x0003 0x043d 0x007d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Vivid Pro USB
+libusbscanner 0x0003 0x0458 0x2001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius ColorPage HR6 V1
+libusbscanner 0x0003 0x0458 0x2004 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage HR6 V2
+libusbscanner 0x0003 0x0458 0x2007 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage HR6 V2
+libusbscanner 0x0003 0x0458 0x2008 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage HR6A
+libusbscanner 0x0003 0x0458 0x2009 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage Vivid3x | Genius Colorpage Vivid3 V2
+libusbscanner 0x0003 0x0458 0x2011 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage HR7
+libusbscanner 0x0003 0x0458 0x2013 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage Vivid4
+libusbscanner 0x0003 0x0458 0x2014 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage HR7LE
+libusbscanner 0x0003 0x0458 0x2015 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage HR6X
+libusbscanner 0x0003 0x0458 0x2016 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage Vivid3xe
+libusbscanner 0x0003 0x0458 0x2017 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage Vivid4xe
+libusbscanner 0x0003 0x0458 0x201a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage Vivid4x
+libusbscanner 0x0003 0x0458 0x201b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage Vivid 1200 X
+libusbscanner 0x0003 0x0458 0x201d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius ColorPage Slim 1200
+libusbscanner 0x0003 0x0458 0x201e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage Vivid 1200 XE
+libusbscanner 0x0003 0x0458 0x201f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage SF600
+libusbscanner 0x0003 0x0458 0x2021 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Primax Colorado 2400U
+libusbscanner 0x0003 0x0461 0x0346 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Primax Colorado USB 19200
+libusbscanner 0x0003 0x0461 0x0360 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Primax Colorado 2200 USB | LG Electronics Scanworks 600U
+libusbscanner 0x0003 0x0461 0x0364 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Medion/Lifetec/Tevion/Cytron MD5345 | Medion/Lifetec/Tevion/Cytron MD6228 | Medion/Lifetec/Tevion/Cytron MD6471
+libusbscanner 0x0003 0x0461 0x0377 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Trust Office Scan USB 19200
+libusbscanner 0x0003 0x047b 0x1000 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 4300c/Silitek
+libusbscanner 0x0003 0x047b 0x1002 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Kyocera FS-1016MFP
+libusbscanner 0x0003 0x0482 0x0335 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Compaq S4-100
+libusbscanner 0x0003 0x049f 0x001a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 310U
+libusbscanner 0x0003 0x04a5 0x1a20 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 620U
+libusbscanner 0x0003 0x04a5 0x1a2a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 320U | Benq (Acer) 340U | Mitsubishi Diamondview 648UT
+libusbscanner 0x0003 0x04a5 0x2022 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 620UT
+libusbscanner 0x0003 0x04a5 0x2040 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 640U | Guillemot / Hercules Maxi Scan A4 USB 640U | Guillemot / Hercules Maxi A4 36 bit
+libusbscanner 0x0003 0x04a5 0x2060 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 640bu
+libusbscanner 0x0003 0x04a5 0x207e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 3300 | Benq (Acer) 4300 | Mitsubishi Diamondview 650U
+libusbscanner 0x0003 0x04a5 0x20b0 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 640BT
+libusbscanner 0x0003 0x04a5 0x20be 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 1240
+libusbscanner 0x0003 0x04a5 0x20c0 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 3300 | Benq (Acer) 4300 | Guillemot / Hercules Scan@home Touch 1248 (USB)
+libusbscanner 0x0003 0x04a5 0x20de 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 5000
+libusbscanner 0x0003 0x04a5 0x20f8 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 5000E | Benq (Acer) 5000U
+libusbscanner 0x0003 0x04a5 0x20fc 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 5300
+libusbscanner 0x0003 0x04a5 0x20fe 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 5150 | Benq (Acer) 5250
+libusbscanner 0x0003 0x04a5 0x2137 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# BenQ 5550
+libusbscanner 0x0003 0x04a5 0x2211 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer OneTouch 7600
+libusbscanner 0x0003 0x04a7 0x0211 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Visioneer OneTouch 7100
+libusbscanner 0x0003 0x04a7 0x0229 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer OneTouch 6100
+libusbscanner 0x0003 0x04a7 0x0231 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer OneTouch 8600
+libusbscanner 0x0003 0x04a7 0x0331 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer 9650
+libusbscanner 0x0003 0x04a7 0x0390 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer 9320
+libusbscanner 0x0003 0x04a7 0x0420 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer 9450
+libusbscanner 0x0003 0x04a7 0x0421 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer 9550
+libusbscanner 0x0003 0x04a7 0x0422 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer 9750
+libusbscanner 0x0003 0x04a7 0x0423 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Strobe XP 450
+libusbscanner 0x0003 0x04a7 0x0424 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Strobe XP 200
+libusbscanner 0x0003 0x04a7 0x0426 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Strobe XP 100
+libusbscanner 0x0003 0x04a7 0x0427 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer OneTouch 7300
+libusbscanner 0x0003 0x04a7 0x0444 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate510
+libusbscanner 0x0003 0x04a7 0x0446 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate520
+libusbscanner 0x0003 0x04a7 0x0447 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate250
+libusbscanner 0x0003 0x04a7 0x0448 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate252
+libusbscanner 0x0003 0x04a7 0x0449 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate262
+libusbscanner 0x0003 0x04a7 0x044c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Strobe XP 300
+libusbscanner 0x0003 0x04a7 0x0474 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate272
+libusbscanner 0x0003 0x04a7 0x0475 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate152
+libusbscanner 0x0003 0x04a7 0x0477 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate752
+libusbscanner 0x0003 0x04a7 0x0478 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Strobe XP 470
+libusbscanner 0x0003 0x04a7 0x0479 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer 9450-G
+libusbscanner 0x0003 0x04a7 0x047a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer 9650-G
+libusbscanner 0x0003 0x04a7 0x047b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate510-G
+libusbscanner 0x0003 0x04a7 0x047c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate252-G
+libusbscanner 0x0003 0x04a7 0x048c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate262-G
+libusbscanner 0x0003 0x04a7 0x048d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate272-G
+libusbscanner 0x0003 0x04a7 0x048e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Strobe XP 470-G | Visioneer Patriot 470
+libusbscanner 0x0003 0x04a7 0x048f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate250-G
+libusbscanner 0x0003 0x04a7 0x0490 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Strobe XP 450-G
+libusbscanner 0x0003 0x04a7 0x0491 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate520-G
+libusbscanner 0x0003 0x04a7 0x0492 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer 9750-G
+libusbscanner 0x0003 0x04a7 0x0493 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Roadwarrior
+libusbscanner 0x0003 0x04a7 0x0494 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate512
+libusbscanner 0x0003 0x04a7 0x0495 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Patriot 430
+libusbscanner 0x0003 0x04a7 0x0497 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Patriot 680 | Xerox DocuMate632
+libusbscanner 0x0003 0x04a7 0x0498 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Patriot 780
+libusbscanner 0x0003 0x04a7 0x0499 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate752
+libusbscanner 0x0003 0x04a7 0x049a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Strobe XP 100,r3
+libusbscanner 0x0003 0x04a7 0x049b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate150
+libusbscanner 0x0003 0x04a7 0x049c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate162
+libusbscanner 0x0003 0x04a7 0x049d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate262i
+libusbscanner 0x0003 0x04a7 0x04a7 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox Travel Scanner 100
+libusbscanner 0x0003 0x04a7 0x04ac 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-2080C
+libusbscanner 0x0003 0x04a9 0x1601 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CR-180 | Canon CR-180II
+libusbscanner 0x0003 0x04a9 0x1602 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-9080C
+libusbscanner 0x0003 0x04a9 0x1603 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-7080C
+libusbscanner 0x0003 0x04a9 0x1604 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-5010C
+libusbscanner 0x0003 0x04a9 0x1606 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-6080
+libusbscanner 0x0003 0x04a9 0x1607 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-2580C
+libusbscanner 0x0003 0x04a9 0x1608 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-3080CII
+libusbscanner 0x0003 0x04a9 0x1609 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-2050C | Canon DR-2050SP
+libusbscanner 0x0003 0x04a9 0x160a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-7580
+libusbscanner 0x0003 0x04a9 0x160b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP750
+libusbscanner 0x0003 0x04a9 0x1706 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP780
+libusbscanner 0x0003 0x04a9 0x1707 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP760
+libusbscanner 0x0003 0x04a9 0x1708 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP150
+libusbscanner 0x0003 0x04a9 0x1709 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP170
+libusbscanner 0x0003 0x04a9 0x170a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP450
+libusbscanner 0x0003 0x04a9 0x170b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP500
+libusbscanner 0x0003 0x04a9 0x170c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP800
+libusbscanner 0x0003 0x04a9 0x170d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP800R
+libusbscanner 0x0003 0x04a9 0x170e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP530
+libusbscanner 0x0003 0x04a9 0x1712 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP830
+libusbscanner 0x0003 0x04a9 0x1713 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon MP160 | Canon PIXMA MP160
+libusbscanner 0x0003 0x04a9 0x1714 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP180
+libusbscanner 0x0003 0x04a9 0x1715 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP460
+libusbscanner 0x0003 0x04a9 0x1716 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon MP510 | Canon PIXMA MP510
+libusbscanner 0x0003 0x04a9 0x1717 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon MP600 | Canon PIXMA MP600
+libusbscanner 0x0003 0x04a9 0x1718 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP600R
+libusbscanner 0x0003 0x04a9 0x1719 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP810
+libusbscanner 0x0003 0x04a9 0x171a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP960
+libusbscanner 0x0003 0x04a9 0x171b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX7600
+libusbscanner 0x0003 0x04a9 0x171c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon MP210 | Canon PIXMA MP210
+libusbscanner 0x0003 0x04a9 0x1721 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP220
+libusbscanner 0x0003 0x04a9 0x1722 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP470
+libusbscanner 0x0003 0x04a9 0x1723 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon MP520 | Canon PIXMA MP520
+libusbscanner 0x0003 0x04a9 0x1724 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon MP610 | Canon PIXMA MP610
+libusbscanner 0x0003 0x04a9 0x1725 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP970
+libusbscanner 0x0003 0x04a9 0x1726 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX300
+libusbscanner 0x0003 0x04a9 0x1727 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX310
+libusbscanner 0x0003 0x04a9 0x1728 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX700
+libusbscanner 0x0003 0x04a9 0x1729 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon MP140 | Canon PIXMA MP140
+libusbscanner 0x0003 0x04a9 0x172b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX850
+libusbscanner 0x0003 0x04a9 0x172c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP980
+libusbscanner 0x0003 0x04a9 0x172d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP630
+libusbscanner 0x0003 0x04a9 0x172e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP620
+libusbscanner 0x0003 0x04a9 0x172f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP540
+libusbscanner 0x0003 0x04a9 0x1730 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP480
+libusbscanner 0x0003 0x04a9 0x1731 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP240
+libusbscanner 0x0003 0x04a9 0x1732 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP260
+libusbscanner 0x0003 0x04a9 0x1733 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP190
+libusbscanner 0x0003 0x04a9 0x1734 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX860
+libusbscanner 0x0003 0x04a9 0x1735 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX320
+libusbscanner 0x0003 0x04a9 0x1736 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX330
+libusbscanner 0x0003 0x04a9 0x1737 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP250
+libusbscanner 0x0003 0x04a9 0x173a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP270
+libusbscanner 0x0003 0x04a9 0x173b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP490
+libusbscanner 0x0003 0x04a9 0x173c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP550
+libusbscanner 0x0003 0x04a9 0x173d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP560
+libusbscanner 0x0003 0x04a9 0x173e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP640
+libusbscanner 0x0003 0x04a9 0x173f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP990
+libusbscanner 0x0003 0x04a9 0x1740 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX340
+libusbscanner 0x0003 0x04a9 0x1741 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX350
+libusbscanner 0x0003 0x04a9 0x1742 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX870
+libusbscanner 0x0003 0x04a9 0x1743 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan 8800F
+libusbscanner 0x0003 0x04a9 0x1901 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan LiDE 100
+libusbscanner 0x0003 0x04a9 0x1904 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan LiDE 200
+libusbscanner 0x0003 0x04a9 0x1905 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan LiDE 110
+libusbscanner 0x0003 0x04a9 0x1909 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan LiDE 210
+libusbscanner 0x0003 0x04a9 0x190a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan fb630u | Canon CanoScan fb636u
+libusbscanner 0x0003 0x04a9 0x2204 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan N650U/N656U
+libusbscanner 0x0003 0x04a9 0x2206 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan N1220U
+libusbscanner 0x0003 0x04a9 0x2207 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan D660U
+libusbscanner 0x0003 0x04a9 0x2208 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan N670U/N676U/LiDE20
+libusbscanner 0x0003 0x04a9 0x220d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan N1240U/LiDE30
+libusbscanner 0x0003 0x04a9 0x220e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan LiDE 35 | Canon CanoScan LiDE 40 | Canon CanoScan LiDE 50
+libusbscanner 0x0003 0x04a9 0x2213 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan 3200F
+libusbscanner 0x0003 0x04a9 0x2216 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan LiDE 60
+libusbscanner 0x0003 0x04a9 0x221c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan LiDE25
+libusbscanner 0x0003 0x04a9 0x2220 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-1210C
+libusbscanner 0x0003 0x04a9 0x2222 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP730
+libusbscanner 0x0003 0x04a9 0x262f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP700
+libusbscanner 0x0003 0x04a9 0x2630 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP360
+libusbscanner 0x0003 0x04a9 0x263c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP370
+libusbscanner 0x0003 0x04a9 0x263d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP390
+libusbscanner 0x0003 0x04a9 0x263e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP375R
+libusbscanner 0x0003 0x04a9 0x263f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP740
+libusbscanner 0x0003 0x04a9 0x264c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP710
+libusbscanner 0x0003 0x04a9 0x264d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF5630
+libusbscanner 0x0003 0x04a9 0x264e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon laserBase MF5650
+libusbscanner 0x0003 0x04a9 0x264f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF8170c
+libusbscanner 0x0003 0x04a9 0x2659 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF5730
+libusbscanner 0x0003 0x04a9 0x265d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF5750
+libusbscanner 0x0003 0x04a9 0x265e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF5770
+libusbscanner 0x0003 0x04a9 0x265f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF3110
+libusbscanner 0x0003 0x04a9 0x2660 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF3240
+libusbscanner 0x0003 0x04a9 0x2684 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF6500 series
+libusbscanner 0x0003 0x04a9 0x2686 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF4120 | Canon imageCLASS MF4122 | Canon imageCLASS MF4140 | Canon imageCLASS MF4150
+libusbscanner 0x0003 0x04a9 0x26a3 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF4690
+libusbscanner 0x0003 0x04a9 0x26b0 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF4010 | Canon imageCLASS MF4018
+libusbscanner 0x0003 0x04a9 0x26b4 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF4270
+libusbscanner 0x0003 0x04a9 0x26b5 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF4370dn | Canon imageCLASS MF4380dn
+libusbscanner 0x0003 0x04a9 0x26ec 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS D480
+libusbscanner 0x0003 0x04a9 0x26ed 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon I-SENSYS MF4320d | Canon I-SENSYS MF4330d | Canon imageCLASS MF4350d
+libusbscanner 0x0003 0x04a9 0x26ee 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Nikon LS 40 ED | Nikon LS 40 ED | Nikon Coolspan IV
+libusbscanner 0x0003 0x04b0 0x4000 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Nikon LS 50 ED | Nikon Coolscan V ED | Nikon LS 50 ED | Nikon Coolscan V ED
+libusbscanner 0x0003 0x04b0 0x4001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Nikon Super Coolscan LS-5000 ED | Nikon Super Coolscan LS-5000 ED
+libusbscanner 0x0003 0x04b0 0x4002 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-7000U | EPSON Perfection 636U | Epson Perfection 636U | Epson GT-7000U | Epson Perfection 636U
+libusbscanner 0x0003 0x04b8 0x0101 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-6600U | EPSON Perfection 610 | Epson Perfection 610 | Epson GT-6600U | Epson Perfection 610
+libusbscanner 0x0003 0x04b8 0x0103 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-7600U | EPSON GT-7600UF | EPSON Perfection 1200U | EPSON Perfection 1200U PHOTO | Epson Perfection 1200U | Epson Perfection 1200Photo | Epson GT-7600U | Epson GT-7600UF | Epson Perfection 1200U | Epson Perfection 1200U PHOTO
+libusbscanner 0x0003 0x04b8 0x0104 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus Scan 2000 | Epson Stylus Scan 2000
+libusbscanner 0x0003 0x04b8 0x0105 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus Scan 2500 | Epson Stylus Scan 2500
+libusbscanner 0x0003 0x04b8 0x0106 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-2000 | EPSON Expression 1600 | Epson Expression 1600 | Epson ES-2000 | Epson Expression 1600
+libusbscanner 0x0003 0x04b8 0x0107 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-8500 | EPSON Expression 1640XL | Epson ES-8500 | Epson Expression 1640XL
+libusbscanner 0x0003 0x04b8 0x0109 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-8700 | EPSON GT-8700F | EPSON Perfection 1640SU | EPSON Perfection 1640SU PHOTO | Epson Perfection 1640 | Epson GT-8700 | Epson GT-8700F | Epson Perfection 1640SU | Epson Perfection 1640SU PHOTO
+libusbscanner 0x0003 0x04b8 0x010a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-7700U | EPSON Perfection 1240U | Epson Perfection 1240 | Epson GT-7700U | Epson Perfection 1240U
+libusbscanner 0x0003 0x04b8 0x010b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-6700U | EPSON Perfection 640U | Epson Perfection 640 | Epson GT-6700U | Epson Perfection 640U
+libusbscanner 0x0003 0x04b8 0x010c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-2200 | EPSON Expression 1680 | Epson Expression 1680 | Epson ES-2200 | Epson Expression 1680
+libusbscanner 0x0003 0x04b8 0x010e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-7200U | EPSON Perfection 1250 | EPSON Perfection 1250 PHOTO | Epson Perfection 1250 | Epson Perfection 1250Photo
+libusbscanner 0x0003 0x04b8 0x010f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-8200U | EPSON GT-8200UF | EPSON Perfection 1650 | EPSON Perfection 1650 PHOTO | Epson Perfection 1650 | Epson GT-8200U | Epson GT-8200UF | Epson Perfection 1650 | Epson Perfection 1650 PHOTO
+libusbscanner 0x0003 0x04b8 0x0110 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-9700F | EPSON Perfection 2450 PHOTO | Epson Perfection 2450 | Epson GT-9700F | Epson Perfection 2450 PHOTO
+libusbscanner 0x0003 0x04b8 0x0112 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Epson Perfection 660
+libusbscanner 0x0003 0x04b8 0x0114 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-9400UF | EPSON Perfection 3170 PHOTO
+libusbscanner 0x0003 0x04b8 0x0116 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-F600 | EPSON Perfection 4180 PHOTO
+libusbscanner 0x0003 0x04b8 0x0118 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-X750 | EPSON Perfection 4490 PHOTO
+libusbscanner 0x0003 0x04b8 0x0119 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-9300UF | EPSON Perfection 2400 PHOTO | Epson Perfection 2400 | Epson GT-9300UF | Epson Perfection 2400 PHOTO
+libusbscanner 0x0003 0x04b8 0x011b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-9800F | EPSON Perfection 3200 PHOTO | Epson Perfection 3200 | Epson GT-9800F | Epson Perfection 3200 PHOTO
+libusbscanner 0x0003 0x04b8 0x011c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-7300U | EPSON Perfection 1260 | EPSON Perfection 1260 PHOTO | Epson Perfection 1260 | Epson Perfection 1260Photo
+libusbscanner 0x0003 0x04b8 0x011d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-8300UF | EPSON Perfection 1660 PHOTO | Epson Perfection 1660 | Epson GT-8300UF | Epson Perfection 1660 PHOTO
+libusbscanner 0x0003 0x04b8 0x011e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Epson Perfection 1670
+libusbscanner 0x0003 0x04b8 0x011f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Epson Perfection 1270
+libusbscanner 0x0003 0x04b8 0x0120 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-F500 | EPSON GT-F550 | EPSON Perfection 2480 PHOTO | EPSON Perfection 2580 PHOTO | Epson Perfection 2480 | Epson Perfection 2580
+libusbscanner 0x0003 0x04b8 0x0121 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-F520 | EPSON GT-F570 | EPSON Perfection 3490 PHOTO | EPSON Perfection 3590 PHOTO | Epson Perfection 3490 | Epson Perfection 3590
+libusbscanner 0x0003 0x04b8 0x0122 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-7000H | EPSON GT-15000 | Epson ES-7000H | Epson GT-15000
+libusbscanner 0x0003 0x04b8 0x0126 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-X700 | EPSON Perfection 4870 PHOTO | Epson Perfection 4870 | Epson GT-X700 | Epson Perfection 4870 PHOTO
+libusbscanner 0x0003 0x04b8 0x0128 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-10000G | EPSON Expression 10000XL | Epson ES-10000G | Epson Expression 10000XL
+libusbscanner 0x0003 0x04b8 0x0129 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-X800 | EPSON Perfection 4990 PHOTO | Epson Perfection 4990 | Epson GT-X800 | Epson Perfection 4990 PHOTO
+libusbscanner 0x0003 0x04b8 0x012a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-H300 | EPSON GT-2500 | Epson ES-H300 | Epson GT-2500
+libusbscanner 0x0003 0x04b8 0x012b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-X900 | EPSON Perfection V700 Photo | EPSON Perfection V750 Photo | Epson V700 | Epson V750 | Epson GT-X900 | Epson Perfection V700 Photo | Epson Perfection V750 Photo
+libusbscanner 0x0003 0x04b8 0x012c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-F650 | EPSON GT-S600 | EPSON Perfection V10 | EPSON Perfection V100 Photo
+libusbscanner 0x0003 0x04b8 0x012d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-F670 | EPSON Perfection V200 Photo
+libusbscanner 0x0003 0x04b8 0x012e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-F700 | EPSON Perfection V350 Photo
+libusbscanner 0x0003 0x04b8 0x012f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-X770 | EPSON Perfection V500 Photo
+libusbscanner 0x0003 0x04b8 0x0130 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-F720 | EPSON GT-S620 | EPSON Perfection V30 | EPSON Perfection V300 Photo
+libusbscanner 0x0003 0x04b8 0x0131 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-1500 | EPSON GT-D1000
+libusbscanner 0x0003 0x04b8 0x0133 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-X970 | Epson GT-X970
+libusbscanner 0x0003 0x04b8 0x0135 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-D400 | EPSON GT-S80
+libusbscanner 0x0003 0x04b8 0x0136 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-D200 | EPSON GT-S50
+libusbscanner 0x0003 0x04b8 0x0137 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-H7200 | EPSON GT-20000
+libusbscanner 0x0003 0x04b8 0x0138 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-X820 | EPSON Perfection V600 Photo
+libusbscanner 0x0003 0x04b8 0x013a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-F730 | EPSON GT-S630 | EPSON Perfection V33 | EPSON Perfection V330 Photo
+libusbscanner 0x0003 0x04b8 0x0142 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON CC-600PX | EPSON Stylus CX5100 | EPSON Stylus CX5200 | Epson CX-5200 | Epson CX-5400 | Epson CC-600PX | Epson Stylus CX5100 | Epson Stylus CX5200
+libusbscanner 0x0003 0x04b8 0x0801 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON CC-570L | EPSON Stylus CX3100 | EPSON Stylus CX3200 | Epson CX-3200 | Epson CC-570L | Epson Stylus CX3100 | Epson Stylus CX3200
+libusbscanner 0x0003 0x04b8 0x0802 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX6300 | EPSON Stylus CX6400 | Epson CX-6300 | Epson CX-6400 | Epson Stylus CX6300 | Epson Stylus CX6400
+libusbscanner 0x0003 0x04b8 0x0805 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A850 | EPSON Stylus Photo RX600 | Epson RX-600 | Epson PM-A850 | Epson Stylus Photo RX600
+libusbscanner 0x0003 0x04b8 0x0806 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus Photo RX500 | EPSON Stylus Photo RX510 | Epson RX-500 | Epson Stylus Photo RX500 | Epson Stylus Photo RX510
+libusbscanner 0x0003 0x04b8 0x0807 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX5300 | EPSON Stylus CX5400 | Epson CX-5400 | Epson Stylus CX5300 | Epson Stylus CX5400
+libusbscanner 0x0003 0x04b8 0x0808 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Epson Stylus CX-1500
+libusbscanner 0x0003 0x04b8 0x080c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX4500 | EPSON Stylus CX4600 | Epson CX-4600 | Epson Stylus CX4500 | Epson Stylus CX4600
+libusbscanner 0x0003 0x04b8 0x080d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-A550 | EPSON Stylus CX3500 | EPSON Stylus CX3600 | EPSON Stylus CX3650 | Epson CX-3600 | Epson CX-3650 | Epson PX-A550 | Epson Stylus CX3500 | Epson Stylus CX3600 | Epson Stylus CX3650
+libusbscanner 0x0003 0x04b8 0x080e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus Photo RX420 | EPSON Stylus Photo RX425 | EPSON Stylus Photo RX430 | Epson RX-425 | Epson Stylus Photo RX420 | Epson Stylus Photo RX425 | Epson Stylus Photo RX430
+libusbscanner 0x0003 0x04b8 0x080f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A900 | EPSON Stylus Photo RX700 | Epson RX-700 | Epson PM-A900 | Epson Stylus Photo RX700
+libusbscanner 0x0003 0x04b8 0x0810 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A870 | EPSON Stylus Photo RX620 | EPSON Stylus Photo RX630 | Epson RX-620 | Epson PM-A870 | Epson Stylus Photo RX620 | Epson Stylus Photo RX630
+libusbscanner 0x0003 0x04b8 0x0811 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX6500 | EPSON Stylus CX6600 | Epson CX-6500 | Epson CX-6600 | Epson Stylus CX6500 | Epson Stylus CX6600
+libusbscanner 0x0003 0x04b8 0x0813 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A700 | Epson PM-A700
+libusbscanner 0x0003 0x04b8 0x0814 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON AcuLaser CX11 | EPSON AcuLaser CX11NF | EPSON LP-A500 | Epson AcuLaser CX11 | Epson AcuLaser CX11NF | Epson AcuLaser CX11 | Epson AcuLaser CX11NF | Epson LP-A500
+libusbscanner 0x0003 0x04b8 0x0815 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON LP-M5500 | EPSON LP-M5500F | Epson LP-M5500 | Epson LP-M5500F
+libusbscanner 0x0003 0x04b8 0x0817 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX3700 | EPSON Stylus CX3800 | EPSON Stylus DX3800 | Epson DX-3850 | Epson CX-3700 | Epson CX-3800 | Epson DX-3800 | Epson Stylus CX3700 | Epson Stylus CX3800 | Epson Stylus DX3800
+libusbscanner 0x0003 0x04b8 0x0818 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-A650 | EPSON Stylus CX4700 | EPSON Stylus CX4800 | EPSON Stylus DX4800 | EPSON Stylus DX4850 | Epson CX-4800 | Epson PX-A650 | Epson Stylus CX4700 | Epson Stylus CX4800 | Epson Stylus DX4800 | Epson Stylus DX4850
+libusbscanner 0x0003 0x04b8 0x0819 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A750 | EPSON Stylus Photo RX520 | EPSON Stylus Photo RX530 | Epson PM-A750 | Epson Stylus Photo RX520 | Epson Stylus Photo RX530
+libusbscanner 0x0003 0x04b8 0x081a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A890 | EPSON Stylus Photo RX640 | EPSON Stylus Photo RX650 | Epson PM-A890 | Epson Stylus Photo RX640 | Epson Stylus Photo RX650
+libusbscanner 0x0003 0x04b8 0x081c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A950 | Epson PM-A950
+libusbscanner 0x0003 0x04b8 0x081d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX7700 | EPSON Stylus CX7800 | Epson Stylus CX7700 | Epson Stylus CX7800
+libusbscanner 0x0003 0x04b8 0x081f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX4100 | EPSON Stylus CX4200 | EPSON Stylus DX4200 | Epson CX-4200 | Epson Stylus CX4100 | Epson Stylus CX4200 | Epson Stylus DX4200
+libusbscanner 0x0003 0x04b8 0x0820 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A820 | EPSON Stylus Photo RX560 | EPSON Stylus Photo RX580 | EPSON Stylus Photo RX590 | Epson PM-A820 | Epson Stylus Photo RX560 | Epson Stylus Photo RX580 | Epson Stylus Photo RX590
+libusbscanner 0x0003 0x04b8 0x0827 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A970 | Epson PM-A970
+libusbscanner 0x0003 0x04b8 0x0828 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-T990 | Epson PM-T990
+libusbscanner 0x0003 0x04b8 0x0829 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A920 | Epson PM-A920
+libusbscanner 0x0003 0x04b8 0x082a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX4900 | EPSON Stylus CX5000 | EPSON Stylus DX5000 | Epson CX-5000 | Epson DX-5000 | Epson DX-5050 | Epson Stylus CX4900 | Epson Stylus CX5000 | Epson Stylus DX5000
+libusbscanner 0x0003 0x04b8 0x082b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-A720 | EPSON Stylus CX5900 | EPSON Stylus CX6000 | EPSON Stylus DX6000 | Epson DX-6000 | Epson PX-A720 | Epson Stylus CX5900 | Epson Stylus CX6000 | Epson Stylus DX6000
+libusbscanner 0x0003 0x04b8 0x082e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-A620 | EPSON Stylus CX3900 | EPSON Stylus DX4000 | Epson DX-4050 | Epson PX-A620 | Epson Stylus CX3900 | Epson Stylus DX4000
+libusbscanner 0x0003 0x04b8 0x082f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME 200 | EPSON Stylus CX2800 | EPSON Stylus CX2900 | Epson ME 200 | Epson Stylus CX2800 | Epson Stylus CX2900
+libusbscanner 0x0003 0x04b8 0x0830 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON LP-M5600 | Epson LP-M5600
+libusbscanner 0x0003 0x04b8 0x0833 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON LP-M6000 | Epson LP-M6000
+libusbscanner 0x0003 0x04b8 0x0834 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON AcuLaser CX21 | Epson AcuLaser CX21
+libusbscanner 0x0003 0x04b8 0x0835 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-T960 | Epson PM-T960
+libusbscanner 0x0003 0x04b8 0x0836 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A940 | EPSON Stylus Photo RX680 | EPSON Stylus Photo RX685 | EPSON Stylus Photo RX690 | Epson PM-A940 | Epson Stylus Photo RX680 | Epson Stylus Photo RX685 | Epson Stylus Photo RX690
+libusbscanner 0x0003 0x04b8 0x0837 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-A640 | EPSON Stylus CX7300 | EPSON Stylus CX7400 | EPSON Stylus DX7400 | Epson DX-7400 | Epson PX-A640 | Epson Stylus CX7300 | Epson Stylus CX7400 | Epson Stylus DX7400
+libusbscanner 0x0003 0x04b8 0x0838 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-A740 | EPSON Stylus CX8300 | EPSON Stylus CX8400 | EPSON Stylus DX8400 | Epson PX-A740 | Epson Stylus CX8300 | Epson Stylus CX8400 | Epson Stylus DX8400
+libusbscanner 0x0003 0x04b8 0x0839 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-FA700 | EPSON Stylus CX9300F | EPSON Stylus CX9400Fax | EPSON Stylus DX9400F | Epson PX-FA700 | Epson Stylus CX9300F | Epson Stylus CX9400Fax | Epson Stylus DX9400F
+libusbscanner 0x0003 0x04b8 0x083a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A840 | EPSON PM-A840S | EPSON Stylus Photo RX585 | EPSON Stylus Photo RX595 | EPSON Stylus Photo RX610 | Epson PM-A840 | Epson PM-A840S | Epson Stylus Photo RX585 | Epson Stylus Photo RX595 | Epson Stylus Photo RX610
+libusbscanner 0x0003 0x04b8 0x083c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX4300 | EPSON Stylus CX4400 | EPSON Stylus CX5500 | EPSON Stylus CX5600 | EPSON Stylus DX4400
+libusbscanner 0x0003 0x04b8 0x083f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME 300 | EPSON PX-401A | EPSON Stylus NX100 | EPSON Stylus SX100 | EPSON Stylus TX100 | Epson ME 300 | Epson PX-401A | Epson Stylus NX100 | Epson Stylus SX100 | Epson Stylus TX100
+libusbscanner 0x0003 0x04b8 0x0841 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON LP-M5000 | Epson LP-M5000
+libusbscanner 0x0003 0x04b8 0x0843 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Artisan 800 | EPSON EP-901A | EPSON EP-901F | EPSON Stylus Photo PX800FW | EPSON Stylus Photo TX800FW | Epson Artisan 800 | Epson EP-901A | Epson EP-901F | Epson Stylus Photo PX800FW | Epson Stylus Photo TX800FW
+libusbscanner 0x0003 0x04b8 0x0844 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Artisan 700 | EPSON EP-801A | EPSON Stylus Photo PX700W | EPSON Stylus Photo TX700W | Epson Artisan 700 | Epson EP-801A | Epson Stylus Photo PX700W | Epson Stylus Photo TX700W
+libusbscanner 0x0003 0x04b8 0x0846 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME Office 700FW | EPSON PX-601F | EPSON Stylus Office BX600FW | EPSON Stylus Office TX600FW | EPSON Stylus SX600FW | EPSON WorkForce 600 | Epson ME Office 700FW | Epson PX-601F | Epson Stylus Office BX600FW | Epson Stylus Office TX600FW | Epson Stylus SX600FW | Epson WorkForce 600
+libusbscanner 0x0003 0x04b8 0x0847 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME Office 600F | EPSON Stylus Office BX300F | EPSON Stylus Office TX300F | EPSON Stylus NX300 Series | Epson ME Office 600F | Epson Stylus Office BX300F | Epson Stylus Office TX300F | Epson Stylus NX300
+libusbscanner 0x0003 0x04b8 0x0848 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus NX200 | EPSON Stylus SX200 | EPSON Stylus SX205 | EPSON Stylus TX200 | EPSON Stylus TX203 | EPSON Stylus TX209 | Epson Stylus NX200 | Epson Stylus SX200 | Epson Stylus SX205 | Epson Stylus TX200 | Epson Stylus TX203 | Epson Stylus TX209
+libusbscanner 0x0003 0x04b8 0x0849 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-501A | EPSON Stylus NX400 | EPSON Stylus SX400 | EPSON Stylus SX405 | EPSON Stylus TX400 | Epson PX-501A | Epson Stylus NX400 | Epson Stylus SX400 | Epson Stylus SX405 | Epson Stylus TX400
+libusbscanner 0x0003 0x04b8 0x084a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON WorkForce 500 | Epson WorkForce 500
+libusbscanner 0x0003 0x04b8 0x084c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-402A | EPSON Stylus NX110 Series | EPSON Stylus SX110 Series | EPSON Stylus TX110 Series | Epson PX-402A | Epson Stylus NX110 Series | Epson Stylus SX110 Series | Epson Stylus TX110 Series
+libusbscanner 0x0003 0x04b8 0x084d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME OFFICE 510 | EPSON Stylus NX210 Series | EPSON Stylus SX210 Series | EPSON Stylus TX210 Series | Epson ME OFFICE 510 | Epson Stylus NX210 Series | Epson Stylus SX210 Series | Epson Stylus TX210 Series
+libusbscanner 0x0003 0x04b8 0x084f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON EP-702A | EPSON Stylus Photo PX650 Series | EPSON Stylus Photo TX650 Series
+libusbscanner 0x0003 0x04b8 0x0850 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus NX410 Series | EPSON Stylus SX410 Series | EPSON Stylus TX410 Series | Epson Stylus NX410 Series | Epson Stylus SX410 Series | Epson Stylus TX410 Series
+libusbscanner 0x0003 0x04b8 0x0851 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Artisan 710 Series | EPSON EP-802A | EPSON Stylus Photo PX710W Series | EPSON Stylus Photo TX710W Series
+libusbscanner 0x0003 0x04b8 0x0852 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Artisan 810 Series | EPSON EP-902A | EPSON Stylus Photo PX810FW Series
+libusbscanner 0x0003 0x04b8 0x0853 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME OFFICE 650FN Series | EPSON Stylus Office BX310FN Series | EPSON Stylus Office TX510FN Series | EPSON WorkForce 310 Series | Epson ME OFFICE 650FN Series | Epson Stylus Office BX310FN Series | Epson Stylus Office TX510FN Series | Epson WorkForce 310 Series
+libusbscanner 0x0003 0x04b8 0x0854 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-602F | EPSON Stylus Office BX610FW Series | EPSON Stylus Office TX610FW Series | EPSON Stylus SX610FW Series | EPSON WorkForce 610 Series
+libusbscanner 0x0003 0x04b8 0x0855 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-502A | EPSON Stylus NX510 Series | EPSON Stylus SX510W Series | EPSON Stylus TX550W Series | Epson PX-502A | Epson Stylus NX510 Series | Epson Stylus SX510W Series | Epson Stylus TX550W Series
+libusbscanner 0x0003 0x04b8 0x0856 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME 320 Series | EPSON ME 330 Series | EPSON Stylus NX125 | EPSON Stylus NX127 | EPSON Stylus SX125 | EPSON Stylus TX120 Series
+libusbscanner 0x0003 0x04b8 0x085c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME OFFICE 960FWD Series | EPSON Stylus Office BX625FWD | EPSON Stylus Office TX620FWD Series | EPSON Stylus SX620FW Series | EPSON WorkForce 630 Series
+libusbscanner 0x0003 0x04b8 0x085d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME OFFICE 900WD Series | EPSON PX-503A | EPSON Stylus Office BX525WD | EPSON Stylus NX625 | EPSON Stylus SX525WD | EPSON Stylus TX560WD Series | EPSON WorkForce 625
+libusbscanner 0x0003 0x04b8 0x085e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus Office BX320FW Series | EPSON Stylus Office TX525FW | EPSON WorkForce 520 Series
+libusbscanner 0x0003 0x04b8 0x085f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Artisan 835 | EPSON EP-903A | EPSON EP-903F | EPSON Stylus Photo PX820FWD Series
+libusbscanner 0x0003 0x04b8 0x0860 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Artisan 725 | EPSON EP-803A | EPSON EP-803AW | EPSON Stylus Photo PX720WD Series
+libusbscanner 0x0003 0x04b8 0x0861 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON EP-703A | EPSON Stylus Photo PX660 Series
+libusbscanner 0x0003 0x04b8 0x0862 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME OFFICE 620F Series | EPSON Stylus Office BX305F | EPSON Stylus Office BX305FW | EPSON Stylus Office TX320F Series | EPSON WorkForce 320 Series
+libusbscanner 0x0003 0x04b8 0x0863 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME OFFICE 560W Series | EPSON Stylus NX420 Series | EPSON Stylus SX420W Series | EPSON Stylus TX420W Series
+libusbscanner 0x0003 0x04b8 0x0864 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME OFFICE 520 Series | EPSON Stylus NX220 Series | EPSON Stylus SX218 | EPSON Stylus TX220 Series
+libusbscanner 0x0003 0x04b8 0x0865 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON AcuLaser MX20DN | EPSON AcuLaser MX20DNF
+libusbscanner 0x0003 0x04b8 0x0866 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-4010CU
+libusbscanner 0x0003 0x04c5 0x1029 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-4120C
+libusbscanner 0x0003 0x04c5 0x1041 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-4220C
+libusbscanner 0x0003 0x04c5 0x1042 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-4530C
+libusbscanner 0x0003 0x04c5 0x1078 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5750C
+libusbscanner 0x0003 0x04c5 0x1095 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5110EOX/2
+libusbscanner 0x0003 0x04c5 0x1096 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5110C
+libusbscanner 0x0003 0x04c5 0x1097 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5650C
+libusbscanner 0x0003 0x04c5 0x10ad 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-4120C2
+libusbscanner 0x0003 0x04c5 0x10ae 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-4220C2
+libusbscanner 0x0003 0x04c5 0x10af 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-60F
+libusbscanner 0x0003 0x04c5 0x10c7 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-4340C
+libusbscanner 0x0003 0x04c5 0x10cf 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5120C
+libusbscanner 0x0003 0x04c5 0x10e0 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5220C
+libusbscanner 0x0003 0x04c5 0x10e1 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5530C
+libusbscanner 0x0003 0x04c5 0x10e2 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5110EOX3
+libusbscanner 0x0003 0x04c5 0x10e6 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5900C
+libusbscanner 0x0003 0x04c5 0x10e7 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5015C
+libusbscanner 0x0003 0x04c5 0x10ef 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5110EOXM
+libusbscanner 0x0003 0x04c5 0x10f2 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu ScanSnap S500
+libusbscanner 0x0003 0x04c5 0x10fe 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu ScanSnap S500M
+libusbscanner 0x0003 0x04c5 0x1135 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5530C2
+libusbscanner 0x0003 0x04c5 0x114a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6140
+libusbscanner 0x0003 0x04c5 0x114d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6240
+libusbscanner 0x0003 0x04c5 0x114e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6130
+libusbscanner 0x0003 0x04c5 0x114f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6230
+libusbscanner 0x0003 0x04c5 0x1150 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu ScanSnap S510
+libusbscanner 0x0003 0x04c5 0x1155 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu ScanSnap S300
+libusbscanner 0x0003 0x04c5 0x1156 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu ScanSnap S510M
+libusbscanner 0x0003 0x04c5 0x116f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6770
+libusbscanner 0x0003 0x04c5 0x1174 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6770A
+libusbscanner 0x0003 0x04c5 0x1175 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6670
+libusbscanner 0x0003 0x04c5 0x1176 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6670A
+libusbscanner 0x0003 0x04c5 0x1177 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6750S
+libusbscanner 0x0003 0x04c5 0x1178 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu ScanSnap S300M
+libusbscanner 0x0003 0x04c5 0x117f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6800
+libusbscanner 0x0003 0x04c5 0x119d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6800-CGA
+libusbscanner 0x0003 0x04c5 0x119e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6900
+libusbscanner 0x0003 0x04c5 0x119f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6900-CGA
+libusbscanner 0x0003 0x04c5 0x11a0 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu ScanSnap S1500 | Fujitsu ScanSnap S1500M
+libusbscanner 0x0003 0x04c5 0x11a2 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu ScanSnap S1300
+libusbscanner 0x0003 0x04c5 0x11ed 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6125
+libusbscanner 0x0003 0x04c5 0x11ee 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6225
+libusbscanner 0x0003 0x04c5 0x11ef 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6145
+libusbscanner 0x0003 0x04c5 0x11f1 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6245
+libusbscanner 0x0003 0x04c5 0x11f2 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6135
+libusbscanner 0x0003 0x04c5 0x11f3 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6235
+libusbscanner 0x0003 0x04c5 0x11f4 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6110
+libusbscanner 0x0003 0x04c5 0x11fc 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Konica e-mini
+libusbscanner 0x0003 0x04c8 0x0722 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Panasonic KV-S2026C
+libusbscanner 0x0003 0x04da 0x1000 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Panasonic KV-S2046C
+libusbscanner 0x0003 0x04da 0x1001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Panasonic KV-S1025C
+libusbscanner 0x0003 0x04da 0x1006 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Panasonic KV-S1020C
+libusbscanner 0x0003 0x04da 0x1007 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Panasonic KV-S2048C
+libusbscanner 0x0003 0x04da 0x1009 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Panasonic KV-S2028C
+libusbscanner 0x0003 0x04da 0x100a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Panasonic KV-SS080
+libusbscanner 0x0003 0x04da 0x100f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Panasonic KV-S1045C
+libusbscanner 0x0003 0x04da 0x1010 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4216F
+libusbscanner 0x0003 0x04e8 0x3409 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4100
+libusbscanner 0x0003 0x04e8 0x3413 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4521F
+libusbscanner 0x0003 0x04e8 0x3419 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4200 | Samsung SCX-4200
+libusbscanner 0x0003 0x04e8 0x341b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX4725-FN
+libusbscanner 0x0003 0x04e8 0x341f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4500
+libusbscanner 0x0003 0x04e8 0x3426 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung CLX-3170fn | Samsung CLX-3175FW
+libusbscanner 0x0003 0x04e8 0x342a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4500W
+libusbscanner 0x0003 0x04e8 0x342b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4824
+libusbscanner 0x0003 0x04e8 0x342c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4300
+libusbscanner 0x0003 0x04e8 0x342e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4600
+libusbscanner 0x0003 0x04e8 0x3433 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4623
+libusbscanner 0x0003 0x04e8 0x3434 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4825FN
+libusbscanner 0x0003 0x04e8 0x343c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3100C
+libusbscanner 0x0003 0x04f9 0x010e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-5100C
+libusbscanner 0x0003 0x04f9 0x010f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-4800
+libusbscanner 0x0003 0x04f9 0x0110 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-6800 | Brother MFC 4600
+libusbscanner 0x0003 0x04f9 0x0111 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-1000
+libusbscanner 0x0003 0x04f9 0x0112 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8500
+libusbscanner 0x0003 0x04f9 0x0113 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9700
+libusbscanner 0x0003 0x04f9 0x0114 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9800
+libusbscanner 0x0003 0x04f9 0x0115 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-1400
+libusbscanner 0x0003 0x04f9 0x0116 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX-2900
+libusbscanner 0x0003 0x04f9 0x0117 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX-3800
+libusbscanner 0x0003 0x04f9 0x0118 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9660
+libusbscanner 0x0003 0x04f9 0x0119 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9860
+libusbscanner 0x0003 0x04f9 0x011a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9760
+libusbscanner 0x0003 0x04f9 0x011c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9070
+libusbscanner 0x0003 0x04f9 0x011d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9180
+libusbscanner 0x0003 0x04f9 0x011e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9160
+libusbscanner 0x0003 0x04f9 0x011f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-580
+libusbscanner 0x0003 0x04f9 0x0120 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-590
+libusbscanner 0x0003 0x04f9 0x0121 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-5100J
+libusbscanner 0x0003 0x04f9 0x0122 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX-2850
+libusbscanner 0x0003 0x04f9 0x0123 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-4800J
+libusbscanner 0x0003 0x04f9 0x0124 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-6800J
+libusbscanner 0x0003 0x04f9 0x0125 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX1800C
+libusbscanner 0x0003 0x04f9 0x0126 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9800J
+libusbscanner 0x0003 0x04f9 0x0127 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8500J
+libusbscanner 0x0003 0x04f9 0x0128 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9030
+libusbscanner 0x0003 0x04f9 0x012b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX-4100
+libusbscanner 0x0003 0x04f9 0x012e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX-4750e
+libusbscanner 0x0003 0x04f9 0x012f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX-5750e
+libusbscanner 0x0003 0x04f9 0x0130 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-5200C
+libusbscanner 0x0003 0x04f9 0x0132 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-100
+libusbscanner 0x0003 0x04f9 0x0135 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-150CL
+libusbscanner 0x0003 0x04f9 0x0136 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3200C
+libusbscanner 0x0003 0x04f9 0x013a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-890
+libusbscanner 0x0003 0x04f9 0x013c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-5200J
+libusbscanner 0x0003 0x04f9 0x013d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-4420C
+libusbscanner 0x0003 0x04f9 0x013e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-4820C
+libusbscanner 0x0003 0x04f9 0x013f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-8020
+libusbscanner 0x0003 0x04f9 0x0140 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-8025D
+libusbscanner 0x0003 0x04f9 0x0141 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8420
+libusbscanner 0x0003 0x04f9 0x0142 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8820D
+libusbscanner 0x0003 0x04f9 0x0143 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-4020C
+libusbscanner 0x0003 0x04f9 0x0144 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3220C
+libusbscanner 0x0003 0x04f9 0x0146 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX1820C
+libusbscanner 0x0003 0x04f9 0x0147 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3320CN
+libusbscanner 0x0003 0x04f9 0x0148 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX1920CN
+libusbscanner 0x0003 0x04f9 0x0149 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3420C
+libusbscanner 0x0003 0x04f9 0x014a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3820CN
+libusbscanner 0x0003 0x04f9 0x014b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-3020C
+libusbscanner 0x0003 0x04f9 0x014c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX1815C
+libusbscanner 0x0003 0x04f9 0x014d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8820J
+libusbscanner 0x0003 0x04f9 0x014e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-8025J
+libusbscanner 0x0003 0x04f9 0x014f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8220
+libusbscanner 0x0003 0x04f9 0x0150 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8210
+libusbscanner 0x0003 0x04f9 0x0151 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-1000J
+libusbscanner 0x0003 0x04f9 0x0153 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3420J
+libusbscanner 0x0003 0x04f9 0x0157 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3820J
+libusbscanner 0x0003 0x04f9 0x0158 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-8040
+libusbscanner 0x0003 0x04f9 0x015d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-8045D
+libusbscanner 0x0003 0x04f9 0x015e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8440
+libusbscanner 0x0003 0x04f9 0x015f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8840D
+libusbscanner 0x0003 0x04f9 0x0160 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-210C
+libusbscanner 0x0003 0x04f9 0x0161 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-420CN
+libusbscanner 0x0003 0x04f9 0x0162 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-410CN
+libusbscanner 0x0003 0x04f9 0x0163 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-620CN
+libusbscanner 0x0003 0x04f9 0x0165 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-610CLN
+libusbscanner 0x0003 0x04f9 0x0166 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-610CLN
+libusbscanner 0x0003 0x04f9 0x0168 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-110C
+libusbscanner 0x0003 0x04f9 0x0169 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-310CN
+libusbscanner 0x0003 0x04f9 0x016b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-5440CN
+libusbscanner 0x0003 0x04f9 0x016d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-5840CN
+libusbscanner 0x0003 0x04f9 0x016e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3240C
+libusbscanner 0x0003 0x04f9 0x0173 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3340CN
+libusbscanner 0x0003 0x04f9 0x0174 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-7420
+libusbscanner 0x0003 0x04f9 0x0180 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-7820N
+libusbscanner 0x0003 0x04f9 0x0181 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-7010
+libusbscanner 0x0003 0x04f9 0x0182 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-7020
+libusbscanner 0x0003 0x04f9 0x0183 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-7025
+libusbscanner 0x0003 0x04f9 0x0184 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-7220
+libusbscanner 0x0003 0x04f9 0x0185 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-7225N
+libusbscanner 0x0003 0x04f9 0x0186 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-115C
+libusbscanner 0x0003 0x04f9 0x018c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-117C
+libusbscanner 0x0003 0x04f9 0x018e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-120C
+libusbscanner 0x0003 0x04f9 0x0190 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-215C
+libusbscanner 0x0003 0x04f9 0x0193 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-8060
+libusbscanner 0x0003 0x04f9 0x01a3 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-330C
+libusbscanner 0x0003 0x04f9 0x01a9 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-240C
+libusbscanner 0x0003 0x04f9 0x01ab 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-7840W
+libusbscanner 0x0003 0x04f9 0x01e5 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Pentax DSmobile 600
+libusbscanner 0x0003 0x04f9 0x2038 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Aiptek Aiptek Pencam
+libusbscanner 0x0003 0x0553 0x0202 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek ScanExpress 1200 CU
+libusbscanner 0x0003 0x055f 0x0001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek ScanExpress 600 CU
+libusbscanner 0x0003 0x055f 0x0002 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek ScanExpress 1200 UB | Trust Compact Scan USB 19200
+libusbscanner 0x0003 0x055f 0x0006 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek ScanExpress 1200 CU Plus
+libusbscanner 0x0003 0x055f 0x0008 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 1200 F
+libusbscanner 0x0003 0x055f 0x0010 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek ScanExpress A3 USB
+libusbscanner 0x0003 0x055f 0x0210 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 2400 CS | Mustek BearPaw 2400 TA | Trust 240TH Easy Webscan Gold
+libusbscanner 0x0003 0x055f 0x0218 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 2400 CS Plus | Mustek BearPaw 2400 TA Plus | Mustek Plug-n-Scan 2400 MT | Mustek Plug-n-Scan 2400 M | Packard Bell Diamond 2450
+libusbscanner 0x0003 0x055f 0x0219 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 2448 CS Plus | Mustek BearPaw 2448 TA Plus
+libusbscanner 0x0003 0x055f 0x021a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 1200 CU Plus | Packard Bell Diamond 1200 Plus
+libusbscanner 0x0003 0x055f 0x021b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 1200 CU Plus | Mustek BearPaw 1248 CU | Packard Bell Diamond 1200 Plus | Trust Direct WebScan 19200
+libusbscanner 0x0003 0x055f 0x021c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 2400 CU Plus
+libusbscanner 0x0003 0x055f 0x021d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 1200 CS | Mustek BearPaw 1200 TA
+libusbscanner 0x0003 0x055f 0x021e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek ScanExpress 1248 UB
+libusbscanner 0x0003 0x055f 0x021f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek P 3600 A3 Pro
+libusbscanner 0x0003 0x055f 0x0401 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 2448TA Pro
+libusbscanner 0x0003 0x055f 0x0409 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Artec/Ultima Ultima 2000 | Artec/Ultima Ultima 2000 e+ | Boeder Sm@rtScan Slim Edition | Fujitsu 1200CUS | Googlegear 2000 | Medion/Lifetec/Tevion/Cytron MD 4394 | Medion/Lifetec/Tevion/Cytron MD/LT 9375 | Medion/Lifetec/Tevion/Cytron MD/LT 9385 | Medion/Lifetec/Tevion/Cytron LT 9452 | Medion/Lifetec/Tevion/Cytron MD 9458 | Mustek BearPaw 1200 CU | Mustek BearPaw 2400 CU | Mustek ScanExpress 1200 UB Plus | Mustek ScanExpress 2400 USB | Mustek ScanMagic 1200 UB Plus | Packard Bell Diamond 1200 | Trust Compact Scan USB 19200 | Trust Flat Scan USB 19200
+libusbscanner 0x0003 0x05d8 0x4002 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Artec/Ultima E+ 48U | Medion/Lifetec/Tevion/Cytron MD9693 | Medion/Lifetec/Tevion/Cytron MD9705 | Medion/Lifetec/Tevion/Cytron MD4394 | Microstar MR 9791
+libusbscanner 0x0003 0x05d8 0x4003 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Artec/Ultima E+ Pro
+libusbscanner 0x0003 0x05d8 0x4004 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Memorex MEM 48U
+libusbscanner 0x0003 0x05d8 0x4005 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Trust Easy Webscan 19200
+libusbscanner 0x0003 0x05d8 0x4006 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Trust 240H Easy Webscan Gold
+libusbscanner 0x0003 0x05d8 0x4007 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# UMAX AstraSlim SE
+libusbscanner 0x0003 0x05d8 0x4009 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# UMAX AstraSlim 1200 SE
+libusbscanner 0x0003 0x05d8 0x4010 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Yakumo Scan50
+libusbscanner 0x0003 0x05d8 0x4011 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker X6USB
+libusbscanner 0x0003 0x05da 0x0099 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek SlimScan C6
+libusbscanner 0x0003 0x05da 0x009a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker V6USL
+libusbscanner 0x0003 0x05da 0x00a3 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker V6UPL
+libusbscanner 0x0003 0x05da 0x00b6 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker 4800
+libusbscanner 0x0003 0x05da 0x30cf 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker 3840
+libusbscanner 0x0003 0x05da 0x30d4 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker 3600
+libusbscanner 0x0003 0x05da 0x40b3 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker 3700
+libusbscanner 0x0003 0x05da 0x40b8 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker 3600
+libusbscanner 0x0003 0x05da 0x40ca 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker 3700
+libusbscanner 0x0003 0x05da 0x40cb 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker 3750
+libusbscanner 0x0003 0x05da 0x40dd 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker 3600
+libusbscanner 0x0003 0x05da 0x40ff 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker V6USL
+libusbscanner 0x0003 0x05da 0x80a3 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# iVina 1200U
+libusbscanner 0x0003 0x0638 0x0268 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Minolta Dimage Scan Dual II
+libusbscanner 0x0003 0x0638 0x026a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV600U
+libusbscanner 0x0003 0x0638 0x0a13 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Minolta-QMS SC-110
+libusbscanner 0x0003 0x0638 0x0a15 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision DS610CU Scancopier | Minolta-QMS SC-215 | OKI S700 Scancopier
+libusbscanner 0x0003 0x0638 0x0a16 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV600U Plus
+libusbscanner 0x0003 0x0638 0x0a18 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV610
+libusbscanner 0x0003 0x0638 0x0a19 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV220
+libusbscanner 0x0003 0x0638 0x0a23 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV210
+libusbscanner 0x0003 0x0638 0x0a24 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV210
+libusbscanner 0x0003 0x0638 0x0a25 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV120
+libusbscanner 0x0003 0x0638 0x0a27 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV220C2
+libusbscanner 0x0003 0x0638 0x0a2a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV220D2
+libusbscanner 0x0003 0x0638 0x0a2b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV220+
+libusbscanner 0x0003 0x0638 0x0a2c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV220C2-G
+libusbscanner 0x0003 0x0638 0x0a2d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV220C2-B
+libusbscanner 0x0003 0x0638 0x0a2e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV210C2-G
+libusbscanner 0x0003 0x0638 0x0a2f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV122
+libusbscanner 0x0003 0x0638 0x0a33 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV210C2
+libusbscanner 0x0003 0x0638 0x0a3a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV121
+libusbscanner 0x0003 0x0638 0x0a3c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV8300
+libusbscanner 0x0003 0x0638 0x0a40 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AM3000 Series
+libusbscanner 0x0003 0x0638 0x0a41 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision @V5100
+libusbscanner 0x0003 0x0638 0x0a45 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV8050U
+libusbscanner 0x0003 0x0638 0x0a4d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV3200SU
+libusbscanner 0x0003 0x0638 0x0a4e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV3730SU
+libusbscanner 0x0003 0x0638 0x0a4f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV610C2
+libusbscanner 0x0003 0x0638 0x0a5e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision IT8300
+libusbscanner 0x0003 0x0638 0x0a61 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV3750SU
+libusbscanner 0x0003 0x0638 0x0a65 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV3850SU
+libusbscanner 0x0003 0x0638 0x0a66 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV8350
+libusbscanner 0x0003 0x0638 0x0a68 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision FB6080E
+libusbscanner 0x0003 0x0638 0x0a82 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision FB2080E
+libusbscanner 0x0003 0x0638 0x0a84 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV122 C2
+libusbscanner 0x0003 0x0638 0x0a93 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV220-G
+libusbscanner 0x0003 0x0638 0x0a94 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision @V2500
+libusbscanner 0x0003 0x0638 0x0aa1 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV210D2+
+libusbscanner 0x0003 0x0638 0x1a35 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Minolta Elite II
+libusbscanner 0x0003 0x0686 0x4004 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Minolta Dimage Scan Dual III
+libusbscanner 0x0003 0x0686 0x400d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Minolta Dimage Scan Elite 5400
+libusbscanner 0x0003 0x0686 0x400e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan 1212U
+libusbscanner 0x0003 0x06bd 0x0001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan 1236u
+libusbscanner 0x0003 0x06bd 0x0002 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Agfa Snapscan Touch
+libusbscanner 0x0003 0x06bd 0x0100 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan 1212U_2
+libusbscanner 0x0003 0x06bd 0x2061 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan e40
+libusbscanner 0x0003 0x06bd 0x208d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan e50
+libusbscanner 0x0003 0x06bd 0x208f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan e20
+libusbscanner 0x0003 0x06bd 0x2091 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan e10
+libusbscanner 0x0003 0x06bd 0x2093 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan e25
+libusbscanner 0x0003 0x06bd 0x2095 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan e26
+libusbscanner 0x0003 0x06bd 0x2097 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan e52
+libusbscanner 0x0003 0x06bd 0x20fd 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan e42
+libusbscanner 0x0003 0x06bd 0x20ff 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# UMAX Astra 4900
+libusbscanner 0x0003 0x06dc 0x0020 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro U12 | Plustek OpticPro UT12 | Plustek OpticPro 1212U | RevScan RevScan Orange R48Ti | Genius ColorPage Vivid III USB
+libusbscanner 0x0003 0x07b3 0x0001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro U12
+libusbscanner 0x0003 0x07b3 0x0010 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro U24
+libusbscanner 0x0003 0x07b3 0x0011 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro UT12
+libusbscanner 0x0003 0x07b3 0x0013 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro U24
+libusbscanner 0x0003 0x07b3 0x0015 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro UT12 | Plustek OpticPro UT16 | Plustek OpticPro UT24
+libusbscanner 0x0003 0x07b3 0x0017 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro 1248U | RevScan 19200i
+libusbscanner 0x0003 0x07b3 0x0400 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro 1248U
+libusbscanner 0x0003 0x07b3 0x0401 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro U16B
+libusbscanner 0x0003 0x07b3 0x0402 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro U16B+ | Plustek OpticPro UT16B
+libusbscanner 0x0003 0x07b3 0x0403 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Nortek MyScan 1200 | Plustek OpticPro S12 | Plustek OpticPro ST12
+libusbscanner 0x0003 0x07b3 0x040b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro S24
+libusbscanner 0x0003 0x07b3 0x040e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# NeatReceipts Scanalizer Professional 2.5 | Plustek OpticSlim M12
+libusbscanner 0x0003 0x07b3 0x0412 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticSlim 1200
+libusbscanner 0x0003 0x07b3 0x0413 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticSlim 2400
+libusbscanner 0x0003 0x07b3 0x0422 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticSlim 2400 plus
+libusbscanner 0x0003 0x07b3 0x0454 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek Iriscan Express 2
+libusbscanner 0x0003 0x07b3 0x045f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# NeatReceipts Mobile Scanner
+libusbscanner 0x0003 0x07b3 0x0462 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticBook 3600
+libusbscanner 0x0003 0x07b3 0x0900 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Corex 600c
+libusbscanner 0x0003 0x08f0 0x0002 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Corex 800c
+libusbscanner 0x0003 0x08f0 0x0005 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox Phaser 6110MFP
+libusbscanner 0x0003 0x0924 0x3d5d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox Phaser 3200MFP
+libusbscanner 0x0003 0x0924 0x3da4 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox WorkCentre 4118 Series
+libusbscanner 0x0003 0x0924 0x420c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox WorkCentre 3119 Series
+libusbscanner 0x0003 0x0924 0x4265 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox WorkCentre 3210
+libusbscanner 0x0003 0x0924 0x4293 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox WorkCentre 3220
+libusbscanner 0x0003 0x0924 0x4294 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Pentax DSmobile 600
+libusbscanner 0x0003 0x0a17 0x3210 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Portable Peripheral Co., Ltd. Q-Scan USB001 (A4 portable scanner)
+libusbscanner 0x0003 0x0a53 0x1000 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Syscan TravelScan 460/464 | Ambir Visigo A4
+libusbscanner 0x0003 0x0a82 0x4600 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Syscan DocketPort 465
+libusbscanner 0x0003 0x0a82 0x4802 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Syscan DocketPort 665
+libusbscanner 0x0003 0x0a82 0x4803 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Syscan DocketPort 685/ Ambir DS685
+libusbscanner 0x0003 0x0a82 0x480c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Syscan DocketPort 485
+libusbscanner 0x0003 0x0a82 0x4810 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Syscan TravelScan 662
+libusbscanner 0x0003 0x0a82 0x6620 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CR-55
+libusbscanner 0x0003 0x1083 0x160c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-1210C
+libusbscanner 0x0003 0x1083 0x160f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-4010C
+libusbscanner 0x0003 0x1083 0x1614 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-2510C
+libusbscanner 0x0003 0x1083 0x1617 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-X10C
+libusbscanner 0x0003 0x1083 0x1618 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CR-25
+libusbscanner 0x0003 0x1083 0x161a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-2010C
+libusbscanner 0x0003 0x1083 0x161b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-3010C
+libusbscanner 0x0003 0x1083 0x161d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-7090C
+libusbscanner 0x0003 0x1083 0x1620 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-9050C
+libusbscanner 0x0003 0x1083 0x1622 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-7550C
+libusbscanner 0x0003 0x1083 0x1623 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-6050C
+libusbscanner 0x0003 0x1083 0x1624 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-6010C
+libusbscanner 0x0003 0x1083 0x1626 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CR-190i
+libusbscanner 0x0003 0x1083 0x162b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-6030C
+libusbscanner 0x0003 0x1083 0x1638 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CR-135i
+libusbscanner 0x0003 0x1083 0x1639 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Digital Dream l' espion XS
+libusbscanner 0x0003 0x1183 0x0001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# KONICA MINOLTA magicolor 1690MF
+libusbscanner 0x0003 0x132b 0x2089 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# UMAX Astra 1220U
+libusbscanner 0x0003 0x1606 0x0010 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# UMAX Astra 1600U | UMAX Astra 2000U
+libusbscanner 0x0003 0x1606 0x0030 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Umax UMAX 3400
+libusbscanner 0x0003 0x1606 0x0050 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Umax UMAX 3400 | Umax UMAX Astranet ia101 | Umax UMAX 3450
+libusbscanner 0x0003 0x1606 0x0060 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# UMAX Astra 4400 | UMAX Astra 4450
+libusbscanner 0x0003 0x1606 0x0070 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# UMAX Astra 2100U
+libusbscanner 0x0003 0x1606 0x0130 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Umax UMAX 5400
+libusbscanner 0x0003 0x1606 0x0160 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# UMAX Astra 2200 (SU)
+libusbscanner 0x0003 0x1606 0x0230 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# DCT DocketPort 487
+libusbscanner 0x0003 0x1dcc 0x4810 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Dell A920
+libusbscanner 0x0003 0x413c 0x5105 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Dell Dell MFP Laser Printer 1815dn
+libusbscanner 0x0003 0x413c 0x5124 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Dell 1600n
+libusbscanner 0x0003 0x413c 0x5250 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
--- /dev/null
+# This file was automatically created based on description files (*.desc)
+# by sane-desc 3.5 from sane-backends 1.0.22 on Sun Jan 29 13:39:48 2012
+#
+# The entries below are used to detect a USB device and change owner
+# and permissions on the "device node" used by libusb.
+#
+# The 0x0003 match flag means the device is matched by its vendor and
+# product IDs.
+#
+# Sample entry (replace 0xVVVV and 0xPPPP with vendor ID and product ID
+# respectively):
+#
+# libusbscanner 0x0003 0xVVVV 0xPPPP 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# usb module match_flags idVendor idProduct bcdDevice_lo bcdDevice_hi bDeviceClass bDeviceSubClass bDeviceProtocol bInterfaceClass bInterfaceSubClass bInterfaceProtocol driver_info
+#
+# If your scanner isn't listed below, you can add it as explained above.
+#
+# If your scanner is supported by some external backend (brother, epkowa,
+# hpaio, etc) please ask the author of the backend to provide proper
+# device detection support for your OS
+#
+# If the scanner is supported by sane-backends, please mail the entry to
+# the sane-devel mailing list (sane-devel@lists.alioth.debian.org).
+#
+# Hewlett-Packard ScanJet 4100C
+libusbscanner 0x0003 0x03f0 0x0101 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 4200C | Hewlett-Packard ScanJet 4200Cxi | Hewlett-Packard ScanJet 4200Cse
+libusbscanner 0x0003 0x03f0 0x0105 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 6200C | Hewlett-Packard ScanJet 6250C
+libusbscanner 0x0003 0x03f0 0x0201 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 3300c
+libusbscanner 0x0003 0x03f0 0x0205 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 4300c
+libusbscanner 0x0003 0x03f0 0x0305 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 5200C
+libusbscanner 0x0003 0x03f0 0x0401 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 3400c
+libusbscanner 0x0003 0x03f0 0x0405 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 2100C
+libusbscanner 0x0003 0x03f0 0x0505 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 6300C | Hewlett-Packard ScanJet 6350C | Hewlett-Packard ScanJet 6390C
+libusbscanner 0x0003 0x03f0 0x0601 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 2200C
+libusbscanner 0x0003 0x03f0 0x0605 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 5300C | Hewlett-Packard ScanJet 5370C
+libusbscanner 0x0003 0x03f0 0x0701 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard scanjet 4400c
+libusbscanner 0x0003 0x03f0 0x0705 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 7400c | Hewlett-Packard ScanJet 7450c | Hewlett-Packard ScanJet 7490c
+libusbscanner 0x0003 0x03f0 0x0801 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard scanjet 4470c
+libusbscanner 0x0003 0x03f0 0x0805 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 2300C
+libusbscanner 0x0003 0x03f0 0x0901 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 2400C | Hewlett-Packard ScanJet G2410
+libusbscanner 0x0003 0x03f0 0x0a01 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 8200 | Hewlett-Packard ScanJet 8250 | Hewlett-Packard ScanJet 8290 | Hewlett Packard ScanJet 8200
+libusbscanner 0x0003 0x03f0 0x0b01 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 5400c
+libusbscanner 0x0003 0x03f0 0x1005 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 5470c
+libusbscanner 0x0003 0x03f0 0x1105 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 4500C | Hewlett-Packard ScanJet 5550C
+libusbscanner 0x0003 0x03f0 0x1205 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 4570C | Hewlett-Packard ScanJet 5500C
+libusbscanner 0x0003 0x03f0 0x1305 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 3670C | Hewlett-Packard ScanJet 3690C
+libusbscanner 0x0003 0x03f0 0x1405 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 5590
+libusbscanner 0x0003 0x03f0 0x1705 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 7650
+libusbscanner 0x0003 0x03f0 0x1805 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 3530C | Hewlett-Packard ScanJet 3570C
+libusbscanner 0x0003 0x03f0 0x2005 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 3500C
+libusbscanner 0x0003 0x03f0 0x2205 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 3970c
+libusbscanner 0x0003 0x03f0 0x2305 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 4070 Photosmart
+libusbscanner 0x0003 0x03f0 0x2405 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett Packard ScanJet 3770
+libusbscanner 0x0003 0x03f0 0x2505 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 3800
+libusbscanner 0x0003 0x03f0 0x2605 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet G2710
+libusbscanner 0x0003 0x03f0 0x2805 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 8300 | Hewlett-Packard ScanJet 8350 | Hewlett-Packard ScanJet 8390
+libusbscanner 0x0003 0x03f0 0x3805 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 8270
+libusbscanner 0x0003 0x03f0 0x3905 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard LaserJet M1005 MFP
+libusbscanner 0x0003 0x03f0 0x3b17 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 4370
+libusbscanner 0x0003 0x03f0 0x4105 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet G3010
+libusbscanner 0x0003 0x03f0 0x4205 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet G3110
+libusbscanner 0x0003 0x03f0 0x4305 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet G4010
+libusbscanner 0x0003 0x03f0 0x4505 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet G4050
+libusbscanner 0x0003 0x03f0 0x4605 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard LaserJet M1120 MFP
+libusbscanner 0x0003 0x03f0 0x5617 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard LaserJet M1120n MFP
+libusbscanner 0x0003 0x03f0 0x5717 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 1200
+libusbscanner 0x0003 0x0400 0x1000 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 1200 | Mustek BearPaw 2400
+libusbscanner 0x0003 0x0400 0x1001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Kodak i30
+libusbscanner 0x0003 0x040a 0x6001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Kodak i40
+libusbscanner 0x0003 0x040a 0x6002 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Kodak i50 | Kodak i55
+libusbscanner 0x0003 0x040a 0x6003 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Kodak i60 | Kodak i65
+libusbscanner 0x0003 0x040a 0x6004 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Kodak i80
+libusbscanner 0x0003 0x040a 0x6005 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Creative WebCam Go Mini
+libusbscanner 0x0003 0x041e 0x4007 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Lexmark X70 | Lexmark X73
+libusbscanner 0x0003 0x043d 0x002d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Lexmark X74
+libusbscanner 0x0003 0x043d 0x0060 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Lexmark X1110 | Lexmark X1130 | Lexmark X1140 | Lexmark X1150 | Lexmark X1170 | Lexmark X1180 | Lexmark X1185 | Lexmark X1195
+libusbscanner 0x0003 0x043d 0x007c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Lexmark X12xx
+libusbscanner 0x0003 0x043d 0x007d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Vivid Pro USB
+libusbscanner 0x0003 0x0458 0x2001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius ColorPage HR6 V1
+libusbscanner 0x0003 0x0458 0x2004 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage HR6 V2
+libusbscanner 0x0003 0x0458 0x2007 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage HR6 V2
+libusbscanner 0x0003 0x0458 0x2008 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage HR6A
+libusbscanner 0x0003 0x0458 0x2009 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage Vivid3x | Genius Colorpage Vivid3 V2
+libusbscanner 0x0003 0x0458 0x2011 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage HR7
+libusbscanner 0x0003 0x0458 0x2013 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage Vivid4
+libusbscanner 0x0003 0x0458 0x2014 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage HR7LE
+libusbscanner 0x0003 0x0458 0x2015 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage HR6X
+libusbscanner 0x0003 0x0458 0x2016 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage Vivid3xe
+libusbscanner 0x0003 0x0458 0x2017 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage Vivid4xe
+libusbscanner 0x0003 0x0458 0x201a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage Vivid4x
+libusbscanner 0x0003 0x0458 0x201b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage Vivid 1200 X
+libusbscanner 0x0003 0x0458 0x201d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius ColorPage Slim 1200
+libusbscanner 0x0003 0x0458 0x201e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage Vivid 1200 XE
+libusbscanner 0x0003 0x0458 0x201f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Genius Colorpage SF600
+libusbscanner 0x0003 0x0458 0x2021 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Primax Colorado 2400U
+libusbscanner 0x0003 0x0461 0x0346 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Primax Colorado USB 19200
+libusbscanner 0x0003 0x0461 0x0360 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Primax Colorado 2200 USB | LG Electronics Scanworks 600U
+libusbscanner 0x0003 0x0461 0x0364 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Medion/Lifetec/Tevion/Cytron MD5345 | Medion/Lifetec/Tevion/Cytron MD6228 | Medion/Lifetec/Tevion/Cytron MD6471
+libusbscanner 0x0003 0x0461 0x0377 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Trust Office Scan USB 19200
+libusbscanner 0x0003 0x047b 0x1000 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Hewlett-Packard ScanJet 4300c/Silitek
+libusbscanner 0x0003 0x047b 0x1002 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Kyocera FS-1016MFP
+libusbscanner 0x0003 0x0482 0x0335 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Compaq S4-100
+libusbscanner 0x0003 0x049f 0x001a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 310U
+libusbscanner 0x0003 0x04a5 0x1a20 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 620U
+libusbscanner 0x0003 0x04a5 0x1a2a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 320U | Benq (Acer) 340U | Mitsubishi Diamondview 648UT
+libusbscanner 0x0003 0x04a5 0x2022 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 620UT
+libusbscanner 0x0003 0x04a5 0x2040 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 640U | Guillemot / Hercules Maxi Scan A4 USB 640U | Guillemot / Hercules Maxi A4 36 bit
+libusbscanner 0x0003 0x04a5 0x2060 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 640bu
+libusbscanner 0x0003 0x04a5 0x207e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 3300 | Benq (Acer) 4300 | Mitsubishi Diamondview 650U
+libusbscanner 0x0003 0x04a5 0x20b0 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 640BT
+libusbscanner 0x0003 0x04a5 0x20be 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 1240
+libusbscanner 0x0003 0x04a5 0x20c0 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 3300 | Benq (Acer) 4300 | Guillemot / Hercules Scan@home Touch 1248 (USB)
+libusbscanner 0x0003 0x04a5 0x20de 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 5000
+libusbscanner 0x0003 0x04a5 0x20f8 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 5000E | Benq (Acer) 5000U
+libusbscanner 0x0003 0x04a5 0x20fc 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 5300
+libusbscanner 0x0003 0x04a5 0x20fe 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Benq (Acer) 5150 | Benq (Acer) 5250
+libusbscanner 0x0003 0x04a5 0x2137 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# BenQ 5550
+libusbscanner 0x0003 0x04a5 0x2211 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer OneTouch 7600
+libusbscanner 0x0003 0x04a7 0x0211 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Visioneer OneTouch 7100
+libusbscanner 0x0003 0x04a7 0x0229 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer OneTouch 6100
+libusbscanner 0x0003 0x04a7 0x0231 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer OneTouch 8600
+libusbscanner 0x0003 0x04a7 0x0331 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer 9650
+libusbscanner 0x0003 0x04a7 0x0390 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer 9320
+libusbscanner 0x0003 0x04a7 0x0420 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer 9450
+libusbscanner 0x0003 0x04a7 0x0421 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer 9550
+libusbscanner 0x0003 0x04a7 0x0422 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer 9750
+libusbscanner 0x0003 0x04a7 0x0423 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Strobe XP 450
+libusbscanner 0x0003 0x04a7 0x0424 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Strobe XP 200
+libusbscanner 0x0003 0x04a7 0x0426 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Strobe XP 100
+libusbscanner 0x0003 0x04a7 0x0427 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer OneTouch 7300
+libusbscanner 0x0003 0x04a7 0x0444 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate510
+libusbscanner 0x0003 0x04a7 0x0446 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate520
+libusbscanner 0x0003 0x04a7 0x0447 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate250
+libusbscanner 0x0003 0x04a7 0x0448 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate252
+libusbscanner 0x0003 0x04a7 0x0449 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate262
+libusbscanner 0x0003 0x04a7 0x044c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Strobe XP 300
+libusbscanner 0x0003 0x04a7 0x0474 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate272
+libusbscanner 0x0003 0x04a7 0x0475 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate152
+libusbscanner 0x0003 0x04a7 0x0477 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate752
+libusbscanner 0x0003 0x04a7 0x0478 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Strobe XP 470
+libusbscanner 0x0003 0x04a7 0x0479 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer 9450-G
+libusbscanner 0x0003 0x04a7 0x047a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer 9650-G
+libusbscanner 0x0003 0x04a7 0x047b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate510-G
+libusbscanner 0x0003 0x04a7 0x047c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate252-G
+libusbscanner 0x0003 0x04a7 0x048c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate262-G
+libusbscanner 0x0003 0x04a7 0x048d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate272-G
+libusbscanner 0x0003 0x04a7 0x048e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Strobe XP 470-G | Visioneer Patriot 470
+libusbscanner 0x0003 0x04a7 0x048f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate250-G
+libusbscanner 0x0003 0x04a7 0x0490 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Strobe XP 450-G
+libusbscanner 0x0003 0x04a7 0x0491 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate520-G
+libusbscanner 0x0003 0x04a7 0x0492 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer 9750-G
+libusbscanner 0x0003 0x04a7 0x0493 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Roadwarrior
+libusbscanner 0x0003 0x04a7 0x0494 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate512
+libusbscanner 0x0003 0x04a7 0x0495 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Patriot 430
+libusbscanner 0x0003 0x04a7 0x0497 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Patriot 680 | Xerox DocuMate632
+libusbscanner 0x0003 0x04a7 0x0498 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Patriot 780
+libusbscanner 0x0003 0x04a7 0x0499 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate752
+libusbscanner 0x0003 0x04a7 0x049a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Visioneer Strobe XP 100,r3
+libusbscanner 0x0003 0x04a7 0x049b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate150
+libusbscanner 0x0003 0x04a7 0x049c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate162
+libusbscanner 0x0003 0x04a7 0x049d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox DocuMate262i
+libusbscanner 0x0003 0x04a7 0x04a7 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox Travel Scanner 100
+libusbscanner 0x0003 0x04a7 0x04ac 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-2080C
+libusbscanner 0x0003 0x04a9 0x1601 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CR-180 | Canon CR-180II
+libusbscanner 0x0003 0x04a9 0x1602 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-9080C
+libusbscanner 0x0003 0x04a9 0x1603 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-7080C
+libusbscanner 0x0003 0x04a9 0x1604 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-5010C
+libusbscanner 0x0003 0x04a9 0x1606 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-6080
+libusbscanner 0x0003 0x04a9 0x1607 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-2580C
+libusbscanner 0x0003 0x04a9 0x1608 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-3080CII
+libusbscanner 0x0003 0x04a9 0x1609 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-2050C | Canon DR-2050SP
+libusbscanner 0x0003 0x04a9 0x160a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-7580
+libusbscanner 0x0003 0x04a9 0x160b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP750
+libusbscanner 0x0003 0x04a9 0x1706 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP780
+libusbscanner 0x0003 0x04a9 0x1707 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP760
+libusbscanner 0x0003 0x04a9 0x1708 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP150
+libusbscanner 0x0003 0x04a9 0x1709 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP170
+libusbscanner 0x0003 0x04a9 0x170a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP450
+libusbscanner 0x0003 0x04a9 0x170b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP500
+libusbscanner 0x0003 0x04a9 0x170c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP800
+libusbscanner 0x0003 0x04a9 0x170d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP800R
+libusbscanner 0x0003 0x04a9 0x170e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP530
+libusbscanner 0x0003 0x04a9 0x1712 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP830
+libusbscanner 0x0003 0x04a9 0x1713 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon MP160 | Canon PIXMA MP160
+libusbscanner 0x0003 0x04a9 0x1714 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP180
+libusbscanner 0x0003 0x04a9 0x1715 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP460
+libusbscanner 0x0003 0x04a9 0x1716 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon MP510 | Canon PIXMA MP510
+libusbscanner 0x0003 0x04a9 0x1717 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon MP600 | Canon PIXMA MP600
+libusbscanner 0x0003 0x04a9 0x1718 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP600R
+libusbscanner 0x0003 0x04a9 0x1719 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP810
+libusbscanner 0x0003 0x04a9 0x171a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP960
+libusbscanner 0x0003 0x04a9 0x171b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX7600
+libusbscanner 0x0003 0x04a9 0x171c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon MP210 | Canon PIXMA MP210
+libusbscanner 0x0003 0x04a9 0x1721 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP220
+libusbscanner 0x0003 0x04a9 0x1722 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP470
+libusbscanner 0x0003 0x04a9 0x1723 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon MP520 | Canon PIXMA MP520
+libusbscanner 0x0003 0x04a9 0x1724 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon MP610 | Canon PIXMA MP610
+libusbscanner 0x0003 0x04a9 0x1725 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP970
+libusbscanner 0x0003 0x04a9 0x1726 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX300
+libusbscanner 0x0003 0x04a9 0x1727 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX310
+libusbscanner 0x0003 0x04a9 0x1728 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX700
+libusbscanner 0x0003 0x04a9 0x1729 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon MP140 | Canon PIXMA MP140
+libusbscanner 0x0003 0x04a9 0x172b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX850
+libusbscanner 0x0003 0x04a9 0x172c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP980
+libusbscanner 0x0003 0x04a9 0x172d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP630
+libusbscanner 0x0003 0x04a9 0x172e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP620
+libusbscanner 0x0003 0x04a9 0x172f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP540
+libusbscanner 0x0003 0x04a9 0x1730 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP480
+libusbscanner 0x0003 0x04a9 0x1731 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP240
+libusbscanner 0x0003 0x04a9 0x1732 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP260
+libusbscanner 0x0003 0x04a9 0x1733 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP190
+libusbscanner 0x0003 0x04a9 0x1734 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX860
+libusbscanner 0x0003 0x04a9 0x1735 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX320
+libusbscanner 0x0003 0x04a9 0x1736 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX330
+libusbscanner 0x0003 0x04a9 0x1737 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP250
+libusbscanner 0x0003 0x04a9 0x173a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP270
+libusbscanner 0x0003 0x04a9 0x173b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP490
+libusbscanner 0x0003 0x04a9 0x173c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP550
+libusbscanner 0x0003 0x04a9 0x173d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP560
+libusbscanner 0x0003 0x04a9 0x173e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP640
+libusbscanner 0x0003 0x04a9 0x173f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP990
+libusbscanner 0x0003 0x04a9 0x1740 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX340
+libusbscanner 0x0003 0x04a9 0x1741 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX350
+libusbscanner 0x0003 0x04a9 0x1742 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MX870
+libusbscanner 0x0003 0x04a9 0x1743 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan 8800F
+libusbscanner 0x0003 0x04a9 0x1901 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan LiDE 100
+libusbscanner 0x0003 0x04a9 0x1904 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan LiDE 200
+libusbscanner 0x0003 0x04a9 0x1905 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan LiDE 110
+libusbscanner 0x0003 0x04a9 0x1909 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan LiDE 210
+libusbscanner 0x0003 0x04a9 0x190a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan fb630u | Canon CanoScan fb636u
+libusbscanner 0x0003 0x04a9 0x2204 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan N650U/N656U
+libusbscanner 0x0003 0x04a9 0x2206 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan N1220U
+libusbscanner 0x0003 0x04a9 0x2207 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan D660U
+libusbscanner 0x0003 0x04a9 0x2208 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan N670U/N676U/LiDE20
+libusbscanner 0x0003 0x04a9 0x220d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan N1240U/LiDE30
+libusbscanner 0x0003 0x04a9 0x220e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan LiDE 35 | Canon CanoScan LiDE 40 | Canon CanoScan LiDE 50
+libusbscanner 0x0003 0x04a9 0x2213 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan 3200F
+libusbscanner 0x0003 0x04a9 0x2216 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan LiDE 60
+libusbscanner 0x0003 0x04a9 0x221c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CanoScan LiDE25
+libusbscanner 0x0003 0x04a9 0x2220 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-1210C
+libusbscanner 0x0003 0x04a9 0x2222 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP730
+libusbscanner 0x0003 0x04a9 0x262f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP700
+libusbscanner 0x0003 0x04a9 0x2630 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP360
+libusbscanner 0x0003 0x04a9 0x263c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP370
+libusbscanner 0x0003 0x04a9 0x263d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP390
+libusbscanner 0x0003 0x04a9 0x263e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP375R
+libusbscanner 0x0003 0x04a9 0x263f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP740
+libusbscanner 0x0003 0x04a9 0x264c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon PIXMA MP710
+libusbscanner 0x0003 0x04a9 0x264d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF5630
+libusbscanner 0x0003 0x04a9 0x264e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon laserBase MF5650
+libusbscanner 0x0003 0x04a9 0x264f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF8170c
+libusbscanner 0x0003 0x04a9 0x2659 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF5730
+libusbscanner 0x0003 0x04a9 0x265d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF5750
+libusbscanner 0x0003 0x04a9 0x265e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF5770
+libusbscanner 0x0003 0x04a9 0x265f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF3110
+libusbscanner 0x0003 0x04a9 0x2660 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF3240
+libusbscanner 0x0003 0x04a9 0x2684 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF6500 series
+libusbscanner 0x0003 0x04a9 0x2686 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF4120 | Canon imageCLASS MF4122 | Canon imageCLASS MF4140 | Canon imageCLASS MF4150
+libusbscanner 0x0003 0x04a9 0x26a3 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF4690
+libusbscanner 0x0003 0x04a9 0x26b0 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF4010 | Canon imageCLASS MF4018
+libusbscanner 0x0003 0x04a9 0x26b4 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF4270
+libusbscanner 0x0003 0x04a9 0x26b5 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS MF4370dn | Canon imageCLASS MF4380dn
+libusbscanner 0x0003 0x04a9 0x26ec 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon imageCLASS D480
+libusbscanner 0x0003 0x04a9 0x26ed 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon I-SENSYS MF4320d | Canon I-SENSYS MF4330d | Canon imageCLASS MF4350d
+libusbscanner 0x0003 0x04a9 0x26ee 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Nikon LS 40 ED | Nikon LS 40 ED | Nikon Coolspan IV
+libusbscanner 0x0003 0x04b0 0x4000 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Nikon LS 50 ED | Nikon Coolscan V ED | Nikon LS 50 ED | Nikon Coolscan V ED
+libusbscanner 0x0003 0x04b0 0x4001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Nikon Super Coolscan LS-5000 ED | Nikon Super Coolscan LS-5000 ED
+libusbscanner 0x0003 0x04b0 0x4002 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-7000U | EPSON Perfection 636U | Epson Perfection 636U | Epson GT-7000U | Epson Perfection 636U
+libusbscanner 0x0003 0x04b8 0x0101 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-6600U | EPSON Perfection 610 | Epson Perfection 610 | Epson GT-6600U | Epson Perfection 610
+libusbscanner 0x0003 0x04b8 0x0103 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-7600U | EPSON GT-7600UF | EPSON Perfection 1200U | EPSON Perfection 1200U PHOTO | Epson Perfection 1200U | Epson Perfection 1200Photo | Epson GT-7600U | Epson GT-7600UF | Epson Perfection 1200U | Epson Perfection 1200U PHOTO
+libusbscanner 0x0003 0x04b8 0x0104 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus Scan 2000 | Epson Stylus Scan 2000
+libusbscanner 0x0003 0x04b8 0x0105 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus Scan 2500 | Epson Stylus Scan 2500
+libusbscanner 0x0003 0x04b8 0x0106 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-2000 | EPSON Expression 1600 | Epson Expression 1600 | Epson ES-2000 | Epson Expression 1600
+libusbscanner 0x0003 0x04b8 0x0107 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-8500 | EPSON Expression 1640XL | Epson ES-8500 | Epson Expression 1640XL
+libusbscanner 0x0003 0x04b8 0x0109 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-8700 | EPSON GT-8700F | EPSON Perfection 1640SU | EPSON Perfection 1640SU PHOTO | Epson Perfection 1640 | Epson GT-8700 | Epson GT-8700F | Epson Perfection 1640SU | Epson Perfection 1640SU PHOTO
+libusbscanner 0x0003 0x04b8 0x010a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-7700U | EPSON Perfection 1240U | Epson Perfection 1240 | Epson GT-7700U | Epson Perfection 1240U
+libusbscanner 0x0003 0x04b8 0x010b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-6700U | EPSON Perfection 640U | Epson Perfection 640 | Epson GT-6700U | Epson Perfection 640U
+libusbscanner 0x0003 0x04b8 0x010c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-2200 | EPSON Expression 1680 | Epson Expression 1680 | Epson ES-2200 | Epson Expression 1680
+libusbscanner 0x0003 0x04b8 0x010e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-7200U | EPSON Perfection 1250 | EPSON Perfection 1250 PHOTO | Epson Perfection 1250 | Epson Perfection 1250Photo
+libusbscanner 0x0003 0x04b8 0x010f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-8200U | EPSON GT-8200UF | EPSON Perfection 1650 | EPSON Perfection 1650 PHOTO | Epson Perfection 1650 | Epson GT-8200U | Epson GT-8200UF | Epson Perfection 1650 | Epson Perfection 1650 PHOTO
+libusbscanner 0x0003 0x04b8 0x0110 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-9700F | EPSON Perfection 2450 PHOTO | Epson Perfection 2450 | Epson GT-9700F | Epson Perfection 2450 PHOTO
+libusbscanner 0x0003 0x04b8 0x0112 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Epson Perfection 660
+libusbscanner 0x0003 0x04b8 0x0114 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-9400UF | EPSON Perfection 3170 PHOTO
+libusbscanner 0x0003 0x04b8 0x0116 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-F600 | EPSON Perfection 4180 PHOTO
+libusbscanner 0x0003 0x04b8 0x0118 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-X750 | EPSON Perfection 4490 PHOTO
+libusbscanner 0x0003 0x04b8 0x0119 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-9300UF | EPSON Perfection 2400 PHOTO | Epson Perfection 2400 | Epson GT-9300UF | Epson Perfection 2400 PHOTO
+libusbscanner 0x0003 0x04b8 0x011b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-9800F | EPSON Perfection 3200 PHOTO | Epson Perfection 3200 | Epson GT-9800F | Epson Perfection 3200 PHOTO
+libusbscanner 0x0003 0x04b8 0x011c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-7300U | EPSON Perfection 1260 | EPSON Perfection 1260 PHOTO | Epson Perfection 1260 | Epson Perfection 1260Photo
+libusbscanner 0x0003 0x04b8 0x011d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-8300UF | EPSON Perfection 1660 PHOTO | Epson Perfection 1660 | Epson GT-8300UF | Epson Perfection 1660 PHOTO
+libusbscanner 0x0003 0x04b8 0x011e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Epson Perfection 1670
+libusbscanner 0x0003 0x04b8 0x011f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Epson Perfection 1270
+libusbscanner 0x0003 0x04b8 0x0120 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-F500 | EPSON GT-F550 | EPSON Perfection 2480 PHOTO | EPSON Perfection 2580 PHOTO | Epson Perfection 2480 | Epson Perfection 2580
+libusbscanner 0x0003 0x04b8 0x0121 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-F520 | EPSON GT-F570 | EPSON Perfection 3490 PHOTO | EPSON Perfection 3590 PHOTO | Epson Perfection 3490 | Epson Perfection 3590
+libusbscanner 0x0003 0x04b8 0x0122 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-7000H | EPSON GT-15000 | Epson ES-7000H | Epson GT-15000
+libusbscanner 0x0003 0x04b8 0x0126 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-X700 | EPSON Perfection 4870 PHOTO | Epson Perfection 4870 | Epson GT-X700 | Epson Perfection 4870 PHOTO
+libusbscanner 0x0003 0x04b8 0x0128 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-10000G | EPSON Expression 10000XL | Epson ES-10000G | Epson Expression 10000XL
+libusbscanner 0x0003 0x04b8 0x0129 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-X800 | EPSON Perfection 4990 PHOTO | Epson Perfection 4990 | Epson GT-X800 | Epson Perfection 4990 PHOTO
+libusbscanner 0x0003 0x04b8 0x012a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-H300 | EPSON GT-2500 | Epson ES-H300 | Epson GT-2500
+libusbscanner 0x0003 0x04b8 0x012b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-X900 | EPSON Perfection V700 Photo | EPSON Perfection V750 Photo | Epson V700 | Epson V750 | Epson GT-X900 | Epson Perfection V700 Photo | Epson Perfection V750 Photo
+libusbscanner 0x0003 0x04b8 0x012c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-F650 | EPSON GT-S600 | EPSON Perfection V10 | EPSON Perfection V100 Photo
+libusbscanner 0x0003 0x04b8 0x012d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-F670 | EPSON Perfection V200 Photo
+libusbscanner 0x0003 0x04b8 0x012e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-F700 | EPSON Perfection V350 Photo
+libusbscanner 0x0003 0x04b8 0x012f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-X770 | EPSON Perfection V500 Photo
+libusbscanner 0x0003 0x04b8 0x0130 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-F720 | EPSON GT-S620 | EPSON Perfection V30 | EPSON Perfection V300 Photo
+libusbscanner 0x0003 0x04b8 0x0131 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-1500 | EPSON GT-D1000
+libusbscanner 0x0003 0x04b8 0x0133 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-X970 | Epson GT-X970
+libusbscanner 0x0003 0x04b8 0x0135 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-D400 | EPSON GT-S80
+libusbscanner 0x0003 0x04b8 0x0136 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-D200 | EPSON GT-S50
+libusbscanner 0x0003 0x04b8 0x0137 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ES-H7200 | EPSON GT-20000
+libusbscanner 0x0003 0x04b8 0x0138 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-X820 | EPSON Perfection V600 Photo
+libusbscanner 0x0003 0x04b8 0x013a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON GT-F730 | EPSON GT-S630 | EPSON Perfection V33 | EPSON Perfection V330 Photo
+libusbscanner 0x0003 0x04b8 0x0142 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON CC-600PX | EPSON Stylus CX5100 | EPSON Stylus CX5200 | Epson CX-5200 | Epson CX-5400 | Epson CC-600PX | Epson Stylus CX5100 | Epson Stylus CX5200
+libusbscanner 0x0003 0x04b8 0x0801 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON CC-570L | EPSON Stylus CX3100 | EPSON Stylus CX3200 | Epson CX-3200 | Epson CC-570L | Epson Stylus CX3100 | Epson Stylus CX3200
+libusbscanner 0x0003 0x04b8 0x0802 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX6300 | EPSON Stylus CX6400 | Epson CX-6300 | Epson CX-6400 | Epson Stylus CX6300 | Epson Stylus CX6400
+libusbscanner 0x0003 0x04b8 0x0805 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A850 | EPSON Stylus Photo RX600 | Epson RX-600 | Epson PM-A850 | Epson Stylus Photo RX600
+libusbscanner 0x0003 0x04b8 0x0806 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus Photo RX500 | EPSON Stylus Photo RX510 | Epson RX-500 | Epson Stylus Photo RX500 | Epson Stylus Photo RX510
+libusbscanner 0x0003 0x04b8 0x0807 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX5300 | EPSON Stylus CX5400 | Epson CX-5400 | Epson Stylus CX5300 | Epson Stylus CX5400
+libusbscanner 0x0003 0x04b8 0x0808 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Epson Stylus CX-1500
+libusbscanner 0x0003 0x04b8 0x080c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX4500 | EPSON Stylus CX4600 | Epson CX-4600 | Epson Stylus CX4500 | Epson Stylus CX4600
+libusbscanner 0x0003 0x04b8 0x080d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-A550 | EPSON Stylus CX3500 | EPSON Stylus CX3600 | EPSON Stylus CX3650 | Epson CX-3600 | Epson CX-3650 | Epson PX-A550 | Epson Stylus CX3500 | Epson Stylus CX3600 | Epson Stylus CX3650
+libusbscanner 0x0003 0x04b8 0x080e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus Photo RX420 | EPSON Stylus Photo RX425 | EPSON Stylus Photo RX430 | Epson RX-425 | Epson Stylus Photo RX420 | Epson Stylus Photo RX425 | Epson Stylus Photo RX430
+libusbscanner 0x0003 0x04b8 0x080f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A900 | EPSON Stylus Photo RX700 | Epson RX-700 | Epson PM-A900 | Epson Stylus Photo RX700
+libusbscanner 0x0003 0x04b8 0x0810 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A870 | EPSON Stylus Photo RX620 | EPSON Stylus Photo RX630 | Epson RX-620 | Epson PM-A870 | Epson Stylus Photo RX620 | Epson Stylus Photo RX630
+libusbscanner 0x0003 0x04b8 0x0811 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX6500 | EPSON Stylus CX6600 | Epson CX-6500 | Epson CX-6600 | Epson Stylus CX6500 | Epson Stylus CX6600
+libusbscanner 0x0003 0x04b8 0x0813 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A700 | Epson PM-A700
+libusbscanner 0x0003 0x04b8 0x0814 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON AcuLaser CX11 | EPSON AcuLaser CX11NF | EPSON LP-A500 | Epson AcuLaser CX11 | Epson AcuLaser CX11NF | Epson AcuLaser CX11 | Epson AcuLaser CX11NF | Epson LP-A500
+libusbscanner 0x0003 0x04b8 0x0815 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON LP-M5500 | EPSON LP-M5500F | Epson LP-M5500 | Epson LP-M5500F
+libusbscanner 0x0003 0x04b8 0x0817 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX3700 | EPSON Stylus CX3800 | EPSON Stylus DX3800 | Epson DX-3850 | Epson CX-3700 | Epson CX-3800 | Epson DX-3800 | Epson Stylus CX3700 | Epson Stylus CX3800 | Epson Stylus DX3800
+libusbscanner 0x0003 0x04b8 0x0818 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-A650 | EPSON Stylus CX4700 | EPSON Stylus CX4800 | EPSON Stylus DX4800 | EPSON Stylus DX4850 | Epson CX-4800 | Epson PX-A650 | Epson Stylus CX4700 | Epson Stylus CX4800 | Epson Stylus DX4800 | Epson Stylus DX4850
+libusbscanner 0x0003 0x04b8 0x0819 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A750 | EPSON Stylus Photo RX520 | EPSON Stylus Photo RX530 | Epson PM-A750 | Epson Stylus Photo RX520 | Epson Stylus Photo RX530
+libusbscanner 0x0003 0x04b8 0x081a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A890 | EPSON Stylus Photo RX640 | EPSON Stylus Photo RX650 | Epson PM-A890 | Epson Stylus Photo RX640 | Epson Stylus Photo RX650
+libusbscanner 0x0003 0x04b8 0x081c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A950 | Epson PM-A950
+libusbscanner 0x0003 0x04b8 0x081d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX7700 | EPSON Stylus CX7800 | Epson Stylus CX7700 | Epson Stylus CX7800
+libusbscanner 0x0003 0x04b8 0x081f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX4100 | EPSON Stylus CX4200 | EPSON Stylus DX4200 | Epson CX-4200 | Epson Stylus CX4100 | Epson Stylus CX4200 | Epson Stylus DX4200
+libusbscanner 0x0003 0x04b8 0x0820 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A820 | EPSON Stylus Photo RX560 | EPSON Stylus Photo RX580 | EPSON Stylus Photo RX590 | Epson PM-A820 | Epson Stylus Photo RX560 | Epson Stylus Photo RX580 | Epson Stylus Photo RX590
+libusbscanner 0x0003 0x04b8 0x0827 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A970 | Epson PM-A970
+libusbscanner 0x0003 0x04b8 0x0828 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-T990 | Epson PM-T990
+libusbscanner 0x0003 0x04b8 0x0829 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A920 | Epson PM-A920
+libusbscanner 0x0003 0x04b8 0x082a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX4900 | EPSON Stylus CX5000 | EPSON Stylus DX5000 | Epson CX-5000 | Epson DX-5000 | Epson DX-5050 | Epson Stylus CX4900 | Epson Stylus CX5000 | Epson Stylus DX5000
+libusbscanner 0x0003 0x04b8 0x082b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-A720 | EPSON Stylus CX5900 | EPSON Stylus CX6000 | EPSON Stylus DX6000 | Epson DX-6000 | Epson PX-A720 | Epson Stylus CX5900 | Epson Stylus CX6000 | Epson Stylus DX6000
+libusbscanner 0x0003 0x04b8 0x082e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-A620 | EPSON Stylus CX3900 | EPSON Stylus DX4000 | Epson DX-4050 | Epson PX-A620 | Epson Stylus CX3900 | Epson Stylus DX4000
+libusbscanner 0x0003 0x04b8 0x082f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME 200 | EPSON Stylus CX2800 | EPSON Stylus CX2900 | Epson ME 200 | Epson Stylus CX2800 | Epson Stylus CX2900
+libusbscanner 0x0003 0x04b8 0x0830 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON LP-M5600 | Epson LP-M5600
+libusbscanner 0x0003 0x04b8 0x0833 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON LP-M6000 | Epson LP-M6000
+libusbscanner 0x0003 0x04b8 0x0834 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON AcuLaser CX21 | Epson AcuLaser CX21
+libusbscanner 0x0003 0x04b8 0x0835 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-T960 | Epson PM-T960
+libusbscanner 0x0003 0x04b8 0x0836 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A940 | EPSON Stylus Photo RX680 | EPSON Stylus Photo RX685 | EPSON Stylus Photo RX690 | Epson PM-A940 | Epson Stylus Photo RX680 | Epson Stylus Photo RX685 | Epson Stylus Photo RX690
+libusbscanner 0x0003 0x04b8 0x0837 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-A640 | EPSON Stylus CX7300 | EPSON Stylus CX7400 | EPSON Stylus DX7400 | Epson DX-7400 | Epson PX-A640 | Epson Stylus CX7300 | Epson Stylus CX7400 | Epson Stylus DX7400
+libusbscanner 0x0003 0x04b8 0x0838 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-A740 | EPSON Stylus CX8300 | EPSON Stylus CX8400 | EPSON Stylus DX8400 | Epson PX-A740 | Epson Stylus CX8300 | Epson Stylus CX8400 | Epson Stylus DX8400
+libusbscanner 0x0003 0x04b8 0x0839 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-FA700 | EPSON Stylus CX9300F | EPSON Stylus CX9400Fax | EPSON Stylus DX9400F | Epson PX-FA700 | Epson Stylus CX9300F | Epson Stylus CX9400Fax | Epson Stylus DX9400F
+libusbscanner 0x0003 0x04b8 0x083a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PM-A840 | EPSON PM-A840S | EPSON Stylus Photo RX585 | EPSON Stylus Photo RX595 | EPSON Stylus Photo RX610 | Epson PM-A840 | Epson PM-A840S | Epson Stylus Photo RX585 | Epson Stylus Photo RX595 | Epson Stylus Photo RX610
+libusbscanner 0x0003 0x04b8 0x083c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus CX4300 | EPSON Stylus CX4400 | EPSON Stylus CX5500 | EPSON Stylus CX5600 | EPSON Stylus DX4400
+libusbscanner 0x0003 0x04b8 0x083f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME 300 | EPSON PX-401A | EPSON Stylus NX100 | EPSON Stylus SX100 | EPSON Stylus TX100 | Epson ME 300 | Epson PX-401A | Epson Stylus NX100 | Epson Stylus SX100 | Epson Stylus TX100
+libusbscanner 0x0003 0x04b8 0x0841 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON LP-M5000 | Epson LP-M5000
+libusbscanner 0x0003 0x04b8 0x0843 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Artisan 800 | EPSON EP-901A | EPSON EP-901F | EPSON Stylus Photo PX800FW | EPSON Stylus Photo TX800FW | Epson Artisan 800 | Epson EP-901A | Epson EP-901F | Epson Stylus Photo PX800FW | Epson Stylus Photo TX800FW
+libusbscanner 0x0003 0x04b8 0x0844 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Artisan 700 | EPSON EP-801A | EPSON Stylus Photo PX700W | EPSON Stylus Photo TX700W | Epson Artisan 700 | Epson EP-801A | Epson Stylus Photo PX700W | Epson Stylus Photo TX700W
+libusbscanner 0x0003 0x04b8 0x0846 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME Office 700FW | EPSON PX-601F | EPSON Stylus Office BX600FW | EPSON Stylus Office TX600FW | EPSON Stylus SX600FW | EPSON WorkForce 600 | Epson ME Office 700FW | Epson PX-601F | Epson Stylus Office BX600FW | Epson Stylus Office TX600FW | Epson Stylus SX600FW | Epson WorkForce 600
+libusbscanner 0x0003 0x04b8 0x0847 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME Office 600F | EPSON Stylus Office BX300F | EPSON Stylus Office TX300F | EPSON Stylus NX300 Series | Epson ME Office 600F | Epson Stylus Office BX300F | Epson Stylus Office TX300F | Epson Stylus NX300
+libusbscanner 0x0003 0x04b8 0x0848 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus NX200 | EPSON Stylus SX200 | EPSON Stylus SX205 | EPSON Stylus TX200 | EPSON Stylus TX203 | EPSON Stylus TX209 | Epson Stylus NX200 | Epson Stylus SX200 | Epson Stylus SX205 | Epson Stylus TX200 | Epson Stylus TX203 | Epson Stylus TX209
+libusbscanner 0x0003 0x04b8 0x0849 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-501A | EPSON Stylus NX400 | EPSON Stylus SX400 | EPSON Stylus SX405 | EPSON Stylus TX400 | Epson PX-501A | Epson Stylus NX400 | Epson Stylus SX400 | Epson Stylus SX405 | Epson Stylus TX400
+libusbscanner 0x0003 0x04b8 0x084a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON WorkForce 500 | Epson WorkForce 500
+libusbscanner 0x0003 0x04b8 0x084c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-402A | EPSON Stylus NX110 Series | EPSON Stylus SX110 Series | EPSON Stylus TX110 Series | Epson PX-402A | Epson Stylus NX110 Series | Epson Stylus SX110 Series | Epson Stylus TX110 Series
+libusbscanner 0x0003 0x04b8 0x084d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME OFFICE 510 | EPSON Stylus NX210 Series | EPSON Stylus SX210 Series | EPSON Stylus TX210 Series | Epson ME OFFICE 510 | Epson Stylus NX210 Series | Epson Stylus SX210 Series | Epson Stylus TX210 Series
+libusbscanner 0x0003 0x04b8 0x084f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON EP-702A | EPSON Stylus Photo PX650 Series | EPSON Stylus Photo TX650 Series
+libusbscanner 0x0003 0x04b8 0x0850 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus NX410 Series | EPSON Stylus SX410 Series | EPSON Stylus TX410 Series | Epson Stylus NX410 Series | Epson Stylus SX410 Series | Epson Stylus TX410 Series
+libusbscanner 0x0003 0x04b8 0x0851 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Artisan 710 Series | EPSON EP-802A | EPSON Stylus Photo PX710W Series | EPSON Stylus Photo TX710W Series
+libusbscanner 0x0003 0x04b8 0x0852 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Artisan 810 Series | EPSON EP-902A | EPSON Stylus Photo PX810FW Series
+libusbscanner 0x0003 0x04b8 0x0853 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME OFFICE 650FN Series | EPSON Stylus Office BX310FN Series | EPSON Stylus Office TX510FN Series | EPSON WorkForce 310 Series | Epson ME OFFICE 650FN Series | Epson Stylus Office BX310FN Series | Epson Stylus Office TX510FN Series | Epson WorkForce 310 Series
+libusbscanner 0x0003 0x04b8 0x0854 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-602F | EPSON Stylus Office BX610FW Series | EPSON Stylus Office TX610FW Series | EPSON Stylus SX610FW Series | EPSON WorkForce 610 Series
+libusbscanner 0x0003 0x04b8 0x0855 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON PX-502A | EPSON Stylus NX510 Series | EPSON Stylus SX510W Series | EPSON Stylus TX550W Series | Epson PX-502A | Epson Stylus NX510 Series | Epson Stylus SX510W Series | Epson Stylus TX550W Series
+libusbscanner 0x0003 0x04b8 0x0856 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME 320 Series | EPSON ME 330 Series | EPSON Stylus NX125 | EPSON Stylus NX127 | EPSON Stylus SX125 | EPSON Stylus TX120 Series
+libusbscanner 0x0003 0x04b8 0x085c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME OFFICE 960FWD Series | EPSON Stylus Office BX625FWD | EPSON Stylus Office TX620FWD Series | EPSON Stylus SX620FW Series | EPSON WorkForce 630 Series
+libusbscanner 0x0003 0x04b8 0x085d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME OFFICE 900WD Series | EPSON PX-503A | EPSON Stylus Office BX525WD | EPSON Stylus NX625 | EPSON Stylus SX525WD | EPSON Stylus TX560WD Series | EPSON WorkForce 625
+libusbscanner 0x0003 0x04b8 0x085e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Stylus Office BX320FW Series | EPSON Stylus Office TX525FW | EPSON WorkForce 520 Series
+libusbscanner 0x0003 0x04b8 0x085f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Artisan 835 | EPSON EP-903A | EPSON EP-903F | EPSON Stylus Photo PX820FWD Series
+libusbscanner 0x0003 0x04b8 0x0860 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON Artisan 725 | EPSON EP-803A | EPSON EP-803AW | EPSON Stylus Photo PX720WD Series
+libusbscanner 0x0003 0x04b8 0x0861 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON EP-703A | EPSON Stylus Photo PX660 Series
+libusbscanner 0x0003 0x04b8 0x0862 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME OFFICE 620F Series | EPSON Stylus Office BX305F | EPSON Stylus Office BX305FW | EPSON Stylus Office TX320F Series | EPSON WorkForce 320 Series
+libusbscanner 0x0003 0x04b8 0x0863 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME OFFICE 560W Series | EPSON Stylus NX420 Series | EPSON Stylus SX420W Series | EPSON Stylus TX420W Series
+libusbscanner 0x0003 0x04b8 0x0864 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON ME OFFICE 520 Series | EPSON Stylus NX220 Series | EPSON Stylus SX218 | EPSON Stylus TX220 Series
+libusbscanner 0x0003 0x04b8 0x0865 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# EPSON AcuLaser MX20DN | EPSON AcuLaser MX20DNF
+libusbscanner 0x0003 0x04b8 0x0866 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-4010CU
+libusbscanner 0x0003 0x04c5 0x1029 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-4120C
+libusbscanner 0x0003 0x04c5 0x1041 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-4220C
+libusbscanner 0x0003 0x04c5 0x1042 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-4530C
+libusbscanner 0x0003 0x04c5 0x1078 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5750C
+libusbscanner 0x0003 0x04c5 0x1095 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5110EOX/2
+libusbscanner 0x0003 0x04c5 0x1096 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5110C
+libusbscanner 0x0003 0x04c5 0x1097 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5650C
+libusbscanner 0x0003 0x04c5 0x10ad 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-4120C2
+libusbscanner 0x0003 0x04c5 0x10ae 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-4220C2
+libusbscanner 0x0003 0x04c5 0x10af 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-60F
+libusbscanner 0x0003 0x04c5 0x10c7 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-4340C
+libusbscanner 0x0003 0x04c5 0x10cf 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5120C
+libusbscanner 0x0003 0x04c5 0x10e0 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5220C
+libusbscanner 0x0003 0x04c5 0x10e1 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5530C
+libusbscanner 0x0003 0x04c5 0x10e2 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5110EOX3
+libusbscanner 0x0003 0x04c5 0x10e6 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5900C
+libusbscanner 0x0003 0x04c5 0x10e7 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5015C
+libusbscanner 0x0003 0x04c5 0x10ef 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5110EOXM
+libusbscanner 0x0003 0x04c5 0x10f2 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu ScanSnap S500
+libusbscanner 0x0003 0x04c5 0x10fe 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu ScanSnap S500M
+libusbscanner 0x0003 0x04c5 0x1135 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-5530C2
+libusbscanner 0x0003 0x04c5 0x114a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6140
+libusbscanner 0x0003 0x04c5 0x114d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6240
+libusbscanner 0x0003 0x04c5 0x114e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6130
+libusbscanner 0x0003 0x04c5 0x114f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6230
+libusbscanner 0x0003 0x04c5 0x1150 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu ScanSnap S510
+libusbscanner 0x0003 0x04c5 0x1155 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu ScanSnap S300
+libusbscanner 0x0003 0x04c5 0x1156 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu ScanSnap S510M
+libusbscanner 0x0003 0x04c5 0x116f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6770
+libusbscanner 0x0003 0x04c5 0x1174 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6770A
+libusbscanner 0x0003 0x04c5 0x1175 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6670
+libusbscanner 0x0003 0x04c5 0x1176 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6670A
+libusbscanner 0x0003 0x04c5 0x1177 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6750S
+libusbscanner 0x0003 0x04c5 0x1178 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu ScanSnap S300M
+libusbscanner 0x0003 0x04c5 0x117f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6800
+libusbscanner 0x0003 0x04c5 0x119d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6800-CGA
+libusbscanner 0x0003 0x04c5 0x119e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6900
+libusbscanner 0x0003 0x04c5 0x119f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6900-CGA
+libusbscanner 0x0003 0x04c5 0x11a0 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu ScanSnap S1500 | Fujitsu ScanSnap S1500M
+libusbscanner 0x0003 0x04c5 0x11a2 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu ScanSnap S1300
+libusbscanner 0x0003 0x04c5 0x11ed 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6125
+libusbscanner 0x0003 0x04c5 0x11ee 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6225
+libusbscanner 0x0003 0x04c5 0x11ef 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6145
+libusbscanner 0x0003 0x04c5 0x11f1 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6245
+libusbscanner 0x0003 0x04c5 0x11f2 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6135
+libusbscanner 0x0003 0x04c5 0x11f3 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6235
+libusbscanner 0x0003 0x04c5 0x11f4 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Fujitsu fi-6110
+libusbscanner 0x0003 0x04c5 0x11fc 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Konica e-mini
+libusbscanner 0x0003 0x04c8 0x0722 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Panasonic KV-S2026C
+libusbscanner 0x0003 0x04da 0x1000 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Panasonic KV-S2046C
+libusbscanner 0x0003 0x04da 0x1001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Panasonic KV-S1025C
+libusbscanner 0x0003 0x04da 0x1006 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Panasonic KV-S1020C
+libusbscanner 0x0003 0x04da 0x1007 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Panasonic KV-S2048C
+libusbscanner 0x0003 0x04da 0x1009 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Panasonic KV-S2028C
+libusbscanner 0x0003 0x04da 0x100a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Panasonic KV-SS080
+libusbscanner 0x0003 0x04da 0x100f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Panasonic KV-S1045C
+libusbscanner 0x0003 0x04da 0x1010 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4216F
+libusbscanner 0x0003 0x04e8 0x3409 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4100
+libusbscanner 0x0003 0x04e8 0x3413 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4521F
+libusbscanner 0x0003 0x04e8 0x3419 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4200 | Samsung SCX-4200
+libusbscanner 0x0003 0x04e8 0x341b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX4725-FN
+libusbscanner 0x0003 0x04e8 0x341f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4500
+libusbscanner 0x0003 0x04e8 0x3426 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung CLX-3170fn | Samsung CLX-3175FW
+libusbscanner 0x0003 0x04e8 0x342a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4500W
+libusbscanner 0x0003 0x04e8 0x342b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4824
+libusbscanner 0x0003 0x04e8 0x342c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4300
+libusbscanner 0x0003 0x04e8 0x342e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4600
+libusbscanner 0x0003 0x04e8 0x3433 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4623
+libusbscanner 0x0003 0x04e8 0x3434 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Samsung SCX-4825FN
+libusbscanner 0x0003 0x04e8 0x343c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3100C
+libusbscanner 0x0003 0x04f9 0x010e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-5100C
+libusbscanner 0x0003 0x04f9 0x010f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-4800
+libusbscanner 0x0003 0x04f9 0x0110 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-6800 | Brother MFC 4600
+libusbscanner 0x0003 0x04f9 0x0111 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-1000
+libusbscanner 0x0003 0x04f9 0x0112 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8500
+libusbscanner 0x0003 0x04f9 0x0113 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9700
+libusbscanner 0x0003 0x04f9 0x0114 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9800
+libusbscanner 0x0003 0x04f9 0x0115 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-1400
+libusbscanner 0x0003 0x04f9 0x0116 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX-2900
+libusbscanner 0x0003 0x04f9 0x0117 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX-3800
+libusbscanner 0x0003 0x04f9 0x0118 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9660
+libusbscanner 0x0003 0x04f9 0x0119 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9860
+libusbscanner 0x0003 0x04f9 0x011a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9760
+libusbscanner 0x0003 0x04f9 0x011c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9070
+libusbscanner 0x0003 0x04f9 0x011d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9180
+libusbscanner 0x0003 0x04f9 0x011e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9160
+libusbscanner 0x0003 0x04f9 0x011f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-580
+libusbscanner 0x0003 0x04f9 0x0120 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-590
+libusbscanner 0x0003 0x04f9 0x0121 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-5100J
+libusbscanner 0x0003 0x04f9 0x0122 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX-2850
+libusbscanner 0x0003 0x04f9 0x0123 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-4800J
+libusbscanner 0x0003 0x04f9 0x0124 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-6800J
+libusbscanner 0x0003 0x04f9 0x0125 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX1800C
+libusbscanner 0x0003 0x04f9 0x0126 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9800J
+libusbscanner 0x0003 0x04f9 0x0127 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8500J
+libusbscanner 0x0003 0x04f9 0x0128 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-9030
+libusbscanner 0x0003 0x04f9 0x012b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX-4100
+libusbscanner 0x0003 0x04f9 0x012e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX-4750e
+libusbscanner 0x0003 0x04f9 0x012f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX-5750e
+libusbscanner 0x0003 0x04f9 0x0130 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-5200C
+libusbscanner 0x0003 0x04f9 0x0132 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-100
+libusbscanner 0x0003 0x04f9 0x0135 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-150CL
+libusbscanner 0x0003 0x04f9 0x0136 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3200C
+libusbscanner 0x0003 0x04f9 0x013a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-890
+libusbscanner 0x0003 0x04f9 0x013c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-5200J
+libusbscanner 0x0003 0x04f9 0x013d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-4420C
+libusbscanner 0x0003 0x04f9 0x013e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-4820C
+libusbscanner 0x0003 0x04f9 0x013f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-8020
+libusbscanner 0x0003 0x04f9 0x0140 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-8025D
+libusbscanner 0x0003 0x04f9 0x0141 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8420
+libusbscanner 0x0003 0x04f9 0x0142 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8820D
+libusbscanner 0x0003 0x04f9 0x0143 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-4020C
+libusbscanner 0x0003 0x04f9 0x0144 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3220C
+libusbscanner 0x0003 0x04f9 0x0146 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX1820C
+libusbscanner 0x0003 0x04f9 0x0147 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3320CN
+libusbscanner 0x0003 0x04f9 0x0148 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX1920CN
+libusbscanner 0x0003 0x04f9 0x0149 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3420C
+libusbscanner 0x0003 0x04f9 0x014a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3820CN
+libusbscanner 0x0003 0x04f9 0x014b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-3020C
+libusbscanner 0x0003 0x04f9 0x014c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother FAX1815C
+libusbscanner 0x0003 0x04f9 0x014d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8820J
+libusbscanner 0x0003 0x04f9 0x014e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-8025J
+libusbscanner 0x0003 0x04f9 0x014f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8220
+libusbscanner 0x0003 0x04f9 0x0150 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8210
+libusbscanner 0x0003 0x04f9 0x0151 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-1000J
+libusbscanner 0x0003 0x04f9 0x0153 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3420J
+libusbscanner 0x0003 0x04f9 0x0157 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3820J
+libusbscanner 0x0003 0x04f9 0x0158 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-8040
+libusbscanner 0x0003 0x04f9 0x015d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-8045D
+libusbscanner 0x0003 0x04f9 0x015e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8440
+libusbscanner 0x0003 0x04f9 0x015f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-8840D
+libusbscanner 0x0003 0x04f9 0x0160 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-210C
+libusbscanner 0x0003 0x04f9 0x0161 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-420CN
+libusbscanner 0x0003 0x04f9 0x0162 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-410CN
+libusbscanner 0x0003 0x04f9 0x0163 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-620CN
+libusbscanner 0x0003 0x04f9 0x0165 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-610CLN
+libusbscanner 0x0003 0x04f9 0x0166 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-610CLN
+libusbscanner 0x0003 0x04f9 0x0168 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-110C
+libusbscanner 0x0003 0x04f9 0x0169 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-310CN
+libusbscanner 0x0003 0x04f9 0x016b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-5440CN
+libusbscanner 0x0003 0x04f9 0x016d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-5840CN
+libusbscanner 0x0003 0x04f9 0x016e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3240C
+libusbscanner 0x0003 0x04f9 0x0173 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-3340CN
+libusbscanner 0x0003 0x04f9 0x0174 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-7420
+libusbscanner 0x0003 0x04f9 0x0180 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-7820N
+libusbscanner 0x0003 0x04f9 0x0181 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-7010
+libusbscanner 0x0003 0x04f9 0x0182 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-7020
+libusbscanner 0x0003 0x04f9 0x0183 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-7025
+libusbscanner 0x0003 0x04f9 0x0184 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-7220
+libusbscanner 0x0003 0x04f9 0x0185 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-7225N
+libusbscanner 0x0003 0x04f9 0x0186 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-115C
+libusbscanner 0x0003 0x04f9 0x018c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-117C
+libusbscanner 0x0003 0x04f9 0x018e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-120C
+libusbscanner 0x0003 0x04f9 0x0190 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-215C
+libusbscanner 0x0003 0x04f9 0x0193 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-8060
+libusbscanner 0x0003 0x04f9 0x01a3 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother DCP-330C
+libusbscanner 0x0003 0x04f9 0x01a9 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-240C
+libusbscanner 0x0003 0x04f9 0x01ab 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Brother MFC-7840W
+libusbscanner 0x0003 0x04f9 0x01e5 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Pentax DSmobile 600
+libusbscanner 0x0003 0x04f9 0x2038 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Aiptek Aiptek Pencam
+libusbscanner 0x0003 0x0553 0x0202 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek ScanExpress 1200 CU
+libusbscanner 0x0003 0x055f 0x0001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek ScanExpress 600 CU
+libusbscanner 0x0003 0x055f 0x0002 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek ScanExpress 1200 UB | Trust Compact Scan USB 19200
+libusbscanner 0x0003 0x055f 0x0006 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek ScanExpress 1200 CU Plus
+libusbscanner 0x0003 0x055f 0x0008 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 1200 F
+libusbscanner 0x0003 0x055f 0x0010 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek ScanExpress A3 USB
+libusbscanner 0x0003 0x055f 0x0210 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 2400 CS | Mustek BearPaw 2400 TA | Trust 240TH Easy Webscan Gold
+libusbscanner 0x0003 0x055f 0x0218 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 2400 CS Plus | Mustek BearPaw 2400 TA Plus | Mustek Plug-n-Scan 2400 MT | Mustek Plug-n-Scan 2400 M | Packard Bell Diamond 2450
+libusbscanner 0x0003 0x055f 0x0219 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 2448 CS Plus | Mustek BearPaw 2448 TA Plus
+libusbscanner 0x0003 0x055f 0x021a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 1200 CU Plus | Packard Bell Diamond 1200 Plus
+libusbscanner 0x0003 0x055f 0x021b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 1200 CU Plus | Mustek BearPaw 1248 CU | Packard Bell Diamond 1200 Plus | Trust Direct WebScan 19200
+libusbscanner 0x0003 0x055f 0x021c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 2400 CU Plus
+libusbscanner 0x0003 0x055f 0x021d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 1200 CS | Mustek BearPaw 1200 TA
+libusbscanner 0x0003 0x055f 0x021e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek ScanExpress 1248 UB
+libusbscanner 0x0003 0x055f 0x021f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek P 3600 A3 Pro
+libusbscanner 0x0003 0x055f 0x0401 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Mustek BearPaw 2448TA Pro
+libusbscanner 0x0003 0x055f 0x0409 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Artec/Ultima Ultima 2000 | Artec/Ultima Ultima 2000 e+ | Boeder Sm@rtScan Slim Edition | Fujitsu 1200CUS | Googlegear 2000 | Medion/Lifetec/Tevion/Cytron MD 4394 | Medion/Lifetec/Tevion/Cytron MD/LT 9375 | Medion/Lifetec/Tevion/Cytron MD/LT 9385 | Medion/Lifetec/Tevion/Cytron LT 9452 | Medion/Lifetec/Tevion/Cytron MD 9458 | Mustek BearPaw 1200 CU | Mustek BearPaw 2400 CU | Mustek ScanExpress 1200 UB Plus | Mustek ScanExpress 2400 USB | Mustek ScanMagic 1200 UB Plus | Packard Bell Diamond 1200 | Trust Compact Scan USB 19200 | Trust Flat Scan USB 19200
+libusbscanner 0x0003 0x05d8 0x4002 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Artec/Ultima E+ 48U | Medion/Lifetec/Tevion/Cytron MD9693 | Medion/Lifetec/Tevion/Cytron MD9705 | Medion/Lifetec/Tevion/Cytron MD4394 | Microstar MR 9791
+libusbscanner 0x0003 0x05d8 0x4003 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Artec/Ultima E+ Pro
+libusbscanner 0x0003 0x05d8 0x4004 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Memorex MEM 48U
+libusbscanner 0x0003 0x05d8 0x4005 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Trust Easy Webscan 19200
+libusbscanner 0x0003 0x05d8 0x4006 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Trust 240H Easy Webscan Gold
+libusbscanner 0x0003 0x05d8 0x4007 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# UMAX AstraSlim SE
+libusbscanner 0x0003 0x05d8 0x4009 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# UMAX AstraSlim 1200 SE
+libusbscanner 0x0003 0x05d8 0x4010 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Yakumo Scan50
+libusbscanner 0x0003 0x05d8 0x4011 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker X6USB
+libusbscanner 0x0003 0x05da 0x0099 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek SlimScan C6
+libusbscanner 0x0003 0x05da 0x009a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker V6USL
+libusbscanner 0x0003 0x05da 0x00a3 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker V6UPL
+libusbscanner 0x0003 0x05da 0x00b6 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker 4800
+libusbscanner 0x0003 0x05da 0x30cf 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker 3840
+libusbscanner 0x0003 0x05da 0x30d4 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker 3600
+libusbscanner 0x0003 0x05da 0x40b3 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker 3700
+libusbscanner 0x0003 0x05da 0x40b8 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker 3600
+libusbscanner 0x0003 0x05da 0x40ca 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker 3700
+libusbscanner 0x0003 0x05da 0x40cb 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker 3750
+libusbscanner 0x0003 0x05da 0x40dd 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker 3600
+libusbscanner 0x0003 0x05da 0x40ff 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Microtek ScanMaker V6USL
+libusbscanner 0x0003 0x05da 0x80a3 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# iVina 1200U
+libusbscanner 0x0003 0x0638 0x0268 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Minolta Dimage Scan Dual II
+libusbscanner 0x0003 0x0638 0x026a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV600U
+libusbscanner 0x0003 0x0638 0x0a13 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Minolta-QMS SC-110
+libusbscanner 0x0003 0x0638 0x0a15 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision DS610CU Scancopier | Minolta-QMS SC-215 | OKI S700 Scancopier
+libusbscanner 0x0003 0x0638 0x0a16 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV600U Plus
+libusbscanner 0x0003 0x0638 0x0a18 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV610
+libusbscanner 0x0003 0x0638 0x0a19 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV220
+libusbscanner 0x0003 0x0638 0x0a23 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV210
+libusbscanner 0x0003 0x0638 0x0a24 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV210
+libusbscanner 0x0003 0x0638 0x0a25 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV120
+libusbscanner 0x0003 0x0638 0x0a27 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV220C2
+libusbscanner 0x0003 0x0638 0x0a2a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV220D2
+libusbscanner 0x0003 0x0638 0x0a2b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV220+
+libusbscanner 0x0003 0x0638 0x0a2c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV220C2-G
+libusbscanner 0x0003 0x0638 0x0a2d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV220C2-B
+libusbscanner 0x0003 0x0638 0x0a2e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV210C2-G
+libusbscanner 0x0003 0x0638 0x0a2f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV122
+libusbscanner 0x0003 0x0638 0x0a33 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV210C2
+libusbscanner 0x0003 0x0638 0x0a3a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV121
+libusbscanner 0x0003 0x0638 0x0a3c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV8300
+libusbscanner 0x0003 0x0638 0x0a40 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AM3000 Series
+libusbscanner 0x0003 0x0638 0x0a41 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision @V5100
+libusbscanner 0x0003 0x0638 0x0a45 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV8050U
+libusbscanner 0x0003 0x0638 0x0a4d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV3200SU
+libusbscanner 0x0003 0x0638 0x0a4e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV3730SU
+libusbscanner 0x0003 0x0638 0x0a4f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV610C2
+libusbscanner 0x0003 0x0638 0x0a5e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision IT8300
+libusbscanner 0x0003 0x0638 0x0a61 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV3750SU
+libusbscanner 0x0003 0x0638 0x0a65 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV3850SU
+libusbscanner 0x0003 0x0638 0x0a66 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV8350
+libusbscanner 0x0003 0x0638 0x0a68 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision FB6080E
+libusbscanner 0x0003 0x0638 0x0a82 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision FB2080E
+libusbscanner 0x0003 0x0638 0x0a84 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV122 C2
+libusbscanner 0x0003 0x0638 0x0a93 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV220-G
+libusbscanner 0x0003 0x0638 0x0a94 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision @V2500
+libusbscanner 0x0003 0x0638 0x0aa1 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Avision AV210D2+
+libusbscanner 0x0003 0x0638 0x1a35 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Minolta Elite II
+libusbscanner 0x0003 0x0686 0x4004 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Minolta Dimage Scan Dual III
+libusbscanner 0x0003 0x0686 0x400d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Minolta Dimage Scan Elite 5400
+libusbscanner 0x0003 0x0686 0x400e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan 1212U
+libusbscanner 0x0003 0x06bd 0x0001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan 1236u
+libusbscanner 0x0003 0x06bd 0x0002 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Agfa Snapscan Touch
+libusbscanner 0x0003 0x06bd 0x0100 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan 1212U_2
+libusbscanner 0x0003 0x06bd 0x2061 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan e40
+libusbscanner 0x0003 0x06bd 0x208d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan e50
+libusbscanner 0x0003 0x06bd 0x208f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan e20
+libusbscanner 0x0003 0x06bd 0x2091 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan e10
+libusbscanner 0x0003 0x06bd 0x2093 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan e25
+libusbscanner 0x0003 0x06bd 0x2095 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan e26
+libusbscanner 0x0003 0x06bd 0x2097 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan e52
+libusbscanner 0x0003 0x06bd 0x20fd 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# AGFA SnapScan e42
+libusbscanner 0x0003 0x06bd 0x20ff 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# UMAX Astra 4900
+libusbscanner 0x0003 0x06dc 0x0020 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro U12 | Plustek OpticPro UT12 | Plustek OpticPro 1212U | RevScan RevScan Orange R48Ti | Genius ColorPage Vivid III USB
+libusbscanner 0x0003 0x07b3 0x0001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro U12
+libusbscanner 0x0003 0x07b3 0x0010 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro U24
+libusbscanner 0x0003 0x07b3 0x0011 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro UT12
+libusbscanner 0x0003 0x07b3 0x0013 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro U24
+libusbscanner 0x0003 0x07b3 0x0015 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro UT12 | Plustek OpticPro UT16 | Plustek OpticPro UT24
+libusbscanner 0x0003 0x07b3 0x0017 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro 1248U | RevScan 19200i
+libusbscanner 0x0003 0x07b3 0x0400 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro 1248U
+libusbscanner 0x0003 0x07b3 0x0401 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro U16B
+libusbscanner 0x0003 0x07b3 0x0402 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro U16B+ | Plustek OpticPro UT16B
+libusbscanner 0x0003 0x07b3 0x0403 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Nortek MyScan 1200 | Plustek OpticPro S12 | Plustek OpticPro ST12
+libusbscanner 0x0003 0x07b3 0x040b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticPro S24
+libusbscanner 0x0003 0x07b3 0x040e 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# NeatReceipts Scanalizer Professional 2.5 | Plustek OpticSlim M12
+libusbscanner 0x0003 0x07b3 0x0412 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticSlim 1200
+libusbscanner 0x0003 0x07b3 0x0413 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticSlim 2400
+libusbscanner 0x0003 0x07b3 0x0422 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticSlim 2400 plus
+libusbscanner 0x0003 0x07b3 0x0454 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek Iriscan Express 2
+libusbscanner 0x0003 0x07b3 0x045f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# NeatReceipts Mobile Scanner
+libusbscanner 0x0003 0x07b3 0x0462 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Plustek OpticBook 3600
+libusbscanner 0x0003 0x07b3 0x0900 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Corex 600c
+libusbscanner 0x0003 0x08f0 0x0002 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Corex 800c
+libusbscanner 0x0003 0x08f0 0x0005 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox Phaser 6110MFP
+libusbscanner 0x0003 0x0924 0x3d5d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox Phaser 3200MFP
+libusbscanner 0x0003 0x0924 0x3da4 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox WorkCentre 4118 Series
+libusbscanner 0x0003 0x0924 0x420c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox WorkCentre 3119 Series
+libusbscanner 0x0003 0x0924 0x4265 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox WorkCentre 3210
+libusbscanner 0x0003 0x0924 0x4293 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Xerox WorkCentre 3220
+libusbscanner 0x0003 0x0924 0x4294 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Pentax DSmobile 600
+libusbscanner 0x0003 0x0a17 0x3210 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Portable Peripheral Co., Ltd. Q-Scan USB001 (A4 portable scanner)
+libusbscanner 0x0003 0x0a53 0x1000 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Syscan TravelScan 460/464 | Ambir Visigo A4
+libusbscanner 0x0003 0x0a82 0x4600 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Syscan DocketPort 465
+libusbscanner 0x0003 0x0a82 0x4802 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Syscan DocketPort 665
+libusbscanner 0x0003 0x0a82 0x4803 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Syscan DocketPort 685/ Ambir DS685
+libusbscanner 0x0003 0x0a82 0x480c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Syscan DocketPort 485
+libusbscanner 0x0003 0x0a82 0x4810 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Syscan TravelScan 662
+libusbscanner 0x0003 0x0a82 0x6620 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CR-55
+libusbscanner 0x0003 0x1083 0x160c 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-1210C
+libusbscanner 0x0003 0x1083 0x160f 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-4010C
+libusbscanner 0x0003 0x1083 0x1614 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-2510C
+libusbscanner 0x0003 0x1083 0x1617 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-X10C
+libusbscanner 0x0003 0x1083 0x1618 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CR-25
+libusbscanner 0x0003 0x1083 0x161a 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-2010C
+libusbscanner 0x0003 0x1083 0x161b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-3010C
+libusbscanner 0x0003 0x1083 0x161d 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-7090C
+libusbscanner 0x0003 0x1083 0x1620 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-9050C
+libusbscanner 0x0003 0x1083 0x1622 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-7550C
+libusbscanner 0x0003 0x1083 0x1623 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-6050C
+libusbscanner 0x0003 0x1083 0x1624 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-6010C
+libusbscanner 0x0003 0x1083 0x1626 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CR-190i
+libusbscanner 0x0003 0x1083 0x162b 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon DR-6030C
+libusbscanner 0x0003 0x1083 0x1638 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Canon CR-135i
+libusbscanner 0x0003 0x1083 0x1639 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Digital Dream l' espion XS
+libusbscanner 0x0003 0x1183 0x0001 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# KONICA MINOLTA magicolor 1690MF
+libusbscanner 0x0003 0x132b 0x2089 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# UMAX Astra 1220U
+libusbscanner 0x0003 0x1606 0x0010 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# UMAX Astra 1600U | UMAX Astra 2000U
+libusbscanner 0x0003 0x1606 0x0030 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Umax UMAX 3400
+libusbscanner 0x0003 0x1606 0x0050 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Umax UMAX 3400 | Umax UMAX Astranet ia101 | Umax UMAX 3450
+libusbscanner 0x0003 0x1606 0x0060 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# UMAX Astra 4400 | UMAX Astra 4450
+libusbscanner 0x0003 0x1606 0x0070 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# UMAX Astra 2100U
+libusbscanner 0x0003 0x1606 0x0130 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Umax UMAX 5400
+libusbscanner 0x0003 0x1606 0x0160 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# UMAX Astra 2200 (SU)
+libusbscanner 0x0003 0x1606 0x0230 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# DCT DocketPort 487
+libusbscanner 0x0003 0x1dcc 0x4810 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Dell A920
+libusbscanner 0x0003 0x413c 0x5105 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Dell Dell MFP Laser Printer 1815dn
+libusbscanner 0x0003 0x413c 0x5124 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
+# Dell 1600n
+libusbscanner 0x0003 0x413c 0x5250 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
--- /dev/null
+[General]
+#Verbosity = 0
+# The following should be set to the local NFSv4 domain name (REQUIRED)
+Domain = local.domain.edu
+
+[Mapping]
+
+#Nobody-User = nobody
+#Nobody-Group = nobody
+
+[Translation]
+
+# Translation Method is an comma-separated, ordered list of
+# translation methods that can be used. Distributed methods
+# include "nsswitch", "umich_ldap", and "static". Each method
+# is a dynamically loadable plugin library.
+# New methods may be defined and inserted in the list.
+# The default is "nsswitch".
+#Method = nsswitch
+
+# Optional. This is a comma-separated, ordered list of
+# translation methods to be used for translating GSS
+# authenticated names to ids.
+# If this option is omitted, the same methods as those
+# specified in "Method" are used.
+#GSS-Methods = <alternate method list for translating GSS names>
+
+#-------------------------------------------------------------------#
+# The following are used only for the "static" Translation Method.
+#-------------------------------------------------------------------#
+[Static]
+
+# A "static" list of GSS-Authenticated names to
+# local user name mappings
+
+#someuser@REALM = localuser
+
+
+#-------------------------------------------------------------------#
+# The following are used only for the "umich_ldap" Translation Method.
+#-------------------------------------------------------------------#
+
+[UMICH_SCHEMA]
+
+# server information (REQUIRED)
+LDAP_server = ldap-server.local.domain.edu
+
+# the default search base (REQUIRED)
+LDAP_base = dc=local,dc=domain,dc=edu
+
+#-----------------------------------------------------------#
+# The remaining options have defaults (as shown)
+# and are therefore not required.
+#-----------------------------------------------------------#
+
+# whether or not to perform canonicalization on the
+# name given as LDAP_server
+#LDAP_canonicalize_name = true
+
+# absolute search base for (people) accounts
+#LDAP_people_base = <LDAP_base>
+
+# absolute search base for groups
+#LDAP_group_base = <LDAP_base>
+
+# Set to true to enable SSL - anything else is not enabled
+#LDAP_use_ssl = false
+
+# You must specify a CA certificate location if you enable SSL
+#LDAP_ca_cert = /etc/ldapca.cert
+
+# Objectclass mapping information
+
+# Mapping for the person (account) object class
+#NFSv4_person_objectclass = NFSv4RemotePerson
+
+# Mapping for the nfsv4name attribute the person object
+#NFSv4_name_attr = NFSv4Name
+
+# Mapping for the UID number
+#NFSv4_uid_attr = UIDNumber
+
+# Mapping for the GSSAPI Principal name
+#GSS_principal_attr = GSSAuthName
+
+# Mapping for the account name attribute (usually uid)
+# The value for this attribute must match the value of
+# the group member attribute - NFSv4_member_attr
+#NFSv4_acctname_attr = uid
+
+# Mapping for the group object class
+#NFSv4_group_objectclass = NFSv4RemoteGroup
+
+# Mapping for the GID attribute
+#NFSv4_gid_attr = GIDNumber
+
+# Mapping for the Group NFSv4 name
+#NFSv4_group_attr = NFSv4Name
+
+# Mapping for the Group member attribute (usually memberUID)
+# The value of this attribute must match the value of NFSv4_acctname_attr
+#NFSv4_member_attr = memberUID
--- /dev/null
+[General]
+#Verbosity = 0
+# The following should be set to the local NFSv4 domain name
+# The default is the host's DNS domain name.
+#Domain = local.domain.edu
+
+# The following is a comma-separated list of Kerberos realm
+# names that should be considered to be equivalent to the
+# local realm, such that <user>@REALM.A can be assumed to
+# be the same user as <user>@REALM.B
+# If not specified, the default local realm is the domain name,
+# which defaults to the host's DNS domain name,
+# translated to upper-case.
+# Note that if this value is specified, the local realm name
+# must be included in the list!
+#Local-Realms =
+
+[Mapping]
+
+#Nobody-User = nobody
+#Nobody-Group = nobody
+
+[Translation]
+
+# Translation Method is an comma-separated, ordered list of
+# translation methods that can be used. Distributed methods
+# include "nsswitch", "umich_ldap", and "static". Each method
+# is a dynamically loadable plugin library.
+# New methods may be defined and inserted in the list.
+# The default is "nsswitch".
+#Method = nsswitch
+
+# Optional. This is a comma-separated, ordered list of
+# translation methods to be used for translating GSS
+# authenticated names to ids.
+# If this option is omitted, the same methods as those
+# specified in "Method" are used.
+#GSS-Methods = <alternate method list for translating GSS names>
+
+#-------------------------------------------------------------------#
+# The following are used only for the "static" Translation Method.
+#-------------------------------------------------------------------#
+[Static]
+
+# A "static" list of GSS-Authenticated names to
+# local user name mappings
+
+#someuser@REALM = localuser
+
+
+#-------------------------------------------------------------------#
+# The following are used only for the "umich_ldap" Translation Method.
+#-------------------------------------------------------------------#
+
+[UMICH_SCHEMA]
+
+# server information (REQUIRED)
+LDAP_server = ldap-server.local.domain.edu
+
+# the default search base (REQUIRED)
+LDAP_base = dc=local,dc=domain,dc=edu
+
+#-----------------------------------------------------------#
+# The remaining options have defaults (as shown)
+# and are therefore not required.
+#-----------------------------------------------------------#
+
+# whether or not to perform canonicalization on the
+# name given as LDAP_server
+#LDAP_canonicalize_name = true
+
+# absolute search base for (people) accounts
+#LDAP_people_base = <LDAP_base>
+
+# absolute search base for groups
+#LDAP_group_base = <LDAP_base>
+
+# Set to true to enable SSL - anything else is not enabled
+#LDAP_use_ssl = false
+
+# You must specify a CA certificate location if you enable SSL
+#LDAP_ca_cert = /etc/ldapca.cert
+
+# Objectclass mapping information
+
+# Mapping for the person (account) object class
+#NFSv4_person_objectclass = NFSv4RemotePerson
+
+# Mapping for the nfsv4name attribute the person object
+#NFSv4_name_attr = NFSv4Name
+
+# Mapping for the UID number
+#NFSv4_uid_attr = UIDNumber
+
+# Mapping for the GSSAPI Principal name
+#GSS_principal_attr = GSSAuthName
+
+# Mapping for the account name attribute (usually uid)
+# The value for this attribute must match the value of
+# the group member attribute - NFSv4_member_attr
+#NFSv4_acctname_attr = uid
+
+# Mapping for the group object class
+#NFSv4_group_objectclass = NFSv4RemoteGroup
+
+# Mapping for the GID attribute
+#NFSv4_gid_attr = GIDNumber
+
+# Mapping for the Group NFSv4 name
+#NFSv4_group_attr = NFSv4Name
+
+# Mapping for the Group member attribute (usually memberUID)
+# The value of this attribute must match the value of NFSv4_acctname_attr
+#NFSv4_member_attr = memberUID
--- /dev/null
+#!/sbin/runscript
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-wireless/bluez/files/bluetooth-init.d,v 1.2 2011/03/20 16:57:35 pacho Exp $
+
+depend() {
+ after coldplug
+ need dbus localmount hostname
+}
+
+start() {
+ ebegin "Starting Bluetooth"
+
+ udevadm trigger --subsystem-match=bluetooth --action=add
+ eend $?
+
+ if [ "${RFCOMM_ENABLE}" = "true" -a -x /usr/bin/rfcomm ]; then
+ if [ -f "${RFCOMM_CONFIG}" ]; then
+ eindent
+ ebegin "Starting rfcomm"
+ /usr/bin/rfcomm -f "${RFCOMM_CONFIG}" bind all
+ eoutdent
+ eend $?
+ else
+ ewarn "Not enabling rfcomm because RFCOMM_CONFIG does not exists"
+ fi
+ fi
+}
+
+stop() {
+ ebegin "Shutting down Bluetooth"
+ eend 0
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-wireless/bluez/files/bluetooth-init.d-r1,v 1.1 2012/01/09 23:01:55 pacho Exp $
+
+depend() {
+ after coldplug
+ need dbus localmount hostname
+}
+
+start() {
+ ebegin "Udev coldplug of bluetooth devices"
+ udevadm trigger --subsystem-match=bluetooth --action=add
+ eend $?
+}
+
+stop() {
+ return 0
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+depend()
+{
+ need localmount
+ before logger
+ after clock sysctl
+ keyword -prefix -timeout
+}
+
+dir_writeable()
+{
+ mkdir "$1"/.test.$$ 2>/dev/null && rmdir "$1"/.test.$$
+}
+
+: ${wipe_tmp:=${WIPE_TMP:-yes}}
+: ${log_dmesg:=${LOG_DMESG:-yes}}
+
+cleanup_tmp_dir()
+{
+ local dir="$1"
+
+ if ! [ -d "$dir" ]; then
+ mkdir -p "$dir" || return $?
+ fi
+ dir_writeable "$dir" || return 1
+ chmod a+rwt "$dir" 2> /dev/null
+ cd "$dir" || return 1
+ if yesno $wipe_tmp; then
+ ebegin "Wiping $dir directory"
+
+ # Faster than raw find
+ if ! rm -rf -- [^ajlq\.]* 2>/dev/null ; then
+ # Blah, too many files
+ find . -maxdepth 1 -name '[^ajlq\.]*' -exec rm -rf -- {} +
+ fi
+
+ # pam_mktemp creates a .private directory within which
+ # each user gets a private directory with immutable
+ # bit set; remove the immutable bit before trying to
+ # remove it.
+ [ -d /tmp/.private ] && chattr -R -a /tmp/.private 2> /dev/null
+
+ # Prune the paths that are left
+ find . -maxdepth 1 \
+ ! -name . \
+ ! -name lost+found \
+ ! -name quota.user \
+ ! -name aquota.user \
+ ! -name quota.group \
+ ! -name aquota.group \
+ ! -name journal \
+ -exec rm -rf -- {} +
+ eend 0
+ else
+ ebegin "Cleaning $dir directory"
+ rm -rf -- .X*-lock esrv* kio* \
+ jpsock.* .fam* .esd* \
+ orbit-* ssh-* ksocket-* \
+ .*-unix
+ eend 0
+ fi
+}
+
+mkutmp()
+{
+ : >"$1"
+ # Not all systems have the utmp group
+ chgrp utmp "$1" 2>/dev/null
+ chmod 0664 "$1"
+}
+
+start()
+{
+ # Remove any added console dirs
+ rm -rf "$RC_LIBEXECDIR"/console/*
+
+ local logw=false runw=false extra=
+ # Ensure that our basic dirs exist
+ [ "$RC_UNAME" = Linux ] && extra=/var/lib/misc # Satisfy Linux FHS
+ for x in /var/log /var/run /tmp $extra; do
+ if ! [ -d $x ]; then
+ if ! mkdir -p $x; then
+ eend 1 "failed to create needed directory $x"
+ return 1
+ fi
+ fi
+ done
+
+ if dir_writeable /var/run; then
+ ebegin "Creating user login records"
+ local xtra=
+ [ "$RC_UNAME" = NetBSD ] && xtra=x
+ for x in "" $xtra; do
+ mkutmp /var/run/utmp$x
+ done
+ [ -e /var/log/wtmp ] || mkutmp /var/log/wtmp
+ eend 0
+
+ ebegin "Cleaning /var/run"
+ for x in $(find /var/run ! -type d ! -name utmp \
+ ! -name random-seed ! -name dev.db \
+ ! -name ld-elf.so.hints ! -name ld.so.hints);
+ do
+ # Clean stale sockets
+ if [ -S "$x" ]; then
+ if type fuser >/dev/null 2>&1; then
+ fuser "$x" >/dev/null 2>&1 || rm -- "$x"
+ else
+ rm -- "$x"
+ fi
+ fi
+ [ ! -f "$x" ] && continue
+ # Do not remove pidfiles of already running daemons
+ case "$x" in
+ *.pid)
+ start-stop-daemon --test --quiet \
+ --stop --pidfile "$x" && continue
+ ;;
+ esac
+ rm -f -- "$x"
+ done
+ eend 0
+ fi
+
+ # Clean up /tmp directories
+ local tmp=
+ for tmp in ${clean_tmp_dirs:-${wipe_tmp_dirs-/tmp}}; do
+ cleanup_tmp_dir "$tmp"
+ done
+
+ if dir_writeable /tmp; then
+ # Make sure our X11 stuff have the correct permissions
+ # Omit the chown as bootmisc is run before network is up
+ # and users may be using lame LDAP auth #139411
+ rm -rf /tmp/.ICE-unix /tmp/.X11-unix
+ mkdir -p /tmp/.ICE-unix /tmp/.X11-unix
+ chmod 1777 /tmp/.ICE-unix /tmp/.X11-unix
+ if [ -x /sbin/restorecon ]; then
+ restorecon /tmp/.ICE-unix /tmp/.X11-unix
+ fi
+ fi
+
+ if yesno $log_dmesg; then
+ if $logw || dir_writeable /var/log; then
+ # Create an 'after-boot' dmesg log
+ if [ "$RC_SYS" != VSERVER -a "$RC_SYS" != OPENVZ ]; then
+ dmesg > /var/log/dmesg
+ chmod 640 /var/log/dmesg
+ fi
+ fi
+ fi
+
+ [ -w /etc/nologin ] && rm -f /etc/nologin
+ return 0
+}
+
+stop()
+{
+ # Write a halt record if we're shutting down
+ if [ "$RC_RUNLEVEL" = shutdown ]; then
+ [ "$RC_UNAME" = Linux ] && halt -w
+ if [ "$RC_SYS" = OPENVZ ]; then
+ yesno $RC_REBOOT && printf "" >/reboot
+ fi
+ fi
+
+ return 0
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+depend()
+{
+ need localmount
+ before logger
+ after clock sysctl
+ keyword -prefix -timeout
+}
+
+dir_writable()
+{
+ mkdir "$1"/.test.$$ 2>/dev/null && rmdir "$1"/.test.$$
+}
+
+: ${wipe_tmp:=${WIPE_TMP:-yes}}
+: ${log_dmesg:=${LOG_DMESG:-yes}}
+
+cleanup_tmp_dir()
+{
+ local dir="$1"
+
+ if ! [ -d "$dir" ]; then
+ mkdir -p "$dir" || return $?
+ fi
+ dir_writable "$dir" || return 1
+ chmod a+rwt "$dir" 2> /dev/null
+ cd "$dir" || return 1
+ if yesno $wipe_tmp; then
+ ebegin "Wiping $dir directory"
+
+ # Faster than raw find
+ if ! rm -rf -- [^ajlq\.]* 2>/dev/null ; then
+ # Blah, too many files
+ find . -maxdepth 1 -name '[^ajlq\.]*' -exec rm -rf -- {} +
+ fi
+
+ # pam_mktemp creates a .private directory within which
+ # each user gets a private directory with immutable
+ # bit set; remove the immutable bit before trying to
+ # remove it.
+ [ -d /tmp/.private ] && chattr -R -a /tmp/.private 2> /dev/null
+
+ # Prune the paths that are left
+ find . -maxdepth 1 \
+ ! -name . \
+ ! -name lost+found \
+ ! -name quota.user \
+ ! -name aquota.user \
+ ! -name quota.group \
+ ! -name aquota.group \
+ ! -name journal \
+ -exec rm -rf -- {} +
+ eend 0
+ else
+ ebegin "Cleaning $dir directory"
+ rm -rf -- .X*-lock esrv* kio* \
+ jpsock.* .fam* .esd* \
+ orbit-* ssh-* ksocket-* \
+ .*-unix
+ eend 0
+ fi
+}
+
+mkutmp()
+{
+ : >"$1"
+ # Not all systems have the utmp group
+ chgrp utmp "$1" 2>/dev/null
+ chmod 0664 "$1"
+}
+
+migrate_to_run()
+{
+ src="$1"
+ dst="$2"
+ if [ -L $src -a "$(readlink -f $src)" != $dst ]; then
+ ewarn "$src does not point to $dst."
+ ewarn "Setting $src to point to $dst."
+ rm $src
+ elif [ ! -L $src -a -d $src ]; then
+ ebegin "Migrating $src to $dst"
+ cp -a $src/* $dst/
+ rm -rf $src
+ eend $?
+ fi
+ # If $src doesn't exist at all, just run this
+ if [ ! -e $src ]; then
+ ln -s $dst $src
+ fi
+}
+
+start()
+{
+ # Remove any added console dirs
+ rm -rf "$RC_LIBEXECDIR"/console/*
+
+ local logw=false runw=false extra=
+ # Ensure that our basic dirs exist
+ if [ "$RC_UNAME" = Linux ]; then
+ # Satisfy Linux FHS
+ extra=/var/lib/misc
+ if [ ! -d /run ]; then
+ extra="/var/run $extra"
+ fi
+ else
+ extra=/var/run
+ fi
+ for x in /var/log /tmp $extra; do
+ if ! [ -d $x ]; then
+ if ! mkdir -p $x; then
+ eend 1 "failed to create needed directory $x"
+ return 1
+ fi
+ fi
+ done
+
+ if [ "$RC_UNAME" = Linux -a -d /run ] && false; then
+ migrate_to_run /var/lock /run/lock
+ migrate_to_run /var/run /run
+ fi
+
+ if dir_writable /var/run; then
+ ebegin "Creating user login records"
+ local xtra=
+ [ "$RC_UNAME" = NetBSD ] && xtra=x
+ for x in "" $xtra; do
+ mkutmp /var/run/utmp$x
+ done
+ [ -e /var/log/wtmp ] || mkutmp /var/log/wtmp
+ eend 0
+
+ ebegin "Cleaning /var/run"
+ for x in $(find /var/run ! -type d ! -name utmp \
+ ! -name random-seed ! -name dev.db \
+ ! -name ld-elf.so.hints ! -name ld.so.hints);
+ do
+ # Clean stale sockets
+ if [ -S "$x" ]; then
+ if type fuser >/dev/null 2>&1; then
+ fuser "$x" >/dev/null 2>&1 || rm -- "$x"
+ else
+ rm -- "$x"
+ fi
+ fi
+ [ ! -f "$x" ] && continue
+ # Do not remove pidfiles of already running daemons
+ case "$x" in
+ *.pid)
+ start-stop-daemon --test --quiet \
+ --stop --pidfile "$x" && continue
+ ;;
+ esac
+ rm -f -- "$x"
+ done
+ eend 0
+ fi
+
+ # Clean up /tmp directories
+ local tmp=
+ for tmp in ${clean_tmp_dirs:-${wipe_tmp_dirs-/tmp}}; do
+ cleanup_tmp_dir "$tmp"
+ done
+
+ if dir_writable /tmp; then
+ # Make sure our X11 stuff have the correct permissions
+ # Omit the chown as bootmisc is run before network is up
+ # and users may be using lame LDAP auth #139411
+ rm -rf /tmp/.ICE-unix /tmp/.X11-unix
+ mkdir -p /tmp/.ICE-unix /tmp/.X11-unix
+ chmod 1777 /tmp/.ICE-unix /tmp/.X11-unix
+ if [ -x /sbin/restorecon ]; then
+ restorecon /tmp/.ICE-unix /tmp/.X11-unix
+ fi
+ fi
+
+ if yesno $log_dmesg; then
+ if $logw || dir_writable /var/log; then
+ # Create an 'after-boot' dmesg log
+ if [ "$RC_SYS" != VSERVER -a "$RC_SYS" != OPENVZ ]; then
+ dmesg > /var/log/dmesg
+ chmod 640 /var/log/dmesg
+ fi
+ fi
+ fi
+
+ [ -w /etc/nologin ] && rm -f /etc/nologin
+ return 0
+}
+
+stop()
+{
+ # Write a halt record if we're shutting down
+ if [ "$RC_RUNLEVEL" = shutdown ]; then
+ [ "$RC_UNAME" = Linux ] && halt -w
+ if [ "$RC_SYS" = OPENVZ ]; then
+ yesno $RC_REBOOT && printf "" >/reboot
+ fi
+ fi
+
+ return 0
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+description="Sets a font for the consoles."
+
+depend()
+{
+ need localmount termencoding
+ after hotplug bootmisc
+ keyword -openvz -prefix -uml -vserver -xenu -lxc
+}
+
+start()
+{
+ ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
+ consolefont=${consolefont:-${CONSOLEFONT}}
+ unicodemap=${unicodemap:-${UNICODEMAP}}
+ consoletranslation=${consoletranslation:-${CONSOLETRANSLATION}}
+
+ if [ -z "$consolefont" ]; then
+ ebegin "Using the default console font"
+ eend 0
+ return 0
+ fi
+
+ if [ "$ttyn" = 0 ]; then
+ ebegin "Skipping font setup (rc_tty_number == 0)"
+ eend 0
+ return 0
+ fi
+
+ local x= param= sf_param= retval=0 ttydev=/dev/tty
+
+ # Get additional parameters
+ if [ -n "$consoletranslation" ]; then
+ param="$param -m $consoletranslation"
+ fi
+ if [ -n "${unicodemap}" ]; then
+ param="$param -u $unicodemap"
+ fi
+
+ # Set the console font
+ ebegin "Setting console font [$consolefont]"
+ [ -d /dev/vc ] && ttydev=/dev/vc/
+ x=1
+ while [ $x -le $ttyn ]; do
+ if ! setfont $consolefont $param -C $ttydev$x >/dev/null; then
+ retval=1
+ break
+ fi
+ x=$(($x + 1))
+ done
+ eend $retval
+
+ # Store the last font so we can use it ASAP on boot
+ if [ $retval -eq 0 -a -w "$RC_LIBEXECDIR" ]; then
+ mkdir -p "$RC_LIBEXECDIR"/console
+ for font in /usr/share/consolefonts/"$consolefont".*; do
+ :
+ done
+ cp "$font" "$RC_LIBEXECDIR"/console
+ echo "${font##*/}" >"$RC_LIBEXECDIR"/console/font
+ fi
+
+ return $retval
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+description="Sets a font for the consoles."
+
+depend()
+{
+ need localmount termencoding
+ after hotplug bootmisc
+ keyword -openvz -prefix -uml -vserver -xenu -lxc
+}
+
+start()
+{
+ ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
+ consolefont=${consolefont:-${CONSOLEFONT}}
+ unicodemap=${unicodemap:-${UNICODEMAP}}
+ consoletranslation=${consoletranslation:-${CONSOLETRANSLATION}}
+
+ if [ -z "$consolefont" ]; then
+ ebegin "Using the default console font"
+ eend 0
+ return 0
+ fi
+
+ if [ "$ttyn" = 0 ]; then
+ ebegin "Skipping font setup (rc_tty_number == 0)"
+ eend 0
+ return 0
+ fi
+
+ local x= param= sf_param= retval=0 ttydev=/dev/tty
+
+ # Get additional parameters
+ if [ -n "$consoletranslation" ]; then
+ param="$param -m $consoletranslation"
+ fi
+ if [ -n "${unicodemap}" ]; then
+ param="$param -u $unicodemap"
+ fi
+
+ # Set the console font
+ ebegin "Setting console font [$consolefont]"
+ [ -d /dev/vc ] && ttydev=/dev/vc/
+ x=1
+ while [ $x -le $ttyn ]; do
+ if ! setfont $consolefont $param -C $ttydev$x >/dev/null; then
+ retval=1
+ break
+ fi
+ : $(( x += 1 ))
+ done
+ eend $retval
+
+ # Store the last font so we can use it ASAP on boot
+ if [ $retval -eq 0 -a -w "$RC_LIBEXECDIR" ]; then
+ mkdir -p "$RC_LIBEXECDIR"/console
+ for font in /usr/share/consolefonts/"$consolefont".*; do
+ :
+ done
+ cp "$font" "$RC_LIBEXECDIR"/console
+ echo "${font##*/}" >"$RC_LIBEXECDIR"/console/font
+ fi
+
+ return $retval
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+description="Check and repair filesystems according to /etc/fstab"
+_IFS="
+"
+
+depend()
+{
+ use dev clock modules
+ keyword -jail -openvz -prefix -timeout -vserver -lxc
+}
+
+_abort() {
+ rc-abort
+ return 1
+}
+
+# We should only reboot when first booting
+_reboot() {
+ if [ "$RC_RUNLEVEL" = "$RC_BOOTLEVEL" ]; then
+ reboot "$@"
+ _abort || return 1
+ fi
+}
+
+_forcefsck()
+{
+ [ -e /forcefsck ] || get_bootparam forcefsck
+}
+
+start()
+{
+ local fsck_opts= p= check_extra=
+
+ if [ -e /fastboot ]; then
+ ewarn "Skipping fsck due to /fastboot"
+ return 0
+ fi
+ if _forcefsck; then
+ fsck_opts="$fsck_opts -f"
+ check_extra="(check forced)"
+ elif ! yesno ${fsck_on_battery:-YES} && ! on_ac_power; then
+ ewarn "Skipping fsck due to not being on AC power"
+ return 0
+ fi
+
+ if [ -n "$fsck_passno" ]; then
+ check_extra="[passno $fsck_passno] $check_extra"
+ fi
+ ebegin "Checking local filesystems $check_extra"
+ for p in $fsck_passno; do
+ local IFS="$_IFS"
+ case "$p" in
+ [0-9]*) p="=$p";;
+ esac
+ set -- "$@" $(fstabinfo --passno "$p")
+ unset IFS
+ done
+
+ if [ "$RC_UNAME" = Linux ]; then
+ fsck_opts="$fsck_opts -C0 -T"
+ if [ -z "$fsck_passno" ]; then
+ fsck_args=${fsck_args--A -p}
+ if echo 2>/dev/null >/.test.$$; then
+ rm -f /.test.$$
+ fsck_opts="$fsck_opts -R"
+ fi
+ fi
+ fi
+
+ trap : INT QUIT
+ fsck ${fsck_args--p} $fsck_opts "$@"
+ case $? in
+ 0) eend 0; return 0;;
+ 1) ewend 1 "Filesystems repaired"; return 0;;
+ 2|3) if [ "$RC_UNAME" = Linux ]; then
+ ewend 1 "Filesystems repaired, but reboot needed"
+ _reboot -f
+ else
+ ewend 1 "Filesystems still have errors;" \
+ "manual fsck required"
+ _abort
+ fi;;
+ 4) if [ "$RC_UNAME" = Linux ]; then
+ ewend 1 "Fileystem errors left uncorrected, aborting"
+ _abort
+ else
+ ewend 1 "Filesystems repaired, but reboot needed"
+ _reboot
+ fi;;
+ 8) ewend 1 "Operational error"; return 0;;
+ 12) ewend 1 "fsck interupted";;
+ *) eend 2 "Filesystems couldn't be fixed";;
+ esac
+ _abort || return 1
+}
+
+stop()
+{
+ # Fake function so we always shutdown correctly.
+ _abort() { return 0; }
+ _reboot() { return 0; }
+ _forcefsck() { return 1; }
+
+ yesno $fsck_shutdown && start
+ return 0
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+description="Check and repair filesystems according to /etc/fstab"
+_IFS="
+"
+
+depend()
+{
+ use dev clock modules
+ keyword -jail -openvz -prefix -timeout -vserver -lxc
+}
+
+_abort() {
+ rc-abort
+ return 1
+}
+
+# We should only reboot when first booting
+_reboot() {
+ if [ "$RC_RUNLEVEL" = "$RC_BOOTLEVEL" ]; then
+ reboot "$@"
+ _abort || return 1
+ fi
+}
+
+_forcefsck()
+{
+ [ -e /forcefsck ] || get_bootparam forcefsck
+}
+
+start()
+{
+ local fsck_opts= p= check_extra=
+
+ if [ -e /fastboot ]; then
+ ewarn "Skipping fsck due to /fastboot"
+ return 0
+ fi
+ if _forcefsck; then
+ fsck_opts="$fsck_opts -f"
+ check_extra="(check forced)"
+ elif ! yesno ${fsck_on_battery:-YES} && ! on_ac_power; then
+ ewarn "Skipping fsck due to not being on AC power"
+ return 0
+ fi
+
+ if [ -n "$fsck_passno" ]; then
+ check_extra="[passno $fsck_passno] $check_extra"
+ if [ -n "$fsck_mnt" ]; then
+ eerror "Only 1 of fsck_passno and fsck_mnt must be set!"
+ return 1
+ fi
+ fi
+ ebegin "Checking local filesystems $check_extra"
+ # Append passno mounts
+ for p in $fsck_passno; do
+ local IFS="$_IFS"
+ case "$p" in
+ [0-9]*) p="=$p";;
+ esac
+ set -- "$@" $(fstabinfo --passno "$p")
+ unset IFS
+ done
+ # Append custom mounts
+ for m in $fsck_mnt ; do
+ local IFS="$_IFS"
+ set -- "$@" "$m"
+ unset IFS
+ done
+
+ if [ "$RC_UNAME" = Linux ]; then
+ fsck_opts="$fsck_opts -C0 -T"
+ if [ -z "$fsck_passno" -a -z "$fsck_mnt" ]; then
+ fsck_args=${fsck_args--A -p}
+ if echo 2>/dev/null >/.test.$$; then
+ rm -f /.test.$$
+ fsck_opts="$fsck_opts -R"
+ fi
+ fi
+ fi
+
+ trap : INT QUIT
+ fsck ${fsck_args--p} $fsck_opts "$@"
+ case $? in
+ 0) eend 0; return 0;;
+ 1) ewend 1 "Filesystems repaired"; return 0;;
+ 2|3) if [ "$RC_UNAME" = Linux ]; then
+ ewend 1 "Filesystems repaired, but reboot needed"
+ _reboot -f
+ else
+ ewend 1 "Filesystems still have errors;" \
+ "manual fsck required"
+ _abort
+ fi;;
+ 4) if [ "$RC_UNAME" = Linux ]; then
+ ewend 1 "Fileystem errors left uncorrected, aborting"
+ _abort
+ else
+ ewend 1 "Filesystems repaired, but reboot needed"
+ _reboot
+ fi;;
+ 8) ewend 1 "Operational error"; return 0;;
+ 12) ewend 1 "fsck interrupted";;
+ *) eend 2 "Filesystems couldn't be fixed";;
+ esac
+ _abort || return 1
+}
+
+stop()
+{
+ # Fake function so we always shutdown correctly.
+ _abort() { return 0; }
+ _reboot() { return 0; }
+ _forcefsck() { return 1; }
+
+ yesno $fsck_shutdown && start
+ return 0
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2008 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+extra_commands="save show"
+
+description="Sets the local clock to UTC or Local Time."
+description_save="Saves the current time in the BIOS."
+description_show="Displays the current time in the BIOS."
+
+: ${clock_adjfile:=${CLOCK_ADJFILE}}
+: ${clock_args:=${CLOCK_OPTS}}
+: ${clock_systohc:=${CLOCK_SYSTOHC}}
+: ${clock:=${CLOCK:-UTC}}
+if [ "$clock" = "UTC" ]; then
+ utc="UTC"
+ utc_cmd="--utc"
+else
+ utc="Local Time"
+ utc_cmd="--localtime"
+fi
+
+depend()
+{
+ provide clock
+ if yesno $clock_adjfile; then
+ use root
+ else
+ before *
+ fi
+ keyword -openvz -prefix -uml -vserver -xenu -lxc
+}
+
+setupopts()
+{
+ case "$(uname -m)" in
+ s390*)
+ utc="s390"
+ ;;
+ *)
+ if [ -e /proc/devices ] && \
+ grep -q " cobd$" /proc/devices
+ then
+ utc="coLinux"
+ fi
+ ;;
+ esac
+
+ case "$utc" in
+ UTC|Local" "Time);;
+ *) unset utc_cmd;;
+ esac
+}
+
+# hwclock doesn't always return non zero on error
+_hwclock()
+{
+ local err="$(hwclock "$@" 2>&1 >/dev/null)"
+
+ [ -z "$err" ] && return 0
+ echo "${err}" >&2
+ return 1
+}
+
+start()
+{
+ local retval=0 errstr=""
+ setupopts
+
+ if [ -z "$utc_cmd" ]; then
+ ewarn "Not setting clock for $utc system"
+ return 0
+ fi
+
+ ebegin "Setting system clock using the hardware clock [$utc]"
+ if [ -e /proc/modules ]; then
+ local rtc=
+ for rtc in /dev/rtc /dev/rtc[0-9]*; do
+ [ -e "$rtc" ] && break
+ done
+ if [ ! -e "${rtc}" ]; then
+ modprobe -q rtc-cmos || modprobe -q rtc || modprobe -q genrtc
+ fi
+ fi
+
+ if [ -e /etc/adjtime ] && yesno $clock_adjfile; then
+ _hwclock --adjust $utc_cmd
+ retval=$(($retval + $?))
+ fi
+
+ # If setting UTC, don't bother to run hwclock when first booting
+ # as that's the default
+ if [ "$PREVLEVEL" != N -o \
+ "$utc_cmd" != --utc -o \
+ -n "$clock_args" ];
+ then
+ if yesno $clock_hctosys; then
+ _hwclock --hctosys $utc_cmd $clock_args
+ else
+ _hwclock --systz $utc_cmd $clock_args
+ fi
+ retval=$(($retval + $?))
+ fi
+
+ eend $retval "Failed to set the system clock"
+
+ return 0
+}
+
+stop()
+{
+ # Don't tweak the hardware clock on LiveCD halt.
+ [ -n "$CDBOOT" ] && return 0
+ yesno $clock_systohc || return 0
+
+ local retval=0 errstr=""
+ setupopts
+
+ [ -z "$utc_cmd" ] && return 0
+
+ ebegin "Setting hardware clock using the system clock" "[$utc]"
+
+ if ! yesno $clock_adjfile; then
+ # Some implementations don't handle adjustments
+ if LC_ALL=C hwclock --help 2>&1 | grep -q "\-\-noadjfile"; then
+ utc_cmd="$utc_cmd --noadjfile"
+ fi
+ fi
+
+ _hwclock --systohc $utc_cmd $clock_args
+ retval=$?
+
+ eend $retval "Failed to sync clocks"
+}
+
+save()
+{
+ clock_systohc=yes
+ stop
+}
+
+show()
+{
+ setupopts
+ hwclock --show "$utc_cmd" $clock_args
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2008 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+extra_commands="save show"
+
+description="Sets the local clock to UTC or Local Time."
+description_save="Saves the current time in the BIOS."
+description_show="Displays the current time in the BIOS."
+
+: ${clock_adjfile:=${CLOCK_ADJFILE}}
+: ${clock_args:=${CLOCK_OPTS}}
+: ${clock_systohc:=${CLOCK_SYSTOHC}}
+: ${clock:=${CLOCK:-UTC}}
+if [ "$clock" = "UTC" ]; then
+ utc="UTC"
+ utc_cmd="--utc"
+else
+ utc="Local Time"
+ utc_cmd="--localtime"
+fi
+
+depend()
+{
+ provide clock
+ if yesno $clock_adjfile; then
+ use root
+ else
+ before *
+ fi
+ keyword -openvz -prefix -uml -vserver -xenu -lxc
+}
+
+setupopts()
+{
+ case "$(uname -m)" in
+ s390*)
+ utc="s390"
+ ;;
+ *)
+ if [ -e /proc/devices ] && \
+ grep -q " cobd$" /proc/devices
+ then
+ utc="coLinux"
+ fi
+ ;;
+ esac
+
+ case "$utc" in
+ UTC|Local" "Time);;
+ *) unset utc_cmd;;
+ esac
+}
+
+# hwclock doesn't always return non zero on error
+_hwclock()
+{
+ local err="$(hwclock "$@" 2>&1 >/dev/null)"
+
+ [ -z "$err" ] && return 0
+ echo "${err}" >&2
+ return 1
+}
+
+start()
+{
+ local retval=0 errstr=""
+ setupopts
+
+ if [ -z "$utc_cmd" ]; then
+ ewarn "Not setting clock for $utc system"
+ return 0
+ fi
+
+ ebegin "Setting system clock using the hardware clock [$utc]"
+ if [ -e /proc/modules ]; then
+ local rtc=
+ for rtc in /dev/rtc /dev/rtc[0-9]*; do
+ [ -e "$rtc" ] && break
+ done
+ if [ ! -e "${rtc}" ]; then
+ modprobe -q rtc-cmos || modprobe -q rtc || modprobe -q genrtc
+ fi
+ fi
+
+ if [ -e /etc/adjtime ] && yesno $clock_adjfile; then
+ _hwclock --adjust $utc_cmd
+ : $(( retval += $? ))
+ fi
+
+ # If setting UTC, don't bother to run hwclock when first booting
+ # as that's the default
+ if [ "$PREVLEVEL" != N -o \
+ "$utc_cmd" != --utc -o \
+ -n "$clock_args" ];
+ then
+ if yesno $clock_hctosys; then
+ _hwclock --hctosys $utc_cmd $clock_args
+ else
+ _hwclock --systz $utc_cmd $clock_args
+ fi
+ : $(( retval += $? ))
+ fi
+
+ eend $retval "Failed to set the system clock"
+
+ return 0
+}
+
+stop()
+{
+ # Don't tweak the hardware clock on LiveCD halt.
+ [ -n "$CDBOOT" ] && return 0
+ yesno $clock_systohc || return 0
+
+ local retval=0 errstr=""
+ setupopts
+
+ [ -z "$utc_cmd" ] && return 0
+
+ ebegin "Setting hardware clock using the system clock" "[$utc]"
+
+ if ! yesno $clock_adjfile; then
+ # Some implementations don't handle adjustments
+ if LC_ALL=C hwclock --help 2>&1 | grep -q "\-\-noadjfile"; then
+ utc_cmd="$utc_cmd --noadjfile"
+ fi
+ fi
+
+ _hwclock --systohc $utc_cmd $clock_args
+ retval=$?
+
+ eend $retval "Failed to sync clocks"
+}
+
+save()
+{
+ clock_systohc=yes
+ stop
+}
+
+show()
+{
+ setupopts
+ hwclock --show "$utc_cmd" $clock_args
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2008 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+description="Applies a keymap for the consoles."
+
+depend()
+{
+ need localmount termencoding
+ after bootmisc
+ keyword -openvz -prefix -uml -vserver -xenu -lxc
+}
+
+start()
+{
+ ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
+ : ${unicode:=$UNICODE}
+ : ${keymap:=$KEYMAP}
+ : ${extended_keymaps:=$EXTENDED_KEYMAPS}
+ : ${windowkeys:=$SET_WINDOWSKEYS}
+ : ${fix_euro:=$FIX_EURO}
+ : ${dumpkeys_charset:=${DUMPKEYS_CHARSET}}
+
+ if [ -z "$keymap" ]; then
+ eerror "You need to setup keymap in /etc/conf.d/keymaps first"
+ return 1
+ fi
+
+ local ttydev=/dev/tty n=
+ [ -d /dev/vc ] && ttydev=/dev/vc/
+
+ # Force linux keycodes for PPC.
+ if [ -f /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes ]; then
+ echo 1 > /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes
+ fi
+
+ local wkeys= kmode="-a" msg="ASCII"
+ if yesno $unicode; then
+ kmode="-u"
+ msg="UTF-8"
+ fi
+ yesno $windowkeys && wkeys="windowkeys"
+
+ # Set terminal encoding to either ASCII or UNICODE.
+ # See utf-8(7) for more information.
+ ebegin "Setting keyboard mode [$msg]"
+ n=1
+ while [ $n -le $ttyn ]; do
+ kbd_mode $kmode -C $ttydev$n
+ n=$(($n + 1))
+ done
+ eend 0
+
+ ebegin "Loading key mappings [$keymap]"
+ loadkeys -q $wkeys $keymap $extended_keymaps
+ eend $? "Error loading key mappings" || return $?
+
+ if yesno $fix_euro; then
+ ebegin "Fixing font for euro symbol"
+ # Fix some fonts displaying the Euro, #173528.
+ echo "altgr keycode 18 = U+20AC" | loadkeys -q
+ eend $?
+ fi
+
+ # Save the keymapping for use immediately at boot
+ if [ -w "$RC_LIBEXECDIR" ]; then
+ mkdir -p "$RC_LIBEXECDIR"/console
+ dumpkeys >"$RC_LIBEXECDIR"/console/keymap
+ fi
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2008 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+description="Applies a keymap for the consoles."
+
+depend()
+{
+ need localmount termencoding
+ after bootmisc
+ keyword -openvz -prefix -uml -vserver -xenu -lxc
+}
+
+start()
+{
+ ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
+ : ${unicode:=$UNICODE}
+ : ${keymap:=$KEYMAP}
+ : ${extended_keymaps:=$EXTENDED_KEYMAPS}
+ : ${windowkeys:=$SET_WINDOWSKEYS}
+ : ${fix_euro:=$FIX_EURO}
+ : ${dumpkeys_charset:=${DUMPKEYS_CHARSET}}
+
+ if [ -z "$keymap" ]; then
+ eerror "You need to setup keymap in /etc/conf.d/keymaps first"
+ return 1
+ fi
+
+ local ttydev=/dev/tty n=
+ [ -d /dev/vc ] && ttydev=/dev/vc/
+
+ # Force linux keycodes for PPC.
+ if [ -f /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes ]; then
+ echo 1 > /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes
+ fi
+
+ local wkeys= kmode="-a" msg="ASCII"
+ if yesno $unicode; then
+ kmode="-u"
+ msg="UTF-8"
+ fi
+ yesno $windowkeys && wkeys="windowkeys"
+
+ # Set terminal encoding to either ASCII or UNICODE.
+ # See utf-8(7) for more information.
+ ebegin "Setting keyboard mode [$msg]"
+ n=1
+ while [ $n -le $ttyn ]; do
+ kbd_mode $kmode -C $ttydev$n
+ : $(( n += 1 ))
+ done
+ eend 0
+
+ ebegin "Loading key mappings [$keymap]"
+ loadkeys -q $wkeys $keymap $extended_keymaps
+ eend $? "Error loading key mappings" || return $?
+
+ if yesno $fix_euro; then
+ ebegin "Fixing font for euro symbol"
+ # Fix some fonts displaying the Euro, #173528.
+ echo "altgr keycode 18 = U+20AC" | loadkeys -q
+ eend $?
+ fi
+
+ # Save the keymapping for use immediately at boot
+ if [ -w "$RC_LIBEXECDIR" ]; then
+ mkdir -p "$RC_LIBEXECDIR"/console
+ dumpkeys >"$RC_LIBEXECDIR"/console/keymap
+ fi
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+description="Loads a user defined list of kernel modules."
+
+depend()
+{
+ use isapnp
+ keyword -openvz -prefix -vserver -lxc
+}
+
+start()
+{
+ # Should not fail if kernel do not have module
+ # support compiled in ...
+ [ ! -f /proc/modules ] && return 0
+
+ local KV x y kv_variant_list
+ KV=$(uname -r)
+ # full $KV
+ kv_variant_list="${KV}"
+ # remove any KV_EXTRA options to just get the full version
+ x=${KV%%-*}
+ # now slowly strip them
+ while [ -n "$x" ] && [ "$x" != "$y" ]; do
+ kv_variant_list="${kv_variant_list} $x"
+ y=$x
+ x=${x%.*}
+ done
+
+ local list= x= xx= y= args= mpargs= cnt=0 a=
+ for x in $kv_variant_list ; do
+ eval list=\$modules_$(shell_var "$x")
+ [ -n "$list" ] && break
+ done
+ [ -z "$list" ] && list=$modules
+
+ for x in $list; do
+ a=${x#*:}
+ if [ "$a" = "$x" ]; then
+ unset mpargs
+ ebegin "Loading module $x"
+ else
+ x=${x%%:*}
+ mpargs="-o $a"
+ ebegin "Loading module $x as $a"
+ fi
+ aa=$(shell_var "$a")
+ xx=$(shell_var "$x")
+ for y in $kv_variant_list ; do
+ eval args=\$module_${aa}_args_$(shell_var "$y")
+ [ -n "${args}" ] && break
+ eval args=\$module_${xx}_args_$(shell_var "$y")
+ [ -n "${args}" ] && break
+ done
+ [ -z "$args" ] && eval args=\$module_${aa}_args
+ [ -z "$args" ] && eval args=\$module_${xx}_args
+ eval modprobe -q "$mpargs" "$x" "$args"
+ eend $? "Failed to load $x" && cnt=$(($cnt + 1))
+ done
+ einfo "Autoloaded $cnt module(s)"
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+description="Loads a user defined list of kernel modules."
+
+depend()
+{
+ use isapnp
+ keyword -openvz -prefix -vserver -lxc
+}
+
+start()
+{
+ # Should not fail if kernel do not have module
+ # support compiled in ...
+ [ ! -f /proc/modules ] && return 0
+
+ local KV x y kv_variant_list
+ KV=$(uname -r)
+ # full $KV
+ kv_variant_list="${KV}"
+ # remove any KV_EXTRA options to just get the full version
+ x=${KV%%-*}
+ # now slowly strip them
+ while [ -n "$x" ] && [ "$x" != "$y" ]; do
+ kv_variant_list="${kv_variant_list} $x"
+ y=$x
+ x=${x%.*}
+ done
+
+ local list= x= xx= y= args= mpargs= cnt=0 a=
+ for x in $kv_variant_list ; do
+ eval list=\$modules_$(shell_var "$x")
+ [ -n "$list" ] && break
+ done
+ [ -z "$list" ] && list=$modules
+
+ for x in $list; do
+ a=${x#*:}
+ if [ "$a" = "$x" ]; then
+ unset mpargs
+ ebegin "Loading module $x"
+ else
+ x=${x%%:*}
+ mpargs="-o $a"
+ ebegin "Loading module $x as $a"
+ fi
+ aa=$(shell_var "$a")
+ xx=$(shell_var "$x")
+ for y in $kv_variant_list ; do
+ eval args=\$module_${aa}_args_$(shell_var "$y")
+ [ -n "${args}" ] && break
+ eval args=\$module_${xx}_args_$(shell_var "$y")
+ [ -n "${args}" ] && break
+ done
+ [ -z "$args" ] && eval args=\$module_${aa}_args
+ [ -z "$args" ] && eval args=\$module_${xx}_args
+ eval modprobe -q "$mpargs" "$x" "$args"
+ eend $? "Failed to load $x" && : $(( cnt += 1 ))
+ done
+ einfo "Autoloaded $cnt module(s)"
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+MODULESDIR="${RC_LIBEXECDIR}/net"
+MODULESLIST="${RC_SVCDIR}/nettree"
+_config_vars="config routes"
+
+[ -z "${IN_BACKGROUND}" ] && IN_BACKGROUND="NO"
+
+description="Configures network interfaces."
+
+# Handy var so we don't have to embed new lines everywhere for array splitting
+__IFS="
+"
+depend()
+{
+ local IFACE=${RC_SVCNAME#*.}
+ local IFVAR=$(shell_var "${IFACE}")
+
+ need localmount
+ after bootmisc
+ provide net
+ keyword -jail -prefix -vserver
+
+ case "${IFACE}" in
+ lo|lo0);;
+ *) after net.lo net.lo0;;
+ esac
+
+ if [ "$(command -v "depend_${IFVAR}")" = "depend_${IFVAR}" ]; then
+ depend_${IFVAR}
+ fi
+
+ local dep= prov=
+ for dep in need use before after provide keyword; do
+ eval prov=\$rc_${dep}_${IFVAR}
+ if [ -n "${prov}" ]; then
+ ${dep} ${prov}
+ fi
+ done
+}
+
+# Support bash arrays - sigh
+_array_helper()
+{
+ local _a=
+
+ eval _a=\$$1
+ _a=$(echo "${_a}" | sed -e 's:^[[:space:]]*::' -e 's:[[:space:]]*$::' -e '/^$/d' -e 's:[[:space:]]\{1,\}: :g')
+
+ [ -n "${_a}" ] && printf "%s\n" "${_a}"
+}
+
+_get_array()
+{
+ local _a=
+ if [ -n "${BASH}" ]; then
+ case "$(declare -p "$1" 2>/dev/null)" in
+ "declare -a "*)
+ ewarn "You are using a bash array for $1."
+ ewarn "This feature will be removed in the future."
+ ewarn "Please see net.example for the correct format for $1."
+ eval "set -- \"\${$1[@]}\""
+ for _a; do
+ printf "%s\n" "${_a}"
+ done
+ return 0
+ ;;
+ esac
+ fi
+
+ _array_helper $1
+}
+
+# Flatten bash arrays to simple strings
+_flatten_array()
+{
+ if [ -n "${BASH}" ]; then
+ case "$(declare -p "$1" 2>/dev/null)" in
+ "declare -a "*)
+ ewarn "You are using a bash array for $1."
+ ewarn "This feature will be removed in the future."
+ ewarn "Please see net.example for the correct format for $1."
+ eval "set -- \"\${$1[@]}\""
+ for x; do
+ printf "'%s' " "$(printf "$x" | sed "s:':'\\\'':g")"
+ done
+ return 0
+ ;;
+ esac
+ fi
+
+ _array_helper $1
+}
+
+_wait_for_carrier()
+{
+ local timeout= efunc=einfon
+
+ _has_carrier && return 0
+
+ eval timeout=\$carrier_timeout_${IFVAR}
+ timeout=${timeout:-${carrier_timeout:-5}}
+
+ # Incase users don't want this nice feature ...
+ [ ${timeout} -le 0 ] && return 0
+
+ yesno ${RC_PARALLEL} && efunc=einfo
+ ${efunc} "Waiting for carrier (${timeout} seconds) "
+ while [ ${timeout} -gt 0 ]; do
+ sleep 1
+ if _has_carrier; then
+ [ "${efunc}" = "einfon" ] && echo
+ eend 0
+ return 0
+ fi
+ timeout=$((${timeout} - 1))
+ [ "${efunc}" = "einfon" ] && printf "."
+ done
+
+ [ "${efunc}" = "einfon" ] && echo
+ eend 1
+ return 1
+}
+
+_netmask2cidr()
+{
+ # Some shells cannot handle hex arithmetic, so we massage it slightly
+ # Buggy shells include FreeBSD sh, dash and busybox.
+ # bash and NetBSD sh don't need this.
+ case $1 in
+ 0x*)
+ local hex=${1#0x*} quad=
+ while [ -n "${hex}" ]; do
+ local lastbut2=${hex#??*}
+ quad=${quad}${quad:+.}0x${hex%${lastbut2}*}
+ hex=${lastbut2}
+ done
+ set -- ${quad}
+ ;;
+ esac
+
+ local i= len=
+ local IFS=.
+ for i in $1; do
+ while [ ${i} != "0" ]; do
+ len=$((${len} + ${i} % 2))
+ i=$((${i} >> 1))
+ done
+ done
+
+ echo "${len}"
+}
+
+_configure_variables()
+{
+ local var= v= t=
+
+ for var in ${_config_vars}; do
+ local v=
+ for t; do
+ eval v=\$${var}_${t}
+ if [ -n "${v}" ]; then
+ eval ${var}_${IFVAR}=\$${var}_${t}
+ continue 2
+ fi
+ done
+ done
+}
+
+_show_address()
+{
+ einfo "received address $(_get_inet_address "${IFACE}")"
+}
+
+# Basically sorts our modules into order and saves the list
+_gen_module_list()
+{
+ local x= f= force=$1
+ if ! ${force} && [ -s "${MODULESLIST}" -a "${MODULESLIST}" -nt "${MODULESDIR}" ]; then
+ local update=false
+ for x in "${MODULESDIR}"/*.sh; do
+ [ -e "${x}" ] || continue
+ if [ "${x}" -nt "${MODULESLIST}" ]; then
+ update=true
+ break
+ fi
+ done
+ ${update} || return 0
+ fi
+
+ einfo "Caching network module dependencies"
+ # Run in a subshell to protect the main script
+ (
+ after() {
+ eval ${MODULE}_after="\"\${${MODULE}_after}\${${MODULE}_after:+ }$*\""
+ }
+
+ before() {
+ local mod=${MODULE}
+ local MODULE=
+ for MODULE; do
+ after "${mod}"
+ done
+ }
+
+ program() {
+ if [ "$1" = "start" -o "$1" = "stop" ]; then
+ local s="$1"
+ shift
+ eval ${MODULE}_program_${s}="\"\${${MODULE}_program_${s}}\${${MODULE}_program_${s}:+ }$*\""
+ else
+ eval ${MODULE}_program="\"\${${MODULE}_program}\${${MODULE}_program:+ }$*\""
+ fi
+ }
+
+ provide() {
+ eval ${MODULE}_provide="\"\${${MODULE}_provide}\${${MODULE}_provide:+ }$*\""
+ local x
+ for x in $*; do
+ eval ${x}_providedby="\"\${${MODULE}_providedby}\${${MODULE}_providedby:+ }${MODULE}\""
+ done
+ }
+
+ for MODULE in "${MODULESDIR}"/*.sh; do
+ sh -n "${MODULE}" || continue
+ . "${MODULE}" || continue
+ MODULE=${MODULE#${MODULESDIR}/}
+ MODULE=${MODULE%.sh}
+ eval ${MODULE}_depend
+ MODULES="${MODULES} ${MODULE}"
+ done
+
+ VISITED=
+ SORTED=
+ visit() {
+ case " ${VISITED} " in
+ *" $1 "*) return;;
+ esac
+ VISITED="${VISITED} $1"
+
+ eval AFTER=\$${1}_after
+ for MODULE in ${AFTER}; do
+ eval PROVIDEDBY=\$${MODULE}_providedby
+ if [ -n "${PROVIDEDBY}" ]; then
+ for MODULE in ${PROVIDEDBY}; do
+ visit "${MODULE}"
+ done
+ else
+ visit "${MODULE}"
+ fi
+ done
+
+ eval PROVIDE=\$${1}_provide
+ for MODULE in ${PROVIDE}; do
+ visit "${MODULE}"
+ done
+
+ eval PROVIDEDBY=\$${1}_providedby
+ [ -z "${PROVIDEDBY}" ] && SORTED="${SORTED} $1"
+ }
+
+ for MODULE in ${MODULES}; do
+ visit "${MODULE}"
+ done
+
+ printf "" > "${MODULESLIST}"
+ i=0
+ for MODULE in ${SORTED}; do
+ eval PROGRAM=\$${MODULE}_program
+ eval PROGRAM_START=\$${MODULE}_program_start
+ eval PROGRAM_STOP=\$${MODULE}_program_stop
+ eval PROVIDE=\$${MODULE}_provide
+ echo "module_${i}='${MODULE}'" >> "${MODULESLIST}"
+ echo "module_${i}_program='${PROGRAM}'" >> "${MODULESLIST}"
+ echo "module_${i}_program_start='${PROGRAM_START}'" >> "${MODULESLIST}"
+ echo "module_${i}_program_stop='${PROGRAM_STOP}'" >> "${MODULESLIST}"
+ echo "module_${i}_provide='${PROVIDE}'" >> "${MODULESLIST}"
+ i=$((${i} + 1))
+ done
+ echo "module_${i}=" >> "${MODULESLIST}"
+ )
+
+ return 0
+}
+
+_load_modules()
+{
+ local starting=$1 mymods=
+
+ # Ensure our list is up to date
+ _gen_module_list false
+ if ! . "${MODULESLIST}"; then
+ _gen_module_list true
+ . "${MODULESLIST}"
+ fi
+
+ MODULES=
+ if [ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ]; then
+ eval mymods=\$modules_${IFVAR}
+ [ -z "${mymods}" ] && mymods=${modules}
+ fi
+
+ local i=-1 x= mod= f= provides=
+ while true; do
+ i=$((${i} + 1))
+ eval mod=\$module_${i}
+ [ -z "${mod}" ] && break
+ [ -e "${MODULESDIR}/${mod}.sh" ] || continue
+
+ eval set -- \$module_${i}_program
+ if [ -n "$1" ]; then
+ x=
+ for x; do
+ [ -x "${x}" ] && break
+ done
+ [ -x "${x}" ] || continue
+ fi
+ if ${starting}; then
+ eval set -- \$module_${i}_program_start
+ else
+ eval set -- \$module_${i}_program_stop
+ fi
+ if [ -n "$1" ]; then
+ x=
+ for x; do
+ case "${x}" in
+ /*) [ -x "${x}" ] && break;;
+ *) type "${x}" >/dev/null 2>&1 && break;;
+ esac
+ unset x
+ done
+ [ -n "${x}" ] || continue
+ fi
+
+ eval provides=\$module_${i}_provide
+ if ${starting}; then
+ case " ${mymods} " in
+ *" !${mod} "*) continue;;
+ *" !${provides} "*) [ -n "${provides}" ] && continue;;
+ esac
+ fi
+ MODULES="${MODULES}${MODULES:+ }${mod}"
+
+ # Now load and wrap our functions
+ if ! . "${MODULESDIR}/${mod}.sh"; then
+ eend 1 "${RC_SVCNAME}: error loading module \`${mod}'"
+ exit 1
+ fi
+
+ [ -z "${provides}" ] && continue
+
+ # Wrap our provides
+ local f=
+ for f in pre_start start post_start; do
+ eval "${provides}_${f}() { [ "$(command -v "${mod}_${f}")" = "${mod}_${f}" ] || return 0; ${mod}_${f} \"\$@\"; }"
+ done
+
+ eval module_${mod}_provides="${provides}"
+ eval module_${provides}_providedby="${mod}"
+ done
+
+ # Wrap our preferred modules
+ for mod in ${mymods}; do
+ case " ${MODULES} " in
+ *" ${mod} "*)
+ eval x=\$module_${mod}_provides
+ [ -z "${x}" ] && continue
+ for f in pre_start start post_start; do
+ eval "${x}_${f}() { [ "$(command -v "${mod}_${f}")" = "${mod}_${f}" ] || return 0; ${mod}_${f} \"\$@\"; }"
+ done
+ eval module_${x}_providedby="${mod}"
+ ;;
+ esac
+ done
+
+ # Finally remove any duplicated provides from our list if we're starting
+ # Otherwise reverse the list
+ local LIST="${MODULES}" p=
+ MODULES=
+ if ${starting}; then
+ for mod in ${LIST}; do
+ eval x=\$module_${mod}_provides
+ if [ -n "${x}" ]; then
+ eval p=\$module_${x}_providedby
+ [ "${mod}" != "${p}" ] && continue
+ fi
+ MODULES="${MODULES}${MODULES:+ }${mod}"
+ done
+ else
+ for mod in ${LIST}; do
+ MODULES="${mod}${MODULES:+ }${MODULES}"
+ done
+ fi
+
+ veinfo "Loaded modules: ${MODULES}"
+}
+
+_load_config()
+{
+ local config="$(_get_array "config_${IFVAR}")"
+ local fallback="$(_get_array fallback_${IFVAR})"
+
+ config_index=0
+ local IFS="$__IFS"
+ set -- ${config}
+
+ # We should support a space separated array for cidr configs
+ if [ $# = 1 ]; then
+ unset IFS
+ set -- ${config}
+ # Of course, we may have a single address added old style.
+ case "$2" in
+ netmask|broadcast|brd|brd+|peer|pointopoint)
+ local IFS="$__IFS"
+ set -- ${config}
+ ;;
+ esac
+ fi
+
+ # Ensure that loopback has the correct address
+ if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ]; then
+ if [ "$1" != "null" ]; then
+ config_0="127.0.0.1/8"
+ config_index=1
+ fi
+ else
+ if [ -z "$1" ]; then
+ ewarn "No configuration specified; defaulting to DHCP"
+ config_0="dhcp"
+ config_index=1
+ fi
+ fi
+
+
+ # We store our config in an array like vars
+ # so modules can influence it
+ for cmd; do
+ eval config_${config_index}="'${cmd}'"
+ config_index=$((${config_index} + 1))
+ done
+ # Terminate the list
+ eval config_${config_index}=
+
+ config_index=0
+ for cmd in ${fallback}; do
+ eval fallback_${config_index}="'${cmd}'"
+ config_index=$((${config_index} + 1))
+ done
+ # Terminate the list
+ eval fallback_${config_index}=
+
+ # Don't set to zero, so any net modules don't have to do anything extra
+ config_index=-1
+}
+
+# Support functions
+_run_if()
+{
+ local cmd=$1 iface=$2 ifr=${IFACE} ifv=${IFVAR}
+ # Ensure that we don't stamp on real values
+ local IFACE= IFVAR=
+ shift
+ if [ -n "${iface}" ]; then
+ IFACE="${iface}"
+ [ "${iface}" != "${ifr}" ] && IFVAR=$(shell_var "${IFACE}")
+ else
+ IFACE=${ifr}
+ IFVAR=${ifv}
+ fi
+ ${cmd}
+}
+interface_exists()
+{
+ _run_if _exists "$@"
+}
+interface_up()
+{
+ _run_if _up "$@"
+}
+interface_down()
+{
+ _run_if _down "$@"
+}
+
+start()
+{
+ local IFACE=${RC_SVCNAME#*.} oneworked=false fallback=false module=
+ local IFVAR=$(shell_var "${IFACE}") cmd= our_metric=
+ local metric=0
+
+ einfo "Bringing up interface ${IFACE}"
+ eindent
+
+ if [ -z "${MODULES}" ]; then
+ local MODULES=
+ _load_modules true
+ fi
+
+ # We up the iface twice if we have a preup to ensure it's up if
+ # available in preup and afterwards incase the user inadvertently
+ # brings it down
+ if [ "$(command -v preup)" = "preup" ]; then
+ _up 2>/dev/null
+ ebegin "Running preup"
+ eindent
+ preup || return 1
+ eoutdent
+ fi
+
+ _up 2>/dev/null
+
+ for module in ${MODULES}; do
+ if [ "$(command -v "${module}_pre_start")" = "${module}_pre_start" ]; then
+ ${module}_pre_start || exit $?
+ fi
+ done
+
+ if ! _exists; then
+ eerror "ERROR: interface ${IFACE} does not exist"
+ eerror "Ensure that you have loaded the correct kernel module for your hardware"
+ return 1
+ fi
+
+ if ! _wait_for_carrier; then
+ if service_started devd; then
+ ewarn "no carrier, but devd will start us when we have one"
+ mark_service_inactive "${RC_SVCNAME}"
+ else
+ eerror "no carrier"
+ fi
+ return 1
+ fi
+
+ local config= config_index=
+ _load_config
+ config_index=0
+
+ eval our_metric=\$metric_${IFVAR}
+ if [ -n "${our_metric}" ]; then
+ metric=${our_metric}
+ elif [ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ]; then
+ metric=$((${metric} + $(_ifindex)))
+ fi
+
+ while true; do
+ eval config=\$config_${config_index}
+ [ -z "${config}" ] && break
+
+ set -- ${config}
+ if [ "$1" != "null" -a "$1" != "noop" ]; then
+ ebegin "$1"
+ fi
+ eindent
+ case "$1" in
+ noop)
+ if [ -n "$(_get_inet_address)" ]; then
+ oneworked=true
+ break
+ fi
+ ;;
+ null) :;;
+ [0-9]*|*:*) _add_address ${config};;
+ *)
+ if [ "$(command -v "${config}_start")" = "${config}_start" ]; then
+ "${config}"_start
+ else
+ eerror "nothing provides \`${config}'"
+ fi
+ ;;
+ esac
+ if eend $?; then
+ oneworked=true
+ else
+ eval config=\$fallback_${config_index}
+ if [ -n "${config}" ]; then
+ fallback=true
+ eoutdent
+ ewarn "Trying fallback configuration ${config}"
+ eindent
+ eval config_${config_index}=\$config
+ unset fallback_${config_index}
+ config_index=$((${config_index} - 1))
+ fi
+ fi
+ eoutdent
+ config_index=$((${config_index} + 1))
+ done
+
+ if ! ${oneworked}; then
+ if [ "$(command -v failup)" = "failup" ]; then
+ ebegin "Running failup"
+ eindent
+ failup
+ eoutdent
+ fi
+ return 1
+ fi
+
+ local hidefirstroute=false first=true routes=
+ if ${fallback}; then
+ routes="$(_get_array "fallback_routes_${IFVAR}")"
+ fi
+ if [ -z "${routes}" ]; then
+ routes="$(_get_array "routes_${IFVAR}")"
+ fi
+ if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ]; then
+ if [ "${config_0}" != "null" ]; then
+ routes="127.0.0.0/8 via 127.0.0.1
+${routes}"
+ hidefirstroute=true
+ fi
+ fi
+
+ local OIFS="${IFS}" SIFS="${IFS-y}"
+ local IFS="$__IFS"
+ for cmd in ${routes}; do
+ unset IFS
+ if ${first}; then
+ first=false
+ einfo "Adding routes"
+ fi
+ eindent
+ ebegin ${cmd}
+ # Work out if we're a host or a net if not told
+ case ${cmd} in
+ -net" "*|-host" "*);;
+ *" "netmask" "*) cmd="-net ${cmd}";;
+ *.*.*.*/32*) cmd="-host ${cmd}";;
+ *.*.*.*/*|0.0.0.0|0.0.0.0" "*) cmd="-net ${cmd}";;
+ default|default" "*) cmd="-net ${cmd}";;
+ *) cmd="-host ${cmd}";;
+ esac
+ if ${hidefirstroute}; then
+ _add_route ${cmd} >/dev/null 2>&1
+ hidefirstroute=false
+ else
+ _add_route ${cmd} >/dev/null
+ fi
+ eend $?
+ eoutdent
+ done
+ if [ "${SIFS}" = "y" ]; then
+ unset IFS
+ else
+ IFS="${OIFS}"
+ fi
+
+ for module in ${MODULES}; do
+ if [ "$(command -v "${module}_post_start")" = "${module}_post_start" ]; then
+ ${module}_post_start || exit $?
+ fi
+ done
+
+ if [ "$(command -v postup)" = "postup" ]; then
+ ebegin "Running postup"
+ eindent
+ postup
+ eoutdent
+ fi
+
+ return 0
+}
+
+stop()
+{
+ local IFACE=${RC_SVCNAME#*.} module=
+ local IFVAR=$(shell_var "${IFACE}") opts=
+
+ einfo "Bringing down interface ${IFACE}"
+ eindent
+
+ if [ -z "${MODULES}" ]; then
+ local MODULES=
+ _load_modules false
+ fi
+
+ if [ "$(command -v predown)" = "predown" ]; then
+ ebegin "Running predown"
+ eindent
+ predown || return 1
+ eoutdent
+ else
+ if is_net_fs /; then
+ eerror "root filesystem is network mounted -- can't stop ${IFACE}"
+ return 1
+ fi
+ fi
+
+ for module in ${MODULES}; do
+ if [ "$(command -v "${module}_pre_stop")" = "${module}_pre_stop" ]; then
+ ${module}_pre_stop || exit $?
+ fi
+ done
+
+ for module in ${MODULES}; do
+ if [ "$(command -v "${module}_stop")" = "${module}_stop" ]; then
+ ${module}_stop
+ fi
+ done
+
+ # Only delete addresses for interfaces that exist
+ if _exists; then
+ # PPP can manage it's own addresses when IN_BACKGROUND
+ # Important in case "demand" set on the ppp link
+ if ! (yesno ${IN_BACKGROUND} && is_ppp) ; then
+ _delete_addresses "${IFACE}"
+ fi
+ fi
+
+ for module in ${MODULES}; do
+ if [ "$(command -v "${module}_post_stop")" = "${module}_post_stop" ]; then
+ ${module}_post_stop
+ fi
+ done
+
+ # If not in background, and not loopback then bring the interface down
+ # unless overridden.
+ if ! yesno ${IN_BACKGROUND} && \
+ [ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ]; then
+ eval module=\$ifdown_${IFVAR}
+ module=${module:-${ifdown:-YES}}
+ yesno ${module} && _down 2>/dev/null
+ fi
+
+ type resolvconf >/dev/null 2>&1 && resolvconf -d "${IFACE}" 2>/dev/null
+
+ if [ "$(command -v "postdown")" = "postdown" ]; then
+ ebegin "Running postdown"
+ eindent
+ postdown
+ eoutdent
+ fi
+
+ return 0
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+MODULESDIR="${RC_LIBEXECDIR}/net"
+MODULESLIST="${RC_SVCDIR}/nettree"
+_config_vars="config routes"
+
+[ -z "${IN_BACKGROUND}" ] && IN_BACKGROUND="NO"
+
+description="Configures network interfaces."
+
+# Handy var so we don't have to embed new lines everywhere for array splitting
+__IFS="
+"
+depend()
+{
+ local IFACE=${RC_SVCNAME#*.}
+ local IFVAR=$(shell_var "${IFACE}")
+
+ need localmount
+ after bootmisc
+ provide net
+ keyword -shutdown -jail -prefix -vserver
+
+ case "${IFACE}" in
+ lo|lo0);;
+ *) after net.lo net.lo0 dbus;;
+ esac
+
+ if [ "$(command -v "depend_${IFVAR}")" = "depend_${IFVAR}" ]; then
+ depend_${IFVAR}
+ fi
+
+ local dep= prov=
+ for dep in need use before after provide keyword; do
+ eval prov=\$rc_${dep}_${IFVAR}
+ if [ -n "${prov}" ]; then
+ ${dep} ${prov}
+ fi
+ done
+}
+
+# Support bash arrays - sigh
+_array_helper()
+{
+ local _a=
+
+ eval _a=\$$1
+ _a=$(echo "${_a}" | sed -e 's:^[[:space:]]*::' -e 's:[[:space:]]*$::' -e '/^$/d' -e 's:[[:space:]]\{1,\}: :g')
+
+ [ -n "${_a}" ] && printf "%s\n" "${_a}"
+}
+
+_get_array()
+{
+ local _a=
+ if [ -n "${BASH}" ]; then
+ case "$(declare -p "$1" 2>/dev/null)" in
+ "declare -a "*)
+ ewarn "You are using a bash array for $1."
+ ewarn "This feature will be removed in the future."
+ ewarn "Please see net.example for the correct format for $1."
+ eval "set -- \"\${$1[@]}\""
+ for _a; do
+ printf "%s\n" "${_a}"
+ done
+ return 0
+ ;;
+ esac
+ fi
+
+ _array_helper $1
+}
+
+# Flatten bash arrays to simple strings
+_flatten_array()
+{
+ if [ -n "${BASH}" ]; then
+ case "$(declare -p "$1" 2>/dev/null)" in
+ "declare -a "*)
+ ewarn "You are using a bash array for $1."
+ ewarn "This feature will be removed in the future."
+ ewarn "Please see net.example for the correct format for $1."
+ eval "set -- \"\${$1[@]}\""
+ for x; do
+ printf "'%s' " "$(printf "$x" | sed "s:':'\\\'':g")"
+ done
+ return 0
+ ;;
+ esac
+ fi
+
+ _array_helper $1
+}
+
+_wait_for_carrier()
+{
+ local timeout= efunc=einfon
+
+ _has_carrier && return 0
+
+ eval timeout=\$carrier_timeout_${IFVAR}
+ timeout=${timeout:-${carrier_timeout:-5}}
+
+ # Incase users don't want this nice feature ...
+ [ ${timeout} -le 0 ] && return 0
+
+ yesno ${RC_PARALLEL} && efunc=einfo
+ ${efunc} "Waiting for carrier (${timeout} seconds) "
+ while [ ${timeout} -gt 0 ]; do
+ sleep 1
+ if _has_carrier; then
+ [ "${efunc}" = "einfon" ] && echo
+ eend 0
+ return 0
+ fi
+ : $(( timeout -= 1 ))
+ [ "${efunc}" = "einfon" ] && printf "."
+ done
+
+ [ "${efunc}" = "einfon" ] && echo
+ eend 1
+ return 1
+}
+
+_netmask2cidr()
+{
+ # Some shells cannot handle hex arithmetic, so we massage it slightly
+ # Buggy shells include FreeBSD sh, dash and busybox.
+ # bash and NetBSD sh don't need this.
+ case $1 in
+ 0x*)
+ local hex=${1#0x*} quad=
+ while [ -n "${hex}" ]; do
+ local lastbut2=${hex#??*}
+ quad=${quad}${quad:+.}0x${hex%${lastbut2}*}
+ hex=${lastbut2}
+ done
+ set -- ${quad}
+ ;;
+ esac
+
+ local i= len=
+ local IFS=.
+ for i in $1; do
+ while [ ${i} -ne 0 ]; do
+ : $(( len += i % 2 ))
+ : $(( i >>= 1 ))
+ done
+ done
+
+ echo "${len}"
+}
+
+_configure_variables()
+{
+ local var= v= t=
+
+ for var in ${_config_vars}; do
+ local v=
+ for t; do
+ eval v=\$${var}_${t}
+ if [ -n "${v}" ]; then
+ eval ${var}_${IFVAR}=\$${var}_${t}
+ continue 2
+ fi
+ done
+ done
+}
+
+_which()
+{
+ local i OIFS
+ # Empty
+ [ -z "$1" ] && return
+ # check paths
+ OIFS="$IFS"
+ IFS=:
+ for i in $PATH ; do
+ [ -x $i/$1 ] && echo $i/$1 && break
+ done
+ IFS=$OIFS
+}
+
+# Like _which, but also consider shell builtins, and multiple alternatives
+_program_available()
+{
+ [ -z "$1" ] && return 0
+ local x=
+ for x; do
+ case "${x}" in
+ /*) [ -x "${x}" ] && break;;
+ *) type "${x}" >/dev/null 2>&1 && break;;
+ esac
+ unset x
+ done
+ [ -n "${x}" ] && echo $x && return 0
+ return 1
+}
+
+_show_address()
+{
+ einfo "received address $(_get_inet_address "${IFACE}")"
+}
+
+# Basically sorts our modules into order and saves the list
+_gen_module_list()
+{
+ local x= f= force=$1
+ if ! ${force} && [ -s "${MODULESLIST}" -a "${MODULESLIST}" -nt "${MODULESDIR}" ]; then
+ local update=false
+ for x in "${MODULESDIR}"/*.sh; do
+ [ -e "${x}" ] || continue
+ if [ "${x}" -nt "${MODULESLIST}" ]; then
+ update=true
+ break
+ fi
+ done
+ ${update} || return 0
+ fi
+
+ einfo "Caching network module dependencies"
+ # Run in a subshell to protect the main script
+ (
+ after() {
+ eval ${MODULE}_after="\"\${${MODULE}_after}\${${MODULE}_after:+ }$*\""
+ }
+
+ before() {
+ local mod=${MODULE}
+ local MODULE=
+ for MODULE; do
+ after "${mod}"
+ done
+ }
+
+ program() {
+ if [ "$1" = "start" -o "$1" = "stop" ]; then
+ local s="$1"
+ shift
+ eval ${MODULE}_program_${s}="\"\${${MODULE}_program_${s}}\${${MODULE}_program_${s}:+ }$*\""
+ else
+ eval ${MODULE}_program="\"\${${MODULE}_program}\${${MODULE}_program:+ }$*\""
+ fi
+ }
+
+ provide() {
+ eval ${MODULE}_provide="\"\${${MODULE}_provide}\${${MODULE}_provide:+ }$*\""
+ local x
+ for x in $*; do
+ eval ${x}_providedby="\"\${${MODULE}_providedby}\${${MODULE}_providedby:+ }${MODULE}\""
+ done
+ }
+
+ for MODULE in "${MODULESDIR}"/*.sh; do
+ sh -n "${MODULE}" || continue
+ . "${MODULE}" || continue
+ MODULE=${MODULE#${MODULESDIR}/}
+ MODULE=${MODULE%.sh}
+ eval ${MODULE}_depend
+ MODULES="${MODULES} ${MODULE}"
+ done
+
+ VISITED=
+ SORTED=
+ visit() {
+ case " ${VISITED} " in
+ *" $1 "*) return;;
+ esac
+ VISITED="${VISITED} $1"
+
+ eval AFTER=\$${1}_after
+ for MODULE in ${AFTER}; do
+ eval PROVIDEDBY=\$${MODULE}_providedby
+ if [ -n "${PROVIDEDBY}" ]; then
+ for MODULE in ${PROVIDEDBY}; do
+ visit "${MODULE}"
+ done
+ else
+ visit "${MODULE}"
+ fi
+ done
+
+ eval PROVIDE=\$${1}_provide
+ for MODULE in ${PROVIDE}; do
+ visit "${MODULE}"
+ done
+
+ eval PROVIDEDBY=\$${1}_providedby
+ [ -z "${PROVIDEDBY}" ] && SORTED="${SORTED} $1"
+ }
+
+ for MODULE in ${MODULES}; do
+ visit "${MODULE}"
+ done
+
+ printf "" > "${MODULESLIST}"
+ i=0
+ for MODULE in ${SORTED}; do
+ eval PROGRAM=\$${MODULE}_program
+ eval PROGRAM_START=\$${MODULE}_program_start
+ eval PROGRAM_STOP=\$${MODULE}_program_stop
+ eval PROVIDE=\$${MODULE}_provide
+ echo "module_${i}='${MODULE}'" >> "${MODULESLIST}"
+ echo "module_${i}_program='${PROGRAM}'" >> "${MODULESLIST}"
+ echo "module_${i}_program_start='${PROGRAM_START}'" >> "${MODULESLIST}"
+ echo "module_${i}_program_stop='${PROGRAM_STOP}'" >> "${MODULESLIST}"
+ echo "module_${i}_provide='${PROVIDE}'" >> "${MODULESLIST}"
+ : $(( i += 1 ))
+ done
+ echo "module_${i}=" >> "${MODULESLIST}"
+ )
+
+ return 0
+}
+
+_load_modules()
+{
+ local starting=$1 mymods=
+
+ # Ensure our list is up to date
+ _gen_module_list false
+ if ! . "${MODULESLIST}"; then
+ _gen_module_list true
+ . "${MODULESLIST}"
+ fi
+
+ MODULES=
+ if [ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ]; then
+ eval mymods=\$modules_${IFVAR}
+ [ -z "${mymods}" ] && mymods=${modules}
+ fi
+
+ local i=-1 x= mod= f= provides=
+ while true; do
+ : $(( i += 1 ))
+ eval mod=\$module_${i}
+ [ -z "${mod}" ] && break
+ [ -e "${MODULESDIR}/${mod}.sh" ] || continue
+
+ eval set -- \$module_${i}_program
+ if [ -n "$1" ]; then
+ if ! _program_available "$@" >/dev/null; then
+ vewarn "Skipping module $mod due to missing program: $@"
+ continue
+ fi
+ fi
+ if ${starting}; then
+ eval set -- \$module_${i}_program_start
+ else
+ eval set -- \$module_${i}_program_stop
+ fi
+ if [ -n "$1" ]; then
+ if ! _program_available "$@" >/dev/null; then
+ vewarn "Skipping module $mod due to missing program: $@"
+ continue
+ fi
+ fi
+
+ eval provides=\$module_${i}_provide
+ if ${starting}; then
+ case " ${mymods} " in
+ *" !${mod} "*) continue;;
+ *" !${provides} "*) [ -n "${provides}" ] && continue;;
+ esac
+ fi
+ MODULES="${MODULES}${MODULES:+ }${mod}"
+
+ # Now load and wrap our functions
+ if ! . "${MODULESDIR}/${mod}.sh"; then
+ eend 1 "${RC_SVCNAME}: error loading module \`${mod}'"
+ exit 1
+ fi
+
+ [ -z "${provides}" ] && continue
+
+ # Wrap our provides
+ local f=
+ for f in pre_start start post_start; do
+ eval "${provides}_${f}() { [ "$(command -v "${mod}_${f}")" = "${mod}_${f}" ] || return 0; ${mod}_${f} \"\$@\"; }"
+ done
+
+ eval module_${mod}_provides="${provides}"
+ eval module_${provides}_providedby="${mod}"
+ done
+
+ # Wrap our preferred modules
+ for mod in ${mymods}; do
+ case " ${MODULES} " in
+ *" ${mod} "*)
+ eval x=\$module_${mod}_provides
+ [ -z "${x}" ] && continue
+ for f in pre_start start post_start; do
+ eval "${x}_${f}() { [ "$(command -v "${mod}_${f}")" = "${mod}_${f}" ] || return 0; ${mod}_${f} \"\$@\"; }"
+ done
+ eval module_${x}_providedby="${mod}"
+ ;;
+ esac
+ done
+
+ # Finally remove any duplicated provides from our list if we're starting
+ # Otherwise reverse the list
+ local LIST="${MODULES}" p=
+ MODULES=
+ if ${starting}; then
+ for mod in ${LIST}; do
+ eval x=\$module_${mod}_provides
+ if [ -n "${x}" ]; then
+ eval p=\$module_${x}_providedby
+ [ "${mod}" != "${p}" ] && continue
+ fi
+ MODULES="${MODULES}${MODULES:+ }${mod}"
+ done
+ else
+ for mod in ${LIST}; do
+ MODULES="${mod}${MODULES:+ }${MODULES}"
+ done
+ fi
+
+ veinfo "Loaded modules: ${MODULES}"
+}
+
+_load_config()
+{
+ local config="$(_get_array "config_${IFVAR}")"
+ local fallback="$(_get_array fallback_${IFVAR})"
+
+ config_index=0
+ local IFS="$__IFS"
+ set -- ${config}
+
+ # We should support a space separated array for cidr configs
+ # But only as long as they do not contain other parameters for the address
+ if [ $# = 1 ]; then
+ unset IFS
+ set -- ${config}
+ # Of course, we may have a single address added old style.
+ # If the NEXT argument is a v4 or v6 address, it's the next config.
+ # Otherwise, it's arguments to the first config...
+ if [ "${2#*.*}" = "${2}" -a "${2#*:*}" = "${2}" ]; then
+ # Not an IPv4/IPv6
+ local IFS="$__IFS"
+ set -- ${config}
+ fi
+ fi
+
+ # Ensure that loopback has the correct address
+ if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ]; then
+ if [ "$1" != "null" ]; then
+ config_0="127.0.0.1/8"
+ config_index=1
+ fi
+ else
+ if [ -z "$1" ]; then
+ ewarn "No configuration specified; defaulting to DHCP"
+ config_0="dhcp"
+ config_index=1
+ fi
+ fi
+
+
+ # We store our config in an array like vars
+ # so modules can influence it
+ for cmd; do
+ eval config_${config_index}="'${cmd}'"
+ : $(( config_index += 1 ))
+ done
+ # Terminate the list
+ eval config_${config_index}=
+
+ config_index=0
+ for cmd in ${fallback}; do
+ eval fallback_${config_index}="'${cmd}'"
+ : $(( config_index += 1 ))
+ done
+ # Terminate the list
+ eval fallback_${config_index}=
+
+ # Don't set to zero, so any net modules don't have to do anything extra
+ config_index=-1
+}
+
+# Support functions
+_run_if()
+{
+ local cmd=$1 iface=$2 ifr=${IFACE} ifv=${IFVAR}
+ # Ensure that we don't stamp on real values
+ local IFACE= IFVAR=
+ shift
+ if [ -n "${iface}" ]; then
+ IFACE="${iface}"
+ [ "${iface}" != "${ifr}" ] && IFVAR=$(shell_var "${IFACE}")
+ else
+ IFACE=${ifr}
+ IFVAR=${ifv}
+ fi
+ ${cmd}
+}
+interface_exists()
+{
+ _run_if _exists "$@"
+}
+interface_up()
+{
+ _run_if _up "$@"
+}
+interface_down()
+{
+ _run_if _down "$@"
+}
+
+start()
+{
+ local IFACE=${RC_SVCNAME#*.} oneworked=false fallback=false module=
+ local IFVAR=$(shell_var "${IFACE}") cmd= our_metric=
+ local metric=0 _up_before_preup
+ eval _up_before_preup="\$up_before_preup_${IFVAR}"
+ [ -z "${_up_before_preup}" ] && _up_before_preup=$up_before_preup
+
+ einfo "Bringing up interface ${IFACE}"
+ eindent
+
+ if [ -z "${MODULES}" ]; then
+ local MODULES=
+ _load_modules true
+ fi
+
+ # We up the iface twice if we have a preup to ensure it's up if
+ # available in preup and afterwards incase the user inadvertently
+ # brings it down
+ if [ "$(command -v preup)" = "preup" ]; then
+ yesno "${_up_before_preup:-yes}" && _up 2>/dev/null
+ ebegin "Running preup"
+ eindent
+ preup || return 1
+ eoutdent
+ fi
+
+ _up 2>/dev/null
+
+ for module in ${MODULES}; do
+ if [ "$(command -v "${module}_pre_start")" = "${module}_pre_start" ]; then
+ ${module}_pre_start || exit $?
+ fi
+ done
+
+ if ! _exists; then
+ eerror "ERROR: interface ${IFACE} does not exist"
+ eerror "Ensure that you have loaded the correct kernel module for your hardware"
+ return 1
+ fi
+
+ if ! _wait_for_carrier; then
+ if service_started devd; then
+ ewarn "no carrier, but devd will start us when we have one"
+ mark_service_inactive "${RC_SVCNAME}"
+ else
+ eerror "no carrier"
+ fi
+ return 1
+ fi
+
+ local config= config_index=
+ _load_config
+ config_index=0
+
+ eval our_metric=\$metric_${IFVAR}
+ if [ -n "${our_metric}" ]; then
+ metric=${our_metric}
+ elif [ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ]; then
+ : $(( metric += $(_ifindex) ))
+ fi
+
+ while true; do
+ eval config=\$config_${config_index}
+ [ -z "${config}" ] && break
+
+ set -- ${config}
+ if [ "$1" != "null" -a "$1" != "noop" ]; then
+ ebegin "$1"
+ fi
+ eindent
+ case "$1" in
+ noop)
+ if [ -n "$(_get_inet_address)" ]; then
+ oneworked=true
+ break
+ fi
+ ;;
+ null) :;;
+ [0-9]*|*:*) _add_address ${config};;
+ *)
+ if [ "$(command -v "${config}_start")" = "${config}_start" ]; then
+ "${config}"_start
+ else
+ eerror "nothing provides \`${config}'"
+ fi
+ ;;
+ esac
+ if eend $?; then
+ oneworked=true
+ else
+ eval config=\$fallback_${config_index}
+ if [ -n "${config}" ]; then
+ fallback=true
+ eoutdent
+ ewarn "Trying fallback configuration ${config}"
+ eindent
+ eval config_${config_index}=\$config
+ unset fallback_${config_index}
+ : $(( config_index -= 1 ))
+ fi
+ fi
+ eoutdent
+ : $(( config_index += 1 ))
+ done
+
+ if ! ${oneworked}; then
+ if [ "$(command -v failup)" = "failup" ]; then
+ ebegin "Running failup"
+ eindent
+ failup
+ eoutdent
+ fi
+ return 1
+ fi
+
+ local hidefirstroute=false first=true routes=
+ if ${fallback}; then
+ routes="$(_get_array "fallback_routes_${IFVAR}")"
+ fi
+ if [ -z "${routes}" ]; then
+ routes="$(_get_array "routes_${IFVAR}")"
+ fi
+ if [ "${IFACE}" = "lo" -o "${IFACE}" = "lo0" ]; then
+ if [ "${config_0}" != "null" ]; then
+ routes="127.0.0.0/8 via 127.0.0.1
+${routes}"
+ hidefirstroute=true
+ fi
+ fi
+
+ local OIFS="${IFS}" SIFS="${IFS-y}"
+ local IFS="$__IFS"
+ for cmd in ${routes}; do
+ unset IFS
+ if ${first}; then
+ first=false
+ einfo "Adding routes"
+ fi
+ eindent
+ ebegin ${cmd}
+ # Work out if we're a host or a net if not told
+ case ${cmd} in
+ -net" "*|-host" "*);;
+ *" "netmask" "*) cmd="-net ${cmd}";;
+ *.*.*.*/32*) cmd="-host ${cmd}";;
+ *.*.*.*/*|0.0.0.0|0.0.0.0" "*) cmd="-net ${cmd}";;
+ default|default" "*) cmd="-net ${cmd}";;
+ *) cmd="-host ${cmd}";;
+ esac
+ if ${hidefirstroute}; then
+ _add_route ${cmd} >/dev/null 2>&1
+ hidefirstroute=false
+ else
+ _add_route ${cmd} >/dev/null
+ fi
+ eend $?
+ eoutdent
+ done
+ if [ "${SIFS}" = "y" ]; then
+ unset IFS
+ else
+ IFS="${OIFS}"
+ fi
+
+ for module in ${MODULES}; do
+ if [ "$(command -v "${module}_post_start")" = "${module}_post_start" ]; then
+ ${module}_post_start || exit $?
+ fi
+ done
+
+ if [ "$(command -v postup)" = "postup" ]; then
+ ebegin "Running postup"
+ eindent
+ postup
+ eoutdent
+ fi
+
+ return 0
+}
+
+stop()
+{
+ local IFACE=${RC_SVCNAME#*.} module=
+ local IFVAR=$(shell_var "${IFACE}") opts=
+
+ einfo "Bringing down interface ${IFACE}"
+ eindent
+
+ if [ -z "${MODULES}" ]; then
+ local MODULES=
+ _load_modules false
+ fi
+
+ if [ "$(command -v predown)" = "predown" ]; then
+ ebegin "Running predown"
+ eindent
+ predown || return 1
+ eoutdent
+ else
+ if is_net_fs /; then
+ eerror "root filesystem is network mounted -- can't stop ${IFACE}"
+ return 1
+ fi
+ fi
+
+ for module in ${MODULES}; do
+ if [ "$(command -v "${module}_pre_stop")" = "${module}_pre_stop" ]; then
+ ${module}_pre_stop || exit $?
+ fi
+ done
+
+ for module in ${MODULES}; do
+ if [ "$(command -v "${module}_stop")" = "${module}_stop" ]; then
+ ${module}_stop
+ fi
+ done
+
+ # Only delete addresses for interfaces that exist
+ if _exists; then
+ # PPP can manage it's own addresses when IN_BACKGROUND
+ # Important in case "demand" set on the ppp link
+ if ! (yesno ${IN_BACKGROUND} && is_ppp) ; then
+ _delete_addresses "${IFACE}"
+ fi
+ fi
+
+ for module in ${MODULES}; do
+ if [ "$(command -v "${module}_post_stop")" = "${module}_post_stop" ]; then
+ ${module}_post_stop
+ fi
+ done
+
+ # If not in background, and not loopback then bring the interface down
+ # unless overridden.
+ if ! yesno ${IN_BACKGROUND} && \
+ [ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ]; then
+ eval module=\$ifdown_${IFVAR}
+ module=${module:-${ifdown:-YES}}
+ yesno ${module} && _down 2>/dev/null
+ fi
+
+ type resolvconf >/dev/null 2>&1 && resolvconf -d "${IFACE}" 2>/dev/null
+
+ if [ "$(command -v "postdown")" = "postdown" ]; then
+ ebegin "Running postdown"
+ eindent
+ postdown
+ eoutdent
+ fi
+
+ return 0
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+# This script was inspired by the equivalent rc.d network from NetBSD.
+
+description="Configures network interfaces."
+__nl="
+"
+
+depend()
+{
+ need localmount
+ after bootmisc
+ provide net
+ keyword -jail -prefix -vserver
+}
+
+uniqify()
+{
+ local result= i=
+ for i; do
+ case " $result " in
+ *" $i "*);;
+ *) result="$result $i";;
+ esac
+ done
+ echo "${result# *}"
+}
+
+reverse()
+{
+ local result= i=
+ for i; do
+ result="$i $result"
+ done
+ echo "${result# *}"
+}
+
+sys_interfaces()
+{
+ case "$RC_UNAME" in
+ Linux)
+ local w= rest= i= cmd=$1
+ while read w rest; do
+ i=${w%%:*}
+ [ "$i" != "$w" ] || continue
+ if [ "$cmd" = u ]; then
+ ifconfig "$i" | grep -q "[ ]*UP" || continue
+ fi
+ printf "%s " "$i"
+ done </proc/net/dev
+ ;;
+ *)
+ ifconfig -l$1
+ ;;
+ esac
+}
+
+tentative()
+{
+ local inet= address= rest=
+
+ case "$RC_UNAME" in
+ Linux)
+ [ -x /sbin/ip ] || [ -x /bin/ip ] || return 1
+ [ -n "$(ip -f inet6 addr show tentative)" ]
+ ;;
+ *)
+ local inet= address= rest=
+ LC_ALL=C ifconfig -a | while read inet address rest; do
+ case "${inet}" in
+ inet6)
+ case "${rest}" in
+ *" "tentative*) return 2;;
+ esac
+ ;;
+ esac
+ done
+ [ $? = 2 ]
+ ;;
+ esac
+}
+
+
+auto_interfaces()
+{
+ local ifs= c= f=
+
+ case "$RC_UNAME" in
+ NetBSD)
+ for c in $(ifconfig -C 2>/dev/null); do
+ for f in /etc/ifconfig.${c}[0-9]*; do
+ [ -f "$f" ] && printf "%s" "$f{##*.} "
+ done
+ done
+ ;;
+ *)
+ for f in /etc/ifconfig.*; do
+ [ -f "$f" ] && printf "%s" "${f##*.} "
+ done
+ for f in /etc/ip.*; do
+ [ -f "$f" ] && printf "%s" "${f##*.} "
+ done
+ ;;
+ esac
+ echo
+}
+
+interfaces()
+{
+ uniqify $(sys_interfaces "$@") $interfaces $(auto_interfaces)
+}
+
+dumpargs()
+{
+ local f="$1"
+
+ shift
+ case "$@" in
+ '') [ -f "$f" ] && cat "$f";;
+ *"$__nl"*) echo "$@";;
+ *)
+ (
+ set -o noglob
+ IFS=';'; set -- $@
+ IFS="$__nl"; echo "$*"
+ );;
+ esac
+}
+
+intup=false
+runip()
+{
+ local int="$1" err=
+ shift
+
+ # Ensure we have a valid broadcast address
+ case "$@" in
+ *" broadcast "*|*" brd "*) ;;
+ *:*) ;; # Ignore IPv6
+ *) set -- "$@" brd +;;
+ esac
+
+ err=$(LC_ALL=C ip address add "$@" dev "$int" 2>&1)
+ if [ -z "$err" ]; then
+ # ip does not bring up the interface when adding addresses
+ if ! $intup; then
+ ip link set "$int" up
+ intup=true
+ fi
+ return 0
+ fi
+ if [ "$err" = "RTNETLINK answers: File exists" ]; then
+ ip address del "$@" dev "$int" 2>/dev/null
+ fi
+ # Localise the error
+ ip address add "$@" dev "$int"
+}
+
+routeflush()
+{
+ if [ "$RC_UNAME" = Linux ]; then
+ if [ -x /sbin/ip ] || [ -x /bin/ip ]; then
+ ip route flush scope global
+ ip route delete default 2>/dev/null
+ else
+ # Sadly we also delete some link routes, but
+ # this cannot be helped
+ local dest= gate= net= flags= rest=
+ route -n | while read dest gate net flags rest; do
+ [ -z "$net" ] && continue
+ case "$dest" in
+ [0-9]*) ;;
+ *) continue;;
+ esac
+ local xtra= netmask="netmask $net"
+ case "$flags" in
+ U) continue;;
+ *H*) flags=-host; netmask=;;
+ *!*) flags=-net; xtra=reject;;
+ *) flags=-net;;
+ esac
+ route del $flags $dest $netmask $xtra
+ done
+ # Erase any default dev eth0 routes
+ route del default 2>/dev/null
+ fi
+ else
+ route -qn flush
+ fi
+}
+
+runargs()
+{
+ dumpargs "$@" | while read -r args; do
+ case "$args" in
+ ''|"#"*) ;;
+ *)
+ (
+ eval vebegin "${args#*!}"
+ eval "${args#*!}"
+ veend $?
+ );;
+ esac
+ done
+}
+
+start()
+{
+ local cr=0 r= int= intv= cmd= args= upcmd=
+
+ if [ -z "$domainname" -a -s /etc/defaultdomain ]; then
+ domainname=$(cat /etc/defaultdomain)
+ fi
+ if [ -n "$domainname" ]; then
+ ebegin "Setting NIS domainname: $domainname"
+ domainname "$domainname"
+ eend $?
+ fi
+
+ einfo "Starting network"
+ routeflush
+ if [ "$RC_UNAME" = "Linux" ]; then
+ ifconfig lo 127.0.0.1 netmask 255.0.0.0 || cr=1
+ route add -net 127.0.0.0 netmask 255.0.0.0 \
+ gw 127.0.0.1 reject 2>/dev/null
+ else
+ ifconfig lo0 127.0.0.1 netmask 255.0.0.0 || cr=1
+ route -q add -inet 127.0.0.0 -netmask 255.0.0.0 \
+ 127.0.0.1 -reject || cr=1
+ fi
+ eindent
+ for int in $(interfaces); do
+ local func= cf=
+ intv=$(shell_var "$int")
+ eval upcmd=\$ifup_$intv
+ for func in ip ifconfig; do
+ eval cmd=\$${func}_$intv
+ if [ -n "$cmd" -o -f /etc/"$func.$int" ]; then
+ cf=/etc/"$func.$int"
+ break
+ fi
+ done
+ [ -n "$cf" -o -n "$upcmd" -o \
+ -f /etc/ifup."$int" -o -f "$cf" ] || continue
+ veinfo "$int"
+ case "$func" in
+ ip) func=runip; intup=false;;
+ esac
+ eindent
+ runargs /etc/ifup."$int" "$upcmd"
+ r=0
+ dumpargs "$cf" "$cmd" | while read -r args; do
+ case "$args" in
+ ''|"#"*) ;;
+ "!"*)
+ (
+ eval vebegin "${args#*!}"
+ eval "${args#*!}"
+ veend $?
+ );;
+ *)
+ (
+ set -o noglob
+ eval set -- "$args"
+ vebegin "$@"
+ $func "$int" "$@"
+ veend $?
+ );;
+ esac
+ done
+ eoutdent
+ done
+ eoutdent
+ eend $cr
+
+ # Wait for any inet6 tentative addresses
+ r=5
+ while [ $r -gt 0 ]; do
+ tentative || break
+ [ $r = 5 ] && vebegin "Waiting for tentative addresses"
+ sleep 1
+ r=$(($r - 1))
+ done
+ if [ $r != 5 ]; then
+ [ $r != 0 ]
+ veend $?
+ fi
+
+ if [ -n "$defaultroute" ]; then
+ ebegin "Setting default route $defaultroute"
+ route add default $defaultroute
+ eend $?
+ elif [ -n "$defaultiproute" ]; then
+ ebegin "Setting default route $defaultiproute"
+ ip route add default $defaultiproute
+ eend $?
+ fi
+
+ if [ -n "$defaultroute6" ]; then
+ ebegin "Setting default route $defaultroute6"
+ if [ "$RC_UNAME" = Linux ]; then
+ routecmd="route -A inet6 add"
+ else
+ routecmd="route -inet6 add"
+ fi
+ $routecmd default $defaultroute6
+ eend $?
+ elif [ -n "$defaultiproute6" ]; then
+ ebegin "Setting default route $defaultiproute6"
+ ip -f inet6 route add default $defaultiproute6
+ eend $?
+ fi
+
+ return 0
+}
+
+stop()
+{
+ # Don't stop the network at shutdown.
+ # We don't use the noshutdown keyword so that we are started again
+ # correctly if we go back to multiuser.
+ yesno ${shutdown_network:-YES} && yesno $RC_GOINGDOWN && return 0
+
+ local int= intv= cmd= downcmd= r=
+ einfo "Stopping network"
+ routeflush
+ eindent
+ for int in $(reverse $(interfaces u)); do
+ intv=$(shell_var "$int")
+ eval downcmd=\$ifdown_$intv
+ eval cmd=\$ip_$intv
+ [ -z "$cmd" ] && eval cmd=\$ifconfig_$intv
+ if [ -n "$cmd" -o -f /etc/ip."$int" -o \
+ -f /etc/ifconfig."$int" -o \
+ -n "$downcmd" -o -f /etc/ifdown."$int" ];
+ then
+ veinfo "$int"
+ runargs /etc/ifdown."$int" "$downcmd"
+ if [ -x /sbin/ip ] || [ -x /bin/ip ]; then
+ # We need to do this, otherwise we may
+ # fail to add things correctly on restart
+ ip address flush dev "$int" 2>/dev/null
+ fi
+ ifconfig "$int" down 2>/dev/null
+ ifconfig "$int" destroy 2>/dev/null
+ fi
+ done
+ eoutdent
+ eend 0
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+# This script was inspired by the equivalent rc.d network from NetBSD.
+
+description="Configures network interfaces."
+__nl="
+"
+
+depend()
+{
+ need localmount
+ after bootmisc
+ provide net
+ keyword -jail -prefix -vserver
+}
+
+uniqify()
+{
+ local result= i=
+ for i; do
+ case " $result " in
+ *" $i "*);;
+ *) result="$result $i";;
+ esac
+ done
+ echo "${result# *}"
+}
+
+reverse()
+{
+ local result= i=
+ for i; do
+ result="$i $result"
+ done
+ echo "${result# *}"
+}
+
+sys_interfaces()
+{
+ case "$RC_UNAME" in
+ Linux)
+ local w= rest= i= cmd=$1
+ while read w rest; do
+ i=${w%%:*}
+ [ "$i" != "$w" ] || continue
+ if [ "$cmd" = u ]; then
+ ifconfig "$i" | grep -q "[ ]*UP" || continue
+ fi
+ printf "%s " "$i"
+ done </proc/net/dev
+ ;;
+ *)
+ ifconfig -l$1
+ ;;
+ esac
+}
+
+tentative()
+{
+ local inet= address= rest=
+
+ case "$RC_UNAME" in
+ Linux)
+ [ -x /sbin/ip ] || [ -x /bin/ip ] || return 1
+ [ -n "$(ip -f inet6 addr show tentative)" ]
+ ;;
+ *)
+ local inet= address= rest=
+ LC_ALL=C ifconfig -a | while read inet address rest; do
+ case "${inet}" in
+ inet6)
+ case "${rest}" in
+ *" "tentative*) return 2;;
+ esac
+ ;;
+ esac
+ done
+ [ $? = 2 ]
+ ;;
+ esac
+}
+
+
+auto_interfaces()
+{
+ local ifs= c= f=
+
+ case "$RC_UNAME" in
+ NetBSD)
+ for c in $(ifconfig -C 2>/dev/null); do
+ for f in /etc/ifconfig.${c}[0-9]*; do
+ [ -f "$f" ] && printf "%s" "$f{##*.} "
+ done
+ done
+ ;;
+ *)
+ for f in /etc/ifconfig.*; do
+ [ -f "$f" ] && printf "%s" "${f##*.} "
+ done
+ for f in /etc/ip.*; do
+ [ -f "$f" ] && printf "%s" "${f##*.} "
+ done
+ ;;
+ esac
+ echo
+}
+
+interfaces()
+{
+ uniqify $(sys_interfaces "$@") $interfaces $(auto_interfaces)
+}
+
+dumpargs()
+{
+ local f="$1"
+
+ shift
+ case "$@" in
+ '') [ -f "$f" ] && cat "$f";;
+ *"$__nl"*) echo "$@";;
+ *)
+ (
+ set -o noglob
+ IFS=';'; set -- $@
+ IFS="$__nl"; echo "$*"
+ );;
+ esac
+}
+
+intup=false
+runip()
+{
+ local int="$1" err=
+ shift
+
+ # Ensure we have a valid broadcast address
+ case "$@" in
+ *" broadcast "*|*" brd "*) ;;
+ *:*) ;; # Ignore IPv6
+ *) set -- "$@" brd +;;
+ esac
+
+ err=$(LC_ALL=C ip address add "$@" dev "$int" 2>&1)
+ if [ -z "$err" ]; then
+ # ip does not bring up the interface when adding addresses
+ if ! $intup; then
+ ip link set "$int" up
+ intup=true
+ fi
+ return 0
+ fi
+ if [ "$err" = "RTNETLINK answers: File exists" ]; then
+ ip address del "$@" dev "$int" 2>/dev/null
+ fi
+ # Localise the error
+ ip address add "$@" dev "$int"
+}
+
+routeflush()
+{
+ if [ "$RC_UNAME" = Linux ]; then
+ if [ -x /sbin/ip ] || [ -x /bin/ip ]; then
+ ip route flush scope global
+ ip route delete default 2>/dev/null
+ else
+ # Sadly we also delete some link routes, but
+ # this cannot be helped
+ local dest= gate= net= flags= rest=
+ route -n | while read dest gate net flags rest; do
+ [ -z "$net" ] && continue
+ case "$dest" in
+ [0-9]*) ;;
+ *) continue;;
+ esac
+ local xtra= netmask="netmask $net"
+ case "$flags" in
+ U) continue;;
+ *H*) flags=-host; netmask=;;
+ *!*) flags=-net; xtra=reject;;
+ *) flags=-net;;
+ esac
+ route del $flags $dest $netmask $xtra
+ done
+ # Erase any default dev eth0 routes
+ route del default 2>/dev/null
+ fi
+ else
+ route -qn flush
+ fi
+}
+
+runargs()
+{
+ dumpargs "$@" | while read -r args; do
+ case "$args" in
+ ''|"#"*) ;;
+ *)
+ (
+ eval vebegin "${args#*!}"
+ eval "${args#*!}"
+ veend $?
+ );;
+ esac
+ done
+}
+
+start()
+{
+ local cr=0 r= int= intv= cmd= args= upcmd=
+
+ if [ -z "$domainname" -a -s /etc/defaultdomain ]; then
+ domainname=$(cat /etc/defaultdomain)
+ fi
+ if [ -n "$domainname" ]; then
+ ebegin "Setting NIS domainname: $domainname"
+ domainname "$domainname"
+ eend $?
+ fi
+
+ ewarn
+ ewarn "The $RC_SVCNAME script is deprecated and will be"
+ ewarn "removed in the future."
+ ewarn "Please use the net.* scripts to manage your network interfaces."
+ ewarn
+
+ einfo "Starting network"
+ routeflush
+ if [ "$RC_UNAME" = "Linux" ]; then
+ ifconfig lo 127.0.0.1 netmask 255.0.0.0 || cr=1
+ route add -net 127.0.0.0 netmask 255.0.0.0 \
+ gw 127.0.0.1 reject 2>/dev/null
+ else
+ ifconfig lo0 127.0.0.1 netmask 255.0.0.0 || cr=1
+ route -q add -inet 127.0.0.0 -netmask 255.0.0.0 \
+ 127.0.0.1 -reject || cr=1
+ fi
+ eindent
+ for int in $(interfaces); do
+ local func= cf=
+ intv=$(shell_var "$int")
+ eval upcmd=\$ifup_$intv
+ for func in ip ifconfig; do
+ eval cmd=\$${func}_$intv
+ if [ -n "$cmd" -o -f /etc/"$func.$int" ]; then
+ cf=/etc/"$func.$int"
+ break
+ fi
+ done
+ [ -n "$cf" -o -n "$upcmd" -o \
+ -f /etc/ifup."$int" -o -f "$cf" ] || continue
+ veinfo "$int"
+ case "$func" in
+ ip) func=runip; intup=false;;
+ esac
+ eindent
+ runargs /etc/ifup."$int" "$upcmd"
+ r=0
+ dumpargs "$cf" "$cmd" | while read -r args; do
+ case "$args" in
+ ''|"#"*) ;;
+ "!"*)
+ (
+ eval vebegin "${args#*!}"
+ eval "${args#*!}"
+ veend $?
+ );;
+ *)
+ (
+ set -o noglob
+ eval set -- "$args"
+ vebegin "$@"
+ $func "$int" "$@"
+ veend $?
+ );;
+ esac
+ done
+ eoutdent
+ done
+ eoutdent
+ eend $cr
+
+ # Wait for any inet6 tentative addresses
+ r=5
+ while [ $r -gt 0 ]; do
+ tentative || break
+ [ $r = 5 ] && vebegin "Waiting for tentative addresses"
+ sleep 1
+ : $(( r -= 1 ))
+ done
+ if [ $r != 5 ]; then
+ [ $r != 0 ]
+ veend $?
+ fi
+
+ if [ -n "$defaultroute" ]; then
+ ebegin "Setting default route $defaultroute"
+ route add default $defaultroute
+ eend $?
+ elif [ -n "$defaultiproute" ]; then
+ ebegin "Setting default route $defaultiproute"
+ ip route add default $defaultiproute
+ eend $?
+ fi
+
+ if [ -n "$defaultroute6" ]; then
+ ebegin "Setting default route $defaultroute6"
+ if [ "$RC_UNAME" = Linux ]; then
+ routecmd="route -A inet6 add"
+ else
+ routecmd="route -inet6 add"
+ fi
+ $routecmd default $defaultroute6
+ eend $?
+ elif [ -n "$defaultiproute6" ]; then
+ ebegin "Setting default route $defaultiproute6"
+ ip -f inet6 route add default $defaultiproute6
+ eend $?
+ fi
+
+ return 0
+}
+
+stop()
+{
+ # Don't stop the network at shutdown.
+ # We don't use the noshutdown keyword so that we are started again
+ # correctly if we go back to multiuser.
+ yesno ${shutdown_network:-YES} && yesno $RC_GOINGDOWN && return 0
+
+ local int= intv= cmd= downcmd= r=
+ einfo "Stopping network"
+ routeflush
+ eindent
+ for int in $(reverse $(interfaces u)); do
+ intv=$(shell_var "$int")
+ eval downcmd=\$ifdown_$intv
+ eval cmd=\$ip_$intv
+ [ -z "$cmd" ] && eval cmd=\$ifconfig_$intv
+ if [ -n "$cmd" -o -f /etc/ip."$int" -o \
+ -f /etc/ifconfig."$int" -o \
+ -n "$downcmd" -o -f /etc/ifdown."$int" ];
+ then
+ veinfo "$int"
+ runargs /etc/ifdown."$int" "$downcmd"
+ if [ -x /sbin/ip ] || [ -x /bin/ip ]; then
+ # We need to do this, otherwise we may
+ # fail to add things correctly on restart
+ ip address flush dev "$int" 2>/dev/null
+ fi
+ ifconfig "$int" down 2>/dev/null
+ ifconfig "$int" destroy 2>/dev/null
+ fi
+ done
+ eoutdent
+ eend 0
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+description="Turns numlock on for the consoles."
+
+ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
+
+depend()
+{
+ need localmount
+ keyword -openvz -prefix -vserver -lxc
+}
+
+_setleds()
+{
+ [ -z "$1" ] && return 1
+
+ local dev=/dev/tty t= i=1 retval=0
+ [ -d /dev/vc ] && dev=/dev/vc/
+
+ while [ $i -le $ttyn ]; do
+ setleds -D "$1"num < $dev$i || retval=1
+ i=$(($i + 1))
+ done
+
+ return $retval
+}
+
+start()
+{
+ ebegin "Enabling numlock on ttys"
+ _setleds +
+ eend $? "Failed to enable numlock"
+}
+
+stop()
+{
+ ebegin "Disabling numlock on ttys"
+ _setleds -
+ eend $? "Failed to disable numlock"
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+description="Turns numlock on for the consoles."
+
+ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
+
+depend()
+{
+ need localmount
+ keyword -openvz -prefix -vserver -lxc
+}
+
+_setleds()
+{
+ [ -z "$1" ] && return 1
+
+ local dev=/dev/tty t= i=1 retval=0
+ [ -d /dev/vc ] && dev=/dev/vc/
+
+ while [ $i -le $ttyn ]; do
+ setleds -D "$1"num < $dev$i || retval=1
+ : $(( i += 1 ))
+ done
+
+ return $retval
+}
+
+start()
+{
+ ebegin "Enabling numlock on ttys"
+ _setleds +
+ eend $? "Failed to enable numlock"
+}
+
+stop()
+{
+ ebegin "Disabling numlock on ttys"
+ _setleds -
+ eend $? "Failed to disable numlock"
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+# This script was inspired by the equivalent rc.d staticroute from NetBSD.
+
+description="Configures static routes."
+__nl="
+"
+
+depend()
+{
+ provide net
+ use network
+ keyword -jail -prefix -vserver
+}
+
+pre_flight_checks()
+{
+ route=route
+ [ -s /etc/route.conf ] && return 0
+
+ if [ -n "$staticiproute" ]; then
+ route="ip route"
+ staticroute="$staticiproute"
+ fi
+}
+
+dump_args()
+{
+ # Route configuration file, as used by the NetBSD RC system
+ if [ -s /etc/route.conf ]; then
+ cat /etc/route.conf
+ return $?
+ fi
+
+ case "$staticroute" in
+ *"$__nl"*)
+ echo "$staticroute"
+ ;;
+ *)
+ (
+ set -o noglob
+ IFS=';'; set -- $staticroute
+ IFS="$__nl"; echo "$*"
+ )
+ ;;
+ esac
+}
+
+do_routes()
+{
+ local xtra= family=
+ [ "$RC_UNAME" != Linux ] && xtra=-q
+
+ ebegin "$1 static routes"
+ eindent
+ pre_flight_checks
+ dump_args | while read args; do
+ [ -z "$args" ] && continue
+ case "$args" in
+ "#"*)
+ ;;
+ "+"*)
+ [ $2 = "add" ] && eval ${args#*+}
+ ;;
+ "-"*)
+ [ $2 = "del" -o $2 = "delete" ] && eval ${args#*-}
+ ;;
+ *)
+ veinfo "$args"
+ case "$route" in
+ "ip route")
+ ip route $2 $args
+ ;;
+ *)
+ # Linux route does cannot work it out ...
+ if [ "$RC_UNAME" = Linux ]; then
+ case "$args" in
+ *:*) family="-A inet6";;
+ *) family=;;
+ esac
+ fi
+ route $family $xtra $2 -$args
+ ;;
+ esac
+ veend $?
+ esac
+ done
+ eoutdent
+ eend 0
+}
+
+start()
+{
+ do_routes "Adding" "add"
+}
+
+stop()
+{
+ local cmd="delete"
+ [ "$RC_UNAME" = Linux ] && cmd="del"
+ do_routes "Deleting" "$cmd"
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+# This script was inspired by the equivalent rc.d staticroute from NetBSD.
+
+description="Configures static routes."
+__nl="
+"
+
+depend()
+{
+ provide net
+ use network
+ keyword -jail -prefix -vserver
+}
+
+pre_flight_checks()
+{
+ route=route
+ [ -s /etc/route.conf ] && return 0
+
+ if [ -n "$staticiproute" ]; then
+ route="ip route"
+ staticroute="$staticiproute"
+ fi
+}
+
+dump_args()
+{
+ # Route configuration file, as used by the NetBSD RC system
+ if [ -s /etc/route.conf ]; then
+ cat /etc/route.conf
+ return $?
+ fi
+
+ case "$staticroute" in
+ *"$__nl"*)
+ echo "$staticroute"
+ ;;
+ *)
+ (
+ set -o noglob
+ IFS=';'; set -- $staticroute
+ IFS="$__nl"; echo "$*"
+ )
+ ;;
+ esac
+}
+
+do_routes()
+{
+ local xtra= family=
+ [ "$RC_UNAME" != Linux ] && xtra=-q
+
+ ebegin "$1 static routes"
+ eindent
+ pre_flight_checks
+ dump_args | while read args; do
+ [ -z "$args" ] && continue
+ case "$args" in
+ "#"*)
+ ;;
+ "+"*)
+ [ $2 = "add" ] && eval ${args#*+}
+ ;;
+ "-"*)
+ [ $2 = "del" -o $2 = "delete" ] && eval ${args#*-}
+ ;;
+ *)
+ veinfo "$args"
+ case "$route" in
+ "ip route")
+ ip route $2 $args
+ ;;
+ *)
+ # Linux route does cannot work it out ...
+ if [ "$RC_UNAME" = Linux ]; then
+ case "$args" in
+ *:*) family="-A inet6";;
+ *) family=;;
+ esac
+ fi
+ route $family $xtra $2 -$args
+ ;;
+ esac
+ veend $?
+ esac
+ done
+ eoutdent
+ eend 0
+}
+
+start()
+{
+ ewarn
+ ewarn "The $RC_SVCNAME script is deprecated and will be"
+ ewarn "removed in the future."
+ ewarn "Please use the net.* scripts to manage your network interfaces."
+ ewarn
+ do_routes "Adding" "add"
+}
+
+stop()
+{
+ local cmd="delete"
+ [ "$RC_UNAME" = Linux ] && cmd="del"
+ do_routes "Deleting" "$cmd"
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+description="Mount the sys filesystem."
+
+depend()
+{
+ keyword -prefix -vserver
+}
+
+mount_sys()
+{
+ grep -Eq "[[:space:]]+sysfs$" /proc/filesystems || return 1
+ mountinfo -q /sys && return 0
+
+ if [ ! -d /sys ]; then
+ if ! mkdir -m 0755 /sys; then
+ ewarn "Could not create /sys!"
+ return 1
+ fi
+ fi
+
+ ebegin "Mounting /sys"
+ if ! fstabinfo --mount /sys; then
+ mount -n -t sysfs -o noexec,nosuid,nodev sysfs /sys
+ fi
+ eend $?
+}
+
+mount_misc()
+{
+ # Setup Kernel Support for securityfs
+ if [ -d /sys/kernel/security ] && \
+ ! mountinfo -q /sys/kernel/security; then
+ if grep -qs securityfs /proc/filesystems; then
+ ebegin "Mounting security filesystem"
+ mount -n -t securityfs -o nodev,noexec,nosuid \
+ securityfs /sys/kernel/security
+ eend $?
+ fi
+ fi
+
+ # Setup Kernel Support for debugfs
+ if [ -d /sys/kernel/debug ] && ! mountinfo -q /sys/kernel/debug; then
+ if grep -qs debugfs /proc/filesystems; then
+ ebegin "Mounting debug filesystem"
+ mount -n -t debugfs -o nodev,noexec,nosuid \
+ debugfs /sys/kernel/debug
+ eend $?
+ fi
+ fi
+}
+
+start()
+{
+ local retval
+ mount_sys
+ retval=$?
+ if [ $retval -eq 0 ]; then
+ mount_misc
+ fi
+ return $retval
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+description="Mount the sys filesystem."
+
+depend()
+{
+ keyword -prefix -vserver
+}
+
+mount_sys()
+{
+ grep -Eq "[[:space:]]+sysfs$" /proc/filesystems || return 1
+ mountinfo -q /sys && return 0
+
+ if [ ! -d /sys ]; then
+ if ! mkdir -m 0755 /sys; then
+ ewarn "Could not create /sys!"
+ return 1
+ fi
+ fi
+
+ ebegin "Mounting /sys"
+ if ! fstabinfo --mount /sys; then
+ mount -n -t sysfs -o noexec,nosuid,nodev sysfs /sys
+ fi
+ eend $?
+}
+
+mount_misc()
+{
+ # Setup Kernel Support for securityfs
+ if [ -d /sys/kernel/security ] && \
+ ! mountinfo -q /sys/kernel/security; then
+ if grep -qs securityfs /proc/filesystems; then
+ ebegin "Mounting security filesystem"
+ mount -n -t securityfs -o nodev,noexec,nosuid \
+ securityfs /sys/kernel/security
+ eend $?
+ fi
+ fi
+
+ # Setup Kernel Support for debugfs
+ if [ -d /sys/kernel/debug ] && ! mountinfo -q /sys/kernel/debug; then
+ if grep -qs debugfs /proc/filesystems; then
+ ebegin "Mounting debug filesystem"
+ mount -n -t debugfs -o nodev,noexec,nosuid \
+ debugfs /sys/kernel/debug
+ eend $?
+ fi
+ fi
+
+ # Setup Kernel Support for configfs
+ if [ -d /sys/kernel/config ] && ! mountinfo -q /sys/kernel/config; then
+ if grep -qs configfs /proc/filesystems; then
+ ebegin "Mounting config filesystem"
+ mount -n -t configfs -o nodev,noexec,nosuid \
+ configfs /sys/kernel/config
+ eend $?
+ fi
+ fi
+
+ # set up kernel support for cgroups
+ if [ -d /sys/fs/cgroup ] && ! mountinfo -q /sys/fs/cgroup; then
+ if grep -qs cgroup /proc/filesystems; then
+ ebegin "Mounting cgroup filesystem"
+ local opts="nodev,noexec,nosuid,mode=755,size=${rc_cgroupsize:-10m}"
+ mount -n -t tmpfs -o ${opts} cgroup_root /sys/fs/cgroup
+ eend $?
+ fi
+ fi
+}
+
+mount_cgroups()
+{
+ yesno ${rc_cgroups:-YES} || return 0
+ if [ ! -e /proc/cgroups ]; then
+ return 0
+ fi
+
+ while read name hier groups enabled rest; do
+ case "${enabled}" in
+ 1) mkdir /sys/fs/cgroup/${name}
+ mount -t cgroup -o nodev,noexec,nosuid,${name} \
+ ${name} /sys/fs/cgroup/${name}
+ ;;
+ esac
+ done < /proc/cgroups
+}
+
+start()
+{
+ local retval
+ mount_sys
+ retval=$?
+ if [ $retval -eq 0 ]; then
+ mount_misc
+ retval=$?
+ fi
+ if [ $retval -eq 0 ]; then
+ mount_cgroups
+ retval=$?
+ fi
+ return $retval
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2008-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+description="Configures terminal encoding."
+
+ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
+: ${unicode:=${UNICODE}}
+
+depend()
+{
+ keyword -openvz -prefix -uml -vserver -xenu
+ need root
+ after bootmisc
+}
+
+start()
+{
+ local ttydev=/dev/tty n=
+ [ -d /dev/vc ] && ttydev=/dev/vc/
+
+ # Set terminal encoding to either ASCII or UNICODE.
+ # See utf-8(7) for more information.
+ local termencoding="%@" termmsg="ASCII"
+ if yesno ${unicode}; then
+ termencoding="%G"
+ termmsg="UTF-8"
+ fi
+
+ ebegin "Setting terminal encoding [$termmsg]"
+ n=1
+ while [ ${n} -le "$ttyn" ]; do
+ printf "\033%s" "$termencoding" >$ttydev$n
+ n=$(($n + 1))
+ done
+
+ # Save the encoding for use immediately at boot
+ if [ -w "$RC_LIBEXECDIR" ]; then
+ mkdir -p "$RC_LIBEXECDIR"/console
+ if yesno ${unicode:-${UNICODE}}; then
+ echo "" > "$RC_LIBEXECDIR"/console/unicode
+ else
+ rm -f "$RC_LIBEXECDIR"/console/unicode
+ fi
+ fi
+
+ eend 0
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2008-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+description="Configures terminal encoding."
+
+ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
+: ${unicode:=${UNICODE}}
+
+depend()
+{
+ keyword -openvz -prefix -uml -vserver -xenu
+ need root
+ after bootmisc
+}
+
+start()
+{
+ local ttydev=/dev/tty n=
+ [ -d /dev/vc ] && ttydev=/dev/vc/
+
+ # Set terminal encoding to either ASCII or UNICODE.
+ # See utf-8(7) for more information.
+ local termencoding="%@" termmsg="ASCII"
+ if yesno ${unicode}; then
+ termencoding="%G"
+ termmsg="UTF-8"
+ fi
+
+ ebegin "Setting terminal encoding [$termmsg]"
+ n=1
+ while [ ${n} -le "$ttyn" ]; do
+ printf "\033%s" "$termencoding" >$ttydev$n
+ : $(( n += 1 ))
+ done
+
+ # Save the encoding for use immediately at boot
+ if [ -w "$RC_LIBEXECDIR" ]; then
+ mkdir -p "$RC_LIBEXECDIR"/console
+ if yesno ${unicode:-${UNICODE}}; then
+ echo "" > "$RC_LIBEXECDIR"/console/unicode
+ else
+ rm -f "$RC_LIBEXECDIR"/console/unicode
+ fi
+ fi
+
+ eend 0
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+description="Run udevd and create the device-nodes"
+
+[ -e /etc/udev/udev.conf ] && . /etc/udev/udev.conf
+
+rc_coldplug=${rc_coldplug:-${RC_COLDPLUG:-YES}}
+
+depend()
+{
+ if [ -f /etc/init.d/sysfs ]; then
+ # require new enough openrc with sysinit being extra runlevel
+ # on linux we just check if sysfs init-script exists
+ # this is to silence out ugly warnings about not-existing sysfs script
+ provide dev
+ if yesno "${rc_device_tarball:-no}"; then
+ need sysfs udev-mount udev-dev-tarball
+ else
+ need sysfs udev-mount
+ fi
+ before checkfs fsck
+
+ # udev does not work inside vservers
+ keyword novserver nolxc
+ fi
+}
+
+cleanup()
+{
+ # fail more gracely and not leave udevd running
+ start-stop-daemon --stop --exec /sbin/udevd
+ exit 1
+}
+
+disable_hotplug_agent()
+{
+ if [ -e /proc/sys/kernel/hotplug ]; then
+ echo "" >/proc/sys/kernel/hotplug
+ fi
+}
+
+root_link()
+{
+ /lib64/udev/write_root_link_rule
+}
+
+rules_disable_switch()
+{
+ # this function disables rules files
+ # by creating new files with the same name
+ # in a temp rules directory with higher priority
+ local f=/dev/.udev/rules.d/"$1" bname="$1" onoff="$2"
+
+ if yesno "${onoff}"; then
+ echo "# This file disables ${bname} due to /etc/conf.d/udev" \
+ > "${f}"
+ else
+ rm -f "${f}"
+ fi
+}
+
+# only called on openrc
+is_service_enabled() {
+ local svc="$1"
+
+ [ ! -e "/etc/init.d/${svc}" ] && return 1
+
+ [ -e "/etc/runlevels/${RC_BOOTLEVEL}/${svc}" ] && return 0
+ [ -e "/etc/runlevels/${RC_DEFAULTLEVEL}/${svc}" ] && return 0
+ return 1
+}
+
+check_openrc_net()
+{
+ local f=/dev/.udev/rules.d/90-network.rules
+ is_service_enabled network || return 0
+
+ # disable network hotplugging
+ echo "# This file disables network hotplug events calling old-style openrc net scripts" >> "${f}"
+ echo "# as we use new-style network init script /etc/init.d/network" >> "${f}"
+}
+
+start_udevd()
+{
+ # load unix domain sockets if built as module, Bug #221253
+ if [ -e /proc/modules ] ; then
+ modprobe -q unix 2>/dev/null
+ fi
+ local opts="${udev_opts}"
+
+ ebegin "Starting udevd"
+ if yesno "${udev_debug:-no}"; then
+ /sbin/udevd --daemon ${opts} --debug 2>/dev/.udev/udev.log
+ else
+ start-stop-daemon --start --exec /sbin/udevd -- --daemon ${opts}
+ fi
+
+ eend $?
+}
+
+# populate /dev with devices already found by the kernel
+populate_dev()
+{
+ if get_bootparam "nocoldplug" ; then
+ rc_coldplug="NO"
+ ewarn "Skipping udev coldplug as requested in kernel cmdline"
+ fi
+
+ ebegin "Populating /dev with existing devices through uevents"
+ udevadm control --property=STARTUP=1
+ if yesno "${rc_coldplug}"; then
+ udevadm trigger --action="add"
+ else
+ # Do not run any init-scripts, Bug #206518
+ udevadm control --property=do_not_run_plug_service=1
+
+ # only create device nodes
+ udevadm trigger --action="add" --attr-match=dev
+
+ # run persistent-net stuff, bug 191466
+ udevadm trigger --action="add" --subsystem-match=net
+ fi
+ eend $?
+
+ # we can speed up booting under these conditions:
+ # * using devtmpfs so kernel creates device nodes for us
+ # * only using kernel created device nodes at boot (in /etc/fstab and elsewhere)
+ #
+ ebegin "Waiting for uevents to be processed"
+ udevadm settle --timeout=${udev_settle_timeout:-60}
+ eend $?
+
+ udevadm control --property=do_not_run_plug_service=
+ udevadm control --property=STARTUP=
+ return 0
+}
+
+# for debugging
+start_udevmonitor()
+{
+ yesno "${udev_monitor:-no}" || return 0
+
+ udevmonitor_log=/dev/.udev/udevmonitor.log
+ udevmonitor_pid=/dev/.udev/udevmonitor.pid
+
+ einfo "udev: Running udevadm monitor ${udev_monitor_opts} to get a log of all events"
+ start-stop-daemon --start --stdout "${udevmonitor_log}" \
+ --make-pidfile --pidfile "${udevmonitor_pid}" \
+ --background --exec /sbin/udevadm -- monitor ${udev_monitor_opts}
+}
+
+stop_udevmonitor()
+{
+ yesno "${udev_monitor:-no}" || return 0
+
+ if yesno "${udev_monitor_keep_running:-no}"; then
+ ewarn "udev: udevmonitor is still running and writing into ${udevmonitor_log}"
+ else
+ einfo "udev: Stopping udevmonitor: Log is in ${udevmonitor_log}"
+ start-stop-daemon --stop --pidfile "${udevmonitor_pid}" --exec /sbin/udevadm
+ fi
+}
+
+display_hotplugged_services() {
+ local svcfile= svc= services=
+ for svcfile in "${RC_SVCDIR}"/hotplugged/*; do
+ svc="${svcfile##*/}"
+ [ -x "${svcfile}" ] || continue
+
+ services="${services} ${svc}"
+ done
+ [ -n "${services}" ] && einfo "Device initiated services:${HILITE}${services}${NORMAL}"
+}
+
+check_persistent_net()
+{
+ # check if there are problems with persistent-net
+ local syspath= devs= problem=false
+ for syspath in /sys/class/net/*_rename*; do
+ if [ -d "${syspath}" ]; then
+ devs="${devs} ${syspath##*/}"
+ problem=true
+ fi
+ done
+
+ ${problem} || return 0
+
+ eerror "UDEV: Your system has a problem assigning persistent names"
+ eerror "to these network interfaces: ${devs}"
+
+ einfo "Checking persistent-net rules:"
+ # the sed-expression lists all duplicate lines
+ # from the input, like "uniq -d" does, but uniq
+ # is installed into /usr/bin and not available at boot.
+ dups=$(
+ RULES_FILE='/etc/udev/rules.d/70-persistent-net.rules'
+ . /lib64/udev/rule_generator.functions
+ find_all_rules 'NAME=' '.*' | \
+ tr ' ' '\n' | \
+ sort | \
+ sed '$!N; s/^\(.*\)\n\1$/\1/; t; D'
+ )
+ if [ -n "${dups}" ]; then
+ ewarn "The rules create multiple entries assigning these names:"
+ eindent
+ ewarn "${dups}"
+ eoutdent
+ else
+ ewarn "Found no duplicate names in persistent-net rules,"
+ ewarn "there must be some other problem!"
+ fi
+ return 1
+}
+
+check_udev_works()
+{
+ # should exist on every system, else udev failed
+ if [ ! -e /dev/zero ]; then
+ eerror "Assuming udev failed somewhere, as /dev/zero does not exist."
+ return 1
+ fi
+ return 0
+}
+
+start()
+{
+ # do not run this on old baselayout where udev-addon gets loaded
+ if [ ! -f /etc/init.d/sysfs ]; then
+ eerror "The $SVCNAME init-script is written for baselayout-2!"
+ eerror "Please do not use it with baselayout-1!".
+ return 1
+ fi
+
+ check_openrc_net
+ _start
+
+ display_hotplugged_services
+
+ return 0
+}
+
+_start()
+{
+ if [ ! -e /etc/runlevels/${RC_DEFAULTLEVEL:-default}/udev-postmount ]; then
+ ewarn "You should add udev-postmount service to your default runlevel."
+ fi
+
+ root_link
+ rules_disable_switch 75-persistent-net-generator.rules "${persistent_net_disable:-no}"
+ rules_disable_switch 75-cd-aliases-generator.rules ${persistent_cd_disable:-no}
+
+ disable_hotplug_agent
+ start_udevd || cleanup
+ start_udevmonitor
+ populate_dev || cleanup
+
+ check_persistent_net
+
+ check_udev_works || cleanup
+ stop_udevmonitor
+
+ return 0
+}
+
+stop() {
+ ebegin "Stopping udevd"
+ start-stop-daemon --stop --exec /sbin/udevd
+ eend $?
+}
+
--- /dev/null
+#!/sbin/runscript
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+description="Mount tmpfs on /dev"
+[ -e /etc/conf.d/udev ] && . /etc/conf.d/udev
+
+# get_KV and KV_to_int
+. /lib64/udev/shell-compat-KV.sh
+
+# FIXME
+# Instead of this script testing kernel version, udev itself should
+# Maybe something like udevd --test || exit $?
+check_kernel()
+{
+ if [ $(get_KV) -lt $(KV_to_int '2.6.25') ]; then
+ eerror "Your kernel is too old to work with this version of udev."
+ eerror "Current udev only supports Linux kernel 2.6.25 and newer."
+ return 1
+ fi
+
+ yesno "${unreliable_kernel_warning:-yes}" || return 0
+
+ if [ $(get_KV) -lt $(KV_to_int '2.6.27') ]; then
+ ewarn "You need at least Linux kernel 2.6.27 for reliable operation of udev."
+ fi
+ return 0
+}
+
+
+mount_dev_directory()
+{
+ if mountinfo -q /dev; then
+ einfo "/dev is already mounted"
+ return 0
+ fi
+
+ # No options are processed here as they should all be in /etc/fstab
+ ebegin "Mounting /dev"
+ if ! fstabinfo --mount /dev; then
+ # we mount devtmpfs if supported
+ local fs=tmpfs
+ grep -qs devtmpfs /proc/filesystems && fs=devtmpfs
+
+ # Some devices require exec, Bug #92921
+ mount -n -t "$fs" -o "exec,nosuid,mode=0755,size=10M" udev /dev
+ fi
+ eend $?
+}
+
+seed_dev()
+{
+ # Seed /dev with some things that we know we need
+
+ # creating /dev/console, /dev/tty and /dev/tty1 to be able to write
+ # to $CONSOLE with/without bootsplash before udevd creates it
+ [ -c /dev/console ] || mknod -m 600 /dev/console c 5 1
+ [ -c /dev/tty1 ] || mknod -m 620 /dev/tty1 c 4 1
+ [ -c /dev/tty ] || mknod -m 666 /dev/tty c 5 0
+
+ # udevd will dup its stdin/stdout/stderr to /dev/null
+ # and we do not want a file which gets buffered in ram
+ [ -c /dev/null ] || mknod -m 666 /dev/null c 1 3
+ ${HAVE_SELINUX} && restorecon /dev/null
+
+ # so udev can add its start-message to dmesg
+ [ -c /dev/kmsg ] || mknod -m 660 /dev/kmsg c 1 11
+
+ # Create problematic directories
+ mkdir -p /dev/pts /dev/shm
+ ${HAVE_SELINUX} && restorecon -R /dev >/dev/null
+ return 0
+}
+
+
+start()
+{
+ # do not run this on too old baselayout - udev-addon is already loaded!
+ if [ ! -f /etc/init.d/sysfs ]; then
+ eerror "The $SVCNAME init-script is written for baselayout-2!"
+ eerror "Please do not use it with baselayout-1!".
+ return 1
+ fi
+
+ _start
+}
+
+_start()
+{
+ check_kernel || return 1
+ mount_dev_directory || return 1
+
+ # Selinux lovin; /selinux should be mounted by selinux-patched init
+ if [ -x /sbin/restorecon -a -c /selinux/null ]; then
+ HAVE_SELINUX=true
+ restorecon /dev > /selinux/null
+ else
+ HAVE_SELINUX=false
+ fi
+
+ # make sure it exists
+ mkdir -p /dev/.udev /dev/.udev/rules.d
+
+ seed_dev
+
+ return 0
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+description="mount devtmpfs or tmpfs on /dev"
+
+depend()
+{
+ keyword -vserver -lxc
+}
+
+mount_dev_directory()
+{
+ if mountinfo -q /dev; then
+ einfo "/dev is already mounted"
+ return 0
+ fi
+
+ # No options are processed here as they should all be in /etc/fstab
+ ebegin "Mounting /dev"
+ if ! fstabinfo --mount /dev; then
+ # we mount devtmpfs if supported
+ local fs=tmpfs
+ grep -qs devtmpfs /proc/filesystems && fs=devtmpfs
+
+ # Some devices require exec, Bug #92921
+ mount -n -t "$fs" -o "exec,nosuid,mode=0755,size=10M" udev /dev
+ fi
+ eend $?
+}
+
+seed_dev()
+{
+ # Seed /dev with some things that we know we need
+
+ # creating /dev/console, /dev/tty and /dev/tty1 to be able to write
+ # to $CONSOLE with/without bootsplash before udevd creates it
+ [ -c /dev/console ] || mknod -m 600 /dev/console c 5 1
+ [ -c /dev/tty1 ] || mknod -m 620 /dev/tty1 c 4 1
+ [ -c /dev/tty ] || mknod -m 666 /dev/tty c 5 0
+
+ # udevd will dup its stdin/stdout/stderr to /dev/null
+ # and we do not want a file which gets buffered in ram
+ [ -c /dev/null ] || mknod -m 666 /dev/null c 1 3
+ ${HAVE_SELINUX} && restorecon /dev/null
+
+ # so udev can add its start-message to dmesg
+ [ -c /dev/kmsg ] || mknod -m 660 /dev/kmsg c 1 11
+
+ # Create problematic directories
+ mkdir -p /dev/pts /dev/shm
+ ${HAVE_SELINUX} && restorecon -R /dev >/dev/null
+ return 0
+}
+
+start()
+{
+ mount_dev_directory || return 1
+
+ # Selinux lovin; /selinux should be mounted by selinux-patched init
+ if [ -x /sbin/restorecon -a -c /selinux/null ]; then
+ HAVE_SELINUX=true
+ restorecon /dev > /selinux/null
+ else
+ HAVE_SELINUX=false
+ fi
+
+ seed_dev
+ return 0
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/udev/files/164/udev-postmount.initd,v 1.1 2010/10/30 13:53:54 zzam Exp $
+
+depend() {
+ need localmount
+ after dbus # for trigger failed
+}
+
+dir_writeable()
+{
+ touch "$1"/.test.$$ 2>/dev/null && rm "$1"/.test.$$
+}
+
+# store persistent-rules that got created while booting
+# when / was still read-only
+store_persistent_rules() {
+ # only continue if rules-directory is writable
+ dir_writeable /etc/udev/rules.d || return 0
+
+ local file dest
+ for file in /dev/.udev/tmp-rules--*; do
+ dest=${file##*tmp-rules--}
+ [ "$dest" = '*' ] && break
+ type=${dest##70-persistent-}
+ type=${type%%.rules}
+ ebegin "Saving udev persistent ${type} rules to /etc/udev/rules.d"
+ cat "$file" >> /etc/udev/rules.d/"$dest" && rm -f "$file"
+ eend $? "Failed moving persistent rules!"
+ done
+}
+
+
+start() {
+ # check if this system uses udev
+ [ -d /dev/.udev/ ] || return 0
+
+ einfo "Doing udev cleanups"
+
+ # Run the events that failed at first udev trigger
+ udevadm trigger --type=failed -v
+
+ # store persistent-rules that got created while booting
+ # when / was still read-only
+ store_persistent_rules
+}
+
+stop() {
+ :
+}
+
+# vim:ts=4
--- /dev/null
+#!/sbin/runscript
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+udev_version()
+{
+ echo $(udevadm --version)
+}
+
+depend()
+{
+ need localmount
+ if [ $(udev_version) -lt 175 ]; then
+ after dbus # for trigger failed
+ fi
+ keyword -vserver -lxc
+}
+
+dir_writeable()
+{
+ touch "$1"/.test.$$ 2>/dev/null && rm "$1"/.test.$$
+}
+
+# store persistent-rules that got created while booting
+# when / was still read-only
+store_persistent_rules()
+{
+ # only continue if rules-directory is writable
+ dir_writeable /etc/udev/rules.d || return 0
+
+ local file dest
+ for file in "${RUNDIR}"/tmp-rules--*; do
+ dest=${file##*tmp-rules--}
+ [ "$dest" = '*' ] && break
+ type=${dest##70-persistent-}
+ type=${type%%.rules}
+ ebegin "Saving udev persistent ${type} rules to /etc/udev/rules.d"
+ cat "$file" >> /etc/udev/rules.d/"$dest" && rm -f "$file"
+ eend $? "Failed moving persistent rules!"
+ done
+}
+
+start()
+{
+ RUNDIR=$(udevadm info --run)
+ # check if this system uses udev
+ [ -d "${RUNDIR}" ] || return 0
+
+ einfo "Doing udev cleanups"
+
+ if [ $(udev_version) -lt 175 ]; then
+ # Run the events that failed at first udev trigger
+ udevadm trigger --type=failed -v
+ fi
+
+ # store persistent-rules that got created while booting
+ # when / was still read-only
+ store_persistent_rules
+}
+
+stop()
+{
+ return 0
+}
+
+# vim:ts=4
--- /dev/null
+#!/sbin/runscript
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+command=/sbin/udevd
+command_args="--daemon ${udev_opts}"
+description="Run udevd and create the device-nodes"
+
+persistent_cd_disable="${persistent_cd_disable:-no}"
+persistent_net_disable="${persistent_net_disable:-no}"
+rc_coldplug=${rc_coldplug:-${RC_COLDPLUG:-YES}}
+udev_debug="${udev_debug:-no}"
+udev_monitor="${udev_monitor:-no}"
+udev_monitor_keep_running="${udev_monitor_keep_running:-no}"
+udev_settle_timeout="${udev_settle_timeout:-60}"
+kv_min="${kb_min:-2.6.32}"
+
+depend()
+{
+ provide dev
+ need sysfs udev-mount
+ before checkfs fsck
+
+ # udev does not work inside vservers
+ keyword -vserver -lxc
+}
+
+KV_to_int()
+{
+ [ -z $1 ] && return 1
+
+ local x=${1%%[!0-9.]*} y= z=
+ local KV_MAJOR=${x%%.*}
+ y=${x#*.}
+ [ "$x" = "$y" ] && y=0.0
+ local KV_MINOR=${y%%.*}
+ z=${y#*.}
+ [ "$y" = "$z" ] && z=0
+ local KV_MICRO=${z%%.*}
+ local KV_int=$((${KV_MAJOR} * 65536 + ${KV_MINOR} * 256 + ${KV_MICRO} ))
+
+ # We make version 2.2.0 the minimum version we will handle as
+ # a sanity check ... if its less, we fail ...
+ [ "${KV_int}" -lt 131584 ] && return 1
+
+ echo "${KV_int}"
+}
+
+_RC_GET_KV_CACHE=""
+get_KV()
+{
+ if [ -z "${_RC_GET_KV_CACHE}" ] ; then
+ _RC_GET_KV_CACHE="$(uname -r)"
+ fi
+ echo "$(KV_to_int "${_RC_GET_KV_CACHE}")"
+ return $?
+}
+
+# FIXME
+# Instead of this script testing kernel version, udev itself should
+# Maybe something like udevd --test || exit $?
+check_kernel()
+{
+ if [ $(get_KV) -lt $(KV_to_int ${kv_min}) ]; then
+ eerror "Your kernel is too old to work with this version of udev."
+ eerror "Current udev only supports Linux kernel ${kv_min} and newer."
+ return 1
+ fi
+ return 0
+}
+
+get_rundir()
+{
+ echo $(udevadm info --run)
+}
+
+cleanup()
+{
+ # fail more gracely and not leave udevd running
+ start-stop-daemon --stop --exec /sbin/udevd
+ exit 1
+}
+
+rules_disable_switch()
+{
+ # this function disables rules files
+ # by creating new files with the same name
+ # in a temp rules directory with higher priority
+ local f=$(get_rundir)/rules.d/"$1" bname="$1" onoff="$2"
+
+ if yesno "${onoff}"; then
+ echo "# This file disables ${bname} due to /etc/conf.d/udev" \
+ > "${f}"
+ else
+ rm -f "${f}"
+ fi
+}
+
+is_service_enabled()
+{
+ local svc="$1"
+
+ [ ! -e "/etc/init.d/${svc}" ] && return 1
+
+ [ -e "/etc/runlevels/${RC_BOOTLEVEL}/${svc}" ] && return 0
+ [ -e "/etc/runlevels/${RC_DEFAULTLEVEL}/${svc}" ] && return 0
+ return 1
+}
+
+start_pre()
+{
+ if [ -d /run ]; then
+ checkpath -d -m 0755 -o root:root -q /run/udev
+ fi
+
+ if is_service_enabled network; then
+ # disable network hotplugging
+ local f="$(get_rundir)/rules.d/90-network.rules"
+ echo "# This file disables network hotplug events calling" >> "${f}"
+ echo "# old-style openrc net scripts" >> "${f}"
+ echo "# as we use /etc/init.d/network to set up our network" >> "${f}"
+ fi
+
+ if [ ! -e /etc/runlevels/${RC_DEFAULTLEVEL:-default}/udev-postmount ]; then
+ ewarn "You should add udev-postmount service to your default runlevel."
+ fi
+
+ /lib/udev/write_root_link_rule
+
+ rules_disable_switch 75-persistent-net-generator.rules "${persistent_net_disable}"
+ rules_disable_switch 75-cd-aliases-generator.rules ${persistent_cd_disable}
+
+ if [ -e /proc/sys/kernel/hotplug ]; then
+ echo "" >/proc/sys/kernel/hotplug
+ fi
+
+ # load unix domain sockets if built as module, Bug #221253
+ # and not yet loaded, Bug #363549
+ if [ ! -e /proc/net/unix ]; then
+ if ! modprobe unix; then
+ eerror "Cannot load the unix domain socket module"
+ fi
+ fi
+
+ if yesno "${udev_debug}"; then
+ command_args="${command_args} --debug 2> $(get_rundir)/udev.log"
+ fi
+}
+
+start_udevmonitor()
+{
+ yesno "${udev_monitor}" || return 0
+
+ udevmonitor_log="$(get_rundir)/udevmonitor.log"
+ udevmonitor_pid="$(get_rundir)/udevmonitor.pid"
+
+ einfo "udev: Running udevadm monitor ${udev_monitor_opts} to log all events"
+ start-stop-daemon --start --stdout "${udevmonitor_log}" \
+ --make-pidfile --pidfile "${udevmonitor_pid}" \
+ --background --exec /sbin/udevadm -- monitor ${udev_monitor_opts}
+}
+
+populate_dev()
+{
+ if get_bootparam "nocoldplug" ; then
+ rc_coldplug="NO"
+ ewarn "Skipping udev coldplug as requested in kernel cmdline"
+ fi
+
+ ebegin "Populating /dev with existing devices through uevents"
+ if ! yesno "${rc_coldplug}"; then
+ # Do not run any init-scripts, Bug #206518
+ udevadm control --property=do_not_run_plug_service=1
+ fi
+ udevadm trigger --type=subsystems --action=add
+ udevadm trigger --type=devices --action=add
+ eend $?
+
+ # we can speed up booting under these conditions:
+ # * using devtmpfs so kernel creates device nodes for us
+ # * only using kernel created device nodes at boot
+ # (in /etc/fstab and elsewhere)
+ #
+ ebegin "Waiting for uevents to be processed"
+ udevadm settle --timeout=${udev_settle_timeout}
+ eend $?
+
+ udevadm control --property=do_not_run_plug_service=
+ return 0
+}
+
+check_persistent_net()
+{
+ # check if there are problems with persistent-net
+ local syspath= devs= problem=false
+ for syspath in /sys/class/net/*_rename*; do
+ if [ -d "${syspath}" ]; then
+ devs="${devs} ${syspath##*/}"
+ problem=true
+ fi
+ done
+
+ ${problem} || return 0
+
+ eerror "UDEV: Your system has a problem assigning persistent names"
+ eerror "to these network interfaces: ${devs}"
+
+ einfo "Checking persistent-net rules:"
+ # the sed-expression lists all duplicate lines
+ # from the input, like "uniq -d" does, but uniq
+ # is installed into /usr/bin and not available at boot.
+ dups=$(
+ RULES_FILE='/etc/udev/rules.d/70-persistent-net.rules'
+ . /lib/udev/rule_generator.functions
+ find_all_rules 'NAME=' '.*' | \
+ tr ' ' '\n' | \
+ sort | \
+ sed '$!N; s/^\(.*\)\n\1$/\1/; t; D'
+ )
+ if [ -n "${dups}" ]; then
+ ewarn "The rules create multiple entries assigning these names:"
+ eindent
+ ewarn "${dups}"
+ eoutdent
+ else
+ ewarn "Found no duplicate names in persistent-net rules,"
+ ewarn "there must be some other problem!"
+ fi
+ return 1
+}
+
+check_udev_works()
+{
+ # should exist on every system, else udev failed
+ if [ ! -e /dev/zero ]; then
+ eerror "Assuming udev failed somewhere, as /dev/zero does not exist."
+ return 1
+ fi
+ return 0
+}
+
+stop_udevmonitor()
+{
+ yesno "${udev_monitor}" || return 0
+
+ if yesno "${udev_monitor_keep_running}"; then
+ ewarn "udev: udevmonitor is still running and writing into ${udevmonitor_log}"
+ else
+ einfo "udev: Stopping udevmonitor: Log is in ${udevmonitor_log}"
+ start-stop-daemon --stop --pidfile "${udevmonitor_pid}" --exec /sbin/udevadm
+ fi
+}
+
+display_hotplugged_services()
+{
+ local svcfile= svc= services=
+ for svcfile in "${RC_SVCDIR}"/hotplugged/*; do
+ svc="${svcfile##*/}"
+ [ -x "${svcfile}" ] || continue
+
+ services="${services} ${svc}"
+ done
+ [ -n "${services}" ] && einfo "Device initiated services:${HILITE}${services}${NORMAL}"
+}
+
+start_post()
+{
+ start_udevmonitor
+ populate_dev
+ check_persistent_net
+ check_udev_works || cleanup
+ stop_udevmonitor
+ display_hotplugged_services
+ return 0
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+: ${urandom_seed:=${URANDOM_SEED:-/var/run/random-seed}}
+description="Initializes the random number generator."
+
+depend()
+{
+ need localmount
+ keyword -jail -openvz -prefix
+}
+
+save_seed()
+{
+ local psz=1
+
+ if [ -e /proc/sys/kernel/random/poolsize ]; then
+ psz=$(($(cat /proc/sys/kernel/random/poolsize) / 4096))
+ fi
+
+ ( # sub shell to prevent umask pollution
+ umask 077
+ dd if=/dev/urandom of="$urandom_seed" count=${psz} 2>/dev/null
+ )
+}
+
+start()
+{
+ [ -c /dev/urandom ] || return
+ if [ -f "$urandom_seed" ]; then
+ ebegin "Initializing random number generator"
+ cat "$urandom_seed" > /dev/urandom
+ eend $? "Error initializing random number generator"
+ fi
+ rm -f "$urandom_seed" && save_seed
+ return 0
+}
+
+stop()
+{
+ ebegin "Saving random seed"
+ save_seed
+ eend $? "Failed to save random seed"
+}
--- /dev/null
+#!/sbin/runscript
+# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
+# Released under the 2-clause BSD license.
+
+: ${urandom_seed:=${URANDOM_SEED:-/var/lib/misc/random-seed}}
+description="Initializes the random number generator."
+
+depend()
+{
+ need localmount
+ keyword -jail -openvz -prefix
+}
+
+save_seed()
+{
+ local psz=1
+
+ if [ -e /proc/sys/kernel/random/poolsize ]; then
+ : $(( psz = $(cat /proc/sys/kernel/random/poolsize) / 4096 ))
+ fi
+
+ ( # sub shell to prevent umask pollution
+ umask 077
+ dd if=/dev/urandom of="$urandom_seed" count=${psz} 2>/dev/null
+ )
+}
+
+start()
+{
+ [ -c /dev/urandom ] || return
+ if [ -f "$urandom_seed" ]; then
+ ebegin "Initializing random number generator"
+ cat "$urandom_seed" > /dev/urandom
+ eend $? "Error initializing random number generator"
+ fi
+ rm -f "$urandom_seed" && save_seed
+ return 0
+}
+
+stop()
+{
+ ebegin "Saving random seed"
+ save_seed
+ eend $? "Failed to save random seed"
+}
--- /dev/null
+# $Header: /var/cvsroot/gentoo-x86/app-admin/logrotate/files/logrotate.conf,v 1.3 2008/12/24 20:49:10 dang Exp $
+#
+# Logrotate default configuration file for Gentoo Linux
+#
+# See "man logrotate" for details
+
+# rotate log files weekly
+weekly
+#daily
+
+# keep 4 weeks worth of backlogs
+rotate 10
+maxage 2y
+
+# create new (empty) log files after rotating old ones
+create
+
+tabooprefix \.
+
+# use date as a suffix of the rotated file
+dateext
+
+# do not rotate, if the file is empty
+notifempty
+
+# uncomment this if you want your log files compressed
+compress
+
+# is it okay, if a logfile doesn't exists ?
+missingok
+
+#nomail
+noolddir
+
+# packages can drop log rotation information into this directory
+include /etc/logrotate.d
+
+# no packages own lastlog or wtmp -- we'll rotate them here
+/var/log/wtmp {
+ monthly
+ create 0664 root utmp
+ rotate 12
+ size=4096K
+}
+
+/var/log/btmp {
+ missingok
+ monthly
+ create 0600 root utmp
+ rotate 1
+}
+
+# system-specific logs may be also be configured here.
--- /dev/null
+# $Header: /var/cvsroot/gentoo-x86/app-admin/logrotate/files/logrotate.conf,v 1.3 2008/12/24 20:49:10 dang Exp $
+#
+# Logrotate default configuration file for Gentoo Linux
+#
+# See "man logrotate" for details
+
+# rotate log files weekly
+weekly
+#daily
+
+# keep 4 weeks worth of backlogs
+rotate 4
+
+# create new (empty) log files after rotating old ones
+create
+
+# use date as a suffix of the rotated file
+dateext
+
+# uncomment this if you want your log files compressed
+compress
+
+# packages can drop log rotation information into this directory
+include /etc/logrotate.d
+
+notifempty
+nomail
+noolddir
+
+# no packages own lastlog or wtmp -- we'll rotate them here
+/var/log/wtmp {
+ monthly
+ create 0664 root utmp
+ rotate 1
+}
+
+/var/log/btmp {
+ missingok
+ monthly
+ create 0600 root utmp
+ rotate 1
+}
+
+# system-specific logs may be also be configured here.
--- /dev/null
+# This is an example configuration file for the LVM2 system.
+# It contains the default settings that would be used if there was no
+# /etc/lvm/lvm.conf file.
+#
+# Refer to 'man lvm.conf' for further information including the file layout.
+#
+# To put this file in a different directory and override /etc/lvm set
+# the environment variable LVM_SYSTEM_DIR before running the tools.
+
+
+# This section allows you to configure which block devices should
+# be used by the LVM system.
+devices {
+
+ # Where do you want your volume groups to appear ?
+ dir = "/dev"
+
+ # An array of directories that contain the device nodes you wish
+ # to use with LVM2.
+ scan = [ "/dev" ]
+
+ # If several entries in the scanned directories correspond to the
+ # same block device and the tools need to display a name for device,
+ # all the pathnames are matched against each item in the following
+ # list of regular expressions in turn and the first match is used.
+ preferred_names = [ ]
+
+ # Try to avoid using undescriptive /dev/dm-N names, if present.
+ # preferred_names = [ "^/dev/mpath/", "^/dev/mapper/mpath", "^/dev/[hs]d" ]
+
+ # A filter that tells LVM2 to only use a restricted set of devices.
+ # The filter consists of an array of regular expressions. These
+ # expressions can be delimited by a character of your choice, and
+ # prefixed with either an 'a' (for accept) or 'r' (for reject).
+ # The first expression found to match a device name determines if
+ # the device will be accepted or rejected (ignored). Devices that
+ # don't match any patterns are accepted.
+
+ # Be careful if there there are symbolic links or multiple filesystem
+ # entries for the same device as each name is checked separately against
+ # the list of patterns. The effect is that if any name matches any 'a'
+ # pattern, the device is accepted; otherwise if any name matches any 'r'
+ # pattern it is rejected; otherwise it is accepted.
+
+ # Don't have more than one filter line active at once: only one gets used.
+
+ # Run vgscan after you change this parameter to ensure that
+ # the cache file gets regenerated (see below).
+ # If it doesn't do what you expect, check the output of 'vgscan -vvvv'.
+
+
+ # By default we accept every block device:
+ # Gentoo: we exclude /dev/nbd by default, because it makes a lot of kernel
+ # noise when you probed while not available.
+ filter = [ "r|/dev/nbd.*|", "a/.*/" ]
+
+ # Exclude the cdrom drive
+ # filter = [ "r|/dev/cdrom|" ]
+
+ # When testing I like to work with just loopback devices:
+ # filter = [ "a/loop/", "r/.*/" ]
+
+ # Or maybe all loops and ide drives except hdc:
+ # filter =[ "a|loop|", "r|/dev/hdc|", "a|/dev/ide|", "r|.*|" ]
+
+ # Use anchors if you want to be really specific
+ # filter = [ "a|^/dev/hda8$|", "r/.*/" ]
+
+ # The results of the filtering are cached on disk to avoid
+ # rescanning dud devices (which can take a very long time).
+ # By default this cache is stored in the /etc/lvm/cache directory
+ # in a file called '.cache'.
+ # It is safe to delete the contents: the tools regenerate it.
+ # (The old setting 'cache' is still respected if neither of
+ # these new ones is present.)
+ cache_dir = "/etc/lvm/cache"
+ cache_file_prefix = ""
+
+ # You can turn off writing this cache file by setting this to 0.
+ write_cache_state = 1
+
+ # Advanced settings.
+
+ # List of pairs of additional acceptable block device types found
+ # in /proc/devices with maximum (non-zero) number of partitions.
+ # types = [ "fd", 16 ]
+
+ # If sysfs is mounted (2.6 kernels) restrict device scanning to
+ # the block devices it believes are valid.
+ # 1 enables; 0 disables.
+ sysfs_scan = 1
+
+ # By default, LVM2 will ignore devices used as components of
+ # software RAID (md) devices by looking for md superblocks.
+ # 1 enables; 0 disables.
+ md_component_detection = 1
+
+ # By default, if a PV is placed directly upon an md device, LVM2
+ # will align its data blocks with the md device's stripe-width.
+ # 1 enables; 0 disables.
+ md_chunk_alignment = 1
+
+ # By default, the start of a PV's data area will be a multiple of
+ # the 'minimum_io_size' or 'optimal_io_size' exposed in sysfs.
+ # - minimum_io_size - the smallest request the device can perform
+ # w/o incurring a read-modify-write penalty (e.g. MD's chunk size)
+ # - optimal_io_size - the device's preferred unit of receiving I/O
+ # (e.g. MD's stripe width)
+ # minimum_io_size is used if optimal_io_size is undefined (0).
+ # If md_chunk_alignment is enabled, that detects the optimal_io_size.
+ # This setting takes precedence over md_chunk_alignment.
+ # 1 enables; 0 disables.
+ data_alignment_detection = 1
+
+ # Alignment (in KB) of start of data area when creating a new PV.
+ # If a PV is placed directly upon an md device and md_chunk_alignment or
+ # data_alignment_detection is enabled this parameter is ignored.
+ # Set to 0 for the default alignment of 1MB or page size, if larger.
+ data_alignment = 0
+
+ # By default, the start of the PV's aligned data area will be shifted by
+ # the 'alignment_offset' exposed in sysfs. This offset is often 0 but
+ # may be non-zero; e.g.: certain 4KB sector drives that compensate for
+ # windows partitioning will have an alignment_offset of 3584 bytes
+ # (sector 7 is the lowest aligned logical block, the 4KB sectors start
+ # at LBA -1, and consequently sector 63 is aligned on a 4KB boundary).
+ # 1 enables; 0 disables.
+ data_alignment_offset_detection = 1
+
+ # If, while scanning the system for PVs, LVM2 encounters a device-mapper
+ # device that has its I/O suspended, it waits for it to become accessible.
+ # Set this to 1 to skip such devices. This should only be needed
+ # in recovery situations.
+ ignore_suspended_devices = 0
+
+ # Allow use of pvcreate --uuid without requiring --restorefile.
+ require_restorefile_with_uuid = 1
+}
+
+# This section that allows you to configure the nature of the
+# information that LVM2 reports.
+log {
+
+ # Controls the messages sent to stdout or stderr.
+ # There are three levels of verbosity, 3 being the most verbose.
+ verbose = 0
+
+ # Should we send log messages through syslog?
+ # 1 is yes; 0 is no.
+ syslog = 1
+
+ # Should we log error and debug messages to a file?
+ # By default there is no log file.
+ #file = "/var/log/lvm2.log"
+
+ # Should we overwrite the log file each time the program is run?
+ # By default we append.
+ overwrite = 0
+
+ # What level of log messages should we send to the log file and/or syslog?
+ # There are 6 syslog-like log levels currently in use - 2 to 7 inclusive.
+ # 7 is the most verbose (LOG_DEBUG).
+ level = 0
+
+ # Format of output messages
+ # Whether or not (1 or 0) to indent messages according to their severity
+ indent = 1
+
+ # Whether or not (1 or 0) to display the command name on each line output
+ command_names = 0
+
+ # A prefix to use before the message text (but after the command name,
+ # if selected). Default is two spaces, so you can see/grep the severity
+ # of each message.
+ prefix = " "
+
+ # To make the messages look similar to the original LVM tools use:
+ # indent = 0
+ # command_names = 1
+ # prefix = " -- "
+
+ # Set this if you want log messages during activation.
+ # Don't use this in low memory situations (can deadlock).
+ # activation = 0
+}
+
+# Configuration of metadata backups and archiving. In LVM2 when we
+# talk about a 'backup' we mean making a copy of the metadata for the
+# *current* system. The 'archive' contains old metadata configurations.
+# Backups are stored in a human readeable text format.
+backup {
+
+ # Should we maintain a backup of the current metadata configuration ?
+ # Use 1 for Yes; 0 for No.
+ # Think very hard before turning this off!
+ backup = 1
+
+ # Where shall we keep it ?
+ # Remember to back up this directory regularly!
+ backup_dir = "/etc/lvm/backup"
+
+ # Should we maintain an archive of old metadata configurations.
+ # Use 1 for Yes; 0 for No.
+ # On by default. Think very hard before turning this off.
+ archive = 1
+
+ # Where should archived files go ?
+ # Remember to back up this directory regularly!
+ archive_dir = "/etc/lvm/archive"
+
+ # What is the minimum number of archive files you wish to keep ?
+ retain_min = 10
+
+ # What is the minimum time you wish to keep an archive file for ?
+ retain_days = 30
+}
+
+# Settings for the running LVM2 in shell (readline) mode.
+shell {
+
+ # Number of lines of history to store in ~/.lvm_history
+ history_size = 100
+}
+
+
+# Miscellaneous global LVM2 settings
+global {
+
+ # The file creation mask for any files and directories created.
+ # Interpreted as octal if the first digit is zero.
+ umask = 077
+
+ # Allow other users to read the files
+ #umask = 022
+
+ # Enabling test mode means that no changes to the on disk metadata
+ # will be made. Equivalent to having the -t option on every
+ # command. Defaults to off.
+ test = 0
+
+ # Default value for --units argument
+ units = "h"
+
+ # Since version 2.02.54, the tools distinguish between powers of
+ # 1024 bytes (e.g. KiB, MiB, GiB) and powers of 1000 bytes (e.g.
+ # KB, MB, GB).
+ # If you have scripts that depend on the old behaviour, set this to 0
+ # temporarily until you update them.
+ si_unit_consistency = 1
+
+ # Whether or not to communicate with the kernel device-mapper.
+ # Set to 0 if you want to use the tools to manipulate LVM metadata
+ # without activating any logical volumes.
+ # If the device-mapper kernel driver is not present in your kernel
+ # setting this to 0 should suppress the error messages.
+ activation = 1
+
+ # If we can't communicate with device-mapper, should we try running
+ # the LVM1 tools?
+ # This option only applies to 2.4 kernels and is provided to help you
+ # switch between device-mapper kernels and LVM1 kernels.
+ # The LVM1 tools need to be installed with .lvm1 suffices
+ # e.g. vgscan.lvm1 and they will stop working after you start using
+ # the new lvm2 on-disk metadata format.
+ # The default value is set when the tools are built.
+ # fallback_to_lvm1 = 0
+ # Gentoo: the LVM tools are a seperate package.
+ fallback_to_lvm1 = 0
+
+ # The default metadata format that commands should use - "lvm1" or "lvm2".
+ # The command line override is -M1 or -M2.
+ # Defaults to "lvm2".
+ # format = "lvm2"
+
+ # Location of proc filesystem
+ proc = "/proc"
+
+ # Type of locking to use. Defaults to local file-based locking (1).
+ # Turn locking off by setting to 0 (dangerous: risks metadata corruption
+ # if LVM2 commands get run concurrently).
+ # Type 2 uses the external shared library locking_library.
+ # Type 3 uses built-in clustered locking.
+ # Type 4 uses read-only locking which forbids any operations that might
+ # change metadata.
+ locking_type = 1
+
+ # Set to 0 to fail when a lock request cannot be satisfied immediately.
+ wait_for_locks = 1
+
+ # If using external locking (type 2) and initialisation fails,
+ # with this set to 1 an attempt will be made to use the built-in
+ # clustered locking.
+ # If you are using a customised locking_library you should set this to 0.
+ fallback_to_clustered_locking = 1
+
+ # If an attempt to initialise type 2 or type 3 locking failed, perhaps
+ # because cluster components such as clvmd are not running, with this set
+ # to 1 an attempt will be made to use local file-based locking (type 1).
+ # If this succeeds, only commands against local volume groups will proceed.
+ # Volume Groups marked as clustered will be ignored.
+ fallback_to_local_locking = 1
+
+ # Local non-LV directory that holds file-based locks while commands are
+ # in progress. A directory like /tmp that may get wiped on reboot is OK.
+ locking_dir = "/var/lock/lvm"
+
+ # Whenever there are competing read-only and read-write access requests for
+ # a volume group's metadata, instead of always granting the read-only
+ # requests immediately, delay them to allow the read-write requests to be
+ # serviced. Without this setting, write access may be stalled by a high
+ # volume of read-only requests.
+ # NB. This option only affects locking_type = 1 viz. local file-based
+ # locking.
+ prioritise_write_locks = 1
+
+ # Other entries can go here to allow you to load shared libraries
+ # e.g. if support for LVM1 metadata was compiled as a shared library use
+ # format_libraries = "liblvm2format1.so"
+ # Full pathnames can be given.
+
+ # Search this directory first for shared libraries.
+ # library_dir = "/lib"
+
+ # The external locking library to load if locking_type is set to 2.
+ # locking_library = "liblvm2clusterlock.so"
+
+ # Treat any internal errors as fatal errors, aborting the process that
+ # encountered the internal error. Please only enable for debugging.
+ abort_on_internal_errors = 0
+}
+
+activation {
+ # Set to 0 to disable udev synchronisation (if compiled into the binaries).
+ # Processes will not wait for notification from udev.
+ # They will continue irrespective of any possible udev processing
+ # in the background. You should only use this if udev is not running
+ # or has rules that ignore the devices LVM2 creates.
+ # The command line argument --nodevsync takes precedence over this setting.
+ # If set to 1 when udev is not running, and there are LVM2 processes
+ # waiting for udev, run 'dmsetup udevcomplete_all' manually to wake them up.
+ udev_sync = 1
+
+ # Set to 0 to disable the udev rules installed by LVM2 (if built with
+ # --enable-udev_rules). LVM2 will then manage the /dev nodes and symlinks
+ # for active logical volumes directly itself.
+ # N.B. Manual intervention may be required if this setting is changed
+ # while any logical volumes are active.
+ udev_rules = 1
+
+ # How to fill in missing stripes if activating an incomplete volume.
+ # Using "error" will make inaccessible parts of the device return
+ # I/O errors on access. You can instead use a device path, in which
+ # case, that device will be used to in place of missing stripes.
+ # But note that using anything other than "error" with mirrored
+ # or snapshotted volumes is likely to result in data corruption.
+ missing_stripe_filler = "error"
+
+ # How much stack (in KB) to reserve for use while devices suspended
+ reserved_stack = 256
+
+ # How much memory (in KB) to reserve for use while devices suspended
+ reserved_memory = 8192
+
+ # Nice value used while devices suspended
+ process_priority = -18
+
+ # If volume_list is defined, each LV is only activated if there is a
+ # match against the list.
+ # "vgname" and "vgname/lvname" are matched exactly.
+ # "@tag" matches any tag set in the LV or VG.
+ # "@*" matches if any tag defined on the host is also set in the LV or VG
+ #
+ # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
+
+ # Size (in KB) of each copy operation when mirroring
+ mirror_region_size = 512
+
+ # Setting to use when there is no readahead value stored in the metadata.
+ #
+ # "none" - Disable readahead.
+ # "auto" - Use default value chosen by kernel.
+ readahead = "auto"
+
+ # 'mirror_image_fault_policy' and 'mirror_log_fault_policy' define
+ # how a device failure affecting a mirror is handled.
+ # A mirror is composed of mirror images (copies) and a log.
+ # A disk log ensures that a mirror does not need to be re-synced
+ # (all copies made the same) every time a machine reboots or crashes.
+ #
+ # In the event of a failure, the specified policy will be used to determine
+ # what happens. This applies to automatic repairs (when the mirror is being
+ # monitored by dmeventd) and to manual lvconvert --repair when
+ # --use-policies is given.
+ #
+ # "remove" - Simply remove the faulty device and run without it. If
+ # the log device fails, the mirror would convert to using
+ # an in-memory log. This means the mirror will not
+ # remember its sync status across crashes/reboots and
+ # the entire mirror will be re-synced. If a
+ # mirror image fails, the mirror will convert to a
+ # non-mirrored device if there is only one remaining good
+ # copy.
+ #
+ # "allocate" - Remove the faulty device and try to allocate space on
+ # a new device to be a replacement for the failed device.
+ # Using this policy for the log is fast and maintains the
+ # ability to remember sync state through crashes/reboots.
+ # Using this policy for a mirror device is slow, as it
+ # requires the mirror to resynchronize the devices, but it
+ # will preserve the mirror characteristic of the device.
+ # This policy acts like "remove" if no suitable device and
+ # space can be allocated for the replacement.
+ #
+ # "allocate_anywhere" - Not yet implemented. Useful to place the log device
+ # temporarily on same physical volume as one of the mirror
+ # images. This policy is not recommended for mirror devices
+ # since it would break the redundant nature of the mirror. This
+ # policy acts like "remove" if no suitable device and space can
+ # be allocated for the replacement.
+
+ mirror_log_fault_policy = "allocate"
+ mirror_image_fault_policy = "remove"
+
+ # While activating devices, I/O to devices being (re)configured is
+ # suspended, and as a precaution against deadlocks, LVM2 needs to pin
+ # any memory it is using so it is not paged out. Groups of pages that
+ # are known not to be accessed during activation need not be pinned
+ # into memory. Each string listed in this setting is compared against
+ # each line in /proc/self/maps, and the pages corresponding to any
+ # lines that match are not pinned. On some systems locale-archive was
+ # found to make up over 80% of the memory used by the process.
+ # mlock_filter = [ "locale/locale-archive", "gconv/gconv-modules.cache" ]
+
+ # Set to 1 to revert to the default behaviour prior to version 2.02.62
+ # which used mlockall() to pin the whole process's memory while activating
+ # devices.
+ use_mlockall = 0
+
+ # Monitoring is enabled by default when activating logical volumes.
+ # Set to 0 to disable monitoring or use the --ignoremonitoring option.
+ monitoring = 1
+
+ # When pvmove or lvconvert must wait for the kernel to finish
+ # synchronising or merging data, they check and report progress
+ # at intervals of this number of seconds. The default is 15 seconds.
+ # If this is set to 0 and there is only one thing to wait for, there
+ # are no progress reports, but the process is awoken immediately the
+ # operation is complete.
+ polling_interval = 15
+}
+
+
+####################
+# Advanced section #
+####################
+
+# Metadata settings
+#
+metadata {
+ # Default number of copies of metadata to hold on each PV. 0, 1 or 2.
+ # You might want to override it from the command line with 0
+ # when running pvcreate on new PVs which are to be added to large VGs.
+ # Gentoo: enable for data safety, but PV resize is then disabled.
+ #pvmetadatacopies = 2
+
+ # Default number of copies of metadata to maintain for each VG.
+ # If set to a non-zero value, LVM automatically chooses which of
+ # the available metadata areas to use to achieve the requested
+ # number of copies of the VG metadata. If you set a value larger
+ # than the the total number of metadata areas available then
+ # metadata is stored in them all.
+ # The default value of 0 ("unmanaged") disables this automatic
+ # management and allows you to control which metadata areas
+ # are used at the individual PV level using 'pvchange
+ # --metadataignore y/n'.
+
+ # vgmetadatacopies = 0
+
+ # Approximate default size of on-disk metadata areas in sectors.
+ # You should increase this if you have large volume groups or
+ # you want to retain a large on-disk history of your metadata changes.
+
+ # pvmetadatasize = 255
+
+ # List of directories holding live copies of text format metadata.
+ # These directories must not be on logical volumes!
+ # It's possible to use LVM2 with a couple of directories here,
+ # preferably on different (non-LV) filesystems, and with no other
+ # on-disk metadata (pvmetadatacopies = 0). Or this can be in
+ # addition to on-disk metadata areas.
+ # The feature was originally added to simplify testing and is not
+ # supported under low memory situations - the machine could lock up.
+ #
+ # Never edit any files in these directories by hand unless you
+ # you are absolutely sure you know what you are doing! Use
+ # the supplied toolset to make changes (e.g. vgcfgrestore).
+
+ # dirs = [ "/etc/lvm/metadata", "/mnt/disk2/lvm/metadata2" ]
+}
+
+# Event daemon
+#
+dmeventd {
+ # mirror_library is the library used when monitoring a mirror device.
+ #
+ # "libdevmapper-event-lvm2mirror.so" attempts to recover from
+ # failures. It removes failed devices from a volume group and
+ # reconfigures a mirror as necessary. If no mirror library is
+ # provided, mirrors are not monitored through dmeventd.
+
+ mirror_library = "libdevmapper-event-lvm2mirror.so"
+
+ # snapshot_library is the library used when monitoring a snapshot device.
+ #
+ # "libdevmapper-event-lvm2snapshot.so" monitors the filling of
+ # snapshots and emits a warning through syslog when the use of
+ # the snapshot exceeds 80%. The warning is repeated when 85%, 90% and
+ # 95% of the snapshot is filled.
+
+ snapshot_library = "libdevmapper-event-lvm2snapshot.so"
+
+ # Full path of the dmeventd binary.
+ #
+ # executable = "/sbin/dmeventd"
+}
--- /dev/null
+# This is an example configuration file for the LVM2 system.
+# It contains the default settings that would be used if there was no
+# /etc/lvm/lvm.conf file.
+#
+# Refer to 'man lvm.conf' for further information including the file layout.
+#
+# To put this file in a different directory and override /etc/lvm set
+# the environment variable LVM_SYSTEM_DIR before running the tools.
+#
+# N.B. Take care that each setting only appears once if uncommenting
+# example settings in this file.
+
+
+# This section allows you to configure which block devices should
+# be used by the LVM system.
+devices {
+
+ # Where do you want your volume groups to appear ?
+ dir = "/dev"
+
+ # An array of directories that contain the device nodes you wish
+ # to use with LVM2.
+ scan = [ "/dev" ]
+
+ # If set, the cache of block device nodes with all associated symlinks
+ # will be constructed out of the existing udev database content.
+ # This avoids using and opening any inapplicable non-block devices or
+ # subdirectories found in the device directory. This setting is applied
+ # to udev-managed device directory only, other directories will be scanned
+ # fully. LVM2 needs to be compiled with udev support for this setting to
+ # take effect. N.B. Any device node or symlink not managed by udev in
+ # udev directory will be ignored with this setting on.
+ obtain_device_list_from_udev = 1
+
+ # If several entries in the scanned directories correspond to the
+ # same block device and the tools need to display a name for device,
+ # all the pathnames are matched against each item in the following
+ # list of regular expressions in turn and the first match is used.
+ preferred_names = [ ]
+
+ # Try to avoid using undescriptive /dev/dm-N names, if present.
+ # preferred_names = [ "^/dev/mpath/", "^/dev/mapper/mpath", "^/dev/[hs]d" ]
+
+ # A filter that tells LVM2 to only use a restricted set of devices.
+ # The filter consists of an array of regular expressions. These
+ # expressions can be delimited by a character of your choice, and
+ # prefixed with either an 'a' (for accept) or 'r' (for reject).
+ # The first expression found to match a device name determines if
+ # the device will be accepted or rejected (ignored). Devices that
+ # don't match any patterns are accepted.
+
+ # Be careful if there there are symbolic links or multiple filesystem
+ # entries for the same device as each name is checked separately against
+ # the list of patterns. The effect is that if any name matches any 'a'
+ # pattern, the device is accepted; otherwise if any name matches any 'r'
+ # pattern it is rejected; otherwise it is accepted.
+
+ # Don't have more than one filter line active at once: only one gets used.
+
+ # Run vgscan after you change this parameter to ensure that
+ # the cache file gets regenerated (see below).
+ # If it doesn't do what you expect, check the output of 'vgscan -vvvv'.
+
+
+ # By default we accept every block device:
+ # Gentoo: we exclude /dev/nbd by default, because it makes a lot of kernel
+ # noise when you probed while not available.
+ filter = [ "r|/dev/nbd.*|", "a/.*/" ]
+
+ # Exclude the cdrom drive
+ # filter = [ "r|/dev/cdrom|" ]
+
+ # When testing I like to work with just loopback devices:
+ # filter = [ "a/loop/", "r/.*/" ]
+
+ # Or maybe all loops and ide drives except hdc:
+ # filter =[ "a|loop|", "r|/dev/hdc|", "a|/dev/ide|", "r|.*|" ]
+
+ # Use anchors if you want to be really specific
+ # filter = [ "a|^/dev/hda8$|", "r/.*/" ]
+
+ # The results of the filtering are cached on disk to avoid
+ # rescanning dud devices (which can take a very long time).
+ # By default this cache is stored in the /etc/lvm/cache directory
+ # in a file called '.cache'.
+ # It is safe to delete the contents: the tools regenerate it.
+ # (The old setting 'cache' is still respected if neither of
+ # these new ones is present.)
+ cache_dir = "/etc/lvm/cache"
+ cache_file_prefix = ""
+
+ # You can turn off writing this cache file by setting this to 0.
+ write_cache_state = 1
+
+ # Advanced settings.
+
+ # List of pairs of additional acceptable block device types found
+ # in /proc/devices with maximum (non-zero) number of partitions.
+ # types = [ "fd", 16 ]
+
+ # If sysfs is mounted (2.6 kernels) restrict device scanning to
+ # the block devices it believes are valid.
+ # 1 enables; 0 disables.
+ sysfs_scan = 1
+
+ # By default, LVM2 will ignore devices used as components of
+ # software RAID (md) devices by looking for md superblocks.
+ # 1 enables; 0 disables.
+ md_component_detection = 1
+
+ # By default, if a PV is placed directly upon an md device, LVM2
+ # will align its data blocks with the md device's stripe-width.
+ # 1 enables; 0 disables.
+ md_chunk_alignment = 1
+
+ # Default alignment of the start of a data area in MB. If set to 0,
+ # a value of 64KB will be used. Set to 1 for 1MiB, 2 for 2MiB, etc.
+ # default_data_alignment = 1
+
+ # By default, the start of a PV's data area will be a multiple of
+ # the 'minimum_io_size' or 'optimal_io_size' exposed in sysfs.
+ # - minimum_io_size - the smallest request the device can perform
+ # w/o incurring a read-modify-write penalty (e.g. MD's chunk size)
+ # - optimal_io_size - the device's preferred unit of receiving I/O
+ # (e.g. MD's stripe width)
+ # minimum_io_size is used if optimal_io_size is undefined (0).
+ # If md_chunk_alignment is enabled, that detects the optimal_io_size.
+ # This setting takes precedence over md_chunk_alignment.
+ # 1 enables; 0 disables.
+ data_alignment_detection = 1
+
+ # Alignment (in KB) of start of data area when creating a new PV.
+ # md_chunk_alignment and data_alignment_detection are disabled if set.
+ # Set to 0 for the default alignment (see: data_alignment_default)
+ # or page size, if larger.
+ data_alignment = 0
+
+ # By default, the start of the PV's aligned data area will be shifted by
+ # the 'alignment_offset' exposed in sysfs. This offset is often 0 but
+ # may be non-zero; e.g.: certain 4KB sector drives that compensate for
+ # windows partitioning will have an alignment_offset of 3584 bytes
+ # (sector 7 is the lowest aligned logical block, the 4KB sectors start
+ # at LBA -1, and consequently sector 63 is aligned on a 4KB boundary).
+ # But note that pvcreate --dataalignmentoffset will skip this detection.
+ # 1 enables; 0 disables.
+ data_alignment_offset_detection = 1
+
+ # If, while scanning the system for PVs, LVM2 encounters a device-mapper
+ # device that has its I/O suspended, it waits for it to become accessible.
+ # Set this to 1 to skip such devices. This should only be needed
+ # in recovery situations.
+ ignore_suspended_devices = 0
+
+ # During each LVM operation errors received from each device are counted.
+ # If the counter of a particular device exceeds the limit set here, no
+ # further I/O is sent to that device for the remainder of the respective
+ # operation. Setting the parameter to 0 disables the counters altogether.
+ disable_after_error_count = 0
+
+ # Allow use of pvcreate --uuid without requiring --restorefile.
+ require_restorefile_with_uuid = 1
+
+ # Minimum size (in KB) of block devices which can be used as PVs.
+ # In a clustered environment all nodes must use the same value.
+ # Any value smaller than 512KB is ignored.
+
+ # Ignore devices smaller than 2MB such as floppy drives.
+ pv_min_size = 2048
+
+ # The original built-in setting was 512 up to and including version 2.02.84.
+ # pv_min_size = 512
+
+ # Issue discards to a logical volumes's underlying physical volume(s) when
+ # the logical volume is no longer using the physical volumes' space (e.g.
+ # lvremove, lvreduce, etc). Discards inform the storage that a region is
+ # no longer in use. Storage that supports discards advertise the protocol
+ # specific way discards should be issued by the kernel (TRIM, UNMAP, or
+ # WRITE SAME with UNMAP bit set). Not all storage will support or benefit
+ # from discards but SSDs and thinly provisioned LUNs generally do. If set
+ # to 1, discards will only be issued if both the storage and kernel provide
+ # support.
+ # 1 enables; 0 disables.
+ issue_discards = 0
+}
+
+# This section allows you to configure the way in which LVM selects
+# free space for its Logical Volumes.
+#allocation {
+# When searching for free space to extend an LV, the "cling"
+# allocation policy will choose space on the same PVs as the last
+# segment of the existing LV. If there is insufficient space and a
+# list of tags is defined here, it will check whether any of them are
+# attached to the PVs concerned and then seek to match those PV tags
+# between existing extents and new extents.
+# Use the special tag "@*" as a wildcard to match any PV tag.
+#
+# Example: LVs are mirrored between two sites within a single VG.
+# PVs are tagged with either @site1 or @site2 to indicate where
+# they are situated.
+#
+# cling_tag_list = [ "@site1", "@site2" ]
+# cling_tag_list = [ "@*" ]
+#
+# Changes made in version 2.02.85 extended the reach of the 'cling'
+# policies to detect more situations where data can be grouped
+# onto the same disks. Set this to 0 to revert to the previous
+# algorithm.
+#
+# maximise_cling = 1
+#
+# Set to 1 to guarantee that mirror logs will always be placed on
+# different PVs from the mirror images. This was the default
+# until version 2.02.85.
+#
+# mirror_logs_require_separate_pvs = 0
+#}
+
+# This section that allows you to configure the nature of the
+# information that LVM2 reports.
+log {
+
+ # Controls the messages sent to stdout or stderr.
+ # There are three levels of verbosity, 3 being the most verbose.
+ verbose = 0
+
+ # Should we send log messages through syslog?
+ # 1 is yes; 0 is no.
+ syslog = 1
+
+ # Should we log error and debug messages to a file?
+ # By default there is no log file.
+ #file = "/var/log/lvm2.log"
+
+ # Should we overwrite the log file each time the program is run?
+ # By default we append.
+ overwrite = 0
+
+ # What level of log messages should we send to the log file and/or syslog?
+ # There are 6 syslog-like log levels currently in use - 2 to 7 inclusive.
+ # 7 is the most verbose (LOG_DEBUG).
+ level = 0
+
+ # Format of output messages
+ # Whether or not (1 or 0) to indent messages according to their severity
+ indent = 1
+
+ # Whether or not (1 or 0) to display the command name on each line output
+ command_names = 0
+
+ # A prefix to use before the message text (but after the command name,
+ # if selected). Default is two spaces, so you can see/grep the severity
+ # of each message.
+ prefix = " "
+
+ # To make the messages look similar to the original LVM tools use:
+ # indent = 0
+ # command_names = 1
+ # prefix = " -- "
+
+ # Set this if you want log messages during activation.
+ # Don't use this in low memory situations (can deadlock).
+ # activation = 0
+}
+
+# Configuration of metadata backups and archiving. In LVM2 when we
+# talk about a 'backup' we mean making a copy of the metadata for the
+# *current* system. The 'archive' contains old metadata configurations.
+# Backups are stored in a human readeable text format.
+backup {
+
+ # Should we maintain a backup of the current metadata configuration ?
+ # Use 1 for Yes; 0 for No.
+ # Think very hard before turning this off!
+ backup = 1
+
+ # Where shall we keep it ?
+ # Remember to back up this directory regularly!
+ backup_dir = "/etc/lvm/backup"
+
+ # Should we maintain an archive of old metadata configurations.
+ # Use 1 for Yes; 0 for No.
+ # On by default. Think very hard before turning this off.
+ archive = 1
+
+ # Where should archived files go ?
+ # Remember to back up this directory regularly!
+ archive_dir = "/etc/lvm/archive"
+
+ # What is the minimum number of archive files you wish to keep ?
+ retain_min = 10
+
+ # What is the minimum time you wish to keep an archive file for ?
+ retain_days = 30
+}
+
+# Settings for the running LVM2 in shell (readline) mode.
+shell {
+
+ # Number of lines of history to store in ~/.lvm_history
+ history_size = 100
+}
+
+
+# Miscellaneous global LVM2 settings
+global {
+
+ # The file creation mask for any files and directories created.
+ # Interpreted as octal if the first digit is zero.
+ umask = 077
+
+ # Allow other users to read the files
+ #umask = 022
+
+ # Enabling test mode means that no changes to the on disk metadata
+ # will be made. Equivalent to having the -t option on every
+ # command. Defaults to off.
+ test = 0
+
+ # Default value for --units argument
+ units = "h"
+
+ # Since version 2.02.54, the tools distinguish between powers of
+ # 1024 bytes (e.g. KiB, MiB, GiB) and powers of 1000 bytes (e.g.
+ # KB, MB, GB).
+ # If you have scripts that depend on the old behaviour, set this to 0
+ # temporarily until you update them.
+ si_unit_consistency = 1
+
+ # Whether or not to communicate with the kernel device-mapper.
+ # Set to 0 if you want to use the tools to manipulate LVM metadata
+ # without activating any logical volumes.
+ # If the device-mapper kernel driver is not present in your kernel
+ # setting this to 0 should suppress the error messages.
+ activation = 1
+
+ # If we can't communicate with device-mapper, should we try running
+ # the LVM1 tools?
+ # This option only applies to 2.4 kernels and is provided to help you
+ # switch between device-mapper kernels and LVM1 kernels.
+ # The LVM1 tools need to be installed with .lvm1 suffices
+ # e.g. vgscan.lvm1 and they will stop working after you start using
+ # the new lvm2 on-disk metadata format.
+ # The default value is set when the tools are built.
+ # fallback_to_lvm1 = 0
+ # Gentoo: the LVM tools are a seperate package.
+ fallback_to_lvm1 = 0
+
+ # The default metadata format that commands should use - "lvm1" or "lvm2".
+ # The command line override is -M1 or -M2.
+ # Defaults to "lvm2".
+ # format = "lvm2"
+
+ # Location of proc filesystem
+ proc = "/proc"
+
+ # Type of locking to use. Defaults to local file-based locking (1).
+ # Turn locking off by setting to 0 (dangerous: risks metadata corruption
+ # if LVM2 commands get run concurrently).
+ # Type 2 uses the external shared library locking_library.
+ # Type 3 uses built-in clustered locking.
+ # Type 4 uses read-only locking which forbids any operations that might
+ # change metadata.
+ locking_type = 1
+
+ # Set to 0 to fail when a lock request cannot be satisfied immediately.
+ wait_for_locks = 1
+
+ # If using external locking (type 2) and initialisation fails,
+ # with this set to 1 an attempt will be made to use the built-in
+ # clustered locking.
+ # If you are using a customised locking_library you should set this to 0.
+ fallback_to_clustered_locking = 1
+
+ # If an attempt to initialise type 2 or type 3 locking failed, perhaps
+ # because cluster components such as clvmd are not running, with this set
+ # to 1 an attempt will be made to use local file-based locking (type 1).
+ # If this succeeds, only commands against local volume groups will proceed.
+ # Volume Groups marked as clustered will be ignored.
+ fallback_to_local_locking = 1
+
+ # Local non-LV directory that holds file-based locks while commands are
+ # in progress. A directory like /tmp that may get wiped on reboot is OK.
+ locking_dir = "/var/lock/lvm"
+
+ # Whenever there are competing read-only and read-write access requests for
+ # a volume group's metadata, instead of always granting the read-only
+ # requests immediately, delay them to allow the read-write requests to be
+ # serviced. Without this setting, write access may be stalled by a high
+ # volume of read-only requests.
+ # NB. This option only affects locking_type = 1 viz. local file-based
+ # locking.
+ prioritise_write_locks = 1
+
+ # Other entries can go here to allow you to load shared libraries
+ # e.g. if support for LVM1 metadata was compiled as a shared library use
+ # format_libraries = "liblvm2format1.so"
+ # Full pathnames can be given.
+
+ # Search this directory first for shared libraries.
+ # library_dir = "/lib"
+
+ # The external locking library to load if locking_type is set to 2.
+ # locking_library = "liblvm2clusterlock.so"
+
+ # Treat any internal errors as fatal errors, aborting the process that
+ # encountered the internal error. Please only enable for debugging.
+ abort_on_internal_errors = 0
+
+ # Check whether CRC is matching when parsed VG is used multiple times.
+ # This is useful to catch unexpected internal cached volume group
+ # structure modification. Please only enable for debugging.
+ detect_internal_vg_cache_corruption = 0
+
+ # If set to 1, no operations that change on-disk metadata will be permitted.
+ # Additionally, read-only commands that encounter metadata in need of repair
+ # will still be allowed to proceed exactly as if the repair had been
+ # performed (except for the unchanged vg_seqno).
+ # Inappropriate use could mess up your system, so seek advice first!
+ metadata_read_only = 0
+
+ # 'mirror_segtype_default' defines which segtype will be used when the
+ # shorthand '-m' option is used for mirroring. The possible options are:
+ #
+ # "mirror" - The original RAID1 implementation provided by LVM2/DM. It is
+ # characterized by a flexible log solution (core, disk, mirrored)
+ # and by the necessity to block I/O while reconfiguring in the
+ # event of a failure. Snapshots of this type of RAID1 can be
+ # problematic.
+ #
+ # "raid1" - This implementation leverages MD's RAID1 personality through
+ # device-mapper. It is characterized by a lack of log options.
+ # (A log is always allocated for every device and they are placed
+ # on the same device as the image - no separate devices are
+ # required.) This mirror implementation does not require I/O
+ # to be blocked in the kernel in the event of a failure.
+ #
+ # Specify the '--type <mirror|raid1>' option to override this default
+ # setting.
+ mirror_segtype_default = "mirror"
+}
+
+activation {
+ # Set to 1 to perform internal checks on the operations issued to
+ # libdevmapper. Useful for debugging problems with activation.
+ # Some of the checks may be expensive, so it's best to use this
+ # only when there seems to be a problem.
+ checks = 0
+
+ # Set to 0 to disable udev synchronisation (if compiled into the binaries).
+ # Processes will not wait for notification from udev.
+ # They will continue irrespective of any possible udev processing
+ # in the background. You should only use this if udev is not running
+ # or has rules that ignore the devices LVM2 creates.
+ # The command line argument --nodevsync takes precedence over this setting.
+ # If set to 1 when udev is not running, and there are LVM2 processes
+ # waiting for udev, run 'dmsetup udevcomplete_all' manually to wake them up.
+ udev_sync = 1
+
+ # Set to 0 to disable the udev rules installed by LVM2 (if built with
+ # --enable-udev_rules). LVM2 will then manage the /dev nodes and symlinks
+ # for active logical volumes directly itself.
+ # N.B. Manual intervention may be required if this setting is changed
+ # while any logical volumes are active.
+ udev_rules = 1
+
+ # Set to 1 for LVM2 to verify operations performed by udev. This turns on
+ # additional checks (and if necessary, repairs) on entries in the device
+ # directory after udev has completed processing its events.
+ # Useful for diagnosing problems with LVM2/udev interactions.
+ verify_udev_operations = 0
+
+ # How to fill in missing stripes if activating an incomplete volume.
+ # Using "error" will make inaccessible parts of the device return
+ # I/O errors on access. You can instead use a device path, in which
+ # case, that device will be used to in place of missing stripes.
+ # But note that using anything other than "error" with mirrored
+ # or snapshotted volumes is likely to result in data corruption.
+ missing_stripe_filler = "error"
+
+ # How much stack (in KB) to reserve for use while devices suspended
+ reserved_stack = 256
+
+ # How much memory (in KB) to reserve for use while devices suspended
+ reserved_memory = 8192
+
+ # Nice value used while devices suspended
+ process_priority = -18
+
+ # If volume_list is defined, each LV is only activated if there is a
+ # match against the list.
+ # "vgname" and "vgname/lvname" are matched exactly.
+ # "@tag" matches any tag set in the LV or VG.
+ # "@*" matches if any tag defined on the host is also set in the LV or VG
+ #
+ # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
+
+ # Size (in KB) of each copy operation when mirroring
+ mirror_region_size = 512
+
+ # Setting to use when there is no readahead value stored in the metadata.
+ #
+ # "none" - Disable readahead.
+ # "auto" - Use default value chosen by kernel.
+ readahead = "auto"
+
+ # 'mirror_image_fault_policy' and 'mirror_log_fault_policy' define
+ # how a device failure affecting a mirror is handled.
+ # A mirror is composed of mirror images (copies) and a log.
+ # A disk log ensures that a mirror does not need to be re-synced
+ # (all copies made the same) every time a machine reboots or crashes.
+ #
+ # In the event of a failure, the specified policy will be used to determine
+ # what happens. This applies to automatic repairs (when the mirror is being
+ # monitored by dmeventd) and to manual lvconvert --repair when
+ # --use-policies is given.
+ #
+ # "remove" - Simply remove the faulty device and run without it. If
+ # the log device fails, the mirror would convert to using
+ # an in-memory log. This means the mirror will not
+ # remember its sync status across crashes/reboots and
+ # the entire mirror will be re-synced. If a
+ # mirror image fails, the mirror will convert to a
+ # non-mirrored device if there is only one remaining good
+ # copy.
+ #
+ # "allocate" - Remove the faulty device and try to allocate space on
+ # a new device to be a replacement for the failed device.
+ # Using this policy for the log is fast and maintains the
+ # ability to remember sync state through crashes/reboots.
+ # Using this policy for a mirror device is slow, as it
+ # requires the mirror to resynchronize the devices, but it
+ # will preserve the mirror characteristic of the device.
+ # This policy acts like "remove" if no suitable device and
+ # space can be allocated for the replacement.
+ #
+ # "allocate_anywhere" - Not yet implemented. Useful to place the log device
+ # temporarily on same physical volume as one of the mirror
+ # images. This policy is not recommended for mirror devices
+ # since it would break the redundant nature of the mirror. This
+ # policy acts like "remove" if no suitable device and space can
+ # be allocated for the replacement.
+
+ mirror_log_fault_policy = "allocate"
+ mirror_image_fault_policy = "remove"
+
+ # 'snapshot_autoextend_threshold' and 'snapshot_autoextend_percent' define
+ # how to handle automatic snapshot extension. The former defines when the
+ # snapshot should be extended: when its space usage exceeds this many
+ # percent. The latter defines how much extra space should be allocated for
+ # the snapshot, in percent of its current size.
+ #
+ # For example, if you set snapshot_autoextend_threshold to 70 and
+ # snapshot_autoextend_percent to 20, whenever a snapshot exceeds 70% usage,
+ # it will be extended by another 20%. For a 1G snapshot, using up 700M will
+ # trigger a resize to 1.2G. When the usage exceeds 840M, the snapshot will
+ # be extended to 1.44G, and so on.
+ #
+ # Setting snapshot_autoextend_threshold to 100 disables automatic
+ # extensions. The minimum value is 50 (A setting below 50 will be treated
+ # as 50).
+
+ snapshot_autoextend_threshold = 100
+ snapshot_autoextend_percent = 20
+
+ # While activating devices, I/O to devices being (re)configured is
+ # suspended, and as a precaution against deadlocks, LVM2 needs to pin
+ # any memory it is using so it is not paged out. Groups of pages that
+ # are known not to be accessed during activation need not be pinned
+ # into memory. Each string listed in this setting is compared against
+ # each line in /proc/self/maps, and the pages corresponding to any
+ # lines that match are not pinned. On some systems locale-archive was
+ # found to make up over 80% of the memory used by the process.
+ # mlock_filter = [ "locale/locale-archive", "gconv/gconv-modules.cache" ]
+
+ # Set to 1 to revert to the default behaviour prior to version 2.02.62
+ # which used mlockall() to pin the whole process's memory while activating
+ # devices.
+ use_mlockall = 0
+
+ # Monitoring is enabled by default when activating logical volumes.
+ # Set to 0 to disable monitoring or use the --ignoremonitoring option.
+ monitoring = 1
+
+ # When pvmove or lvconvert must wait for the kernel to finish
+ # synchronising or merging data, they check and report progress
+ # at intervals of this number of seconds. The default is 15 seconds.
+ # If this is set to 0 and there is only one thing to wait for, there
+ # are no progress reports, but the process is awoken immediately the
+ # operation is complete.
+ polling_interval = 15
+}
+
+
+####################
+# Advanced section #
+####################
+
+# Metadata settings
+#
+metadata {
+ # Default number of copies of metadata to hold on each PV. 0, 1 or 2.
+ # You might want to override it from the command line with 0
+ # when running pvcreate on new PVs which are to be added to large VGs.
+ # Gentoo: enable for data safety, but PV resize is then disabled.
+ #pvmetadatacopies = 2
+
+ # Default number of copies of metadata to maintain for each VG.
+ # If set to a non-zero value, LVM automatically chooses which of
+ # the available metadata areas to use to achieve the requested
+ # number of copies of the VG metadata. If you set a value larger
+ # than the the total number of metadata areas available then
+ # metadata is stored in them all.
+ # The default value of 0 ("unmanaged") disables this automatic
+ # management and allows you to control which metadata areas
+ # are used at the individual PV level using 'pvchange
+ # --metadataignore y/n'.
+
+ # vgmetadatacopies = 0
+
+ # Approximate default size of on-disk metadata areas in sectors.
+ # You should increase this if you have large volume groups or
+ # you want to retain a large on-disk history of your metadata changes.
+
+ # pvmetadatasize = 255
+
+ # List of directories holding live copies of text format metadata.
+ # These directories must not be on logical volumes!
+ # It's possible to use LVM2 with a couple of directories here,
+ # preferably on different (non-LV) filesystems, and with no other
+ # on-disk metadata (pvmetadatacopies = 0). Or this can be in
+ # addition to on-disk metadata areas.
+ # The feature was originally added to simplify testing and is not
+ # supported under low memory situations - the machine could lock up.
+ #
+ # Never edit any files in these directories by hand unless you
+ # you are absolutely sure you know what you are doing! Use
+ # the supplied toolset to make changes (e.g. vgcfgrestore).
+
+ # dirs = [ "/etc/lvm/metadata", "/mnt/disk2/lvm/metadata2" ]
+}
+
+# Event daemon
+#
+dmeventd {
+ # mirror_library is the library used when monitoring a mirror device.
+ #
+ # "libdevmapper-event-lvm2mirror.so" attempts to recover from
+ # failures. It removes failed devices from a volume group and
+ # reconfigures a mirror as necessary. If no mirror library is
+ # provided, mirrors are not monitored through dmeventd.
+
+ mirror_library = "libdevmapper-event-lvm2mirror.so"
+
+ # snapshot_library is the library used when monitoring a snapshot device.
+ #
+ # "libdevmapper-event-lvm2snapshot.so" monitors the filling of
+ # snapshots and emits a warning through syslog when the use of
+ # the snapshot exceeds 80%. The warning is repeated when 85%, 90% and
+ # 95% of the snapshot is filled.
+
+ snapshot_library = "libdevmapper-event-lvm2snapshot.so"
+
+ # Full path of the dmeventd binary.
+ #
+ # executable = "/sbin/dmeventd"
+}
--- /dev/null
+# Global OpenRC configuration settings
+
+# Set to "YES" if you want the rc system to try and start services
+# in parallel for a slight speed improvement. When running in parallel we
+# prefix the service output with its name as the output will get
+# jumbled up.
+# WARNING: whilst we have improved parallel, it can still potentially lock
+# the boot process. Don't file bugs about this unless you can supply
+# patches that fix it without breaking other things!
+#rc_parallel="NO"
+rc_parallel="YES"
+
+# Set rc_interactive to "YES" and you'll be able to press the I key during
+# boot so you can choose to start specific services. Set to "NO" to disable
+# this feature. This feature is automatically disabled if rc_parallel is
+# set to YES.
+#rc_interactive="YES"
+rc_interactive="YES"
+
+# If we need to drop to a shell, you can specify it here.
+# If not specified we use $SHELL, otherwise the one specified in /etc/passwd,
+# otherwise /bin/sh
+# Linux users could specify /sbin/sulogin
+rc_shell=/sbin/sulogin
+
+# Do we allow any started service in the runlevel to satisfy the dependency
+# or do we want all of them regardless of state? For example, if net.eth0
+# and net.eth1 are in the default runlevel then with rc_depend_strict="NO"
+# both will be started, but services that depend on 'net' will work if either
+# one comes up. With rc_depend_strict="YES" we would require them both to
+# come up.
+#rc_depend_strict="YES"
+
+# rc_hotplug is a list of services that we allow to be hotplugged.
+# By default we do not allow hotplugging.
+# A hotplugged service is one started by a dynamic dev manager when a matching
+# hardware device is found.
+# This service is intrinsically included in the boot runlevel.
+# To disable services, prefix with a !
+# Example - rc_hotplug="net.wlan !net.*"
+# This allows net.wlan and any service not matching net.* to be plugged.
+# Example - rc_hotplug="*"
+# This allows all services to be hotplugged
+#rc_hotplug="*"
+
+# rc_logger launches a logging daemon to log the entire rc process to
+# /var/log/rc.log
+# NOTE: Linux systems require the devfs service to be started before
+# logging can take place and as such cannot log the sysinit runlevel.
+rc_logger="YES"
+
+# Through rc_log_path you can specify a custom log file.
+# The default value is: /var/log/rc.log
+rc_log_path="/var/log/rc.log"
+
+# By default we filter the environment for our running scripts. To allow other
+# variables through, add them here. Use a * to allow all variables through.
+#rc_env_allow="VAR1 VAR2"
+
+# By default we assume that all daemons will start correctly.
+# However, some do not - a classic example is that they fork and return 0 AND
+# then child barfs on a configuration error. Or the daemon has a bug and the
+# child crashes. You can set the number of milliseconds start-stop-daemon
+# waits to check that the daemon is still running after starting here.
+# The default is 0 - no checking.
+#rc_start_wait=100
+
+# rc_nostop is a list of services which will not stop when changing runlevels.
+# This still allows the service itself to be stopped when called directly.
+#rc_nostop=""
+
+# rc will attempt to start crashed services by default.
+# However, it will not stop them by default as that could bring down other
+# critical services.
+#rc_crashed_stop=NO
+#rc_crashed_start=YES
+
+##############################################################################
+# MISC CONFIGURATION VARIABLES
+# There variables are shared between many init scripts
+
+# Set unicode to YES to turn on unicode support for keyboards and screens.
+unicode="YES"
+
+# Below is the default list of network fstypes.
+#
+# afs cifs coda davfs fuse fuse.sshfs gfs glusterfs lustre ncpfs
+# nfs nfs4 ocfs2 shfs smbfs
+#
+# If you would like to add to this list, you can do so by adding your
+# own fstypes to the following variable.
+#extra_net_fs_list=""
+
+##############################################################################
+# SERVICE CONFIGURATION VARIABLES
+# These variables are documented here, but should be configured in
+# /etc/conf.d/foo for service foo and NOT enabled here unless you
+# really want them to work on a global basis.
+
+# Some daemons are started and stopped via start-stop-daemon.
+# We can set some things on a per service basis, like the nicelevel.
+#export SSD_NICELEVEL="-19"
+
+# Pass ulimit parameters
+#rc_ulimit="-u 30"
+
+# It's possible to define extra dependencies for services like so
+#rc_config="/etc/foo"
+#rc_need="openvpn"
+#rc_use="net.eth0"
+#rc_after="clock"
+#rc_before="local"
+#rc_provide="!net"
+
+# You can also enable the above commands here for each service. Below is an
+# example for service foo.
+#rc_foo_config="/etc/foo"
+#rc_foo_need="openvpn"
+#rc_foo_after="clock"
+
+# You can also remove dependencies.
+# This is mainly used for saying which servies do NOT provide net.
+#rc_net_tap0_provide="!net"
+
+##############################################################################
+# LINUX SPECIFIC OPTIONS
+
+# This is the subsystem type. Valid options on Linux:
+# "" - nothing special
+# "lxc" - Linux Containers
+# "openvz" - Linux OpenVZ
+# "prefix" - Prefix
+# "uml" - Usermode Linux
+# "vserver" - Linux vserver
+# "xen0" - Xen0 Domain
+# "xenU" - XenU Domain
+# If this is commented out, automatic detection will be attempted.
+# Note that autodetection will not work in a prefix environment or in a
+# linux container.
+#
+# This should be set to the value representing the environment this file is
+# PRESENTLY in, not the virtualization the environment is capable of.
+rc_sys=""
+
+# This is the number of tty's used in most of the rc-scripts (like
+# consolefont, numlock, etc ...)
+rc_tty_number=12
+
--- /dev/null
+# Global OpenRC configuration settings
+
+# Set rc_interactive to "YES" and you'll be able to press the I key during
+# boot so you can choose to start specific services. Set to "NO" to disable
+# this feature.
+#rc_interactive="YES"
+
+# If we need to drop to a shell, you can specify it here.
+# If not specified we use $SHELL, otherwise the one specified in /etc/passwd,
+# otherwise /bin/sh
+# Linux users could specify /sbin/sulogin
+rc_shell=/sbin/sulogin
+
+# Do we allow any started service in the runlevel to satisfy the dependency
+# or do we want all of them regardless of state? For example, if net.eth0
+# and net.eth1 are in the default runlevel then with rc_depend_strict="NO"
+# both will be started, but services that depend on 'net' will work if either
+# one comes up. With rc_depend_strict="YES" we would require them both to
+# come up.
+#rc_depend_strict="YES"
+
+# rc_hotplug is a list of services that we allow to be hotplugged.
+# By default we do not allow hotplugging.
+# A hotplugged service is one started by a dynamic dev manager when a matching
+# hardware device is found.
+# This service is intrinsically included in the boot runlevel.
+# To disable services, prefix with a !
+# Example - rc_hotplug="net.wlan !net.*"
+# This allows net.wlan and any service not matching net.* to be plugged.
+# Example - rc_hotplug="*"
+# This allows all services to be hotplugged
+#rc_hotplug="*"
+
+# rc_logger launches a logging daemon to log the entire rc process to
+# /var/log/rc.log
+# NOTE: Linux systems require the devfs service to be started before
+# logging can take place and as such cannot log the sysinit runlevel.
+#rc_logger="YES"
+
+# Through rc_log_path you can specify a custom log file.
+# The default value is: /var/log/rc.log
+#rc_log_path="/var/log/rc.log"
+
+# By default we filter the environment for our running scripts. To allow other
+# variables through, add them here. Use a * to allow all variables through.
+#rc_env_allow="VAR1 VAR2"
+
+# By default we assume that all daemons will start correctly.
+# However, some do not - a classic example is that they fork and return 0 AND
+# then child barfs on a configuration error. Or the daemon has a bug and the
+# child crashes. You can set the number of milliseconds start-stop-daemon
+# waits to check that the daemon is still running after starting here.
+# The default is 0 - no checking.
+#rc_start_wait=100
+
+# rc_nostop is a list of services which will not stop when changing runlevels.
+# This still allows the service itself to be stopped when called directly.
+#rc_nostop=""
+
+# rc will attempt to start crashed services by default.
+# However, it will not stop them by default as that could bring down other
+# critical services.
+#rc_crashed_stop=NO
+#rc_crashed_start=YES
+
+##############################################################################
+# MISC CONFIGURATION VARIABLES
+# There variables are shared between many init scripts
+
+# Set unicode to YES to turn on unicode support for keyboards and screens.
+unicode="YES"
+
+# Below is the default list of network fstypes.
+#
+# afs cifs coda davfs fuse fuse.sshfs gfs glusterfs lustre ncpfs
+# nfs nfs4 ocfs2 shfs smbfs
+#
+# If you would like to add to this list, you can do so by adding your
+# own fstypes to the following variable.
+#extra_net_fs_list=""
+
+##############################################################################
+# SERVICE CONFIGURATION VARIABLES
+# These variables are documented here, but should be configured in
+# /etc/conf.d/foo for service foo and NOT enabled here unless you
+# really want them to work on a global basis.
+
+# Some daemons are started and stopped via start-stop-daemon.
+# We can set some things on a per service basis, like the nicelevel.
+#export SSD_NICELEVEL="-19"
+
+# Pass ulimit parameters
+#rc_ulimit="-u 30"
+
+# It's possible to define extra dependencies for services like so
+#rc_config="/etc/foo"
+#rc_need="openvpn"
+#rc_use="net.eth0"
+#rc_after="clock"
+#rc_before="local"
+#rc_provide="!net"
+
+# You can also enable the above commands here for each service. Below is an
+# example for service foo.
+#rc_foo_config="/etc/foo"
+#rc_foo_need="openvpn"
+#rc_foo_after="clock"
+
+# You can also remove dependencies.
+# This is mainly used for saying which servies do NOT provide net.
+#rc_net_tap0_provide="!net"
+
+##############################################################################
+# LINUX SPECIFIC OPTIONS
+
+# This is the subsystem type. Valid options on Linux:
+# "" - nothing special
+# "lxc" - Linux Containers
+# "openvz" - Linux OpenVZ
+# "prefix" - Prefix
+# "uml" - Usermode Linux
+# "vserver" - Linux vserver
+# "xen0" - Xen0 Domain
+# "xenU" - XenU Domain
+# If this is commented out, automatic detection will be attempted.
+# Note that autodetection will not work in a prefix environment or in a
+# linux container.
+#
+# This should be set to the value representing the environment this file is
+# PRESENTLY in, not the virtualization the environment is capable of.
+#rc_sys=""
+
+# This is the number of tty's used in most of the rc-scripts (like
+# consolefont, numlock, etc ...)
+rc_tty_number=12
--- /dev/null
+# libsensors configuration file
+# -----------------------------
+#
+# This default configuration file only includes statements which do not
+# differ from one mainboard to the next. Only label, compute and set
+# statements for internal voltage and temperature sensors are included.
+#
+# In general, local changes should not be added to this file, but rather
+# placed in custom configuration files located in /etc/sensors.d. This
+# approach makes further updates much easier.
+#
+# Such custom configuration files for specific mainboards can be found at
+# http://www.lm-sensors.org/wiki/Configurations
+
+chip "lm78-*" "lm79-*" "lm80-*"
+
+ label temp1 "M/B Temp"
+
+
+chip "w83792d-*"
+
+ label in0 "VcoreA"
+ label in1 "VcoreB"
+ label in6 "+5V"
+ label in7 "5VSB"
+ label in8 "Vbat"
+
+ set in6_min 5.0 * 0.90
+ set in6_max 5.0 * 1.10
+ set in7_min 5.0 * 0.90
+ set in7_max 5.0 * 1.10
+ set in8_min 3.0 * 0.90
+ set in8_max 3.0 * 1.10
+
+
+chip "w83793-*"
+
+ label in0 "VcoreA"
+ label in1 "VcoreB"
+ label in7 "+5V"
+ label in8 "5VSB"
+ label in9 "Vbat"
+
+ set in7_min 5.0 * 0.90
+ set in7_max 5.0 * 1.10
+ set in8_min 5.0 * 0.90
+ set in8_max 5.0 * 1.10
+ set in9_min 3.0 * 0.90
+ set in9_max 3.0 * 1.10
+
+
+chip "via686a-*"
+
+ label in0 "Vcore"
+ label in2 "+3.3V"
+ label in3 "+5V"
+ label in4 "+12V"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+ set in4_min 12.0 * 0.90
+ set in4_max 12.0 * 1.10
+
+
+chip "adm1025-*" "ne1619-*"
+
+ label in1 "Vcore"
+ label in2 "+3.3V"
+ label in3 "+5V"
+ label in4 "+12V"
+ label in5 "VCC"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+ set in5_min 3.3 * 0.90
+ set in5_max 3.3 * 1.10
+# Depending on how your chip is hardwired, you may or may not have
+# +12V readings.
+# set in4_min 12.0 * 0.90
+# set in4_max 12.0 * 1.10
+
+ label temp1 "CPU Temp"
+ label temp2 "M/B Temp"
+
+
+chip "lm87-*" "adm1024-*"
+
+ label in1 "Vcore"
+ label in2 "+3.3V"
+ label in3 "+5V"
+ label in4 "+12V"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+ set in4_min 12.0 * 0.90
+ set in4_max 12.0 * 1.10
+
+ label temp1 "M/B Temp"
+ label temp2 "CPU Temp"
+
+
+chip "it87-*" "it8712-*" "it8716-*" "it8718-*" "it8720-*"
+
+ label in8 "Vbat"
+
+
+chip "fscpos-*" "fscher-*"
+#FSC "Hermes"
+
+ label in0 "+12V"
+ label in1 "+5V"
+ label in2 "Vbat"
+
+ label temp1 "CPU Temp"
+ label temp2 "M/B Temp"
+ label temp3 "Aux Temp"
+
+
+chip "fscscy-*"
+#FSC "Scylla"
+
+ label in0 "+12V"
+ label in1 "+5V"
+ label in2 "+3.3V"
+
+ label temp1 "CPU0 Temp"
+ label temp2 "CPU1 Temp"
+ label temp3 "M/B Temp"
+ label temp4 "Aux Temp"
+
+
+chip "fschds-*"
+# Fujitsu Technology Solutions, "Hades"-Chip
+
+# Temperatures
+ label temp1 "CPU Temp"
+ label temp2 "Super I/O Temp"
+ label temp3 "System Temp"
+
+# Fans
+ label fan1 "PSU Fan"
+ label fan2 "CPU Fan"
+ label fan3 "System FAN2"
+ label fan4 "System FAN3"
+ label fan5 "System FAN4"
+
+# Voltages
+ label in0 "+12V"
+ label in1 "+5V"
+ label in2 "Vbat"
+
+chip "fscsyl-*"
+# Fujitsu Technology Solutions, "Syleus"-Chip
+
+# Temperatures
+ label temp1 "CPU Temp"
+ label temp4 "Super I/O Temp"
+ label temp5 "Northbridge Temp"
+
+# Fans
+ label fan1 "CPU Fan"
+ label fan2 "System FAN2"
+ label fan3 "System FAN3"
+ label fan4 "System FAN4"
+ label fan7 "PSU Fan"
+
+# Voltages
+ label in0 "+12V"
+ label in1 "+5V"
+ label in2 "Vbat"
+ label in3 "+3.3V"
+ label in5 "+3.3V-Aux"
+
+chip "vt1211-*"
+
+ label in5 "+3.3V"
+
+ label temp2 "SIO Temp"
+
+
+chip "vt8231-*"
+
+ label in5 "+3.3V"
+
+
+chip "smsc47m192-*"
+
+ label in1 "Vcore"
+ label in2 "+3.3V"
+ label in3 "+5V"
+ label in4 "+12V"
+ label in5 "VCC"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+ set in4_min 12.0 * 0.90
+ set in4_max 12.0 * 1.10
+ set in5_min 3.3 * 0.90
+ set in5_max 3.3 * 1.10
+
+ label temp1 "SIO Temp"
+
+
+chip "lm85-*" "lm85b-*" "lm85c-*" "adm1027-*" "adt7463-*" "adt7468-*" "emc6d100-*" "emc6d102-*"
+
+ label in1 "Vcore"
+ label in2 "+3.3V"
+ label in3 "+5V"
+ label in4 "+12V"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+# Depending on how your chip is hardwired, you may or may not have
+# +12V readings.
+# set in4_min 12.0 * 0.90
+# set in4_max 12.0 * 1.10
+
+ label temp2 "M/B Temp"
+
+
+chip "pc87365-*" "pc87366-*"
+
+# Voltage inputs
+
+ label in7 "3VSB"
+ label in8 "VDD"
+ label in9 "Vbat"
+ label in10 "AVDD"
+
+ compute in7 @*2, @/2
+ compute in8 @*2, @/2
+ compute in10 @*2, @/2
+
+# These are the operating conditions as recommended by National
+# Semiconductor
+ set in7_min 3.0
+ set in7_max 3.6
+ set in8_min 3.0
+ set in8_max 3.6
+ set in10_min 3.0
+ set in10_max 3.6
+# Depending on the hardware setup, the battery voltage may or may not
+# be monitored.
+# set in9_min 2.4
+# set in9_max 3.6
+
+ label temp3 "SIO Temp"
+
+ set temp3_min 0
+ set temp3_max 70
+ set temp3_crit 85
+
+
+chip "adm1030-*" "adm1031-*"
+
+ label temp1 "M/B Temp"
+
+
+chip "w83627ehf-*" "w83627dhg-*" "w83667hg-*"
+
+ label in0 "Vcore"
+ label in2 "AVCC"
+ label in3 "+3.3V"
+ label in7 "3VSB"
+ label in8 "Vbat"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 3.3 * 0.90
+ set in3_max 3.3 * 1.10
+ set in7_min 3.3 * 0.90
+ set in7_max 3.3 * 1.10
+ set in8_min 3.0 * 0.90
+ set in8_max 3.0 * 1.10
+
+
+chip "f71805f-*"
+
+ label in0 "+3.3V"
+
+ set in0_min 3.3 * 0.90
+ set in0_max 3.3 * 1.10
+
+
+chip "f71872f-*"
+
+ label in0 "+3.3V"
+ label in9 "Vbat"
+ label in10 "3VSB"
+
+ set in0_min 3.3 * 0.90
+ set in0_max 3.3 * 1.10
+ set in9_min 3.0 * 0.90
+ set in9_max 3.0 * 1.10
+ set in10_min 3.3 * 0.90
+ set in10_max 3.3 * 1.10
+
+
+chip "k8temp-*"
+
+ label temp1 "Core0 Temp"
+ label temp2 "Core0 Temp"
+ label temp3 "Core1 Temp"
+ label temp4 "Core1 Temp"
+
+
+chip "dme1737-*"
+
+ label in0 "5VSB"
+ label in1 "Vcore"
+ label in2 "+3.3V"
+ label in3 "+5V"
+ label in4 "+12V"
+ label in5 "3VSB"
+ label in6 "Vbat"
+
+ label temp2 "SIO Temp"
+
+ set in0_min 5.0 * 0.90
+ set in0_max 5.0 * 1.10
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+ set in4_min 12.0 * 0.90
+ set in4_max 12.0 * 1.10
+ set in5_min 3.3 * 0.90
+ set in5_max 3.3 * 1.10
+ set in6_min 3.0 * 0.90
+ set in6_max 3.0 * 1.10
+
+
+chip "sch311x-*"
+
+ label in1 "Vcore"
+ label in2 "+3.3V"
+ label in3 "+5V"
+ label in4 "+12V"
+ label in5 "3VSB"
+ label in6 "Vbat"
+
+ label temp2 "SIO Temp"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+ set in4_min 12.0 * 0.90
+ set in4_max 12.0 * 1.10
+ set in5_min 3.3 * 0.90
+ set in5_max 3.3 * 1.10
+ set in6_min 3.0 * 0.90
+ set in6_max 3.0 * 1.10
+
+
+chip "sch5027-*"
+
+ label in0 "5VSB"
+ label in1 "Vcore"
+ label in2 "+3.3V"
+ label in5 "3VSB"
+ label in6 "Vbat"
+
+ label temp2 "SIO Temp"
+
+ set in0_min 5.0 * 0.90
+ set in0_max 5.0 * 1.10
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in5_min 3.3 * 0.90
+ set in5_max 3.3 * 1.10
+ set in6_min 3.0 * 0.90
+ set in6_max 3.0 * 1.10
+
+
+chip "f71882fg-*"
+
+ label in0 "+3.3V"
+ label in7 "3VSB"
+ label in8 "Vbat"
+
+ compute in0 @*2, @/2
+ compute in7 @*2, @/2
+ compute in8 @*2, @/2
+
+
+chip "f8000-*"
+
+ label in0 "+3.3V"
+ label in1 "3VSB"
+ label in2 "Vbat"
+
+ compute in0 @*2, @/2
+ compute in1 @*2, @/2
+ compute in2 @*2, @/2
+
+
+chip "adt7473-*" "adt7475-*"
+
+ label in2 "+3.3V"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+
+ label temp2 "Board Temp"
+
+
+chip "adt7476-*" "adt7490-*"
+
+ label in1 "Vcore"
+ label in2 "+3.3V"
+ label in3 "+5V"
+ label in4 "+12V"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+# Depending on how your ADT7476 is hardwired, you may or may not have
+# +12V readings.
+# set in4_min 12.0 * 0.90
+# set in4_max 12.0 * 1.10
+
+ label temp2 "M/B Temp"
--- /dev/null
+# libsensors configuration file
+# -----------------------------
+#
+# This default configuration file only includes statements which do not
+# differ from one mainboard to the next. Only label, compute and set
+# statements for internal voltage and temperature sensors are included.
+#
+# In general, local changes should not be added to this file, but rather
+# placed in custom configuration files located in /etc/sensors.d. This
+# approach makes further updates much easier.
+#
+# Such custom configuration files for specific mainboards can be found at
+# http://www.lm-sensors.org/wiki/Configurations
+
+chip "lm78-*" "lm79-*" "lm80-*"
+
+ label temp1 "M/B Temp"
+
+
+chip "w83792d-*"
+
+ label in0 "VcoreA"
+ label in1 "VcoreB"
+ label in6 "+5V"
+ label in7 "5VSB"
+ label in8 "Vbat"
+
+ set in6_min 5.0 * 0.90
+ set in6_max 5.0 * 1.10
+ set in7_min 5.0 * 0.90
+ set in7_max 5.0 * 1.10
+ set in8_min 3.0 * 0.90
+ set in8_max 3.0 * 1.10
+
+
+chip "w83793-*"
+
+ label in0 "VcoreA"
+ label in1 "VcoreB"
+ label in7 "+5V"
+ label in8 "5VSB"
+ label in9 "Vbat"
+
+ set in7_min 5.0 * 0.90
+ set in7_max 5.0 * 1.10
+ set in8_min 5.0 * 0.90
+ set in8_max 5.0 * 1.10
+ set in9_min 3.0 * 0.90
+ set in9_max 3.0 * 1.10
+
+
+chip "w83795g-*" "w83795adg-*"
+
+ label in12 "+3.3V"
+ label in13 "3VSB"
+ label in14 "Vbat"
+
+ set in12_min 3.3 * 0.90
+ set in12_max 3.3 * 1.10
+ set in13_min 3.3 * 0.90
+ set in13_max 3.3 * 1.10
+ set in14_min 3.0 * 0.90
+ set in14_max 3.3 * 1.10
+
+
+chip "via686a-*"
+
+ label in0 "Vcore"
+ label in2 "+3.3V"
+ label in3 "+5V"
+ label in4 "+12V"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+ set in4_min 12.0 * 0.90
+ set in4_max 12.0 * 1.10
+
+
+chip "adm1025-*" "ne1619-*"
+
+ label in1 "Vcore"
+ label in2 "+3.3V"
+ label in3 "+5V"
+ label in4 "+12V"
+ label in5 "VCC"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+ set in5_min 3.3 * 0.90
+ set in5_max 3.3 * 1.10
+# Depending on how your chip is hardwired, you may or may not have
+# +12V readings.
+# set in4_min 12.0 * 0.90
+# set in4_max 12.0 * 1.10
+
+ label temp1 "CPU Temp"
+ label temp2 "M/B Temp"
+
+
+chip "lm87-*" "adm1024-*"
+
+ label in1 "Vcore"
+ label in2 "+3.3V"
+ label in3 "+5V"
+ label in4 "+12V"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+ set in4_min 12.0 * 0.90
+ set in4_max 12.0 * 1.10
+
+ label temp1 "M/B Temp"
+ label temp2 "CPU Temp"
+
+
+chip "it87-*" "it8712-*" "it8716-*" "it8718-*" "it8720-*"
+
+ label in8 "Vbat"
+
+
+chip "fscpos-*" "fscher-*"
+#FSC "Hermes"
+
+ label in0 "+12V"
+ label in1 "+5V"
+ label in2 "Vbat"
+
+ label temp1 "CPU Temp"
+ label temp2 "M/B Temp"
+ label temp3 "Aux Temp"
+
+
+chip "fscscy-*"
+#FSC "Scylla"
+
+ label in0 "+12V"
+ label in1 "+5V"
+ label in2 "+3.3V"
+
+ label temp1 "CPU0 Temp"
+ label temp2 "CPU1 Temp"
+ label temp3 "M/B Temp"
+ label temp4 "Aux Temp"
+
+
+chip "fschds-*"
+# Fujitsu Technology Solutions, "Hades"-Chip
+
+# Temperatures
+ label temp1 "CPU Temp"
+ label temp2 "Super I/O Temp"
+ label temp3 "System Temp"
+
+# Fans
+ label fan1 "PSU Fan"
+ label fan2 "CPU Fan"
+ label fan3 "System FAN2"
+ label fan4 "System FAN3"
+ label fan5 "System FAN4"
+
+# Voltages
+ label in0 "+12V"
+ label in1 "+5V"
+ label in2 "Vbat"
+
+chip "fscsyl-*"
+# Fujitsu Technology Solutions, "Syleus"-Chip
+
+# Temperatures
+ label temp1 "CPU Temp"
+ label temp4 "Super I/O Temp"
+ label temp5 "Northbridge Temp"
+
+# Fans
+ label fan1 "CPU Fan"
+ label fan2 "System FAN2"
+ label fan3 "System FAN3"
+ label fan4 "System FAN4"
+ label fan7 "PSU Fan"
+
+# Voltages
+ label in0 "+12V"
+ label in1 "+5V"
+ label in2 "Vbat"
+ label in3 "+3.3V"
+ label in5 "+3.3V-Aux"
+
+chip "vt1211-*"
+
+ label in5 "+3.3V"
+
+ label temp2 "SIO Temp"
+
+
+chip "vt8231-*"
+
+ label in5 "+3.3V"
+
+
+chip "smsc47m192-*"
+
+ label in1 "Vcore"
+ label in2 "+3.3V"
+ label in3 "+5V"
+ label in4 "+12V"
+ label in5 "VCC"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+ set in4_min 12.0 * 0.90
+ set in4_max 12.0 * 1.10
+ set in5_min 3.3 * 0.90
+ set in5_max 3.3 * 1.10
+
+ label temp1 "SIO Temp"
+
+
+chip "lm85-*" "lm85b-*" "lm85c-*" "adm1027-*" "adt7463-*" "adt7468-*" \
+ "emc6d100-*" "emc6d102-*" "emc6d103-*" "emc6d103s-*"
+
+ label in1 "Vcore"
+ label in2 "+3.3V"
+ label in3 "+5V"
+ label in4 "+12V"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+# Depending on how your chip is hardwired, you may or may not have
+# +12V readings.
+# set in4_min 12.0 * 0.90
+# set in4_max 12.0 * 1.10
+
+ label temp2 "M/B Temp"
+
+
+chip "emc6w201-*"
+
+ label in2 "+3.3V"
+ label in3 "+5V"
+
+ label temp6 "M/B Temp"
+
+
+chip "pc87365-*" "pc87366-*"
+
+# Voltage inputs
+
+ label in7 "3VSB"
+ label in8 "VDD"
+ label in9 "Vbat"
+ label in10 "AVDD"
+
+ compute in7 @*2, @/2
+ compute in8 @*2, @/2
+ compute in10 @*2, @/2
+
+# These are the operating conditions as recommended by National
+# Semiconductor
+ set in7_min 3.0
+ set in7_max 3.6
+ set in8_min 3.0
+ set in8_max 3.6
+ set in10_min 3.0
+ set in10_max 3.6
+# Depending on the hardware setup, the battery voltage may or may not
+# be monitored.
+# set in9_min 2.4
+# set in9_max 3.6
+
+ label temp3 "SIO Temp"
+
+ set temp3_min 0
+ set temp3_max 70
+ set temp3_crit 85
+
+
+chip "adm1030-*" "adm1031-*"
+
+ label temp1 "M/B Temp"
+
+
+chip "w83627thf-*"
+
+ label in3 "+5V"
+ label in7 "5VSB"
+ label in8 "Vbat"
+
+ # Internal resistors
+ compute in3 @ * (1 + 34/51), @ / (1 + 34/51)
+ compute in7 @ * (1 + 34/51), @ / (1 + 34/51)
+
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+ set in7_min 5.0 * 0.90
+ set in7_max 5.0 * 1.10
+# The battery voltage may or may not be monitored.
+# set in8_min 3.0 * 0.90
+# set in8_max 3.0 * 1.10
+
+
+chip "w83627ehf-*" "w83627dhg-*" "w83667hg-*" "nct6775-*" "nct6776-*"
+
+ label in0 "Vcore"
+ label in2 "AVCC"
+ label in3 "+3.3V"
+ label in7 "3VSB"
+ label in8 "Vbat"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 3.3 * 0.90
+ set in3_max 3.3 * 1.10
+ set in7_min 3.3 * 0.90
+ set in7_max 3.3 * 1.10
+ set in8_min 3.0 * 0.90
+ set in8_max 3.0 * 1.10
+
+
+chip "w83627uhg-*"
+
+ label in2 "AVCC"
+ label in3 "+5V"
+ label in7 "5VSB"
+ label in8 "Vbat"
+
+ set in2_min 5.0 * 0.90
+ set in2_max 5.0 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+ set in7_min 5.0 * 0.90
+ set in7_max 5.0 * 1.10
+ set in8_min 3.0 * 0.90
+ set in8_max 3.0 * 1.10
+
+
+chip "f71805f-*"
+
+ label in0 "+3.3V"
+
+ set in0_min 3.3 * 0.90
+ set in0_max 3.3 * 1.10
+
+
+chip "f71872f-*"
+
+ label in0 "+3.3V"
+ label in9 "Vbat"
+ label in10 "3VSB"
+
+ set in0_min 3.3 * 0.90
+ set in0_max 3.3 * 1.10
+ set in9_min 3.0 * 0.90
+ set in9_max 3.0 * 1.10
+ set in10_min 3.3 * 0.90
+ set in10_max 3.3 * 1.10
+
+
+chip "k8temp-*"
+
+ label temp1 "Core0 Temp"
+ label temp2 "Core0 Temp"
+ label temp3 "Core1 Temp"
+ label temp4 "Core1 Temp"
+
+
+chip "dme1737-*"
+
+ label in0 "5VSB"
+ label in1 "Vcore"
+ label in2 "+3.3V"
+ label in3 "+5V"
+ label in4 "+12V"
+ label in5 "3VSB"
+ label in6 "Vbat"
+
+ label temp2 "SIO Temp"
+
+ set in0_min 5.0 * 0.90
+ set in0_max 5.0 * 1.10
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+ set in4_min 12.0 * 0.90
+ set in4_max 12.0 * 1.10
+ set in5_min 3.3 * 0.90
+ set in5_max 3.3 * 1.10
+ set in6_min 3.0 * 0.90
+ set in6_max 3.0 * 1.10
+
+
+chip "sch311x-*"
+
+ label in1 "Vcore"
+ label in2 "+3.3V"
+ label in3 "+5V"
+ label in4 "+12V"
+ label in5 "3VSB"
+ label in6 "Vbat"
+
+ label temp2 "SIO Temp"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+ set in4_min 12.0 * 0.90
+ set in4_max 12.0 * 1.10
+ set in5_min 3.3 * 0.90
+ set in5_max 3.3 * 1.10
+ set in6_min 3.0 * 0.90
+ set in6_max 3.0 * 1.10
+
+
+chip "sch5027-*"
+
+ label in0 "5VSB"
+ label in1 "Vcore"
+ label in2 "+3.3V"
+ label in5 "3VSB"
+ label in6 "Vbat"
+
+ label temp2 "SIO Temp"
+
+ set in0_min 5.0 * 0.90
+ set in0_max 5.0 * 1.10
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in5_min 3.3 * 0.90
+ set in5_max 3.3 * 1.10
+ set in6_min 3.0 * 0.90
+ set in6_max 3.0 * 1.10
+
+
+chip "sch5127-*"
+
+ label in2 "+3.3V"
+ label in5 "3VSB"
+ label in6 "Vbat"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in5_min 3.3 * 0.90
+ set in5_max 3.3 * 1.10
+ set in6_min 3.0 * 0.90
+ set in6_max 3.0 * 1.10
+
+
+chip "f71808e-*" "f71808a-*" "f71862fg-*" "f71869-*" "f71869a-*" "f71882fg-*" \
+ "f71889fg-*" "f71889ed-*" "f71889a-*"
+
+ label in0 "+3.3V"
+ label in7 "3VSB"
+ label in8 "Vbat"
+
+ compute in0 @*2, @/2
+ compute in7 @*2, @/2
+ compute in8 @*2, @/2
+
+
+chip "f71858fg-*" "f8000-*"
+
+ label in0 "+3.3V"
+ label in1 "3VSB"
+ label in2 "Vbat"
+
+ compute in0 @*2, @/2
+ compute in1 @*2, @/2
+ compute in2 @*2, @/2
+
+
+chip "f81865f-*"
+
+ label in0 "+3.3V"
+ label in5 "3VSB"
+ label in6 "Vbat"
+
+ compute in0 @*2, @/2
+ compute in5 @*2, @/2
+ compute in6 @*2, @/2
+
+
+chip "adt7473-*" "adt7475-*"
+
+ label in2 "+3.3V"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+
+ label temp2 "Board Temp"
+
+
+chip "adt7476-*" "adt7490-*"
+
+ label in1 "Vcore"
+ label in2 "+3.3V"
+ label in3 "+5V"
+ label in4 "+12V"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+# Depending on how your ADT7476 is hardwired, you may or may not have
+# +12V readings.
+# set in4_min 12.0 * 0.90
+# set in4_max 12.0 * 1.10
+
+ label temp2 "M/B Temp"
--- /dev/null
+[Desktop0]
+BackgroundMode=Flat
+BlendBalance=100
+BlendMode=NoBlending
+ChangeInterval=60
+Color1=0,0,200
+Color2=192,192,192
+CurrentWallpaperName=/data/all/Bilder/bg/Naturszenen/Sun Beams, Saipan, Northern Marianas.jpg
+LastChange=1327825319
+MinOptimizationDepth=1
+MultiWallpaperMode=Random
+Pattern=fish
+Program=
+ReverseBlending=false
+UseSHM=false
+Wallpaper=default_blue.jpg
+WallpaperList=/data/all/Bilder/bg/Naturszenen/,/data/all/Bilder/bg/Naturszenen/Wasserfälle/,/data/all/Bilder/bg/Naturszenen/BergeUndWasser/
+WallpaperMode=ScaleAndCrop
--- /dev/null
+[Desktop0]
+BackgroundMode=Flat
+BlendBalance=100
+BlendMode=NoBlending
+ChangeInterval=60
+Color1=0,0,200
+Color2=192,192,192
+CurrentWallpaper=0
+LastChange=0
+MinOptimizationDepth=1
+MultiWallpaperMode=NoMulti
+Pattern=fish
+Program=
+ReverseBlending=false
+UseSHM=false
+Wallpaper=stripes.png
+WallpaperList=
+WallpaperMode=Scaled
--- /dev/null
+[General]
+ConfigVersion=2.4
+ConsoleTTYs=tty1,tty2,tty3,tty4,tty5,tty6
+PidFile=/var/run/kdm.pid
+ReserveServers=:1,:2,:3
+ServerVTs=-7
+StaticServers=:0
+DataDir=/var/lib/kdm
+
+[Shutdown]
+BootManager=None
+HaltCmd=/sbin/halt
+RebootCmd=/sbin/reboot
+
+[X-*-Core]
+AllowNullPasswd=false
+AllowRootLogin=false
+AllowShutdown=Root
+AutoReLogin=true
+ClientLogFile=.xsession-errors-%d
+Reset=/usr/share/config/kdm/Xreset
+Session=/usr/share/config/kdm/Xsession
+SessionsDirs=/usr/share/apps/kdm/sessions,/usr/share/xsessions
+Setup=/usr/share/config/kdm/Xsetup
+Startup=/usr/share/config/kdm/Xstartup
+
+[X-*-Greeter]
+AntiAliasing=false
+ColorScheme=
+FaceDir=/var/lib/kdm/faces
+FaceSource=PreferUser
+FailFont=Sans Serif,10,-1,5,75,0,0,0,0,0
+ForgingSeed=1237407001
+GUIStyle=
+GreetFont=Serif,20,-1,5,50,0,0,0,0,0
+GreetString=Willkommen zu %s auf %n
+GreeterPos=50,50
+HiddenUsers=thomas
+Language=de
+LogoArea=Clock
+LogoPixmap=/usr/share/apps/kdm/pics/kdelogo.png
+MaxShowUID=65000
+MinShowUID=1000
+Preloader=/usr/bin/preloadkde
+SelectedUsers=
+ShowUsers=NotHidden
+SortUsers=true
+StdFont=Sans Serif,10,-1,5,50,0,0,0,0,0
+Theme=/usr/share/apps/kdm/themes/oxygen-air
+UseBackground=true
+UseTheme=false
+UserCompletion=false
+UserList=true
+
+[X-:*-Core]
+AllowNullPasswd=true
+AllowShutdown=All
+NoPassEnable=false
+NoPassUsers=
+ServerArgsLocal=-nolisten tcp
+ServerCmd=/usr/bin/X -br -novtswitch -quiet
+
+[X-:*-Greeter]
+AllowClose=false
+DefaultUser=doris
+FocusPasswd=true
+LoginMode=DefaultLocal
+PreselectUser=Previous
+
+[X-:0-Core]
+AutoLoginEnable=false
+AutoLoginLocked=false
+AutoLoginUser=
+ClientLogFile=.xsession-errors
+
+[Xdmcp]
+Enable=false
+Willing=/usr/share/config/kdm/Xwilling
--- /dev/null
+# KDM master configuration file
+#
+# Definition: the greeter is the login dialog, i.e., the part of KDM
+# which the user sees.
+#
+# You can configure every X-display individually.
+# Every display has a display name, which consists of a host name
+# (which is empty for local displays specified in {Static|Reserve}Servers),
+# a colon, and a display number. Additionally, a display belongs to a
+# display class (which can be ignored in most cases; the control center
+# does not support this feature at all).
+# Sections with display-specific settings have the formal syntax
+# "[X-" host [":" number [ "_" class ]] "-" sub-section "]"
+# You can use the "*" wildcard for host, number, and class. You may omit
+# trailing components; they are assumed to be "*" then.
+# The host part may be a domain specification like ".inf.tu-dresden.de".
+# It may also be "+", which means non-empty, i.e. remote displays only.
+# From which section a setting is actually taken is determined by these
+# rules:
+# - an exact match takes precedence over a partial match (for the host part),
+# which in turn takes precedence over a wildcard ("+" taking precedence
+# over "*")
+# - precedence decreases from left to right for equally exact matches
+# Example: display name "myhost:0", class "dpy".
+# [X-myhost:0_dpy] precedes
+# [X-myhost:0_*] (same as [X-myhost:0]) precedes
+# [X-myhost:*_dpy] precedes
+# [X-myhost:*_*] (same as [X-myhost]) precedes
+# [X-+:0_dpy] precedes
+# [X-*:0_dpy] precedes
+# [X-*:0_*] (same as [X-*:0]) precedes
+# [X-*:*_*] (same as [X-*])
+# These sections do NOT match this display:
+# [X-hishost], [X-myhost:0_dec], [X-*:1], [X-:*]
+# If a setting is not found in any matching section, the default is used.
+#
+# Every comment applies to the following section or key. Note that all
+# comments will be lost if you change this file with the systemsettings frontend.
+# The defaults refer to KDM's built-in values, not anything set in this file.
+#
+# Special characters need to be backslash-escaped (leading and trailing
+# spaces (\s), tab (\t), linefeed (\n), carriage return (\r) and the
+# backslash itself (\\)).
+# In lists, fields are separated with commas without whitespace in between.
+# Some command strings are subject to simplified sh-style word splitting:
+# single quotes (') and double quotes (") have the usual meaning; the backslash
+# quotes everything (not only special characters). Note that the backslashes
+# need to be doubled because of the two levels of quoting.
+
+[General]
+# This option exists solely for the purpose of a clean automatic upgrade.
+# Do not even think about changing it!
+ConfigVersion=2.4
+# List of permanent displays. Displays with a hostname are foreign. A display
+# class may be specified separated by an underscore.
+# Default is ":0"
+StaticServers=:0
+# List of on-demand displays. See StaticServers for syntax.
+# Default is ""
+ReserveServers=:1,:2,:3
+# VTs to allocate to X-servers. A negative number means that the VT will be
+# used only if it is free. If all VTs in this list are used up, the next free
+# one greater than the last one in this list will be allocated.
+# Default is ""
+ServerVTs=-7
+# TTYs (without /dev/) to monitor for activity while in console mode.
+# Default is ""
+ConsoleTTYs=tty1,tty2,tty3,tty4,tty5,tty6
+# Where KDM should store its PID (do not store if empty).
+# Default is ""
+PidFile=/var/run/kdm.pid
+# Whether KDM should lock the PID file to prevent having multiple KDM
+# instances running at once. Do not change unless you are brave.
+# Default is true
+#LockPidFile=false
+# Where to store authorization files.
+# Default is "/var/run/xauth"
+#AuthDir=/tmp
+# Whether KDM should automatically re-read configuration files, if it
+# finds them having changed.
+# Default is true
+#AutoRescan=false
+# Additional environment variables KDM should pass on to all programs it runs.
+# LD_LIBRARY_PATH and XCURSOR_THEME are good candidates;
+# otherwise, it should not be necessary very often.
+# Default is ""
+#ExportList=LD_LIBRARY_PATH,ANOTHER_IMPORTANT_VAR
+# A character device KDM should read entropy from.
+# Empty means use the system's preferred entropy device.
+# Default is ""
+#RandomDevice=/dev/altrandom
+# Where the command sockets should be created; make it empty to disable
+# them.
+# Default is "/var/run/xdmctl"
+#FifoDir=/tmp
+# The group to which the global command socket should belong;
+# can be either a name or a numerical ID.
+# Default is 0
+#FifoGroup=xdmctl
+# The user the greeter should run as. Empty results in root.
+# Consider the impact on LogSource when setting it.
+# Default is ""
+GreeterUID=kdm
+# The directory in which KDM should store persistent working data.
+# Default is "/var/lib/kdm"
+##DataDir=
+DataDir=/var/lib/kdm
+# The directory in which KDM should store users' .dmrc files. This is only
+# needed if the home directories are not readable before actually logging in
+# (like with AFS).
+# Default is ""
+#DmrcDir=/nfs-shared/var/dmrcs
+
+[Xdmcp]
+# Whether KDM should listen to incoming XDMCP requests.
+# Default is true
+Enable=false
+# The UDP port on which KDM should listen for XDMCP requests. Do not change.
+# Default is 177
+#Port=177
+# File with the private keys of X-terminals. Required for XDM authentication.
+# Default is ""
+#KeyFile=/usr/share/config/kdm/kdmkeys
+# XDMCP access control file in the usual XDM-Xaccess format.
+# Default is "/usr/share/config/kdm/Xaccess"
+#Xaccess=
+# Number of seconds to wait for display to respond after the user has
+# selected a host from the chooser.
+# Default is 15
+#ChoiceTimeout=10
+# Strip domain name from remote display names if it is equal to the local
+# domain.
+# Default is true
+#RemoveDomainname=false
+# Use the numeric IP address of the incoming connection on multihomed hosts
+# instead of the host name.
+# Default is false
+#SourceAddress=true
+# The program which is invoked to dynamically generate replies to XDMCP
+# DirectQuery or BroadcastQuery requests.
+# If empty, no program is invoked and "Willing to manage" is sent.
+# Default is ""
+Willing=/usr/share/config/kdm/Xwilling
+
+[Shutdown]
+# The command (subject to word splitting) to run to halt the system.
+# Default is "/sbin/shutdown -h -P now"
+#HaltCmd=
+# The command (subject to word splitting) to run to reboot the system.
+# Default is "/sbin/shutdown -r now"
+#RebootCmd=
+# Whether it is allowed to shut down the system via the global command socket.
+# Default is false
+#AllowFifo=true
+# Whether it is allowed to abort active sessions when shutting down the
+# system via the global command socket.
+# Default is true
+#AllowFifoNow=false
+# The boot manager KDM should use for offering boot options in the
+# shutdown dialog.
+# "None" - no boot manager
+# "Grub" - Grub boot manager
+# "Grub2" - Grub2 boot manager
+# "Lilo" - Lilo boot manager (Linux on i386 & x86-64 only)
+# Default is None
+#BootManager=Grub
+
+# Rough estimations about how many seconds KDM will spend at most on
+# - opening a connection to the X-server (OpenTime) if the attempt
+# - times out: OpenTimeout
+# - is refused: OpenRepeat * OpenDelay
+# - starting a local X-server (ServerTime):
+# ServerAttempts * (ServerTimeout + OpenDelay)
+# - starting a display:
+# - local display: ServerTime + OpenTime
+# - foreign display: StartAttempts * OpenTime
+# - XDMCP display: OpenTime (repeated indefinitely by client)
+
+# Core config for all displays
+[X-*-Core]
+# How long to wait before retrying to connect a display.
+# Default is 15
+#OpenDelay=15
+# How long to wait before timing out a display connection attempt.
+# Default is 120
+#OpenTimeout=120
+# How many connection attempts to make during a start attempt. Note that
+# a timeout aborts the entire start attempt.
+# Default is 5
+#OpenRepeat=5
+# Try at most that many times to start a display. If this fails, the display
+# is disabled.
+# Default is 4
+#StartAttempts=4
+# Ping remote display every that many minutes.
+# Default is 5
+#PingInterval=5
+# Wait for a Pong that many minutes.
+# Default is 5
+#PingTimeout=5
+# The name of this X-server's Xauth file.
+# If empty, a random name in the AuthDir directory will be used.
+# Default is ""
+#AuthFile=
+# Specify a file with X-resources for the greeter, chooser and background.
+# The KDE frontend does not use this file, so you do not need it unless you
+# use another background generator than krootimage.
+# Default is ""
+#Resources=
+# The xrdb program to use to read the above specified recources.
+# Subject to word splitting.
+# Default is "/usr/bin/xrdb"
+#Xrdb=
+# A program to run before the greeter is shown. Can be used to start an
+# xconsole or an alternative background generator. Subject to word splitting.
+# Default is ""
+Setup=/usr/share/config/kdm/Xsetup
+# A program to run before a user session starts. Subject to word splitting.
+# Default is ""
+Startup=/usr/share/config/kdm/Xstartup
+# A program to run after a user session exits. Subject to word splitting.
+# Default is ""
+Reset=/usr/share/config/kdm/Xreset
+# The program which is run as the user which logs in. It is supposed to
+# interpret the session argument (see SessionsDirs) and start an appropriate
+# session according to it. Subject to word splitting.
+# Default is "/usr/bin/xterm -ls -T"
+Session=/usr/share/config/kdm/Xsession
+# The program to run if Session fails.
+# Default is "/usr/bin/xterm"
+#FailsafeClient=
+# The PATH for the Session program.
+# Default is "/usr/local/bin:/usr/bin:/bin:/usr/games"
+#UserPath=
+# The PATH for Setup, Startup and Reset, etc.
+# Default is "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
+#SystemPath=
+# The default system shell.
+# Default is "/bin/sh"
+#SystemShell=/bin/bash
+# Where to put the user's X-server authorization file if ~/.Xauthority
+# cannot be created.
+# Default is "/tmp"
+#UserAuthDir=
+# If true, UserAuthDir will be used unconditionally.
+# Default is false
+#ForceUserAuthDir=true
+# Whether to automatically restart sessions after X-server crashes.
+# Note that enabling this makes circumventing screen lockers other than
+# KDE's built-in one possible!
+# Default is false
+#AutoReLogin=true
+# Allow root logins?
+# Default is true
+AllowRootLogin=false
+# Allow to log in, when user has set an empty password?
+# Default is true
+AllowNullPasswd=false
+# Who is allowed to shut down the system. This applies both to the
+# greeter and to the command sockets.
+# "None" - no "Shutdown..." menu entry is shown at all
+# "Root" - the root password must be entered to shut down
+# "All" - everybody can shut down the machine
+# Default is All
+AllowShutdown=Root
+# Who is allowed to abort active sessions when shutting down.
+# "None" - no forced shutdown is allowed at all
+# "Root" - the root password must be entered to shut down forcibly
+# "All" - everybody can shut down the machine forcibly
+# Default is All
+#AllowSdForceNow=Root
+# The default choice for the shutdown condition/timing.
+# "Schedule" - shut down after all active sessions exit (possibly at once)
+# "TryNow" - shut down, if no active sessions are open; otherwise, do nothing
+# "ForceNow" - shut down unconditionally
+# Default is Schedule
+#DefaultSdMode=ForceNow
+# How to offer shutdown scheduling options:
+# "Never" - not at all
+# "Optional" - as a button in the simple shutdown dialogs
+# "Always" - instead of the simple shutdown dialogs
+# Default is Never
+#ScheduledSd=Optional
+# The directories containing session type definitions in .desktop format,
+# ordered by falling priority.
+# Default is "/usr/share/apps/kdm/sessions"
+#SessionsDirs=/usr/share/config/kdm/sessions,/usr/share/apps/kdm/sessions
+SessionsDirs=/usr/share/apps/kdm/sessions,/usr/share/xsessions
+# The file (relative to $HOME) to redirect the session output to. The
+# following character pairs are replaced:
+# - %d -> current display
+# - %u -> current user
+# - %r -> empty at first. See below.
+# - %% -> a single %
+# When the constructed filename cannot be used safely and the specification
+# contains %<stuff>r, other names will be tried - this time expanding %<stuff>r
+# to <stuff> followed by a random number.
+# Default is ".xsession-errors"
+ClientLogFile=.xsession-errors-%d
+# Fallback when ClientLogFile cannot be used. The same expansions are
+# supported. DO NOT use relative paths here.
+# Default is "/tmp/xerr-%u-%d%-r"
+#ClientLogFallback=/var/log/xsession-errors/%u-%d%-r
+# Whether KDM's built-in utmp/wtmp/lastlog registration should be used.
+# Default is true
+#UseSessReg=false
+
+# Greeter config for all displays
+[X-*-Greeter]
+# Specify the widget style for the greeter. Empty means to use the
+# built-in default which currently is "Oxygen-air".
+# Default is ""
+#GUIStyle=Plastique
+# Specify the widget color scheme for the greeter. Empty means to use the
+# built-in default which currently is "Oxygen-air".
+# Default is ""
+#ColorScheme=MidnightMeadow
+# What should be shown in the greeter's logo are:
+# "None" - nothing
+# "Logo" - the image specified by LogoPixmap
+# "Clock" - a neat analog clock
+# Default is Clock
+LogoArea=Logo
+# The image to show when LogoArea=Logo.
+# Default is ""
+LogoPixmap=/usr/share/apps/kdm/pics/kdelogo.png
+# The relative coordinates (X,Y in percent) of the center of the greeter.
+# Default is "50,50"
+#GreeterPos=30,40
+# The screen the greeter should be displayed on in multi-headed and Xinerama
+# setups. The numbering starts with 0. For Xinerama, it corresponds to the
+# listing order in the active ServerLayout section of XF86Config; -1 means
+# to use the upper-left screen, -2 means to use the upper-right screen.
+# Default is 0
+#GreeterScreen=-1
+# The headline in the greeter. The following character pairs are replaced:
+# - %d -> current display
+# - %h -> host name, possibly with domain name
+# - %n -> node name, most probably the host name without domain name
+# - %s -> the operating system
+# - %r -> the operating system's version
+# - %m -> the machine (hardware) type
+# - %% -> a single %
+# Default is "Welcome to %s at %n"
+#GreetString=K Desktop Environment (%n)
+# Whether the fonts used in the greeter should be antialiased.
+# Default is false
+#AntiAliasing=true
+# The font for the greeter headline. The value is encoded.
+# Default is "Serif 20pt bold"
+#GreetFont=Serif,20,-1,5,50,0,0,0,0,0
+# The normal font used in the greeter. The value is encoded.
+# Default is "Sans Serif 10pt"
+#StdFont=Sans Serif,10,-1,5,50,0,0,0,0,0
+# The font used for the "Login Failed" message. The value is encoded.
+# Default is "Sans Serif 10pt bold"
+#FailFont=Sans Serif,10,-1,5,75,0,0,0,0,0
+# What to do with the Num Lock modifier for the time the greeter is running:
+# "Off" - turn off
+# "On" - turn on
+# "Keep" - do not change the state
+# Default is Keep
+#NumLock=Off
+# Language and locale to use in the greeter, encoded like $LANGUAGE.
+# If empty, the settings from the environment are used.
+# Default is ""
+#Language=de_DE
+# Enable autocompletion in the username line edit.
+# Default is false
+#UserCompletion=true
+# Enable user list (names along with images) in the greeter.
+# Default is true
+#UserList=false
+# User selection for UserCompletion and UserList:
+# "NotHidden" - all users except those listed in HiddenUsers
+# "Selected" - only the users listed in SelectedUsers
+# Default is NotHidden
+#ShowUsers=Selected
+# For ShowUsers=Selected. @<group> means all users in that group.
+# Default is ""
+#SelectedUsers=root,johndoe
+# For ShowUsers=NotHidden. @<group> means all users in that group.
+# Default is ""
+#HiddenUsers=root
+# Special case of HiddenUsers: users with a non-zero UID less than this number
+# will not be shown as well.
+# Default is 0
+MinShowUID=1000
+# Complement to MinShowUID: users with a UID greater than this number will
+# not be shown as well.
+# Default is 65535
+MaxShowUID=65000
+# If false, the users are listed in the order they appear in /etc/passwd.
+# If true, they are sorted alphabetically.
+# Default is true
+#SortUsers=false
+# Specify, where the users' pictures should be taken from.
+# "AdminOnly" - from <FaceDir>/$USER.face[.icon]
+# "PreferAdmin" - prefer <FaceDir>, fallback on $HOME
+# "PreferUser" - ... and the other way round
+# "UserOnly" - from the user's $HOME/.face[.icon]
+# Default is AdminOnly
+#FaceSource=PreferUser
+# The directory containing the user images if FaceSource is not UserOnly.
+# Default is "/usr/share/apps/kdm/faces"
+##FaceDir=/usr/share/faces
+FaceDir=/var/lib/kdm/faces
+# Specify, if/which user should be preselected for log in.
+# "None" - do not preselect any user
+# "Previous" - the user which successfully logged in last time
+# "Default" - the user specified in the DefaultUser option
+# Default is None
+#PreselectUser=Previous
+# If this is true, the password input line is focused automatically if
+# a user is preselected.
+# Default is false
+#FocusPasswd=true
+# If this is true, the entered password is echoed as bullets. Otherwise,
+# no feedback is given at all.
+# Default is true
+#EchoPasswd=false
+# If true, krootimage will be automatically started by KDM; otherwise, the
+# Setup script should be used to setup the background.
+# Default is true
+#UseBackground=false
+# The configuration file to be used by krootimage.
+# Default is "/usr/share/config/kdm/backgroundrc"
+#BackgroundCfg=
+# Whether to grab keyboard and mouse while the greeter is visible. Grabs
+# may improve security, but make on-screen keyboards, etc. unusable.
+# "Never" - never grab
+# "IfNoAuth" - grab if the display requires no X authorization
+# "Always" - always grab
+# Default is IfNoAuth
+#GrabInput=Always
+# Hold the X-server grabbed the whole time the greeter is visible. This
+# may be more secure, but it will disable any background and other
+# X-clients started from the Setup script.
+# Default is false
+#GrabServer=true
+# How many seconds to wait for grab to succeed.
+# Default is 3
+#GrabTimeout=3
+# Warn, if display has no X-authorization (local auth cannot be created,
+# XDMCP display wants no auth, or display is foreign from StaticServers).
+# Default is true
+#AuthComplain=false
+# Random seed for forging saved session types, etc. of unknown users.
+# This value should be random but constant across the login domain.
+# Default is 0
+ForgingSeed=1327834026
+# Specify conversation plugins for the login dialog. Each plugin can be
+# specified as a base name (which expands to $kde_modulesdir/kgreet_$base)
+# or as a full pathname.
+# Default is "classic"
+#PluginsLogin=sign
+# Same as PluginsLogin, but for the shutdown dialog.
+# Default is "classic"
+#PluginsShutdown=modern
+# A list of options of the form Key=Value. The conversation plugins can query
+# these settings; it is up to them what possible keys are.
+# Default is ""
+#PluginOptions=SomeKey=randomvalue,Foo=bar
+# Show the "Console Login" action in the greeter (if ServerTTY/ConsoleTTYs
+# is configured).
+# Default is true
+#AllowConsole=false
+# A program to run while the greeter is visible. It is supposed to preload
+# as much as possible of the session that is going to be started (most
+# probably).
+# Default is ""
+Preloader=/usr/bin/preloadkde
+# Whether the greeter should be themed.
+# Default is false
+UseTheme=true
+# The theme to use for the greeter. Can point to either a directory or an XML
+# file.
+# Default is ""
+Theme=/usr/share/apps/kdm/themes/horos
+# Enable the Alt-Ctrl-D shortcut to toggle greeter theme debugging.
+# Default is false
+#AllowThemeDebug=true
+
+# Core config for local displays
+[X-:*-Core]
+# How often to try to run the X-server. Running includes executing it and
+# waiting for it to come up.
+# Default is 1
+#ServerAttempts=1
+# How long to wait for a local X-server to come up.
+# Default is 30
+ServerTimeout=30
+# The command line to start the X-server, without display number and VT spec.
+# This string is subject to word splitting.
+# Default is "/usr/bin/X"
+ServerCmd=/usr/bin/X -br -novtswitch -quiet
+# Additional arguments for the X-servers for local sessions.
+# This string is subject to word splitting.
+# Default is ""
+ServerArgsLocal=-nolisten tcp
+# Additional arguments for the X-servers for remote sessions.
+# This string is subject to word splitting.
+# Default is ""
+#ServerArgsRemote=
+# The user the X-server should run as. Empty results in root.
+# Default is ""
+#ServerUID=_x11
+# Restart instead of resetting the local X-server after session exit.
+# Use it if the server leaks memory etc.
+# Default is false
+TerminateServer=true
+# Create X-authorizations for local displays.
+# Default is true
+#Authorize=false
+# Which X-authorization mechanisms should be used.
+# Default is "MIT-MAGIC-COOKIE-1"
+#AuthNames=
+# Need to reset the X-server to make it read initial Xauth file.
+# Default is false
+#ResetForAuth=true
+# See above
+AllowNullPasswd=true
+# See above
+AllowShutdown=All
+# Enable password-less logins on this display. USE WITH EXTREME CARE!
+# Default is false
+#NoPassEnable=true
+# The users that do not need to provide a password to log in. NEVER list root!
+# "*" means all non-root users. @<group> means all users in that group.
+# Default is ""
+#NoPassUsers=fred,ethel
+
+# Greeter config for local displays
+[X-:*-Greeter]
+# See above
+PreselectUser=Previous
+# See above
+FocusPasswd=true
+# Specify whether the greeter of local displays should start up in host chooser
+# (remote) or login (local) mode and whether it is allowed to switch to the
+# other mode.
+# "LocalOnly" - only local login possible
+# "DefaultLocal" - start up in local mode, but allow switching to remote mode
+# "DefaultRemote" - ... and the other way round
+# "RemoteOnly" - only choice of remote host possible
+# Default is LocalOnly
+LoginMode=DefaultLocal
+# A list of hosts to be automatically added to the remote login menu. The
+# special name "*" means broadcast.
+# Default is "*"
+#ChooserHosts=*,host1,host2,host3.local,login.domain.com
+# Show the "Restart X Server"/"Close Connection" action in the greeter.
+# Default is true
+AllowClose=false
+
+# Core config for 1st local display
+[X-:0-Core]
+# The VT the X-server should run on; auto-assign if zero, don't assign if -1.
+# Better leave it zero and use ServerVTs.
+# Default is 0
+#ServerVT=7
+# Enable automatic login. USE WITH EXTREME CARE!
+# Default is false
+#AutoLoginEnable=true
+# If true, auto-login after logout. If false, auto-login is performed only
+# when a display session starts up.
+# Default is false
+#AutoLoginAgain=true
+# The delay in seconds before automatic login kicks in.
+# Default is 0
+#AutoLoginDelay=10
+# The user to log in automatically. NEVER specify root!
+# Default is ""
+#AutoLoginUser=fred
+# The password for the user to log in automatically. This is NOT required
+# unless the user is logged into a NIS or Kerberos domain. If you use this
+# option, you should "chmod 600 kdmrc" for obvious reasons.
+# Default is ""
+#AutoLoginPass=secret!
+# Immediately lock the automatically started session. This works only with
+# KDE sessions.
+# Default is false
+#AutoLoginLocked=true
+# See above
+ClientLogFile=.xsession-errors
+
+# Greeter config for 1st local display
+[X-:0-Greeter]
+# See above
+#PreselectUser=Default
+# The user to preselect if PreselectUser=Default.
+# Default is ""
+#DefaultUser=johndoe
# Printer configuration file for CUPS v1.4.8
-# Written by cupsd on 2012-01-28 14:23
+# Written by cupsd on 2012-01-31 22:27
# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING
<DefaultPrinter FS-1020D>
Info Kyocera FS-1020D
# Printer configuration file for CUPS v1.4.8
-# Written by cupsd on 2012-01-27 08:13
+# Written by cupsd on 2012-01-30 07:04
# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING
<DefaultPrinter FS-1020D>
Info Kyocera FS-1020D
# Subscription configuration file for CUPS v1.4.8
-# Written by cupsd on 2012-01-28 14:23
-NextSubscriptionId 125
+# Written by cupsd on 2012-01-31 22:27
+NextSubscriptionId 126
# Subscription configuration file for CUPS v1.4.8
-# Written by cupsd on 2012-01-26 21:19
-NextSubscriptionId 125
-<Subscription 123>
+# Written by cupsd on 2012-01-30 18:44
+NextSubscriptionId 126
+<Subscription 125>
Events printer-state-changed printer-restarted printer-shutdown printer-stopped printer-added printer-deleted job-state-changed job-created job-completed job-stopped job-progress
Owner doris
LeaseDuration 86400
Interval 0
-ExpirationTime 1327690029
-NextEventId 1
-</Subscription>
-<Subscription 124>
-Events printer-state-changed printer-restarted printer-shutdown printer-stopped printer-added printer-deleted job-state-changed job-created job-completed job-stopped job-progress
-Owner doris
-LeaseDuration 86400
-Interval 0
-ExpirationTime 1327695553
+ExpirationTime 1328031858
NextEventId 1
</Subscription>
<allow send_interface="org.bluez.Agent"/>
<allow send_interface="org.bluez.HandsfreeAgent"/>
<allow send_interface="org.bluez.MediaEndpoint"/>
+ <allow send_interface="org.bluez.MediaPlayer"/>
<allow send_interface="org.bluez.Watcher"/>
+ <allow send_interface="org.bluez.ThermometerWatcher"/>
</policy>
<policy at_console="true">
<dir name="thumbnailers">
<entry name="disable_all" mtime="1326727479" schema="/schemas/desktop/gnome/thumbnailers/disable_all"/>
<dir name="application@x-cbt">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-cbt/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-cbt/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-cbt/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-cbt/enable"/>
</dir>
<dir name="application@x-cb7">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-cb7/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-cb7/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-cb7/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-cb7/enable"/>
</dir>
<dir name="application@x-cbr">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-cbr/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-cbr/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-cbr/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-cbr/enable"/>
</dir>
<dir name="application@x-cbz">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-cbz/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-cbz/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-cbz/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-cbz/enable"/>
</dir>
<dir name="image@x-gzeps">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/image@x-gzeps/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/image@x-gzeps/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/image@x-gzeps/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/image@x-gzeps/enable"/>
</dir>
<dir name="image@x-bzeps">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/image@x-bzeps/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/image@x-bzeps/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/image@x-bzeps/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/image@x-bzeps/enable"/>
</dir>
<dir name="image@x-eps">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/image@x-eps/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/image@x-eps/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/image@x-eps/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/image@x-eps/enable"/>
</dir>
<dir name="application@x-gzpostscript">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-gzpostscript/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-gzpostscript/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-gzpostscript/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-gzpostscript/enable"/>
</dir>
<dir name="application@x-bzpostscript">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-bzpostscript/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-bzpostscript/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-bzpostscript/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-bzpostscript/enable"/>
</dir>
<dir name="application@postscript">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@postscript/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@postscript/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@postscript/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@postscript/enable"/>
</dir>
<dir name="application@x-gzpdf">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-gzpdf/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-gzpdf/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-gzpdf/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-gzpdf/enable"/>
</dir>
<dir name="application@x-bzpdf">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-bzpdf/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-bzpdf/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-bzpdf/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-bzpdf/enable"/>
</dir>
<dir name="application@pdf">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@pdf/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@pdf/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@pdf/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@pdf/enable"/>
</dir>
<dir name="application@x-bzdvi">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-bzdvi/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-bzdvi/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-bzdvi/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-bzdvi/enable"/>
</dir>
<dir name="application@x-gzdvi">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-gzdvi/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-gzdvi/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-gzdvi/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-gzdvi/enable"/>
</dir>
<dir name="application@x-dvi">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-dvi/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/application@x-dvi/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-dvi/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/application@x-dvi/enable"/>
</dir>
<dir name="image@vnd.djvu">
- <entry name="command" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/image@vnd.djvu/command"/>
- <entry name="enable" mtime="1326800723" schema="/schemas/desktop/gnome/thumbnailers/image@vnd.djvu/enable"/>
+ <entry name="command" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/image@vnd.djvu/command"/>
+ <entry name="enable" mtime="1327840754" schema="/schemas/desktop/gnome/thumbnailers/image@vnd.djvu/enable"/>
</dir>
<dir name="application@x-flac">
<entry name="command" mtime="1326800631" schema="/schemas/desktop/gnome/thumbnailers/application@x-flac/command"/>
</local_schema>
</entry>
<dir name="application@x-cbt">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
</default>
+ <longdesc></longdesc>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="">
<default type="bool" value="true"/>
+ <longdesc></longdesc>
</local_schema>
</entry>
</dir>
<dir name="application@x-cb7">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
</default>
+ <longdesc></longdesc>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="">
<default type="bool" value="true"/>
+ <longdesc></longdesc>
</local_schema>
</entry>
</dir>
<dir name="application@x-cbr">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
</default>
+ <longdesc></longdesc>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="">
<default type="bool" value="true"/>
+ <longdesc></longdesc>
</local_schema>
</entry>
</dir>
<dir name="application@x-cbz">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
</default>
+ <longdesc></longdesc>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="">
<default type="bool" value="true"/>
+ <longdesc></longdesc>
</local_schema>
</entry>
</dir>
<dir name="image@x-gzeps">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
</default>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="">
<default type="bool" value="true"/>
</local_schema>
</entry>
</dir>
<dir name="image@x-bzeps">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
</default>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="">
<default type="bool" value="true"/>
</local_schema>
</entry>
</dir>
<dir name="image@x-eps">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
</default>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="">
<default type="bool" value="true"/>
</local_schema>
</entry>
</dir>
<dir name="application@x-gzpostscript">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
</default>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="">
<default type="bool" value="true"/>
</local_schema>
</entry>
</dir>
<dir name="application@x-bzpostscript">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
</default>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="">
<default type="bool" value="true"/>
</local_schema>
</entry>
</dir>
<dir name="application@postscript">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
</default>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="">
<default type="bool" value="true"/>
</local_schema>
</entry>
</dir>
<dir name="application@x-gzpdf">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="Thumbnail command for PDF Documents">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
<longdesc>Valid command plus arguments for the PDF Document thumbnailer. See Nautilus thumbnailer documentation for more information.</longdesc>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="Enable thumbnailing of PDF Documents">
<default type="bool" value="true"/>
<longdesc>Boolean options available: true enables thumbnailing and false disables the creation of new thumbnails</longdesc>
</entry>
</dir>
<dir name="application@x-bzpdf">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="Thumbnail command for PDF Documents">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
<longdesc>Valid command plus arguments for the PDF Document thumbnailer. See Nautilus thumbnailer documentation for more information.</longdesc>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="Enable thumbnailing of PDF Documents">
<default type="bool" value="true"/>
<longdesc>Boolean options available: true enables thumbnailing and false disables the creation of new thumbnails</longdesc>
</entry>
</dir>
<dir name="application@pdf">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="Thumbnail command for PDF Documents">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
<longdesc>Valid command plus arguments for the PDF Document thumbnailer. See Nautilus thumbnailer documentation for more information.</longdesc>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="Enable thumbnailing of PDF Documents">
<default type="bool" value="true"/>
<longdesc>Boolean options available: true enables thumbnailing and false disables the creation of new thumbnails</longdesc>
</entry>
</dir>
<dir name="application@x-bzdvi">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
</default>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="">
<default type="bool" value="true"/>
</local_schema>
</entry>
</dir>
<dir name="application@x-gzdvi">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
</default>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="">
<default type="bool" value="true"/>
</local_schema>
</entry>
</dir>
<dir name="application@x-dvi">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
</default>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="">
<default type="bool" value="true"/>
</local_schema>
</entry>
</dir>
<dir name="image@vnd.djvu">
- <entry name="command" mtime="1326800723" type="schema" stype="string" owner="evince">
+ <entry name="command" mtime="1327840754" type="schema" stype="string" owner="evince">
<local_schema locale="C" short_desc="">
<default type="string">
<stringvalue>evince-thumbnailer -s %s %u %o</stringvalue>
</default>
</local_schema>
</entry>
- <entry name="enable" mtime="1326800723" type="schema" stype="bool" owner="evince">
+ <entry name="enable" mtime="1327840754" type="schema" stype="bool" owner="evince">
<local_schema locale="C" short_desc="">
<default type="bool" value="true"/>
</local_schema>
# This file was automatically created based on description files (*.desc)
-# by sane-desc 3.5 from sane-backends 1.0.22 on Mon Jan 16 20:59:57 2012
+# by sane-desc 3.5 from sane-backends 1.0.22 on Sun Jan 29 13:39:48 2012
#
# The entries below are used to detect a USB device and change owner
# and permissions on the "device node" used by libusb.
[General]
#Verbosity = 0
-# The following should be set to the local NFSv4 domain name (REQUIRED)
-Domain = local.domain.edu
+# The following should be set to the local NFSv4 domain name
+# The default is the host's DNS domain name.
+#Domain = local.domain.edu
+
+# The following is a comma-separated list of Kerberos realm
+# names that should be considered to be equivalent to the
+# local realm, such that <user>@REALM.A can be assumed to
+# be the same user as <user>@REALM.B
+# If not specified, the default local realm is the domain name,
+# which defaults to the host's DNS domain name,
+# translated to upper-case.
+# Note that if this value is specified, the local realm name
+# must be included in the list!
+#Local-Realms =
[Mapping]
#!/sbin/runscript
-# Copyright 1999-2011 Gentoo Foundation
+# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/net-wireless/bluez/files/bluetooth-init.d,v 1.2 2011/03/20 16:57:35 pacho Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-wireless/bluez/files/bluetooth-init.d-r1,v 1.1 2012/01/09 23:01:55 pacho Exp $
depend() {
after coldplug
}
start() {
- ebegin "Starting Bluetooth"
-
+ ebegin "Udev coldplug of bluetooth devices"
udevadm trigger --subsystem-match=bluetooth --action=add
eend $?
-
- if [ "${RFCOMM_ENABLE}" = "true" -a -x /usr/bin/rfcomm ]; then
- if [ -f "${RFCOMM_CONFIG}" ]; then
- eindent
- ebegin "Starting rfcomm"
- /usr/bin/rfcomm -f "${RFCOMM_CONFIG}" bind all
- eoutdent
- eend $?
- else
- ewarn "Not enabling rfcomm because RFCOMM_CONFIG does not exists"
- fi
- fi
}
stop() {
- ebegin "Shutting down Bluetooth"
- eend 0
+ return 0
}
keyword -prefix -timeout
}
-dir_writeable()
+dir_writable()
{
mkdir "$1"/.test.$$ 2>/dev/null && rmdir "$1"/.test.$$
}
if ! [ -d "$dir" ]; then
mkdir -p "$dir" || return $?
fi
- dir_writeable "$dir" || return 1
+ dir_writable "$dir" || return 1
chmod a+rwt "$dir" 2> /dev/null
cd "$dir" || return 1
if yesno $wipe_tmp; then
chmod 0664 "$1"
}
+migrate_to_run()
+{
+ src="$1"
+ dst="$2"
+ if [ -L $src -a "$(readlink -f $src)" != $dst ]; then
+ ewarn "$src does not point to $dst."
+ ewarn "Setting $src to point to $dst."
+ rm $src
+ elif [ ! -L $src -a -d $src ]; then
+ ebegin "Migrating $src to $dst"
+ cp -a $src/* $dst/
+ rm -rf $src
+ eend $?
+ fi
+ # If $src doesn't exist at all, just run this
+ if [ ! -e $src ]; then
+ ln -s $dst $src
+ fi
+}
+
start()
{
# Remove any added console dirs
local logw=false runw=false extra=
# Ensure that our basic dirs exist
- [ "$RC_UNAME" = Linux ] && extra=/var/lib/misc # Satisfy Linux FHS
- for x in /var/log /var/run /tmp $extra; do
+ if [ "$RC_UNAME" = Linux ]; then
+ # Satisfy Linux FHS
+ extra=/var/lib/misc
+ if [ ! -d /run ]; then
+ extra="/var/run $extra"
+ fi
+ else
+ extra=/var/run
+ fi
+ for x in /var/log /tmp $extra; do
if ! [ -d $x ]; then
if ! mkdir -p $x; then
eend 1 "failed to create needed directory $x"
fi
done
- if dir_writeable /var/run; then
+ if [ "$RC_UNAME" = Linux -a -d /run ] && false; then
+ migrate_to_run /var/lock /run/lock
+ migrate_to_run /var/run /run
+ fi
+
+ if dir_writable /var/run; then
ebegin "Creating user login records"
local xtra=
[ "$RC_UNAME" = NetBSD ] && xtra=x
cleanup_tmp_dir "$tmp"
done
- if dir_writeable /tmp; then
+ if dir_writable /tmp; then
# Make sure our X11 stuff have the correct permissions
# Omit the chown as bootmisc is run before network is up
# and users may be using lame LDAP auth #139411
fi
if yesno $log_dmesg; then
- if $logw || dir_writeable /var/log; then
+ if $logw || dir_writable /var/log; then
# Create an 'after-boot' dmesg log
if [ "$RC_SYS" != VSERVER -a "$RC_SYS" != OPENVZ ]; then
dmesg > /var/log/dmesg
retval=1
break
fi
- x=$(($x + 1))
+ : $(( x += 1 ))
done
eend $retval
if [ -n "$fsck_passno" ]; then
check_extra="[passno $fsck_passno] $check_extra"
+ if [ -n "$fsck_mnt" ]; then
+ eerror "Only 1 of fsck_passno and fsck_mnt must be set!"
+ return 1
+ fi
fi
ebegin "Checking local filesystems $check_extra"
+ # Append passno mounts
for p in $fsck_passno; do
local IFS="$_IFS"
case "$p" in
set -- "$@" $(fstabinfo --passno "$p")
unset IFS
done
+ # Append custom mounts
+ for m in $fsck_mnt ; do
+ local IFS="$_IFS"
+ set -- "$@" "$m"
+ unset IFS
+ done
if [ "$RC_UNAME" = Linux ]; then
fsck_opts="$fsck_opts -C0 -T"
- if [ -z "$fsck_passno" ]; then
+ if [ -z "$fsck_passno" -a -z "$fsck_mnt" ]; then
fsck_args=${fsck_args--A -p}
if echo 2>/dev/null >/.test.$$; then
rm -f /.test.$$
_reboot
fi;;
8) ewend 1 "Operational error"; return 0;;
- 12) ewend 1 "fsck interupted";;
+ 12) ewend 1 "fsck interrupted";;
*) eend 2 "Filesystems couldn't be fixed";;
esac
_abort || return 1
if [ -e /etc/adjtime ] && yesno $clock_adjfile; then
_hwclock --adjust $utc_cmd
- retval=$(($retval + $?))
+ : $(( retval += $? ))
fi
# If setting UTC, don't bother to run hwclock when first booting
else
_hwclock --systz $utc_cmd $clock_args
fi
- retval=$(($retval + $?))
+ : $(( retval += $? ))
fi
eend $retval "Failed to set the system clock"
n=1
while [ $n -le $ttyn ]; do
kbd_mode $kmode -C $ttydev$n
- n=$(($n + 1))
+ : $(( n += 1 ))
done
eend 0
[ -z "$args" ] && eval args=\$module_${aa}_args
[ -z "$args" ] && eval args=\$module_${xx}_args
eval modprobe -q "$mpargs" "$x" "$args"
- eend $? "Failed to load $x" && cnt=$(($cnt + 1))
+ eend $? "Failed to load $x" && : $(( cnt += 1 ))
done
einfo "Autoloaded $cnt module(s)"
}
need localmount
after bootmisc
provide net
- keyword -jail -prefix -vserver
+ keyword -shutdown -jail -prefix -vserver
case "${IFACE}" in
lo|lo0);;
- *) after net.lo net.lo0;;
+ *) after net.lo net.lo0 dbus;;
esac
if [ "$(command -v "depend_${IFVAR}")" = "depend_${IFVAR}" ]; then
eend 0
return 0
fi
- timeout=$((${timeout} - 1))
+ : $(( timeout -= 1 ))
[ "${efunc}" = "einfon" ] && printf "."
done
local i= len=
local IFS=.
for i in $1; do
- while [ ${i} != "0" ]; do
- len=$((${len} + ${i} % 2))
- i=$((${i} >> 1))
+ while [ ${i} -ne 0 ]; do
+ : $(( len += i % 2 ))
+ : $(( i >>= 1 ))
done
done
done
}
+_which()
+{
+ local i OIFS
+ # Empty
+ [ -z "$1" ] && return
+ # check paths
+ OIFS="$IFS"
+ IFS=:
+ for i in $PATH ; do
+ [ -x $i/$1 ] && echo $i/$1 && break
+ done
+ IFS=$OIFS
+}
+
+# Like _which, but also consider shell builtins, and multiple alternatives
+_program_available()
+{
+ [ -z "$1" ] && return 0
+ local x=
+ for x; do
+ case "${x}" in
+ /*) [ -x "${x}" ] && break;;
+ *) type "${x}" >/dev/null 2>&1 && break;;
+ esac
+ unset x
+ done
+ [ -n "${x}" ] && echo $x && return 0
+ return 1
+}
+
_show_address()
{
einfo "received address $(_get_inet_address "${IFACE}")"
echo "module_${i}_program_start='${PROGRAM_START}'" >> "${MODULESLIST}"
echo "module_${i}_program_stop='${PROGRAM_STOP}'" >> "${MODULESLIST}"
echo "module_${i}_provide='${PROVIDE}'" >> "${MODULESLIST}"
- i=$((${i} + 1))
+ : $(( i += 1 ))
done
echo "module_${i}=" >> "${MODULESLIST}"
)
local i=-1 x= mod= f= provides=
while true; do
- i=$((${i} + 1))
+ : $(( i += 1 ))
eval mod=\$module_${i}
[ -z "${mod}" ] && break
[ -e "${MODULESDIR}/${mod}.sh" ] || continue
eval set -- \$module_${i}_program
if [ -n "$1" ]; then
- x=
- for x; do
- [ -x "${x}" ] && break
- done
- [ -x "${x}" ] || continue
+ if ! _program_available "$@" >/dev/null; then
+ vewarn "Skipping module $mod due to missing program: $@"
+ continue
+ fi
fi
if ${starting}; then
eval set -- \$module_${i}_program_start
eval set -- \$module_${i}_program_stop
fi
if [ -n "$1" ]; then
- x=
- for x; do
- case "${x}" in
- /*) [ -x "${x}" ] && break;;
- *) type "${x}" >/dev/null 2>&1 && break;;
- esac
- unset x
- done
- [ -n "${x}" ] || continue
+ if ! _program_available "$@" >/dev/null; then
+ vewarn "Skipping module $mod due to missing program: $@"
+ continue
+ fi
fi
eval provides=\$module_${i}_provide
set -- ${config}
# We should support a space separated array for cidr configs
+ # But only as long as they do not contain other parameters for the address
if [ $# = 1 ]; then
unset IFS
set -- ${config}
# Of course, we may have a single address added old style.
- case "$2" in
- netmask|broadcast|brd|brd+|peer|pointopoint)
- local IFS="$__IFS"
- set -- ${config}
- ;;
- esac
+ # If the NEXT argument is a v4 or v6 address, it's the next config.
+ # Otherwise, it's arguments to the first config...
+ if [ "${2#*.*}" = "${2}" -a "${2#*:*}" = "${2}" ]; then
+ # Not an IPv4/IPv6
+ local IFS="$__IFS"
+ set -- ${config}
+ fi
fi
# Ensure that loopback has the correct address
# so modules can influence it
for cmd; do
eval config_${config_index}="'${cmd}'"
- config_index=$((${config_index} + 1))
+ : $(( config_index += 1 ))
done
# Terminate the list
eval config_${config_index}=
config_index=0
for cmd in ${fallback}; do
eval fallback_${config_index}="'${cmd}'"
- config_index=$((${config_index} + 1))
+ : $(( config_index += 1 ))
done
# Terminate the list
eval fallback_${config_index}=
{
local IFACE=${RC_SVCNAME#*.} oneworked=false fallback=false module=
local IFVAR=$(shell_var "${IFACE}") cmd= our_metric=
- local metric=0
+ local metric=0 _up_before_preup
+ eval _up_before_preup="\$up_before_preup_${IFVAR}"
+ [ -z "${_up_before_preup}" ] && _up_before_preup=$up_before_preup
einfo "Bringing up interface ${IFACE}"
eindent
# available in preup and afterwards incase the user inadvertently
# brings it down
if [ "$(command -v preup)" = "preup" ]; then
- _up 2>/dev/null
+ yesno "${_up_before_preup:-yes}" && _up 2>/dev/null
ebegin "Running preup"
eindent
preup || return 1
if [ -n "${our_metric}" ]; then
metric=${our_metric}
elif [ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ]; then
- metric=$((${metric} + $(_ifindex)))
+ : $(( metric += $(_ifindex) ))
fi
while true; do
eindent
eval config_${config_index}=\$config
unset fallback_${config_index}
- config_index=$((${config_index} - 1))
+ : $(( config_index -= 1 ))
fi
fi
eoutdent
- config_index=$((${config_index} + 1))
+ : $(( config_index += 1 ))
done
if ! ${oneworked}; then
eend $?
fi
+ ewarn
+ ewarn "The $RC_SVCNAME script is deprecated and will be"
+ ewarn "removed in the future."
+ ewarn "Please use the net.* scripts to manage your network interfaces."
+ ewarn
+
einfo "Starting network"
routeflush
if [ "$RC_UNAME" = "Linux" ]; then
tentative || break
[ $r = 5 ] && vebegin "Waiting for tentative addresses"
sleep 1
- r=$(($r - 1))
+ : $(( r -= 1 ))
done
if [ $r != 5 ]; then
[ $r != 0 ]
while [ $i -le $ttyn ]; do
setleds -D "$1"num < $dev$i || retval=1
- i=$(($i + 1))
+ : $(( i += 1 ))
done
return $retval
--- /dev/null
+#!/sbin/runscript
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-wireless/bluez/files/rfcomm-init.d,v 1.1 2011/12/31 21:09:18 pacho Exp $
+
+depend() {
+ after coldplug
+ need dbus localmount hostname
+}
+
+start() {
+ if [ "${RFCOMM_ENABLE}" = "true" -a -x /usr/bin/rfcomm ]; then
+ if [ -f "${RFCOMM_CONFIG}" ]; then
+ ebegin "Starting rfcomm"
+ /usr/bin/rfcomm -f "${RFCOMM_CONFIG}" bind all
+ eend $?
+ else
+ ewarn "Not enabling rfcomm because RFCOMM_CONFIG does not exists"
+ fi
+ fi
+}
+
+stop() {
+ ebegin "Shutting down rfcomm"
+ /usr/bin/rfcomm release all
+ eend $?
+}
start()
{
+ ewarn
+ ewarn "The $RC_SVCNAME script is deprecated and will be"
+ ewarn "removed in the future."
+ ewarn "Please use the net.* scripts to manage your network interfaces."
+ ewarn
do_routes "Adding" "add"
}
eend $?
fi
fi
+
+ # Setup Kernel Support for configfs
+ if [ -d /sys/kernel/config ] && ! mountinfo -q /sys/kernel/config; then
+ if grep -qs configfs /proc/filesystems; then
+ ebegin "Mounting config filesystem"
+ mount -n -t configfs -o nodev,noexec,nosuid \
+ configfs /sys/kernel/config
+ eend $?
+ fi
+ fi
+
+ # set up kernel support for cgroups
+ if [ -d /sys/fs/cgroup ] && ! mountinfo -q /sys/fs/cgroup; then
+ if grep -qs cgroup /proc/filesystems; then
+ ebegin "Mounting cgroup filesystem"
+ local opts="nodev,noexec,nosuid,mode=755,size=${rc_cgroupsize:-10m}"
+ mount -n -t tmpfs -o ${opts} cgroup_root /sys/fs/cgroup
+ eend $?
+ fi
+ fi
+}
+
+mount_cgroups()
+{
+ yesno ${rc_cgroups:-YES} || return 0
+ if [ ! -e /proc/cgroups ]; then
+ return 0
+ fi
+
+ while read name hier groups enabled rest; do
+ case "${enabled}" in
+ 1) mkdir /sys/fs/cgroup/${name}
+ mount -t cgroup -o nodev,noexec,nosuid,${name} \
+ ${name} /sys/fs/cgroup/${name}
+ ;;
+ esac
+ done < /proc/cgroups
}
start()
retval=$?
if [ $retval -eq 0 ]; then
mount_misc
+ retval=$?
+ fi
+ if [ $retval -eq 0 ]; then
+ mount_cgroups
+ retval=$?
fi
return $retval
}
n=1
while [ ${n} -le "$ttyn" ]; do
printf "\033%s" "$termencoding" >$ttydev$n
- n=$(($n + 1))
+ : $(( n += 1 ))
done
# Save the encoding for use immediately at boot
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
+command=/sbin/udevd
+command_args="--daemon ${udev_opts}"
description="Run udevd and create the device-nodes"
-[ -e /etc/udev/udev.conf ] && . /etc/udev/udev.conf
-
+persistent_cd_disable="${persistent_cd_disable:-no}"
+persistent_net_disable="${persistent_net_disable:-no}"
rc_coldplug=${rc_coldplug:-${RC_COLDPLUG:-YES}}
+udev_debug="${udev_debug:-no}"
+udev_monitor="${udev_monitor:-no}"
+udev_monitor_keep_running="${udev_monitor_keep_running:-no}"
+udev_settle_timeout="${udev_settle_timeout:-60}"
+kv_min="${kb_min:-2.6.32}"
depend()
{
- if [ -f /etc/init.d/sysfs ]; then
- # require new enough openrc with sysinit being extra runlevel
- # on linux we just check if sysfs init-script exists
- # this is to silence out ugly warnings about not-existing sysfs script
- provide dev
- if yesno "${rc_device_tarball:-no}"; then
- need sysfs udev-mount udev-dev-tarball
- else
- need sysfs udev-mount
- fi
- before checkfs fsck
+ provide dev
+ need sysfs udev-mount
+ before checkfs fsck
- # udev does not work inside vservers
- keyword novserver nolxc
- fi
+ # udev does not work inside vservers
+ keyword -vserver -lxc
}
-cleanup()
+KV_to_int()
{
- # fail more gracely and not leave udevd running
- start-stop-daemon --stop --exec /sbin/udevd
- exit 1
+ [ -z $1 ] && return 1
+
+ local x=${1%%[!0-9.]*} y= z=
+ local KV_MAJOR=${x%%.*}
+ y=${x#*.}
+ [ "$x" = "$y" ] && y=0.0
+ local KV_MINOR=${y%%.*}
+ z=${y#*.}
+ [ "$y" = "$z" ] && z=0
+ local KV_MICRO=${z%%.*}
+ local KV_int=$((${KV_MAJOR} * 65536 + ${KV_MINOR} * 256 + ${KV_MICRO} ))
+
+ # We make version 2.2.0 the minimum version we will handle as
+ # a sanity check ... if its less, we fail ...
+ [ "${KV_int}" -lt 131584 ] && return 1
+
+ echo "${KV_int}"
}
-disable_hotplug_agent()
+_RC_GET_KV_CACHE=""
+get_KV()
{
- if [ -e /proc/sys/kernel/hotplug ]; then
- echo "" >/proc/sys/kernel/hotplug
+ if [ -z "${_RC_GET_KV_CACHE}" ] ; then
+ _RC_GET_KV_CACHE="$(uname -r)"
fi
+ echo "$(KV_to_int "${_RC_GET_KV_CACHE}")"
+ return $?
}
-root_link()
+# FIXME
+# Instead of this script testing kernel version, udev itself should
+# Maybe something like udevd --test || exit $?
+check_kernel()
{
- /lib64/udev/write_root_link_rule
+ if [ $(get_KV) -lt $(KV_to_int ${kv_min}) ]; then
+ eerror "Your kernel is too old to work with this version of udev."
+ eerror "Current udev only supports Linux kernel ${kv_min} and newer."
+ return 1
+ fi
+ return 0
+}
+
+get_rundir()
+{
+ echo $(udevadm info --run)
+}
+
+cleanup()
+{
+ # fail more gracely and not leave udevd running
+ start-stop-daemon --stop --exec /sbin/udevd
+ exit 1
}
rules_disable_switch()
# this function disables rules files
# by creating new files with the same name
# in a temp rules directory with higher priority
- local f=/dev/.udev/rules.d/"$1" bname="$1" onoff="$2"
+ local f=$(get_rundir)/rules.d/"$1" bname="$1" onoff="$2"
if yesno "${onoff}"; then
echo "# This file disables ${bname} due to /etc/conf.d/udev" \
fi
}
-# only called on openrc
-is_service_enabled() {
+is_service_enabled()
+{
local svc="$1"
[ ! -e "/etc/init.d/${svc}" ] && return 1
return 1
}
-check_openrc_net()
+start_pre()
{
- local f=/dev/.udev/rules.d/90-network.rules
- is_service_enabled network || return 0
+ if [ -d /run ]; then
+ checkpath -d -m 0755 -o root:root -q /run/udev
+ fi
- # disable network hotplugging
- echo "# This file disables network hotplug events calling old-style openrc net scripts" >> "${f}"
- echo "# as we use new-style network init script /etc/init.d/network" >> "${f}"
-}
+ if is_service_enabled network; then
+ # disable network hotplugging
+ local f="$(get_rundir)/rules.d/90-network.rules"
+ echo "# This file disables network hotplug events calling" >> "${f}"
+ echo "# old-style openrc net scripts" >> "${f}"
+ echo "# as we use /etc/init.d/network to set up our network" >> "${f}"
+ fi
+
+ if [ ! -e /etc/runlevels/${RC_DEFAULTLEVEL:-default}/udev-postmount ]; then
+ ewarn "You should add udev-postmount service to your default runlevel."
+ fi
+
+ /lib/udev/write_root_link_rule
+
+ rules_disable_switch 75-persistent-net-generator.rules "${persistent_net_disable}"
+ rules_disable_switch 75-cd-aliases-generator.rules ${persistent_cd_disable}
+
+ if [ -e /proc/sys/kernel/hotplug ]; then
+ echo "" >/proc/sys/kernel/hotplug
+ fi
-start_udevd()
-{
# load unix domain sockets if built as module, Bug #221253
- if [ -e /proc/modules ] ; then
- modprobe -q unix 2>/dev/null
+ # and not yet loaded, Bug #363549
+ if [ ! -e /proc/net/unix ]; then
+ if ! modprobe unix; then
+ eerror "Cannot load the unix domain socket module"
+ fi
fi
- local opts="${udev_opts}"
- ebegin "Starting udevd"
- if yesno "${udev_debug:-no}"; then
- /sbin/udevd --daemon ${opts} --debug 2>/dev/.udev/udev.log
- else
- start-stop-daemon --start --exec /sbin/udevd -- --daemon ${opts}
+ if yesno "${udev_debug}"; then
+ command_args="${command_args} --debug 2> $(get_rundir)/udev.log"
fi
+}
- eend $?
+start_udevmonitor()
+{
+ yesno "${udev_monitor}" || return 0
+
+ udevmonitor_log="$(get_rundir)/udevmonitor.log"
+ udevmonitor_pid="$(get_rundir)/udevmonitor.pid"
+
+ einfo "udev: Running udevadm monitor ${udev_monitor_opts} to log all events"
+ start-stop-daemon --start --stdout "${udevmonitor_log}" \
+ --make-pidfile --pidfile "${udevmonitor_pid}" \
+ --background --exec /sbin/udevadm -- monitor ${udev_monitor_opts}
}
-# populate /dev with devices already found by the kernel
populate_dev()
{
if get_bootparam "nocoldplug" ; then
fi
ebegin "Populating /dev with existing devices through uevents"
- udevadm control --property=STARTUP=1
- if yesno "${rc_coldplug}"; then
- udevadm trigger --action="add"
- else
+ if ! yesno "${rc_coldplug}"; then
# Do not run any init-scripts, Bug #206518
udevadm control --property=do_not_run_plug_service=1
-
- # only create device nodes
- udevadm trigger --action="add" --attr-match=dev
-
- # run persistent-net stuff, bug 191466
- udevadm trigger --action="add" --subsystem-match=net
fi
+ udevadm trigger --type=subsystems --action=add
+ udevadm trigger --type=devices --action=add
eend $?
# we can speed up booting under these conditions:
# * using devtmpfs so kernel creates device nodes for us
- # * only using kernel created device nodes at boot (in /etc/fstab and elsewhere)
+ # * only using kernel created device nodes at boot
+ # (in /etc/fstab and elsewhere)
#
ebegin "Waiting for uevents to be processed"
- udevadm settle --timeout=${udev_settle_timeout:-60}
+ udevadm settle --timeout=${udev_settle_timeout}
eend $?
udevadm control --property=do_not_run_plug_service=
- udevadm control --property=STARTUP=
return 0
}
-# for debugging
-start_udevmonitor()
-{
- yesno "${udev_monitor:-no}" || return 0
-
- udevmonitor_log=/dev/.udev/udevmonitor.log
- udevmonitor_pid=/dev/.udev/udevmonitor.pid
-
- einfo "udev: Running udevadm monitor ${udev_monitor_opts} to get a log of all events"
- start-stop-daemon --start --stdout "${udevmonitor_log}" \
- --make-pidfile --pidfile "${udevmonitor_pid}" \
- --background --exec /sbin/udevadm -- monitor ${udev_monitor_opts}
-}
-
-stop_udevmonitor()
-{
- yesno "${udev_monitor:-no}" || return 0
-
- if yesno "${udev_monitor_keep_running:-no}"; then
- ewarn "udev: udevmonitor is still running and writing into ${udevmonitor_log}"
- else
- einfo "udev: Stopping udevmonitor: Log is in ${udevmonitor_log}"
- start-stop-daemon --stop --pidfile "${udevmonitor_pid}" --exec /sbin/udevadm
- fi
-}
-
-display_hotplugged_services() {
- local svcfile= svc= services=
- for svcfile in "${RC_SVCDIR}"/hotplugged/*; do
- svc="${svcfile##*/}"
- [ -x "${svcfile}" ] || continue
-
- services="${services} ${svc}"
- done
- [ -n "${services}" ] && einfo "Device initiated services:${HILITE}${services}${NORMAL}"
-}
-
check_persistent_net()
{
# check if there are problems with persistent-net
# is installed into /usr/bin and not available at boot.
dups=$(
RULES_FILE='/etc/udev/rules.d/70-persistent-net.rules'
- . /lib64/udev/rule_generator.functions
+ . /lib/udev/rule_generator.functions
find_all_rules 'NAME=' '.*' | \
tr ' ' '\n' | \
sort | \
return 0
}
-start()
+stop_udevmonitor()
{
- # do not run this on old baselayout where udev-addon gets loaded
- if [ ! -f /etc/init.d/sysfs ]; then
- eerror "The $SVCNAME init-script is written for baselayout-2!"
- eerror "Please do not use it with baselayout-1!".
- return 1
+ yesno "${udev_monitor}" || return 0
+
+ if yesno "${udev_monitor_keep_running}"; then
+ ewarn "udev: udevmonitor is still running and writing into ${udevmonitor_log}"
+ else
+ einfo "udev: Stopping udevmonitor: Log is in ${udevmonitor_log}"
+ start-stop-daemon --stop --pidfile "${udevmonitor_pid}" --exec /sbin/udevadm
fi
+}
- check_openrc_net
- _start
-
- display_hotplugged_services
+display_hotplugged_services()
+{
+ local svcfile= svc= services=
+ for svcfile in "${RC_SVCDIR}"/hotplugged/*; do
+ svc="${svcfile##*/}"
+ [ -x "${svcfile}" ] || continue
- return 0
+ services="${services} ${svc}"
+ done
+ [ -n "${services}" ] && einfo "Device initiated services:${HILITE}${services}${NORMAL}"
}
-_start()
+start_post()
{
- if [ ! -e /etc/runlevels/${RC_DEFAULTLEVEL:-default}/udev-postmount ]; then
- ewarn "You should add udev-postmount service to your default runlevel."
- fi
-
- root_link
- rules_disable_switch 75-persistent-net-generator.rules "${persistent_net_disable:-no}"
- rules_disable_switch 75-cd-aliases-generator.rules ${persistent_cd_disable:-no}
-
- disable_hotplug_agent
- start_udevd || cleanup
start_udevmonitor
- populate_dev || cleanup
-
+ populate_dev
check_persistent_net
-
check_udev_works || cleanup
stop_udevmonitor
-
+ display_hotplugged_services
return 0
}
-
-stop() {
- ebegin "Stopping udevd"
- start-stop-daemon --stop --exec /sbin/udevd
- eend $?
-}
-
+++ /dev/null
-#!/sbin/runscript
-# Copyright 1999-2010 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-description="Maintain a tarball of not udev managed device nodes"
-[ -e /etc/conf.d/udev ] && . /etc/conf.d/udev
-
-rc_device_tarball=${rc_device_tarball:-${RC_DEVICE_TARBALL:-NO}}
-device_tarball=/lib64/udev/state/devices.tar.bz2
-
-depend() {
- if [ -f /etc/init.d/sysfs ]; then
- need udev-mount
- fi
-}
-
-start()
-{
- _start
-}
-
-_start() {
- if yesno "${rc_device_tarball}" && \
- [ -s "${device_tarball}" ]
- then
- ebegin "Populating /dev with saved device nodes"
- tar -jxpf "${device_tarball}" -C /dev
- eend $?
- fi
-}
-
-stop() {
- if [ -e /dev/.devfsd ] || [ ! -e /dev/.udev ] || [ ! -z "${CDBOOT}" ] || \
- ! yesno "${rc_device_tarball}" || \
- ! touch "${device_tarball}" 2>/dev/null
- then
- return 0
- fi
-
- ebegin "Saving device nodes"
- # Handle our temp files
- save_tmp_base=/tmp/udev.savedevices."$$"
- devices_udev="${save_tmp_base}"/devices.udev
- devices_real="${save_tmp_base}"/devices.real
- devices_totar="${save_tmp_base}"/devices.totar
- device_tmp_tarball="${save_tmp_base}"/devices
-
- rm -rf "${save_tmp_base}"
- mkdir "${save_tmp_base}"
- touch "${devices_udev}" "${devices_real}" \
- "${devices_totar}" "${device_tmp_tarball}"
-
- if [ -f "${devices_udev}" -a -f "${devices_real}" -a \
- -f "${devices_totar}" -a -f "${device_tmp_tarball}" ]
- then
- cd /dev
- # Find all devices, but ignore .udev directory
- find . -xdev -type b -or -type c -or -type l | \
- cut -d/ -f2- | \
- grep -v ^\\.udev >"${devices_real}"
-
- # Figure out what udev created
- udevadm info --export-db | sed -ne 's,^[SN]: \(.*\),\1,p' >"${devices_udev}"
- # These ones we also do not want in there
- for x in MAKEDEV core fd initctl pts shm stderr stdin stdout root; do
- echo "${x}" >> "${devices_udev}"
- done
- if [ -d /lib64/udev/devices ]; then
- cd /lib64/udev/devices
- find . -xdev -type b -or -type c -or -type l | \
- cut -d/ -f2- >> "${devices_udev}"
- cd /dev
- fi
-
- fgrep -x -v -f "${devices_udev}" "${devices_real}" > "${devices_totar}"
-
- # Now only tarball those not created by udev if we have any
- if [ -s "${devices_totar}" ]; then
- # we dont want to descend into mounted filesystems (e.g. devpts)
- # looking up username may involve NIS/network
- # and net may be down
- tar --one-file-system --numeric-owner \
- -jcpf "${device_tmp_tarball}" -T "${devices_totar}"
- mv -f "${device_tmp_tarball}" "${device_tarball}"
- else
- rm -f "${device_tarball}"
- fi
- eend 0
- else
- eend 1 "Could not create temporary files!"
- fi
-
- rm -rf "${save_tmp_base}"
-}
-
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-description="Mount tmpfs on /dev"
-[ -e /etc/conf.d/udev ] && . /etc/conf.d/udev
+description="mount devtmpfs or tmpfs on /dev"
-# get_KV and KV_to_int
-. /lib64/udev/shell-compat-KV.sh
-
-# FIXME
-# Instead of this script testing kernel version, udev itself should
-# Maybe something like udevd --test || exit $?
-check_kernel()
+depend()
{
- if [ $(get_KV) -lt $(KV_to_int '2.6.25') ]; then
- eerror "Your kernel is too old to work with this version of udev."
- eerror "Current udev only supports Linux kernel 2.6.25 and newer."
- return 1
- fi
-
- yesno "${unreliable_kernel_warning:-yes}" || return 0
-
- if [ $(get_KV) -lt $(KV_to_int '2.6.27') ]; then
- ewarn "You need at least Linux kernel 2.6.27 for reliable operation of udev."
- fi
- return 0
+ keyword -vserver -lxc
}
-
mount_dev_directory()
{
if mountinfo -q /dev; then
return 0
}
-
start()
{
- # do not run this on too old baselayout - udev-addon is already loaded!
- if [ ! -f /etc/init.d/sysfs ]; then
- eerror "The $SVCNAME init-script is written for baselayout-2!"
- eerror "Please do not use it with baselayout-1!".
- return 1
- fi
-
- _start
-}
-
-_start()
-{
- check_kernel || return 1
mount_dev_directory || return 1
# Selinux lovin; /selinux should be mounted by selinux-patched init
HAVE_SELINUX=false
fi
- # make sure it exists
- mkdir -p /dev/.udev /dev/.udev/rules.d
-
seed_dev
-
return 0
}
#!/sbin/runscript
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-fs/udev/files/164/udev-postmount.initd,v 1.1 2010/10/30 13:53:54 zzam Exp $
-depend() {
+udev_version()
+{
+ echo $(udevadm --version)
+}
+
+depend()
+{
need localmount
- after dbus # for trigger failed
+ if [ $(udev_version) -lt 175 ]; then
+ after dbus # for trigger failed
+ fi
+ keyword -vserver -lxc
}
dir_writeable()
# store persistent-rules that got created while booting
# when / was still read-only
-store_persistent_rules() {
+store_persistent_rules()
+{
# only continue if rules-directory is writable
dir_writeable /etc/udev/rules.d || return 0
local file dest
- for file in /dev/.udev/tmp-rules--*; do
+ for file in "${RUNDIR}"/tmp-rules--*; do
dest=${file##*tmp-rules--}
[ "$dest" = '*' ] && break
type=${dest##70-persistent-}
done
}
-
-start() {
+start()
+{
+ RUNDIR=$(udevadm info --run)
# check if this system uses udev
- [ -d /dev/.udev/ ] || return 0
+ [ -d "${RUNDIR}" ] || return 0
einfo "Doing udev cleanups"
- # Run the events that failed at first udev trigger
- udevadm trigger --type=failed -v
+ if [ $(udev_version) -lt 175 ]; then
+ # Run the events that failed at first udev trigger
+ udevadm trigger --type=failed -v
+ fi
# store persistent-rules that got created while booting
# when / was still read-only
store_persistent_rules
}
-stop() {
- :
+stop()
+{
+ return 0
}
# vim:ts=4
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license.
-: ${urandom_seed:=${URANDOM_SEED:-/var/run/random-seed}}
+: ${urandom_seed:=${URANDOM_SEED:-/var/lib/misc/random-seed}}
description="Initializes the random number generator."
depend()
local psz=1
if [ -e /proc/sys/kernel/random/poolsize ]; then
- psz=$(($(cat /proc/sys/kernel/random/poolsize) / 4096))
+ : $(( psz = $(cat /proc/sys/kernel/random/poolsize) / 4096 ))
fi
( # sub shell to prevent umask pollution
-/usr/lib/jvm/icedtea6-bin
\ No newline at end of file
+/usr/lib/jvm//sun-jdk-1.6
\ No newline at end of file
# Contributes by Chuck Short
#
+#/var/log/apache2/*log {
+# missingok
+# notifempty
+# sharedscripts
+# rotate 10
+# weekly
+# size 1m
+# olddir /var/log/apache2/%Y-%m
+# postrotate
+# /etc/init.d/apache2 reload > /dev/null 2>&1 || true
+# endscript
+#}
+
+script apache2-reload
+ /etc/init.d/apache2 reload >/dev/null || true
+endscript
+
+#rotate 10
+daily
+
/var/log/apache2/*log {
- missingok
- notifempty
- sharedscripts
- rotate 10
- weekly
- size 1m
- olddir /var/log/apache2/%Y-%m
- postrotate
- /etc/init.d/apache2 reload > /dev/null 2>&1 || true
- endscript
+ size 4m
+ olddir /var/log/apache2/%Y-%m
+ postrotate apache2-reload
}
+# vim: ts=4 filetype=conf
#
# To put this file in a different directory and override /etc/lvm set
# the environment variable LVM_SYSTEM_DIR before running the tools.
+#
+# N.B. Take care that each setting only appears once if uncommenting
+# example settings in this file.
# This section allows you to configure which block devices should
# to use with LVM2.
scan = [ "/dev" ]
+ # If set, the cache of block device nodes with all associated symlinks
+ # will be constructed out of the existing udev database content.
+ # This avoids using and opening any inapplicable non-block devices or
+ # subdirectories found in the device directory. This setting is applied
+ # to udev-managed device directory only, other directories will be scanned
+ # fully. LVM2 needs to be compiled with udev support for this setting to
+ # take effect. N.B. Any device node or symlink not managed by udev in
+ # udev directory will be ignored with this setting on.
+ obtain_device_list_from_udev = 1
+
# If several entries in the scanned directories correspond to the
# same block device and the tools need to display a name for device,
# all the pathnames are matched against each item in the following
# 1 enables; 0 disables.
md_chunk_alignment = 1
+ # Default alignment of the start of a data area in MB. If set to 0,
+ # a value of 64KB will be used. Set to 1 for 1MiB, 2 for 2MiB, etc.
+ # default_data_alignment = 1
+
# By default, the start of a PV's data area will be a multiple of
# the 'minimum_io_size' or 'optimal_io_size' exposed in sysfs.
# - minimum_io_size - the smallest request the device can perform
data_alignment_detection = 1
# Alignment (in KB) of start of data area when creating a new PV.
- # If a PV is placed directly upon an md device and md_chunk_alignment or
- # data_alignment_detection is enabled this parameter is ignored.
- # Set to 0 for the default alignment of 1MB or page size, if larger.
+ # md_chunk_alignment and data_alignment_detection are disabled if set.
+ # Set to 0 for the default alignment (see: data_alignment_default)
+ # or page size, if larger.
data_alignment = 0
# By default, the start of the PV's aligned data area will be shifted by
# windows partitioning will have an alignment_offset of 3584 bytes
# (sector 7 is the lowest aligned logical block, the 4KB sectors start
# at LBA -1, and consequently sector 63 is aligned on a 4KB boundary).
+ # But note that pvcreate --dataalignmentoffset will skip this detection.
# 1 enables; 0 disables.
data_alignment_offset_detection = 1
# in recovery situations.
ignore_suspended_devices = 0
+ # During each LVM operation errors received from each device are counted.
+ # If the counter of a particular device exceeds the limit set here, no
+ # further I/O is sent to that device for the remainder of the respective
+ # operation. Setting the parameter to 0 disables the counters altogether.
+ disable_after_error_count = 0
+
# Allow use of pvcreate --uuid without requiring --restorefile.
require_restorefile_with_uuid = 1
+
+ # Minimum size (in KB) of block devices which can be used as PVs.
+ # In a clustered environment all nodes must use the same value.
+ # Any value smaller than 512KB is ignored.
+
+ # Ignore devices smaller than 2MB such as floppy drives.
+ pv_min_size = 2048
+
+ # The original built-in setting was 512 up to and including version 2.02.84.
+ # pv_min_size = 512
+
+ # Issue discards to a logical volumes's underlying physical volume(s) when
+ # the logical volume is no longer using the physical volumes' space (e.g.
+ # lvremove, lvreduce, etc). Discards inform the storage that a region is
+ # no longer in use. Storage that supports discards advertise the protocol
+ # specific way discards should be issued by the kernel (TRIM, UNMAP, or
+ # WRITE SAME with UNMAP bit set). Not all storage will support or benefit
+ # from discards but SSDs and thinly provisioned LUNs generally do. If set
+ # to 1, discards will only be issued if both the storage and kernel provide
+ # support.
+ # 1 enables; 0 disables.
+ issue_discards = 0
}
+# This section allows you to configure the way in which LVM selects
+# free space for its Logical Volumes.
+#allocation {
+# When searching for free space to extend an LV, the "cling"
+# allocation policy will choose space on the same PVs as the last
+# segment of the existing LV. If there is insufficient space and a
+# list of tags is defined here, it will check whether any of them are
+# attached to the PVs concerned and then seek to match those PV tags
+# between existing extents and new extents.
+# Use the special tag "@*" as a wildcard to match any PV tag.
+#
+# Example: LVs are mirrored between two sites within a single VG.
+# PVs are tagged with either @site1 or @site2 to indicate where
+# they are situated.
+#
+# cling_tag_list = [ "@site1", "@site2" ]
+# cling_tag_list = [ "@*" ]
+#
+# Changes made in version 2.02.85 extended the reach of the 'cling'
+# policies to detect more situations where data can be grouped
+# onto the same disks. Set this to 0 to revert to the previous
+# algorithm.
+#
+# maximise_cling = 1
+#
+# Set to 1 to guarantee that mirror logs will always be placed on
+# different PVs from the mirror images. This was the default
+# until version 2.02.85.
+#
+# mirror_logs_require_separate_pvs = 0
+#}
+
# This section that allows you to configure the nature of the
# information that LVM2 reports.
log {
# Treat any internal errors as fatal errors, aborting the process that
# encountered the internal error. Please only enable for debugging.
abort_on_internal_errors = 0
+
+ # Check whether CRC is matching when parsed VG is used multiple times.
+ # This is useful to catch unexpected internal cached volume group
+ # structure modification. Please only enable for debugging.
+ detect_internal_vg_cache_corruption = 0
+
+ # If set to 1, no operations that change on-disk metadata will be permitted.
+ # Additionally, read-only commands that encounter metadata in need of repair
+ # will still be allowed to proceed exactly as if the repair had been
+ # performed (except for the unchanged vg_seqno).
+ # Inappropriate use could mess up your system, so seek advice first!
+ metadata_read_only = 0
+
+ # 'mirror_segtype_default' defines which segtype will be used when the
+ # shorthand '-m' option is used for mirroring. The possible options are:
+ #
+ # "mirror" - The original RAID1 implementation provided by LVM2/DM. It is
+ # characterized by a flexible log solution (core, disk, mirrored)
+ # and by the necessity to block I/O while reconfiguring in the
+ # event of a failure. Snapshots of this type of RAID1 can be
+ # problematic.
+ #
+ # "raid1" - This implementation leverages MD's RAID1 personality through
+ # device-mapper. It is characterized by a lack of log options.
+ # (A log is always allocated for every device and they are placed
+ # on the same device as the image - no separate devices are
+ # required.) This mirror implementation does not require I/O
+ # to be blocked in the kernel in the event of a failure.
+ #
+ # Specify the '--type <mirror|raid1>' option to override this default
+ # setting.
+ mirror_segtype_default = "mirror"
}
activation {
+ # Set to 1 to perform internal checks on the operations issued to
+ # libdevmapper. Useful for debugging problems with activation.
+ # Some of the checks may be expensive, so it's best to use this
+ # only when there seems to be a problem.
+ checks = 0
+
# Set to 0 to disable udev synchronisation (if compiled into the binaries).
# Processes will not wait for notification from udev.
# They will continue irrespective of any possible udev processing
# while any logical volumes are active.
udev_rules = 1
+ # Set to 1 for LVM2 to verify operations performed by udev. This turns on
+ # additional checks (and if necessary, repairs) on entries in the device
+ # directory after udev has completed processing its events.
+ # Useful for diagnosing problems with LVM2/udev interactions.
+ verify_udev_operations = 0
+
# How to fill in missing stripes if activating an incomplete volume.
# Using "error" will make inaccessible parts of the device return
# I/O errors on access. You can instead use a device path, in which
mirror_log_fault_policy = "allocate"
mirror_image_fault_policy = "remove"
+ # 'snapshot_autoextend_threshold' and 'snapshot_autoextend_percent' define
+ # how to handle automatic snapshot extension. The former defines when the
+ # snapshot should be extended: when its space usage exceeds this many
+ # percent. The latter defines how much extra space should be allocated for
+ # the snapshot, in percent of its current size.
+ #
+ # For example, if you set snapshot_autoextend_threshold to 70 and
+ # snapshot_autoextend_percent to 20, whenever a snapshot exceeds 70% usage,
+ # it will be extended by another 20%. For a 1G snapshot, using up 700M will
+ # trigger a resize to 1.2G. When the usage exceeds 840M, the snapshot will
+ # be extended to 1.44G, and so on.
+ #
+ # Setting snapshot_autoextend_threshold to 100 disables automatic
+ # extensions. The minimum value is 50 (A setting below 50 will be treated
+ # as 50).
+
+ snapshot_autoextend_threshold = 100
+ snapshot_autoextend_percent = 20
+
# While activating devices, I/O to devices being (re)configured is
# suspended, and as a precaution against deadlocks, LVM2 needs to pin
# any memory it is using so it is not paged out. Groups of pages that
AdobeFlash-10 \
AdobeFlash-10.1 \
skype-eula \
+ Oracle-BCLA-JavaSE \
"
EMERGE_DEFAULT_OPTS="--with-bdeps y "
|____/|_| \__,_|_| |_|_|
-Der Antichrist. Fluch auf das Christenthum.
-24.
-... Die Juden sind das merkwürdigste Volk der Weltgeschichte, weil sie,
-vor die Frage von Sein und Nichtsein gestellt, mit einer vollkommen
-unheimlichen Bewusstheit das Sein um jeden Preis vorgezogen haben:
-dieser Preis war die radikale Fälschung aller Natur, aller
-Natürlichkeit, aller Realität, der ganzen inneren Welt so gut als der
-äusseren. Sie grenzten sich ab gegen alle Bedingungen, unter denen
-bisher ein Volk leben konnte, leben durfte, sie schufen aus sich einen
-Gegensatz-Begriff zu natürlichen Bedingungen, - sie haben, der Reihe
-nach, die Religion, den Cultus, die Moral, die Geschichte, die
-Psychologie auf eine unheilbare Weise in den Widerspruch zu deren
-Natur-Werthen umgedreht. Wir begegnen demselben Phänomene noch einmal
-und in unsäglich vergrösserten Proportionen, trotzdem nur als Copie: -
-die christliche Kirche entbehrt, im Vergleich zum "Volk der Heiligen",
-jedes Anspruchs auf Originalität. Die Juden sind, ebendamit, das
-verhängnissvollste Volk der Weltgeschichte: in ihrer Nachwirkung haben
-sie die Menschheit dermaassen falsch gemacht, daß heute noch der
-Christ antijüdisch fühlen kann, ohne sich als die letzte jüdische
-Consequenz zu verstehn.
- -- Friedrich Wilhelm Nietzsche
+Da nun den Menschen eigentlich nichts interessiert als seine
+Meinung, so sieht jedermann, der eine Meinung vorträgt, sich rechts
+und links nach Hilfsmitteln um, damit er sich und andere bestärken
+möge. Des Wahren bedient man sich, solange es brauchbar ist, aber
+leidenschaftlich rhetorisch ergreift man das Falsche, sobald man es
+für den Augenblick nutzen, damit, als einem Halbargumente, blenden,
+als mit einem Lückenbüßer das Zerstückelte scheinbar vereinigen kann.
+Dieses zu erfahren, war mir erst ein Ärgernis, dann betrübte ich mich
+darüber, und nun macht es mir Schadenfreude: Ich habe mir das Wort
+gegeben, ein solches Verfahren niemals wieder aufzudecken.
+ -- Goethe, Maximen und Reflektionen, Nr. 870
-Today is Pungenday, the 28th day of Chaos in the YOLD 3178
+Today is Sweetmorn, the 31st day of Chaos in the YOLD 3178
+~dev-java/sun-jdk-1.6.0.30
+~dev-java/sun-jre-bin-1.6.0.30
+
dev-python/fbrehm-libs
~dev-python/iniparse-0.4
dev-java/commons-logging log4j
dev-java/jdbc-mysql c3p0
dev-java/log4j javamail
-dev-java/sun-jdk jce
+dev-java/sun-jdk -doc jce
dev-lang/perl ithreads perlsuid
dev-lang/php bcmath cgi embed filter force-cgi-redirect enchant fpm gd hash intl json -ldap-sasl mysqlnd -oci8 -recode reflection sharedext suhosin -threads tokenizer xmlreader xmlwriter -xpm zip
--- /dev/null
+SEARCH_DIRS_MASK="/opt/sun-jdk-1.6.0.30"
--- /dev/null
+SEARCH_DIRS_MASK="/opt/sun-jre-bin-1.6.0.30"
set in9_max 3.0 * 1.10
+chip "w83795g-*" "w83795adg-*"
+
+ label in12 "+3.3V"
+ label in13 "3VSB"
+ label in14 "Vbat"
+
+ set in12_min 3.3 * 0.90
+ set in12_max 3.3 * 1.10
+ set in13_min 3.3 * 0.90
+ set in13_max 3.3 * 1.10
+ set in14_min 3.0 * 0.90
+ set in14_max 3.3 * 1.10
+
+
chip "via686a-*"
label in0 "Vcore"
label temp1 "SIO Temp"
-chip "lm85-*" "lm85b-*" "lm85c-*" "adm1027-*" "adt7463-*" "adt7468-*" "emc6d100-*" "emc6d102-*"
+chip "lm85-*" "lm85b-*" "lm85c-*" "adm1027-*" "adt7463-*" "adt7468-*" \
+ "emc6d100-*" "emc6d102-*" "emc6d103-*" "emc6d103s-*"
label in1 "Vcore"
label in2 "+3.3V"
label temp2 "M/B Temp"
+chip "emc6w201-*"
+
+ label in2 "+3.3V"
+ label in3 "+5V"
+
+ label temp6 "M/B Temp"
+
+
chip "pc87365-*" "pc87366-*"
# Voltage inputs
label temp1 "M/B Temp"
-chip "w83627ehf-*" "w83627dhg-*" "w83667hg-*"
+chip "w83627thf-*"
+
+ label in3 "+5V"
+ label in7 "5VSB"
+ label in8 "Vbat"
+
+ # Internal resistors
+ compute in3 @ * (1 + 34/51), @ / (1 + 34/51)
+ compute in7 @ * (1 + 34/51), @ / (1 + 34/51)
+
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+ set in7_min 5.0 * 0.90
+ set in7_max 5.0 * 1.10
+# The battery voltage may or may not be monitored.
+# set in8_min 3.0 * 0.90
+# set in8_max 3.0 * 1.10
+
+
+chip "w83627ehf-*" "w83627dhg-*" "w83667hg-*" "nct6775-*" "nct6776-*"
label in0 "Vcore"
label in2 "AVCC"
set in8_max 3.0 * 1.10
+chip "w83627uhg-*"
+
+ label in2 "AVCC"
+ label in3 "+5V"
+ label in7 "5VSB"
+ label in8 "Vbat"
+
+ set in2_min 5.0 * 0.90
+ set in2_max 5.0 * 1.10
+ set in3_min 5.0 * 0.90
+ set in3_max 5.0 * 1.10
+ set in7_min 5.0 * 0.90
+ set in7_max 5.0 * 1.10
+ set in8_min 3.0 * 0.90
+ set in8_max 3.0 * 1.10
+
+
chip "f71805f-*"
label in0 "+3.3V"
set in6_max 3.0 * 1.10
-chip "f71882fg-*"
+chip "sch5127-*"
+
+ label in2 "+3.3V"
+ label in5 "3VSB"
+ label in6 "Vbat"
+
+ set in2_min 3.3 * 0.90
+ set in2_max 3.3 * 1.10
+ set in5_min 3.3 * 0.90
+ set in5_max 3.3 * 1.10
+ set in6_min 3.0 * 0.90
+ set in6_max 3.0 * 1.10
+
+
+chip "f71808e-*" "f71808a-*" "f71862fg-*" "f71869-*" "f71869a-*" "f71882fg-*" \
+ "f71889fg-*" "f71889ed-*" "f71889a-*"
label in0 "+3.3V"
label in7 "3VSB"
compute in8 @*2, @/2
-chip "f8000-*"
+chip "f71858fg-*" "f8000-*"
label in0 "+3.3V"
label in1 "3VSB"
compute in2 @*2, @/2
+chip "f81865f-*"
+
+ label in0 "+3.3V"
+ label in5 "3VSB"
+ label in6 "Vbat"
+
+ compute in0 @*2, @/2
+ compute in5 @*2, @/2
+ compute in6 @*2, @/2
+
+
chip "adt7473-*" "adt7475-*"
label in2 "+3.3V"
./dvips.d:
./fmtutil.d:
-._cfg0000_format.texlive-context.cnf
-._cfg0000_format.texlive-formatsextra.cnf
format.jadetex.cnf
format.texlive-basic.cnf
format.texlive-context.cnf
language.texlive-langgerman.dat
./language.dat.lua.d:
-._cfg0000_language.texlive-langcyrillic.dat.lua
-._cfg0000_language.texlive-langenglish.dat.lua
-._cfg0000_language.texlive-langgerman.dat.lua
.keep_app-text_texlive-core-0
language.texlive-langcyrillic.dat.lua
language.texlive-langenglish.dat.lua
#! cont-it pdftex cont-usr.tex -8bit *cont-it.ini
#! cont-nl pdftex cont-usr.tex -8bit *cont-nl.ini
#! cont-ro pdftex cont-usr.tex -8bit *cont-ro.ini
-metafun mpost - metafun.mp
# Generated for texlive-formatsextra by texlive-module.eclass
eplain pdftex language.dat -translate-file=cp227.tcx *eplain.ini
mllatex pdftex language.dat -translate-file=cp227.tcx -mltex mllatex.ini
mltex pdftex - -translate-file=cp227.tcx -mltex mltex.ini
-physe pdftex - physe.ini
-phyzzx pdftex - physe.ini
texsis pdftex - -translate-file=cp227.tcx texsis.ini
# Generated for texlive-langcyrillic by texlive-module.eclass
#! cyramstex pdftex language.dat -translate-file=cp227.tcx *cyramstx.ini